Packageflash.media
Classepublic class Sound
HéritageSound Inheritance EventDispatcher Inheritance Object

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

La classe Sound vous permet de contrôler le son dans une application. Elle vous permet de créer un objet Sound, de charger et de lire un fichier MP3 externe dans cet objet, de fermer le flux audio et d’accéder aux données relatives au son (nombre d'octets que contient le flux, informations sur les métadonnées ID3, etc.). Un contrôle plus précis du son est possible via sa source (objet SoundChannel ou Microphone correspondant) et des propriétés de la classe SoundTransform qui contrôle l’émission du son par les haut-parleurs de l’ordinateur.

Pour contrôler des sons imbriqués dans un fichier SWF, utilisez les propriétés de la classe SoundMixer.

Remarque : l'API son d'ActionScript 3.0 est différente de celle d'ActionScript 2.0. Dans ActionScript 3.0, il est impossible de prendre des objets son et de les classer selon un ordre hiérarchique pour contrôler leurs propriétés.

Lorsque vous employez cette classe, tenez compte du modèle de sécurité Flash Player :

Pour plus d'informations, consultez les références suivantes :

Consulter les exemples

Voir aussi

Microphone
SoundChannel
SoundMixer
SoundTransform
Principes de base de l'utilisation du son


Propriétés publiques
 PropriétéDéfini par
  bytesLoaded : uint
[lecture-seule] Renvoie le nombre d’octets actuellement disponibles dans cet objet Sound.
Sound
  bytesTotal : int
[lecture-seule] Renvoie le nombre total d’octets que contient l’objet Sound.
Sound
 Inheritedconstructor : Object
Référence à l'objet de classe ou à la fonction constructeur d'une occurrence donnée d'un objet.
Object
  id3 : ID3Info
[lecture-seule] Donne accès aux métadonnées faisant partie d'un fichier MP3.
Sound
  isBuffering : Boolean
[lecture-seule] Renvoie l’état de mise en mémoire tampon des fichiers MP3 externes.
Sound
  length : Number
[lecture-seule] Durée du son actuel, en millisecondes.
Sound
 Inheritedprototype : Object
[static] Référence à l’objet prototype d’un objet de classe ou fonction.
Object
  url : String
[lecture-seule] URL à partir de laquelle le son a été chargé.
Sound
Méthodes publiques
 MéthodeDéfini par
  
Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Crée un objet Sound.
Sound
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement.
EventDispatcher
  
Ferme le flux, ce qui entraîne l’arrêt du téléchargement des données.
Sound
 Inherited
Distribue un événement dans le flux d’événements.
EventDispatcher
 Inherited
Vérifie si des écouteurs sont enregistrés auprès de l'objet EventDispatcher pour un type spécifique d’événement.
EventDispatcher
 Inherited
Indique si la propriété spécifiée d'un objet est définie.
Object
 Inherited
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l'objet spécifié en tant que paramètre.
Object
  
load(stream:URLRequest, context:SoundLoaderContext = null):void
Lance le chargement d’un fichier MP3 externe à partir de l’URL spécifiée.
Sound
  
play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel
Crée un objet SoundChannel pour lire le son.
Sound
 Inherited
Indique si la propriété spécifiée existe et est énumérable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Supprime un écouteur de l’objet EventDispatcher.
EventDispatcher
 Inherited
Définit la disponibilité d'une propriété dynamique pour les opérations en boucle.
Object
 Inherited
Renvoie la représentation sous forme de chaîne de l'objet spécifié.
Object
 Inherited
Renvoie la valeur primitive de l'objet spécifié.
Object
 Inherited
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié.
EventDispatcher
Evénements
 Evénement Synthèse Défini par
 Inherited Distribué lorsque Flash Player a le focus du système d’exploitation et devient actif.EventDispatcher
   Distribué lorsque le chargement de données aboutit.Sound
 Inherited Distribué lorsque Flash Player perd le focus du système d’exploitation et devient inactif.EventDispatcher
  
id3
Distribué par un objet Sound lorsque des données ID3 sont disponibles pour un son MP3.Sound
   Distribué lorsqu'il se produit une erreur d'entrée/sortie entraînant l’échec d’un chargement.Sound
   Distribué lors du démarrage d’une opération de chargement.Sound
   Distribué lors de la réception de données, au fur et à mesure d’un chargement.Sound
Détails des propriétés
bytesLoadedpropriété
bytesLoaded:uint  [lecture-seule]

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Renvoie le nombre d’octets actuellement disponibles dans cet objet Sound. En règle générale, cette information ne présente d’intérêt que pour les fichiers chargés en externe.


Implémentation
    public function get bytesLoaded():uint
bytesTotalpropriété 
bytesTotal:int  [lecture-seule]

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Renvoie le nombre total d’octets que contient l’objet Sound.


Implémentation
    public function get bytesTotal():int
id3propriété 
id3:ID3Info  [lecture-seule]

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Donne accès aux métadonnées faisant partie d'un fichier MP3.

Les fichiers son MP3 peuvent contenir des balises ID3 qui fournissent des métadonnées sur le fichier. Si le son MP3 que vous chargez à l'aide de la méthode Sound.load() contient des balises ID3, vous pouvez interroger ces propriétés. Seules les balises ID3 qui utilisent le jeu de caractères UTF-8 sont prises en charge.

Flash Player 9 et version ultérieure prennent en charge les balises ID3 2.0, plus particulièrement 2.3 et 2.4. Les tableaux suivants répertorient les balises ID3 2.0 standard et le type de contenu que les balises représentent. La propriété Sound.id3 permet d’accéder à ces balises par le biais du format my_sound.id3.COMM, my_sound.id3.TIME, etc. Le premier tableau décrit les balises auxquelles il est possible d’accéder par le biais du nom de propriété ID3 2.0 ou le nom de propriété ActionScript. Le second tableau décrit les balises ID3 qui sont prises en charge, mais ne possèdent pas de propriétés prédéfinies dans ActionScript.

Balise ID3 2.0Propriété ActionScript correspondante
COMMSound.id3.comment
TALBSound.id3.album
TCONSound.id3.genre
TIT2Sound.id3.songname
TPE1Sound.id3.artist
TRCKSound.id3.track
TYERSound.id3.year

Le tableau ci-dessous décrit les balises ID3 qui sont prises en charge, mais ne possèdent pas de propriétés prédéfinies dans ActionScript. Pour y accéder, appelez mySound.id3.TFLT, mySound.id3.TIME, etc.

PropriétéDescription
TFLTType de fichier
TIMEDurée
TIT1Description du groupe de contenus
TIT2Titre/nom du morceau/description du contenu
TIT3Sous-titre/description plus précise
TKEYTouche initiale
TLANLangues
TLENDurée
TMEDType de média
TOALTitre de l’album/du film/du spectacle d'origine
TOFNNom du fichier d'origine
TOLYParoliers/auteurs d'origine
TOPEInterprètes/musiciens d’origine
TORYAnnée de parution d'origine
TOWNPropriétaire du fichier/détenteur de licence
TPE1Interprètes principaux/solistes
TPE2Groupe/orchestre/accompagnement
TPE3Chef d'orchestre/description plus détaillée des musiciens
TPE4Interprété, remixé ou modifié par
TPOSElément d'un ensemble
TPUBEditeur
TRCKNuméro de piste/position dans l'ensemble
TRDADates d'enregistrement
TRSNNom de la station radio Internet
TRSOPropriétaire de la station radio Internet
TSIZTaille
TSRCISRC (international standard recording code - code standard et international d'enregistrement)
TSSELogiciel/matériel et paramètres utilisés pour le codage
TYERAnnée
WXXXStructure de lien URL

Pour utiliser cette propriété, tenez compte du modèle de sécurité de Flash Player :

Pour plus d'informations, consultez les références suivantes :


Implémentation
    public function get id3():ID3Info

Voir aussi


Exemple

L'exemple suivant lit les informations d'ID3 dans un fichier audio et les affiche dans un champ de texte.

Dans le constructeur, le fichier audio est chargé mais n'est pas défini sur lecture. Ici, le fichier est supposé être dans le répertoire SWF. Le système doit être autorisé à lire les balises ID3 d'un fichier audio chargé. Si le fichier contient des informations ID3 alors que le programme n'est pas autorisé à les lire, un événement Event.ID3 est déclenché et la propriété id3 du fichier audio est renseignée. La propriété id3 contient un objet ID3Info renfermant toutes les informations ID3.

Dans la méthode id3Handler(), les balises ID3 du fichier sont stockées dans id3, un objet de la classe ID3Info. Un champ de texte est instancié pour afficher la liste des balises ID3. La boucle for fait une itération à travers toutes les balises ID3 2.0 et ajoute le nom et la valeur au contenu du champ de texte. L'artiste, le titre de la chanson et le nom de l'album sont également ajoutés via les propriétés (ID3Info) des informations ID3. ActionScript 3.0 et Flash Player 9 et versions ultérieures prennent en charge les balises ID3 2.0, et en particulier 2.3 et 2.4. Si vous faites une itération des propriétés comme dans la boucle for, seules les balises ID3 2.0 apparaissent. Toutefois, les données des versions précédentes sont également stockées dans la propriété id3 de la chanson et sont accessibles via les propriétés de la classe ID3Info. Les balises ID3 1.0 se situent à la fin du fichier alors que les balises ID3 2.0 sont placées au début du fichier. (Il arrive parfois que les balises des versions antérieures et ultérieures soient au même endroit dans le fichier.) Lorsqu'un fichier est encodé avec des balises 1.0 et 2.0 au début et à la fin du fichier, la méthode id3Handler() doit être invoquée deux fois. Elle lit d'abord la version 2.0, puis la version 1.0. Si seule une balise ID3 1.0 est disponible, les informations sont alors accessibles via les propriétés d'informations ID3, telles que id3.songname. Pour ID3 2.0, la propriété id3.TITS récupère le titre de la chanson à l'aide de la nouvelle balise (TITS).

Notez que aucune gestion d'erreur n'est écrite pour cet exemple et que si le contenu ID3 est long, le résultat peut dépasser la zone visible.

package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.net.URLRequest;
    import flash.media.ID3Info;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;

    public class Sound_id3Example extends Sprite {
        private var snd:Sound = new Sound();       
        private var myTextField:TextField = new TextField();

        public function Sound_id3Example() {
            snd.addEventListener(Event.ID3, id3Handler);
            snd.load(new URLRequest("mySound.mp3"));
        }
    
        private function id3Handler(event:Event):void {
            var id3:ID3Info = snd.id3;

            myTextField.autoSize = TextFieldAutoSize.LEFT;
            myTextField.border = true;

            myTextField.appendText("Received ID3 Info: \n");
              
            for (var propName:String in id3) {
                myTextField.appendText(propName + " = " + id3[propName] + "\n");
            }
 
            myTextField.appendText("\n" + "Artist: " + id3.artist + "\n");
            myTextField.appendText("Song name: " + id3.songName + "\n");
            myTextField.appendText("Album: " + id3.album + "\n\n"); 
 
            this.addChild(myTextField);
        }
    }
}
isBufferingpropriété 
isBuffering:Boolean  [lecture-seule]

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Renvoie l’état de mise en mémoire tampon des fichiers MP3 externes. Si la valeur correspond à true, la lecture éventuelle est interrompue pendant que l’objet attend des données supplémentaires.


Implémentation
    public function get isBuffering():Boolean
lengthpropriété 
length:Number  [lecture-seule]

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Durée du son actuel, en millisecondes.


Implémentation
    public function get length():Number
urlpropriété 
url:String  [lecture-seule]

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

URL à partir de laquelle le son a été chargé. Cette propriété s’applique uniquement aux objets Sound chargés à l’aide de la méthode Sound.load(). Pour les objets Sound associés à une ressource son de la bibliothèque d’un fichier SWF, la valeur de la propriété url correspond à null.

La première fois que vous appelez Sound.load(), la valeur de la propriété url est d’abord définie null car l’URL finale n’est pas encore connue. La propriété url a une autre valeur dès qu’un événement open est distribué à partir de l’objet Sound.

La propriété url contient l'URL absolue finale à partir de laquelle un son a été chargé. En règle générale, la valeur de la propriété url est identique à la valeur transmise au paramètre stream de Sound.load(). Si vous transmettez une URL relative à Sound.load(), la valeur de la propriété url représente l’URL absolue. En outre, si la requête d’URL d’origine est redirigée par un serveur HTTP, la valeur de la propriété url reflète l’URL finale à partir de laquelle le fichier audio a réellement été téléchargé. La publication d’une URL finale absolue est équivalente au comportement de LoaderInfo.url.


Implémentation
    public function get url():String

Voir aussi

Détails du constructeur
Sound()Constructeur
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Crée un objet Sound. Si vous transmettez un objet URLRequest valide au constructeur Sound, celui-ci appelle automatiquement la fonction load() pour l’objet Sound. Si vous ne transmettez pas un objet URLRequest valide au constructeur Sound, vous devez appeler la fonction load() pour l’objet Sound, sans quoi le flux ne sera pas chargé.

Une fois la fonction load() appelée pour un objet Sound, vous ne pouvez plus charger de fichier audio dans l’objet. Pour ce faire, créez un autre objet Sound.

Paramètres
stream:URLRequest (default = null) — URL pointant vers un fichier MP3 externe.
 
context:SoundLoaderContext (default = null) — Quantité minimale, en millisecondes, de données MP3 à conserver dans la mémoire tampon de l’objet Sound. Celui-ci attend de disposer au moins de cette quantité de données avant de commencer la lecture ou avant de reprendre la lecture après une interruption réseau. La valeur par défaut est 1 000 (une seconde).
Détails des méthodes
close()méthode
public function close():void

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Ferme le flux, ce qui entraîne l’arrêt du téléchargement des données. Une fois la méthode close() appelée, aucune donnée ne peut être lue dans le flux.


Lance
IOError — La fermeture du flux continu s'est révélée impossible ou ce flux n’a pas été ouvert.

Exemple

Dans l'exemple suivant, lorsque l'utilisateur clique sur le bouton Stop, la méthode Sound.close() est appelée et la diffusion du son s'arrête.

Dans le constructeur, un champ de texte est créé pour les boutons Start et Stop. Lorsque l'utilisateur clique sur le champ de texte, la méthode clickHandler() est invoquée. Elle gère le démarrage et l'arrêt du fichier audio. Notez que, selon la connexion réseau ou le moment où l'utilisateur clique sur le bouton Stop, une grande partie du fichier peut déjà avoir été chargée et l'arrêt de la lecture peut demander un certain temps. Un bloc try...catch est utilisé pour capturer toute erreur d'E/S pouvant survenir lors de la fermeture du flux. Par exemple, si le son est chargé depuis un répertoire local et n'est pas diffusé en continu, l'erreur 2029 est capturée et indique "Cet objet URLStream ne possède pas de flux ouvert".

 
package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;    
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.errors.IOError;
    import flash.events.IOErrorEvent;

    public class Sound_closeExample extends Sprite {
        private var snd:Sound = new Sound();
        private var button:TextField = new TextField();
        private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
        
        public function Sound_closeExample() {
            button.x = 10;
            button.y = 10;
            button.text = "START";
            button.border = true;
            button.background = true;
            button.selectable = false;
            button.autoSize = TextFieldAutoSize.LEFT;

            button.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(button);
        }

        private function clickHandler(e:MouseEvent):void {

            if(button.text == "START") {

                snd.load(req);
                snd.play();        

                snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

                button.text = "STOP";
            }
            else if(button.text == "STOP") {
                    
                try {
                    snd.close();
                    button.text = "Wait for loaded stream to finish.";
                }
                catch (error:IOError) {
                    button.text = "Couldn't close stream " + error.message;    
                }
            }
        }
        
        private function errorHandler(event:IOErrorEvent):void {
                button.text = "Couldn't load the file " + event.text;
        }
    }
}


load()méthode 
public function load(stream:URLRequest, context:SoundLoaderContext = null):void

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Lance le chargement d’un fichier MP3 externe à partir de l’URL spécifiée. Le constructeur Sound appelle automatiquement Sound.load() si vous lui fournissez un objet URLRequest valide. Vous ne devez appeler Sound.load() manuellement que si vous ne fournissez aucun objet URLRequest valide au constructeur Sound, ou si vous lui transmettez la valeur null.

Une fois la fonction load() appelée pour un objet Sound, vous ne pouvez plus charger de fichier audio dans l’objet. Pour ce faire, créez un autre objet Sound.

Pour utiliser cette méthode, tenez compte du modèle de sécurité de Flash Player :

Pour plus d'informations, consultez les références suivantes :

Paramètres

stream:URLRequest — URL pointant vers un fichier MP3 externe.
 
context:SoundLoaderContext (default = null) — Quantité minimale, en millisecondes, de données MP3 à conserver dans la mémoire tampon de l’objet Sound. Celui-ci attend de disposer au moins de cette quantité de données avant de commencer la lecture ou avant de reprendre la lecture après une interruption réseau. La valeur par défaut est 1 000 (une seconde).


Lance
IOError — Une erreur réseau a entraîné l’échec du chargement.
 
SecurityError — Les fichiers SWF non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local ayant accès au réseau ou comme fichier approuvé.

Voir aussi


Exemple

L'exemple suivant présente la progression du chargement d'un fichier audio.

Dans le constructeur, un objet URLRequest est créé pour identifier l'emplacement du fichier audio, qui correspond à un podcast d'Adobe. Le fichier est chargé dans un bloc try...catch pour capturer toute erreur pouvant survenir pendant son chargement. En cas d'erreur d'E/S, la méthode errorHandler() est également invoquée et le message d'erreur s'inscrit dans le champ de texte réservé au rapport de progression. Pendant la progression d'une opération de chargement, un événement ProgressEvent.PROGRESS est envoyé et la méthode progressHandler() est appelée. Ici, un événement ProgressEvent.PROGRESS est utilisé comme minuteur pour calculer la progression du chargement.

La méthode progressHandler() divise la valeur bytesLoaded transmise avec l'objet ProgressEvent par la valeur bytesTotal pour arriver au pourcentage de données audio chargées. Elle affiche ensuite ces valeurs dans le champ de texte. (Notez que si le fichier est petit, mis en cache ou dans le répertoire local, la progression peut ne pas être perceptible.)

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    
    public class Sound_loadExample extends Sprite {
        private var snd:Sound = new Sound();
        private var statusTextField:TextField  = new TextField();

        public function Sound_loadExample(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;
            var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
            snd.load(req);
            
            snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
 
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                     
            this.addChild(statusTextField);
        }
    
        private function progressHandler(event:ProgressEvent):void {
            var loadTime:Number = event.bytesLoaded / event.bytesTotal;
            var LoadPercent:uint = Math.round(100 * loadTime);
              
            statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" 
                                 + "Bytes being loaded: " + event.bytesLoaded + "\n" 
                                 + "Percentage of sound file that is loaded " + LoadPercent + "%.\n";
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}
play()méthode 
public function play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Crée un objet SoundChannel pour lire le son. Cette méthode renvoie un objet SoundChannel, auquel vous accédez pour arrêter le son et régler le volume. (Pour contrôler le volume, la balance horizontale et la balance, accédez à l’objet SoundTransform affecté au canal audio.)

Paramètres

startTime:Number (default = 0) — Position initiale du début de la lecture, en millisecondes.
 
loops:int (default = 0) — Définit le nombre de boucles décrit par un son sur la valeur startTime avant que le canal audio arrête la lecture.
 
sndTransform:SoundTransform (default = null) — Objet SoundTransform d'origine affecté au canal audio.

Valeur renvoyée
SoundChannel — Objet SoundChannel permettant de contrôler le son. Cette méthode renvoie null si vous n’êtes pas équipé d’une carte son ou si aucun canal audio n’est disponible. Le nombre maximal de canaux audio disponibles simultanément est 32.

Voir aussi


Exemple

Dans l'exemple suivant, une fois le fichier chargé, l'utilisateur peut sélectionner la position de départ (heure de démarrage) du fichier audio à l'aide d'une barre graphique.

Le constructeur appelle la méthode Sound.load() pour commencer à charger les données audio. Il appelle ensuite la méthode Sound.play() qui commencera à lire le fichier dès que suffisamment de données seront chargées. La méthode Sound.play() renvoie un objet SoundChannel qui peut être utilisé pour contrôler la lecture du fichier. Le champ de texte affiche les instructions. Pour être sûr que le contenu où l'utilisateur souhaite que le fichier audio commence ait déjà été chargé, un objet Sprite bar est créé et affiché à la fin du chargement du fichier. Un événement Event.COMPLETE est envoyé lorsque le chargement du fichier s'est terminé avec succès, ce qui déclenche la méthode completeHandler(). La méthode completeHandler() crée ensuite la barre et l'ajoute dans la liste d'affichage. (Un objet sprite est utilisé au lieu d'un objet shape pour assurer l'interactivité.) Lorsque l'utilisateur clique sur la barre, la méthode clickHandler() est déclenchée.

Dans la méthode clickHandler(), la position de la coordonnée x du clic de l'utilisateur, event.localX, est utilisée pour déterminer l'emplacement où l'utilisateur souhaite que le fichier démarre. Comme la barre fait 100 pixels et commence à la coordonnée x 100 pixels, il est facile de déterminer le pourcentage de la position. De même, comme le fichier est chargé, la propriété length du fichier audio aura la longueur du fichier terminé, en millisecondes. La position de démarrage du fichier audio est déterminée par la longueur de ce fichier et sa position dans la ligne. Après arrêt de la lecture, le fichier audio redémarre à la position de démarrage sélectionnée, transmise sous forme de paramètre startTime à la méthode play().

 
package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.MouseEvent;
    import flash.media.Sound;;
    import flash.net.URLRequest;
    import flash.media.SoundChannel;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample1 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel = new SoundChannel();
        private var infoTextField:TextField = new TextField();
    
        public function Sound_playExample1() {

            var req:URLRequest = new URLRequest("MySound.mp3");
            
            infoTextField.autoSize = TextFieldAutoSize.LEFT;
            infoTextField.text = "Please wait for the file to be loaded.\n" 
                                + "Then select from the bar to decide where the file should start.";
            
            snd.load(req);               
            channel = snd.play();

            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(Event.COMPLETE, completeHandler);


            this.addChild(infoTextField);
        }

        private function completeHandler(event:Event):void {                
            infoTextField.text = "File is ready.";

            var bar:Sprite = new Sprite();

            bar.graphics.lineStyle(5, 0xFF0000);
            bar.graphics.moveTo(100, 100);
            bar.graphics.lineTo(200, 100);

            bar.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(bar);
        }
    
        private function clickHandler(event:MouseEvent):void {
            
                var position:uint = event.localX;
                var percent:uint = Math.round(position) - 100;   
                var cue:uint = (percent / 100) * snd.length;

                channel.stop();
                channel = snd.play(cue);    
        }

        private function errorHandler(errorEvent:IOErrorEvent):void {
            infoTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}

Dans l'exemple suivant, le fichier audio est diffusé une ou deux fois, selon si l'utilisateur clique une fois ou deux sur un bouton.

Dans le constructeur, le son est chargé et un simple objet sprite rectangle button est créé. (Un objet sprite est utilisé au lieu d'un objet shape pour assurer l'interactivité.) (Ici, le fichier audio est supposé être dans le même répertoire que le fichier SWF.) (Il n'existe pas de code de gestion d'erreur pour cet exemple.)

Deux écouteurs d'événements sont configurés pour répondre aux simples clics et aux doubles clics de souris. Si l'utilisateur utilise un simple clic, la méthode clickHandler() est invoquée et la lecture du son commence. Si l'utilisateur double-clique sur le bouton, la méthode doubleClickHandler() est invoquée et le fichier audio est diffusé à deux reprises. Le second argument de la méthode play() est défini sur 1, ce qui signifie que le fichier audio reviendra à l'heure de démarrage du fichier et sera diffusé à nouveau. L'heure de démarrage, premier argument, est définie sur 0, ce qui signifie que la lecture du fichier doit commencer au début.

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.media.Sound;
    import flash.net.URLRequest;

    public class Sound_playExample2 extends Sprite {
        private var button:Sprite = new Sprite(); 
        private var snd:Sound = new Sound();
            
        public function Sound_playExample2() {

            var req:URLRequest = new URLRequest("click.mp3");
            snd.load(req);               
     
            button.graphics.beginFill(0x00FF00);
            button.graphics.drawRect(10, 10, 50, 30);
            button.graphics.endFill();
     
            button.addEventListener(MouseEvent.CLICK, clickHandler);
            button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler);
     
            this.addChild(button);
        }

        private function clickHandler(event:MouseEvent):void {
            snd.play();            
        }

        private function doubleClickHandler(event:MouseEvent):void {
            snd.play(0, 2);        
        }
    }
}

L'exemple suivant présente la progression du chargement et de la lecture d'un fichier audio.

Dans le constructeur, le fichier est chargé dans un bloc try...catch pour capturer toute erreur pouvant survenir pendant le chargement de fichier. Un écouteur est ajouté dans l'objet audio et répondra à un événement IOErrorEvent par un appel à la méthode errorHandler(). Un autre écouteur est ajouté pour l'application principale et répondra à un événement Event.ENTER_FRAME, utilisé comme mécanisme de minuterie pour l'affichage de la progression de la lecture. Enfin, un troisième écouteur est ajouté pour le canal audio et répondra à un événement Event.SOUND_COMPLETE (à la fin de la lecture) par un appel à la méthode soundCompleteHandler(). La méthode soundCompleteHandler() supprime également l'écouteur de l'événement Event.ENTER_FRAME.

La méthode enterFrameHandler() divise la valeur bytesLoaded transmise avec l'objet ProgressEvent par la valeur bytesTotal pour arriver au pourcentage de données audio chargées. Le pourcentage de données audio lues peut être déterminé en divisant la valeur de la propriété position du canal audio par la longueur des données audio. Toutefois, si les données audio ne sont pas entièrement chargées, la propriété length de l'objet audio ne présente que la taille des données audio déjà chargées. Une estimation de la taille définitive du fichier audio complet est calculée en divisant la valeur de la propriété length de l'objet audio en cours par la valeur de la propriété bytesLoaded divisée par la valeur de la propriété bytesTotal.

(Notez que si le fichier est petit, mis en cache ou dans le répertoire local, la progression du chargement peut ne pas être perceptible.) De même, le délai qui sépare le démarrage du chargement des données audio et celui du démarrage de la lecture des données chargées est déterminé par la valeur de la propriété SoundLoaderContext.buffertime, qui correspond par défaut à 1000 millisecondes et peut être réinitialisé.

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample3 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel;
        private var statusTextField:TextField  = new TextField();

        public function Sound_playExample3(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;

           var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
                snd.load(req);
            
                channel = snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
                    
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
                    
            this.addChild(statusTextField);
        }
    
        private function enterFrameHandler(event:Event):void {    
            var loadTime:Number = snd.bytesLoaded / snd.bytesTotal;
            var loadPercent:uint = Math.round(100 * loadTime);
            var estimatedLength:int = Math.ceil(snd.length / (loadTime));
            var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength));
      
            statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" 
                                   + "Bytes being loaded: " + snd.bytesLoaded + "\n" 
                                   + "Percentage of sound file that is loaded " + loadPercent + "%.\n"
                                   + "Sound playback is " + playbackPercent + "% complete.";     
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }

        private function soundCompleteHandler(event:Event):void {
            statusTextField.text = "The sound has finished playing.";
            removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
    }
}
Détails des événements
complete Evénement
Type d'objet événement: flash.events.Event
Event.type property = flash.events.Event.COMPLETE

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Distribué lorsque le chargement de données aboutit.

Définit la valeur de la propriété type d'un objet événement complete.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubblesfalse
cancelablefalse ; il n’existe aucun comportement par défaut à annuler.
currentTargetL’objet qui traite activement l’objet Event avec un écouteur d’événements.
targetObjet réseau dont le chargement est terminé.

Voir aussi

id3 Evénement  
Type d'objet événement: flash.events.Event
Event.type property = flash.events.Event.ID3

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Distribué par un objet Sound lorsque des données ID3 sont disponibles pour un son MP3.

Définit la valeur de la propriété type d'un objet événement id3.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubblesfalse
cancelablefalse ; il n’existe aucun comportement par défaut à annuler.
currentTargetL’objet qui traite activement l’objet Event avec un écouteur d’événements.
targetObjet son chargeant le fichier MP3 pour lequel les données ID3 sont maintenant disponibles. La propriété target ne correspond pas toujours à l’objet de la liste d’affichage qui est associé à l’écouteur d'événements. Utilisez la propriété currentTarget pour accéder à l’objet de la liste d'affichage qui traite actuellement l'événement.

Voir aussi

ioError Evénement  
Type d'objet événement: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Distribué lorsqu'il se produit une erreur d'entrée/sortie entraînant l’échec d’un chargement.

Définit la valeur de la propriété type d’un objet événement ioError.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubblesfalse
cancelablefalse ; il n’existe aucun comportement par défaut à annuler.
currentTargetL’objet qui traite activement l’objet Event avec un écouteur d’événements.
targetObjet réseau sur lequel l’erreur d’entrée/sortie s’est produite.
textTexte à afficher en tant que message d’erreur.

Voir aussi

open Evénement  
Type d'objet événement: flash.events.Event
Event.type property = flash.events.Event.OPEN

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Distribué lors du démarrage d’une opération de chargement.

Définit la valeur de la propriété type d'un objet événement open.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubblesfalse
cancelablefalse ; il n’existe aucun comportement par défaut à annuler.
currentTargetL’objet qui traite activement l’objet Event avec un écouteur d’événements.
targetObjet réseau qui a ouvert une connexion.

Voir aussi

progress Evénement  
Type d'objet événement: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.PROGRESS

Version du langage : ActionScript 3.0
Version du lecteur : Flash Player 9

Distribué lors de la réception de données, au fur et à mesure d’un chargement.

Définit la valeur de la propriété type d'un objet événement progress.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubblesfalse
bytesLoadedNombre d’éléments ou d’octets chargés lors du traitement de l’événement par l'écouteur.
bytesTotalNombre total d'éléments ou d'octets qui seront chargés si le processus de chargement aboutit.
cancelablefalse ; il n’existe aucun comportement par défaut à annuler.
currentTargetL’objet qui traite activement l’objet Event avec un écouteur d’événements.
targetObjet réseau indiquant la progression.

Voir aussi

Exemples Utilisation des exemples
SoundExample.as

L'exemple suivant affiche des informations concernant les événements sonores qui se produisent à l'ouverture et à la lecture d'un fichier MP3. Pour exécuter l’exemple, placez un fichier intitulé MySound.mp3 dans le même répertoire que votre fichier SWF.
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class SoundExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var song:SoundChannel;

        public function SoundExample() {
            var request:URLRequest = new URLRequest(url);
            var soundFactory:Sound = new Sound();
            soundFactory.addEventListener(Event.COMPLETE, completeHandler);
            soundFactory.addEventListener(Event.ID3, id3Handler);
            soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            soundFactory.load(request);
            song = soundFactory.play();
        }

        private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }

        private function id3Handler(event:Event):void {
            trace("id3Handler: " + event);
        }

        private function ioErrorHandler(event:Event):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler: " + event);
        }
    }
}




 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/ActionScriptLangRefV3/flash/media/Sound.html