Packageflash.media
Classepublic final class SoundChannel
HéritageSoundChannel Inheritance EventDispatcher Inheritance Object

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

La classe SoundChannel contrôle un son dans une application. Chaque son est attribué à un canal audio, et l'application peut avoir plusieurs canaux audio mélangés. La classe SoundChannel contient une méthode stop(), des propriétés permettant de contrôler l'amplitude (volume) du canal et une propriété servant à affecter un objet SoundTransform au canal.

Consulter les exemples

Voir aussi

Sound
SoundTransform


Propriétés publiques
 PropriétéDéfini par
 Inheritedconstructor : Object
Référence à l'objet de classe ou à la fonction constructeur d'une occurrence donnée d'un objet.
Object
  leftPeak : Number
[lecture seule] Amplitude actuelle (volume) du canal gauche, comprise entre 0 (muet) et 1 (amplitude maximale).
SoundChannel
  position : Number
[lecture seule] Lorsque le fichier est en cours de lecture, la propriété position indique le point en cours de lecture dans le fichier audio.
SoundChannel
 Inheritedprototype : Object
[statique] Référence à l'objet prototype d'un objet de classe ou fonction.
Object
  rightPeak : Number
[lecture seule] Amplitude actuelle (volume) du canal droit, comprise entre 0 (muet) et 1 (amplitude maximale).
SoundChannel
  soundTransform : SoundTransform
Objet SoundTransform affecté au canal audio.
SoundChannel
Méthodes publiques
 MéthodeDéfini par
 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
 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
 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
  
Arrête la lecture du son dans le canal.
SoundChannel
 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[Evénement de diffusion] Distribué lorsque l'application Flash Player obtient le focus du système d'exploitation et devient active.EventDispatcher
 Inherited[Evénement de diffusion] Distribué lorsque l'application Flash Player ou AIR perd le focus du système d'exploitation et devient inactive.EventDispatcher
  Distribué au terme de la lecture d'un son.SoundChannel
Détails de la propriété
leftPeakpropriété
leftPeak:Number  [lecture seule]

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Amplitude actuelle (volume) du canal gauche, comprise entre 0 (muet) et 1 (amplitude maximale).



Implémentation
    public function get leftPeak():Number
positionpropriété 
position:Number  [lecture seule]

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Lorsque le fichier est en cours de lecture, la propriété position indique le point en cours de lecture dans le fichier audio. Lorsque la lecture est arrêtée ou interrompue, la propriété position indique le dernier point lu dans le fichier audio.

Généralement, la valeur de la propriété position est enregistrée lorsque la lecture est interrompue. Vous pouvez ensuite reprendre la lecture en redémarrant à partir de cette position enregistrée.

Si le son fait l'objet d'une boucle, la propriété position est réinitialisée à 0 au début de chaque boucle.



Implémentation
    public function get position():Number
rightPeakpropriété 
rightPeak:Number  [lecture seule]

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Amplitude actuelle (volume) du canal droit, comprise entre 0 (muet) et 1 (amplitude maximale).



Implémentation
    public function get rightPeak():Number
soundTransformpropriété 
soundTransform:SoundTransform  [lecture-écriture]

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Objet SoundTransform affecté au canal audio. Un objet SoundTransform comprend les propriétés de réglage du volume, du déplacement panoramique, ainsi que des haut-parleurs gauche et droit.



Implémentation
    public function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void

Voir aussi

Détails de la méthode
stop()méthode
public function stop():void

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Arrête la lecture du son dans le canal.


Exemple

Dans l'exemple suivant, l'utilisateur peut cliquer sur un bouton pour faire une pause et relire un fichier audio.

Le fichier audio est chargé dans le constructeur. (Cet exemple suppose que le fichier est dans le même répertoire que le fichier SWF.) Un champ de texte est utilisé comme bouton pour que l'utilisateur puisse lire ou interrompre la lecture. Lorsque l'utilisateur clique sur le champ de texte button, la méthode clickHandler() est invoquée.

Dans la méthode clickHandler(), au premier clic de l'utilisateur sur le champ de texte, le son est défini sur lecture et affecté à un canal audio. Lorsque l'utilisateur clique ensuite sur le champ de texte pour faire une pause, la lecture s'interrompt. La propriété position du canal audio enregistre la position du son au moment où il a été arrêté. Cette propriété est utilisée pour reprendre le son à partir de cette position, une fois que l'utilisateur a cliqué sur le champ de texte pour relancer la lecture. Chaque fois que la méthode Sound.play() est appelée, un nouvel objet SoundChannel est créé et affecté à la variable channel. L'objet Sound doit être affecté à un objet SoundChannel pour que la méthode stop() du canal audio soit utilisée pour arrêter le son.

package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.events.MouseEvent;
    import flash.text.TextFieldAutoSize;
            
    public class SoundChannel_stopExample extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel = new SoundChannel();
        private var button:TextField = new TextField();

        public function SoundChannel_stopExample() {
            var req:URLRequest = new URLRequest("MySound.mp3");
            snd.load(req);
            
            button.x = 10;
            button.y = 10;
            button.text = "PLAY";
            button.border = true;
            button.background = true;
            button.selectable = false;
            button.autoSize = TextFieldAutoSize.CENTER;

            button.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(button);
        }

        private function clickHandler(e:MouseEvent):void {
            var pausePosition:int = channel.position;

            if(button.text == "PLAY") {
                channel = snd.play(pausePosition);
                button.text = "PAUSE";
            } 
            else {
                channel.stop();
                button.text = "PLAY";
            }
        }
    }
}
Détails de l'événement
soundComplete Evénement
Type d'objet événement: flash.events.Event
propriété Event.type = flash.events.Event.SOUND_COMPLETE

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Distribué au terme de la lecture d'un son.

La constante Event.SOUND_COMPLETE définit la valeur de la propriété type d'un objet événement soundComplete.

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

PropriétéValeur
bubbles false
cancelable false ; il n'existe aucun comportement par défaut à annuler.
currentTarget L'objet qui traite activement l'objet Event avec un écouteur d'événements.
target Objet Sound dont la lecture d'un son est terminée.

Exemple

Dans l'exemple suivant, l'utilisateur sélectionne des chansons dans une liste de lecture, puis clique sur Lecture pour les écouter dans l'ordre sélectionné.

Dans le constructeur, un champ de texte est défini et contient la liste des chansons et une ligne de sélection des lectures. (Généralement, des boutons servent à lire et à lister les champs d'une liste de chansons.) Un objet text format est défini pour changer le format des lignes de chansons en italique une fois qu'elles sont sélectionnées. Lorsqu'un utilisateur clique sur le champ de texte, la méthode clickHandler() est invoquée.

Dans la méthode clickHandler(), la méthode getLineIndexAtPoint() de l'objet text field renvoie l'index de la ligne sur laquelle l'utilisateur à cliqué. A l'aide de l'index de la ligne, la méthode getLineText() obtient le contenu du texte. L'instruction if vérifie si l'utilisateur a sélectionné un élément pour le lire ou pour ajouter une chanson à la liste de lecture. Si l'utilisateur a sélectionné la lecture et qu'une chanson a été sélectionnée, l'écouteur d'événement du clic de souris est supprimé et la méthode playNext() est appelée pour commencer la lecture des chansons. Si l'utilisateur a sélectionné un titre de chanson, le contenu de la ligne est ajouté au tableau songList et le format de la ligne est défini sur italique.

La méthode playNext() charge et lit chaque chanson en faisant une itération dans la liste du tableau. La chanson est également affectée à un canal audio. Un écouteur d'événement du canal audio est ajouté pour répondre lorsque la lecture de la chanson est terminée et l'événement Event.SOUND_COMPLETE est distribué. La méthode soundCompleteHandler() invoque alors la méthode playNext() pour diffuser la chanson suivante. Ce processus se poursuit jusqu'à ce que la lecture de toutes les chansons du tableau soit terminée.

package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.text.TextFormat;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.events.IOErrorEvent;

    public class SoundChannel_event_soundCompleteExample extends Sprite {
        private var channel:SoundChannel = new SoundChannel();
        private var songList:Array = new Array();
        private var listTextField:TextField = new TextField();
        private var songFormat:TextFormat = new TextFormat();
        private var arrayIndex:int = 0;
        private var songSelected:Boolean = false;
        
        public function SoundChannel_event_soundCompleteExample() {
            
            listTextField.autoSize = TextFieldAutoSize.LEFT;
            listTextField.border = true
            listTextField.background = true;
            listTextField.text = "Song1.mp3\n" + "Song2.mp3\n" 
                                + "Song3.mp3\n" + "Song4.mp3\n" + "PLAY";
        
            songFormat.italic = true;
 
            listTextField.addEventListener(MouseEvent.CLICK, clickHandler);
                        
            addChild(listTextField);
        }
        
        private function clickHandler(e:MouseEvent):void {
            var index:int = listTextField.getLineIndexAtPoint(e.localX, e.localY);
            var line:String = listTextField.getLineText(index);
            var firstIndex:uint = listTextField.getLineOffset(index);
            var playLine:uint = listTextField.numLines - 1;

                if((index == playLine) && (songSelected == true)) {
                    listTextField.removeEventListener(MouseEvent.CLICK, clickHandler);
                    playNext();       

                } else if (index != playLine) {
                     songList.push(line.substr(0, (line.length - 1)));
                     listTextField.setTextFormat(songFormat, firstIndex, 
                                (firstIndex + listTextField.getLineLength(index)));     
                    songSelected = true;
                 }
        }

        private function playNext():void {
 
             if(arrayIndex < songList.length) {
                var snd:Sound = new Sound();
                snd.load(new URLRequest(songList[arrayIndex]));
                channel = snd.play();
                
                channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
                arrayIndex++;
 
            } else {
                songSelected = false;
                    
                while(arrayIndex > 0) {
                    songList.pop();
                    arrayIndex--;
                }
            }
        }    

        private function soundCompleteHandler(e:Event):void {
            playNext();
        }

        private function errorHandler(errorEvent:IOErrorEvent):void {
            trace(errorEvent.text);
        }
    }
}
Exemples Utilisation des exemples
SoundChannelExample.as

L'exemple suivant charge un fichier MP3, le lit et affiche des informations sur les événements sonores qui se produisent tandis que le fichier MP3 est chargé et lu. Un objet Timer fournit des informations récentes sur le positionnement de la tête de lecture toutes les 50 millisecondes. 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;
    import flash.utils.Timer;

    public class SoundChannelExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var soundFactory:Sound;
        private var channel:SoundChannel;
        private var positionTimer:Timer;

        public function SoundChannelExample() {
            var request:URLRequest = new URLRequest(url);
            soundFactory = 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);

            channel = soundFactory.play();
            channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);

            positionTimer = new Timer(50);
            positionTimer.addEventListener(TimerEvent.TIMER, positionTimerHandler);
            positionTimer.start();
        }
        

        private function positionTimerHandler(event:TimerEvent):void {
            trace("positionTimerHandler: " + channel.position.toFixed(2));
        }

        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);
            positionTimer.stop();       
        }

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

        private function soundCompleteHandler(event:Event):void {
            trace("soundCompleteHandler: " + event);
            positionTimer.stop();
        }
    }
}