Paqueteflash.media
Clasepublic class Sound
HerenciaSound Inheritance EventDispatcher Inheritance Object

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

La clase Sound permite trabajar con sonido en una aplicación. La clase Sound permite crear un nuevo objeto Sound, cargar y reproducir un archivo MP3 externo en el objeto, cerrar el flujo de sonido y acceder a datos de sonido como, por ejemplo, información sobre el número de bytes del flujo y los metadatos ID3. Se puede conseguir un mayor control del sonido mediante la fuente de sonido (los objetos SoundChannel o Microphone del sonido) y a través de las propiedades de la clase SoundTransform que controlan la salida del sonido en los altavoces del equipo.

Para controlar sonidos incorporados en un archivo SWF, utilice las propiedades de la clase SoundMixer.

Nota: la API Sound de ActionScript 3.0 es distinta de la de ActionScript 2.0. Con ActionScript 3.0, no es posible tomar objetos de sonido y organizarlos jerárquicamente para controlar sus propiedades.

Cuando utilice esta clase, tenga en cuenta el modelo de seguridad de Flash Player:

Para más información, consulte las siguientes secciones:

Ver los ejemplos

Véase también

Microphone
SoundChannel
SoundMixer
SoundTransform
Fundamentos de la utilización de sonido


Propiedades públicas
 PropiedadDefinido por
  bytesLoaded : uint
[read-only] Devuelve el número actual de bytes disponibles en el objeto de sonido.
Sound
  bytesTotal : int
[read-only] Devuelve el número total de bytes de este objeto de sonido.
Sound
 Inheritedconstructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
Object
  id3 : ID3Info
[read-only] Proporciona acceso a los metadatos que forman parte de un archivo MP3.
Sound
  isBuffering : Boolean
[read-only] Devuelve el estado del búfer de archivos MP3 externos.
Sound
  length : Number
[read-only] Longitud del sonido actual, expresada en milisegundos.
Sound
 Inheritedprototype : Object
[static] Una referencia al objeto prototipo de una clase u objeto de función.
Object
  url : String
[read-only] La URL desde la que se cargó el sonido.
Sound
Métodos públicos
 MétodoDefinido por
  
Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Crea un objeto Sound nuevo.
Sound
 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
  
Cierra el flujo y provoca la detención de cualquier descarga de datos.
Sound
 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
  
load(stream:URLRequest, context:SoundLoaderContext = null):void
Inicia la carga de un archivo MP3 externo desde la URL especificada.
Sound
  
play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel
Genera un nuevo objeto SoundChannel para reproducir el sonido.
Sound
 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
 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 Se distribuye cuando Flash Player queda seleccionado por el sistema operativo y pasa a estar activo.EventDispatcher
   Se distribuye cuando los datos se han cargado correctamente.Sound
 Inherited Se distribuye cuando Flash Player deja de estar seleccionado por el sistema operativo y pasa a estar inactivo.EventDispatcher
  
id3
Distribuido por un objeto Sound cuando hay datos ID3 disponibles para un sonido MP3.Sound
   Se distribuye cuando se produce un error de entrada o salida que provoca que una operación de carga se realice incorrectamente.Sound
   Se distribuye cuando se inicia la operación de carga.Sound
   Se distribuye al recibirse datos mientras progresa una operación de carga.Sound
Información sobre propiedades
bytesLoadedpropiedad
bytesLoaded:uint  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Devuelve el número actual de bytes disponibles en el objeto de sonido. Suele resultar útil únicamente para archivos cargados externamente.


Implementación
    public function get bytesLoaded():uint
bytesTotalpropiedad 
bytesTotal:int  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Devuelve el número total de bytes de este objeto de sonido.


Implementación
    public function get bytesTotal():int
id3propiedad 
id3:ID3Info  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Proporciona acceso a los metadatos que forman parte de un archivo MP3.

Los archivos de sonido MP3 pueden contener etiquetas ID3 que proporcionan metadatos sobre el archivo. Si un sonido MP3 que se carga con el método Sound.load() contiene etiquetas ID3, puede consultar estas propiedades. Sólo se admiten las etiquetas ID3 que utilizan el conjunto de caracteres UTF-8.

Flash Player 9 y versiones posteriores añaden compatibilidad con las etiquetas ID3 2.0, específicamente con las de las versiones 2.3 y 2.4. En las tablas siguientes se muestran las etiquetas ID3 2.0 estándar y el tipo de contenido que representan. La propiedad Sound.id3 proporciona acceso a estas etiquetas mediante el formato my_sound.id3.COMM, my_sound.id3.TIME, etc. La primera tabla describe etiquetas a las que se puede acceder desde el nombre de propiedad de ID3 2.0 o desde el nombre de propiedad de ActionScript. La segunda tabla describe etiquetas ID3 admitidas, pero que no tienen propiedades predefinidas en ActionScript.

Etiqueta ID3 2.0Propiedad ActionScript correspondiente
COMMSound.id3.comment
TALBSound.id3.album
TCONSound.id3.genre
TIT2Sound.id3.songName
TPE1Sound.id3.artist
TRCKSound.id3.track
TYERSound.id3.year

La tabla siguiente describe etiquetas ID3 admitidas, pero que no tienen propiedades predefinidas en ActionScript. Se puede acceder a ellas llamando a mySound.id3.TFLT, mySound.id3.TIME, etc.

PropiedadDescripción
TFLTTipo de archivo
TIMEHora
TIT1Descripción de grupo de contenido
TIT2Título/nombre de canción/descripción del contenido
TIT3Subtítulo/descripción adicional
TKEYClave inicial
TLANIdiomas
TLENDuración
TMEDTipo de medio
TOALÁlbum/película/título de espectáculo original
TOFNNombre de archivo original
TOLYLetrista/escritor original
TOPEArtistas/intérpretes originales
TORYAño de publicación original
TOWNPropietario/licenciatario del archivo
TPE1Intérpretes/solistas principales
TPE2Grupo/orquesta/acompañamiento
TPE3Director/intérprete adicional
TPE4Interpretado, remezclado o editado por
TPOSParte de un conjunto
TPUBPublisher
TRCKNúmero de pista/posición en el conjunto
TRDAFechas de grabación
TRSNNombre de emisora de Internet
TRSOPropietario de emisora de Internet
TSIZTamaño
TSRCISRC (código de grabación estándar internacional)
TSSESoftware/hardware y configuración empleados para la codificación
TYERAño
WXXXFotograma de vínculo de URL

Cuando utilice esta propiedad, tenga en cuenta el modelo de seguridad de Flash Player:

Para más información, consulte las siguientes secciones:


Implementación
    public function get id3():ID3Info

Véase también


Ejemplo

El ejemplo siguiente lee la información de ID3 de un archivo de sonido y lo muestra en un campo de texto.

En el constructor, se carga el archivo de sonido pero no se establece su reproducción. En este caso, se asume que el archivo se encuentra en el directorio de SWF. El sistema debe tener permiso para leer las etiquetas ID3 de un archivo de sonido cargado. Si hay información de ID3 en el archivo y se permite al programa leerla, se activará un evento Event.ID3 y se rellenará la propiedad id3 del archivo de sonido. La propiedad id3 contiene un objeto ID3Info con toda la información de ID3.

En el método id3Handler(), las etiquetas ID3 del archivo se almacenan en id3, un objeto de la clase ID3Info. Se crea una instancia del campo de texto para mostrar la lista de las etiquetas ID3. El bucle for itera por todas las etiquetas ID3 2.0 y agrega el nombre y el valor al contenido del campo de texto. Si utiliza las propiedades de información de ID3 (ID3Info), también se agrega el artista, el nombre de la canción y el álbum. ActionScript 3.0 y Flash Player 9 y versiones posteriores son compatibles con las etiquetas ID3 2.0, concretamente 2.3 y 2.4. Si itera por las propiedades del bucle for, sólo aparecerán las etiquetas ID3 2.0. Sin embargo, los datos de versiones anteriores también se almacenan en la propiedad id3 de la canción y se puede acceder a ésta mediante las propiedades de clase de información de ID3. Las etiquetas para ID3 1.0 se encuentran al final del archivo mientras que las etiquetas ID3 2.0 están al principio. (A veces, los archivos pueden tener tanto etiquetas de versiones anteriores como posteriores en el mismo lugar.) Si un archivo se codifica con las dos versiones de etiquetas 1.0 y 2.0 al principio y al final del archivo, el método id3Handler() se invocará dos veces. Primero lee la versión 2.0 y luego la versión 1.0. Si sólo está disponible la etiqueta ID3 1.0, la información es accesible a través de las propiedades de información de ID3, como id3.songname. Para ID3 2.0, la propiedad id3.TITS recuperará el nombre de la canción mediante la nueva etiqueta (TITS).

Tenga en cuenta que no se escribe ninguna gestión de errores para este ejemplo y si el contenido de ID3 es largo, puede que el resultado no se vea por completo en el área de visualización.

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);
        }
    }
}
isBufferingpropiedad 
isBuffering:Boolean  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Devuelve el estado del búfer de archivos MP3 externos. Si el valor es true, se suspenderá cualquier reproducción activa mientras el objeto espera más datos.


Implementación
    public function get isBuffering():Boolean
lengthpropiedad 
length:Number  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Longitud del sonido actual, expresada en milisegundos.


Implementación
    public function get length():Number
urlpropiedad 
url:String  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

La URL desde la que se cargó el sonido. Esta propiedad sólo se aplica a objetos Sound cargados con el método Sound.load(). En el caso de objetos Sound asociados a un activo de sonido de una biblioteca SWF, el valor de la propiedad url es null.

Cuando se llama por primera vez a Sound.load(), la propiedad url tiene un valor inicial de null, ya que aún se desconoce la URL final. La propiedad url tendrá siempre un valor no nulo y cuando se distribuya un evento open desde el objeto Sound.

La propiedad url contiene la URL absoluta final desde la que se cargó el sonido. El valor de url suele coincidir con el valor transmitido al parámetro stream de Sound.load(). Sin embargo, si se transmitió una URL relativa a Sound.load(), el valor de la propiedad url representará la URL absoluta. Además, si la solicitud URL original se redirige mediante un servidor HTTP, el valor de la propiedad url reflejará la URL final desde la que se descargo en realidad el archivo de sonido. Informar sobre una URL final absoluta equivale al comportamiento de LoaderInfo.url.


Implementación
    public function get url():String

Véase también

Información sobre constructores
Sound()constructor
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Crea un objeto Sound nuevo. Si se transmite un objeto URLRequest válido al constructor Sound, éste llamará automáticamente a la función load() del objeto Sound. Si no se transmite ningún objeto URLRequest válido al constructor Sound, debe llamar a la función load() del objeto Sound explícitamente o el flujo no se cargará.

Una vez que se ha llamado a load() en un objeto Sound, no es posible cargar más adelante un archivo de sonido distinto en el objeto Sound. Para cargar un archivo de sonido distinto, cree un objeto Sound nuevo.

Parámetros
stream:URLRequest (default = null) — La URL que señala a un archivo MP3 externo.
 
context:SoundLoaderContext (default = null) — Número mínimo de milisegundos de datos MP3 que se conservan en el búfer del objeto Sound. El objeto Sound espera a tener, al menos, esta cantidad de datos para comenzar la reproducción y antes de reanudarla tras un atasco de red. El valor predeterminado es 1000 (un segundo).
Información sobre métodos
close()método
public function close():void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Cierra el flujo y provoca la detención de cualquier descarga de datos. No se pueden leer datos del flujo después de llamar al método close().


Emite
IOError — No se pudo cerrar el flujo o éste no se abrió.

Ejemplo

En el ejemplo siguiente, cuando el usuario haga clic en el botón Stop (Detener), se llamará al método Sound.close() y se detendrá la transmisión del sonido.

En el constructor, se crea un campo de texto para el botón Start (Iniciar) y Stop (Detener). Cuando el usuario hace clic en el campo de texto, se invoca el método clickHandler(). Este método controla el inicio y la detención del archivo de sonido. Tenga en cuenta que dependiendo de la conexión de red o de cuándo el usuario hace clic en el botón Stop, gran parte del archivo podría estar ya cargado y es posible que tarde un poco en detenerse la reproducción. Se utiliza un bloque try...catch para capturar cualquier error de entrada y salida que pueda tener ocurrir durante el cierre de la transmisión. Por ejemplo, si el sonido se carga desde un directorio local y no se transmite, se captura el error 2029, que indica que este objeto URLStream no tiene una transmisión abierta."

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étodo 
public function load(stream:URLRequest, context:SoundLoaderContext = null):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Inicia la carga de un archivo MP3 externo desde la URL especificada. Si se proporciona un objeto URLRequest válido al constructor Sound, éste llamará a Sound.load() por el usuario. Sólo es necesario llamar a Sound.load() de forma explícita si no se transmite un objeto URLRequest válido al constructor Sound o se transmite un valor null.

Una vez que se ha llamado a load() en un objeto Sound, no es posible cargar más adelante un archivo de sonido distinto en el objeto Sound. Para cargar un archivo de sonido distinto, cree un objeto Sound nuevo.

Cuando utilice este método, tenga en cuenta el modelo de seguridad de Flash Player:

Para más información, consulte las siguientes secciones:

Parámetros

stream:URLRequest — Una URL que señala a un archivo MP3 externo.
 
context:SoundLoaderContext (default = null) — Número mínimo de milisegundos de datos MP3 que se conservan en el búfer del objeto Sound. El objeto Sound espera a tener, al menos, esta cantidad de datos para comenzar la reproducción y antes de reanudarla tras un atasco de red. El valor predeterminado es 1000 (un segundo).


Emite
IOError — Error de red que provoca un fallo en la carga.
 
SecurityError — Los archivos SWF locales que no son de confianza no pueden comunicarse en Internet. Puede solucionar este problema reclasificando el archivo SWF como archivo local de red o archivo de confianza.

Véase también


Ejemplo

El ejemplo siguiente muestra el progreso de carga de un archivo de sonido.

En el constructor, se crea un objeto URLRequest para identificar la ubicación del archivo de sonido, que es un podcast de Adobe. El archivo se carga en un bloque try...catch para capturar cualquier error que pueda producirse durante la carga del archivo. Si ocurre un error de entrada y salida, se invoca también el método errorHandler() y se escribe el mensaje de error en el campo de texto para el informe de progreso. Mientras esté en curso una operación de carga, se distribuye un evento ProgressEvent.PROGRESS y se llama al método progressHandler(). En este caso, se utiliza el evento ProgressEvent.PROGRESS como temporizador para calcular el progreso de la carga.

El método progressHandler() divide el valor bytesLoaded transferido con el objeto ProgressEvent entre el valor bytesTotal para llegar a un porcentaje de los datos de sonido que se están cargando. A continuación, muestra estos valores en el campo de texto. (Tenga en cuenta que si el archivo es pequeño, almacenado en la caché, o si el archivo se encuentra en el directorio local, puede que no sea perceptible el progreso.)

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étodo 
public function play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Genera un nuevo objeto SoundChannel para reproducir el sonido. Este método devuelve un objeto SoundChannel al que se accede para detener el sonido y supervisar el volumen. (Para controlar el volumen, el desplazamiento lateral y el balance, acceda al objeto SoundTransform asignado al canal de sonido.)

Parámetros

startTime:Number (default = 0) — La posición inicial en la que debería iniciarse la reproducción, expresada en milisegundos.
 
loops:int (default = 0) — Define el número de veces que un sonido vuelve indefinidamente al valor startTime antes de que el canal de sonido detenga la reproducción.
 
sndTransform:SoundTransform (default = null) — El objeto SoundTransform inicial asignado al canal de sonido.

Valor devuelto
SoundChannel — Un objeto SoundChannel que se utiliza para controlar el sonido. El método devuelve null si no hay tarjeta de sonido o se ha quedado sin canales de sonido disponibles. El número máximo de canales de sonido disponibles simultáneamente es 32.

Véase también


Ejemplo

En el ejemplo siguiente, una vez que se carga el archivo, el usuario puede utilizar una barra gráfica para seleccionar la posición inicial (tiempo de inicio) del archivo de sonido.

El constructor llama al método Sound.load() para empezar a cargar los datos de sonido. A continuación, llama al método Sound.play() que iniciará la reproducción del sonido en cuanto haya suficientes datos cargados. El método Sound.play() devuelve un objeto SoundChannel que se puede utilizar para controlar la reproducción del sonido. El campo de texto muestra las instrucciones. Para asegurarse de que se ha cargado ya el contenido de la posición donde el usuario desea que comience el sonido, se crea el objeto Sprite bar y se muestra después de que haya finalizado la carga del archivo. Se distribuye un evento Event.COMPLETE cuando el archivo se ha cargado correctamente, lo que activa el método completeHandler(). El método completeHandler() crea a continuación la barra y la añade a la lista de visualización. (Se utiliza un objeto sprite en lugar de un objeto shape para permitir la interactividad.) Cuando el usuario hace clic en la barra, se activa el método clickHandler().

En el método clickHandler(), se utiliza la posición de la coordenada x del clic del usuario, event.localX, para determinar la posición en la que el usuario desea que se inicie el archivo. Puesto que la barra es de 100 píxeles y se inicia en la coordenada x de 100 píxeles, es fácil determinar el porcentaje de la posición. Además, ya que se carga el archivo, la propiedad length del archivo de sonido tendrá la longitud del archivo completo en milisegundos. Con el uso de la longitud del archivo de sonido y la posición en la línea, se determina una posición inicial para el archivo de sonido. Después de detener la reproducción del sonido, el archivo de sonido se reinicia en la posición inicial seleccionada, que es pasado el parámetro startTime en el método 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;
        }
    }
}

En el ejemplo siguiente, dependiendo de si el usuario hace clic o doble clic en un botón, el sonido se reproducirá una o dos veces.

En el constructor, se carga el sonido y se crea un sencillo objeto sprite button rectangular. (Se utiliza un objeto sprite en lugar de un objeto shape para permitir la interactividad.) En este caso, se asume que el archivo se encuentra en el mismo directorio que el archivo SWF. (No hay código de gestión de errores para este ejemplo.)

Se configuran dos detectores de eventos para que respondan a los clic y a los dobles clic del ratón. Si el usuario hace clic una vez, se invoca el método clickHandler(), que reproduce el sonido. Si el usuario hace doble clic en el botón, se invoca el método doubleClickHandler(), que reproducirá dos veces el archivo de sonido. El segundo argumento del método play() se establece en 1, lo que significa que el sonido volverá en bucle una vez al tiempo de inicio del sonido y lo reproducirá de nuevo. El tiempo de inicio, el primer argumento, se establece en 0, lo que significa que el archivo se reproducirá desde el principio.

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);
        }
    }
}

El ejemplo siguiente muestra el progreso de carga y reproducción de un archivo de sonido.

En el constructor, el archivo se carga en un bloque try...catch para capturar cualquier error que pueda producirse durante la carga del archivo. Se añade un detector al objeto de sonido que responderá a un evento IOErrorEvent mediante la llamada al método errorHandler(). Se añade otro detector para la aplicación principal que responderá a un evento Event.ENTER_FRAME, que se utiliza como mecanismo de temporización para mostrar el progreso de la reproducción. Por último, se añade un tercer detector para el canal de sonido que responderá a un evento Event.SOUND_COMPLETE (cuando el sonido haya terminado de reproducirse), mediante la llamada al método soundCompleteHandler(). El método soundCompleteHandler() elimina también el detector de eventos para el evento Event.ENTER_FRAME.

El método enterFrameHandler() divide el valor bytesLoaded transferido con el objeto ProgressEvent entre el valor bytesTotal para llegar a un porcentaje de los datos de sonido que se están cargando. El porcentaje de los datos de sonido que se están reproduciendo se podría determinar dividiendo el valor de la propiedad position del canal de sonido entre la longitud de los datos de sonido. Sin embargo, si los datos de sonido no se cargan completamente, la propiedad length del objeto de sonido muestra sólo el tamaño de los datos de sonido que están cargados actualmente. Una estimación del tamaño final del archivo de sonido completo se calcula dividiendo el valor de length del objeto de sonido actual entre el valor de la propiedad bytesLoaded dividido entre el valor de la propiedad bytesTotal.

Tenga en cuenta que si el archivo es pequeño, almacenado en la caché, o si el archivo se encuentra en el directorio local, puede que no sea perceptible el progreso de la carga. Asimismo, el tiempo de retardo entre el inicio de la carga de los datos de sonido y el inicio de la reproducción de los datos cargados está determinado por el valor de la propiedad SoundLoaderContext.buffertime, que se establece de forma predeterminada en 1000 milisegundos y que se puede volver a establecer.

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);
        }
    }
}
Información sobre eventos
complete Evento
Tipo de objeto de evento: flash.events.Event
Event.type property = flash.events.Event.COMPLETE

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Se distribuye cuando los datos se han cargado correctamente.

Define el valor de la propiedad type de un objeto de evento complete.

Este evento tiene las propiedades siguientes:

PropiedadValor
bubblesfalse
cancelablefalse; no hay ningún comportamiento predeterminado que cancelar.
currentTargetEl objeto que procesa de forma activa el objeto de evento con un detector de eventos.
targetObjeto de red que ha terminado de cargarse.

Véase también

id3 Evento  
Tipo de objeto de evento: flash.events.Event
Event.type property = flash.events.Event.ID3

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Distribuido por un objeto Sound cuando hay datos ID3 disponibles para un sonido MP3.

Define el valor de la propiedad type de un objeto de evento id3.

Este evento tiene las propiedades siguientes:

PropiedadValor
bubblesfalse
cancelablefalse; no hay ningún comportamiento predeterminado que cancelar.
currentTargetEl objeto que procesa de forma activa el objeto de evento con un detector de eventos.
targetObjeto Sound que carga el MP3 para el que los datos ID3 están ahora disponibles. El objeto target no siempre es el objeto de la lista de visualización que registró el detector de eventos. Utilice la propiedad currentTarget para acceder al objeto de la lista de visualización que está procesando el evento actualmente.

Véase también

ioError Evento  
Tipo de objeto de evento: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Se distribuye cuando se produce un error de entrada o salida que provoca que una operación de carga se realice incorrectamente.

Define el valor de la propiedad type de un objeto de evento ioError.

Este evento tiene las propiedades siguientes:

PropiedadValor
bubblesfalse
cancelablefalse; no hay ningún comportamiento predeterminado que cancelar.
currentTargetEl objeto que procesa de forma activa el objeto de evento con un detector de eventos.
targetEl objeto de red en el que se produce el error de entrada/salida.
textTexto que se mostrará como mensaje de error.

Véase también

open Evento  
Tipo de objeto de evento: flash.events.Event
Event.type property = flash.events.Event.OPEN

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Se distribuye cuando se inicia la operación de carga.

Define el valor de la propiedad type de un objeto de evento open.

Este evento tiene las propiedades siguientes:

PropiedadValor
bubblesfalse
cancelablefalse; no hay ningún comportamiento predeterminado que cancelar.
currentTargetEl objeto que procesa de forma activa el objeto de evento con un detector de eventos.
targetObjeto de red que ha abierto una conexión.

Véase también

progress Evento  
Tipo de objeto de evento: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.PROGRESS

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Se distribuye al recibirse datos mientras progresa una operación de carga.

Define el valor de la propiedad type de un objeto de evento progress.

Este evento tiene las propiedades siguientes:

PropiedadValor
bubblesfalse
bytesLoadedNúmero de elementos o bytes cargados en el momento en que el detector procesa el evento.
bytesTotalNúmero total de elementos o bytes que se cargarán en última instancia si el proceso de carga se realiza correctamente.
cancelablefalse; no hay ningún comportamiento predeterminado que cancelar.
currentTargetEl objeto que procesa de forma activa el objeto de evento con un detector de eventos.
targetEl objeto de red que informa sobre el progreso.

Véase también

Ejemplos Cómo utilizar los ejemplos
SoundExample.as

En el ejemplo siguiente, se muestra información sobre los eventos de sonido que se producen al abrir y reproducir un archivo MP3. 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;

    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);
        }
    }
}




 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/flash/media/Sound.html