Referencia de ActionScript® 3.0 para la plataforma de Adobe® Flash®
Inicio  |  Ocultar lista de paquetes y clases |  Paquetes  |  Clases  |  Novedades  |  Índice  |  Apéndices  |  ¿Por qué hay texto en inglés?
Filtros: Recuperando datos del servidor...
Recuperando datos del servidor...
flash.media 

SoundChannel  - AS3

Paqueteflash.media
Clasepublic final class SoundChannel
HerenciaSoundChannel Inheritance EventDispatcher Inheritance Object

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

La clase SoundChannel controla un sonido en una aplicación. Cada sonido está asignado a un canal de sonido y la aplicación puede tener varios canales de sonido mezclados entre sí. La clase SoundChannel contiene un método stop(), propiedades para supervisar la amplitud (volumen) del canal y una propiedad para asignar un objeto SoundTransform en el canal.

Ver los ejemplos

Elementos de API relacionados



Propiedades públicas
 PropiedadDefinido por
 Inheritedconstructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
Object
  leftPeak : Number
[solo lectura] La amplitud actual (volumen) del canal izquierdo. Valores comprendidos entre 0 (silencio) y 1 (amplitud completa).
SoundChannel
  position : Number
[solo lectura] Cuando se está reproduciendo el sonido, la propiedad position indica (en milisegundos) el punto actual que se está reproduciendo en el archivo de sonido.
SoundChannel
  rightPeak : Number
[solo lectura] La amplitud actual (volumen) del canal derecho. Valores comprendidos entre 0 (silencio) y 1 (amplitud completa).
SoundChannel
  soundTransform : flash.media:SoundTransform
El objeto SoundTransform asignado al canal de sonido.
SoundChannel
Métodos públicos
 MétodoDefinido por
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento.
EventDispatcher
 Inherited
Distribuye un evento en el flujo del evento.
EventDispatcher
 Inherited
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento.
EventDispatcher
 Inherited
Indica si un objeto tiene definida una propiedad especificada.
Object
 Inherited
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
Object
 Inherited
Indica si existe la propiedad especificada y si es enumerable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Elimina un detector del objeto EventDispatcher.
EventDispatcher
 Inherited
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
Object
  
Detiene el sonido que se reproduce en el canal.
SoundChannel
 Inherited
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional.
Object
 Inherited
Devuelve la representación de cadena del objeto especificado.
Object
 Inherited
Devuelve el valor simple del objeto especificado.
Object
 Inherited
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto.
EventDispatcher
Eventos
 Evento Resumen Definido por
 Inherited[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos.EventDispatcher
 Inherited[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos.EventDispatcher
  Se distribuye cuando el sonido ha terminado de reproducirse.SoundChannel
Información sobre propiedades

leftPeak

propiedad
leftPeak:Number  [solo lectura]

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

La amplitud actual (volumen) del canal izquierdo. Valores comprendidos entre 0 (silencio) y 1 (amplitud completa).



Implementación
    public function get leftPeak():Number

position

propiedad 
position:Number  [solo lectura]

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

Cuando se está reproduciendo el sonido, la propiedad position indica (en milisegundos) el punto actual que se está reproduciendo en el archivo de sonido. Cuando el sonido se detiene o se pone en pausa, la propiedad position indica el último punto que se reprodujo en el archivo de sonido.

Un caso de uso común es guardar el valor de la propiedad position cuando se detiene el sonido. El sonido se puede reanudar más tarde reiniciándolo desde esa posición guardada.

Si el sonido se reproduce de manera indefinida, position se restablece en 0 al comienzo de cada nueva reproducción.



Implementación
    public function get position():Number

rightPeak

propiedad 
rightPeak:Number  [solo lectura]

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

La amplitud actual (volumen) del canal derecho. Valores comprendidos entre 0 (silencio) y 1 (amplitud completa).



Implementación
    public function get rightPeak():Number

soundTransform

propiedad 
soundTransform:flash.media:SoundTransform

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

El objeto SoundTransform asignado al canal de sonido. Un objeto SoundTransform incluye propiedades para establecer el volumen, el desplazamiento lateral, la asignación del altavoz izquierdo y la asignación del altavoz derecho.



Implementación
    public function get soundTransform():flash.media:SoundTransform
    public function set soundTransform(value:flash.media:SoundTransform):void

Elementos de API relacionados

Información sobre métodos

stop

()método
public function stop():void

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

Detiene el sonido que se reproduce en el canal.


Ejemplo  ( Cómo utilizar este ejemplo )

En el ejemplo siguiente, el usuario puede detener y volver a reproducir un archivo de sonido.

En el constructor, se carga el archivo de sonido. (En este ejemplo se asume que el archivo está en el mismo directorio que el archivo SWF.) Se utiliza un campo de texto como botón para que el usuario reproduzca o detenga el sonido. Cuando el usuario selecciona el campo de texto button, se invoca el método clickHandler().

En el método clickHandler(), la primera vez que el usuario selecciona el campo de texto, se define el sonido para que se reproduzca y se asigna a un canal de sonido. A continuación, cuando el usuario selecciona el campo de texto para poner en pausa, el sonido deja de reproducirse. La propiedad position del canal de sonido registra la posición del sonido en el momento en que se detiene. La propiedad se utiliza para reanudar el sonido en la misma posición cuando el usuario selecciona el campo de texto para volver a iniciar la reproducción. Cada vez que se llama al método Sound.play() se crea un nuevo objeto SoundChannel y se asigna a la variable channel. El objeto Sound necesita asignarse a un objeto SoundChannel para utilizar el método stop() del canal de sonido para detener el sonido.

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";
            }
        }
    }
}
Información sobre eventos

soundComplete

Evento
Tipo de objeto de evento: flash.events.Event
propiedad Event.type = flash.events.Event.SOUND_COMPLETE

Versión del lenguaje: ActionScript 3.0
Versiones de motor de ejecución: AIR 1.0, Flash Player 9, Flash Lite 4

Se distribuye cuando el sonido ha terminado de reproducirse.

La constante Event.SOUND_COMPLETE define el valor de la propiedad type de un objeto de evento soundComplete.

Este evento tiene las propiedades siguientes:

PropiedadValor
bubblesfalse
cancelablefalse; no hay ningún comportamiento predeterminado que cancelar.
currentTargetObjeto que procesa de forma activa el objeto de evento con un detector de eventos.
targetEl objeto SoundChannel en el que ha terminado de reproducirse un sonido.

Ejemplo  ( Cómo utilizar este ejemplo )

En el ejemplo siguiente, el usuario selecciona canciones de una lista de reproducción y después selecciona "Play" para reproducir las canciones en el orden seleccionado.

En el constructor, se define un campo de texto que contiene la lista de canciones y una línea para la selección de reproducción. (Normalmente, los botones se utilizan para reproducir y los cuadro de lista para la lista de canciones.) Se define un objeto de formato de texto que cambia el formato de las líneas de la canción a cursiva una vez seleccionadas. Cuando el usuario selecciona el campo de texto, se invoca el método clickHandler().

En el método clickHandler(),el método getLineIndexAtPoint() del objeto de campo de texto devuelve el índice de la línea que el usuario ha seleccionado. Con el índice de la línea, el método getLineText() obtiene el contenido del texto. La declaración if comprueba si el usuario ha seleccionado la reproducción de una canción o si ha añadido alguna canción a la lista de reproducción. Si el usuario ha decidido reproducir y se ha seleccionado una canción, se elimina el detector de eventos para el clic del ratón y se llama al método playNext() para comenzar a reproducir las canciones. Si el usuario ha seleccionado el título de la canción, se añade el contenido de la línea al conjunto songList y el formato de la línea se define como cursiva.

El método playNext() itera por la lista de conjuntos para cargar y reproducir cada canción. La canción también se asigna a un canal de sonido. Se añade un detector de eventos para el canal de sonido a fin de que responda cuando termine de reproducirse la canción y se distribuya el evento Event.SOUND_COMPLETE. El método soundCompleteHandler() invoca después el método playNext() para reproducir la siguiente canción. Este proceso continúa hasta que terminan de reproducirse todas las canciones enumeradas en el conjunto.

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);
        }
    }
}
SoundChannelExample.as

En el ejemplo siguiente, se carga un archivo MP3, se reproduce y se muestra información sobre los eventos de sonido que tienen lugar cuando se carga y se reproduce el archivo MP3. Un objeto Timer proporciona información actualizada sobre la posición de la cabeza lectora cada 50 milisegundos. Para ejecutar el ejemplo, coloque un archivo llamado MySound.mp3 en el mismo directorio que el archivo 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();
        }
    }
}




[ X ]¿Por qué hay texto en inglés?
Cierto contenido de la Referencia de ActionScript 3.0 se muestra en inglés

No todo el contenido de la Referencia de ActionScript 3.0 se traduce a todos los idiomas. Si un elemento del lenguaje no se traduce, aparecerá en inglés. Por ejemplo, la clase ga.controls.HelpBox no está traducida en ningún idioma. Por lo tanto, en la versión en español de la referencia, la clase ga.controls.HelpBox aparecerá en inglés.