| Paquete | flash.media |
| Clase | public class Sound |
| Herencia | Sound EventDispatcher Object |
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
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:
Sound.id3, SoundMixer.computeSpectrum(), SoundMixer.bufferTime y la case SoundTransform.Para más información, consulte las siguientes secciones:
Véase también
| Propiedad | Definido 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 | ||
![]() | constructor : 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 | ||
![]() | prototype : 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étodo | Definido por | ||
|---|---|---|---|
|
Crea un objeto Sound nuevo.
| Sound | ||
![]() |
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 | ||
![]() |
Distribuye un evento en el flujo del evento.
| EventDispatcher | |
![]() |
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento.
| EventDispatcher | |
![]() |
Indica si un objeto tiene definida una propiedad especificada.
| Object | |
![]() |
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
| Object | |
|
Inicia la carga de un archivo MP3 externo desde la URL especificada.
| Sound | ||
|
Genera un nuevo objeto SoundChannel para reproducir el sonido.
| Sound | ||
![]() |
Indica si existe la propiedad especificada y si es enumerable.
| Object | |
![]() |
Elimina un detector del objeto EventDispatcher.
| EventDispatcher | |
![]() |
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
| Object | |
![]() |
Devuelve la representación de cadena del objeto especificado.
| Object | |
![]() |
Devuelve el valor simple del objeto especificado.
| Object | |
![]() |
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 | |
| Evento | Resumen | Definido por | ||
|---|---|---|---|---|
![]() | 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 | |||
![]() | Se distribuye cuando Flash Player deja de estar seleccionado por el sistema operativo y pasa a estar inactivo. | EventDispatcher | ||
| 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 | |||
| bytesLoaded | propiedad |
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.
public function get bytesLoaded():uint
| bytesTotal | propiedad |
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.
public function get bytesTotal():int
| id3 | propiedad |
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.0 | Propiedad ActionScript correspondiente |
| COMM | Sound.id3.comment |
| TALB | Sound.id3.album |
| TCON | Sound.id3.genre |
| TIT2 | Sound.id3.songName |
| TPE1 | Sound.id3.artist |
| TRCK | Sound.id3.track |
| TYER | Sound.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.
| Propiedad | Descripción |
| TFLT | Tipo de archivo |
| TIME | Hora |
| TIT1 | Descripción de grupo de contenido |
| TIT2 | Título/nombre de canción/descripción del contenido |
| TIT3 | Subtítulo/descripción adicional |
| TKEY | Clave inicial |
| TLAN | Idiomas |
| TLEN | Duración |
| TMED | Tipo de medio |
| TOAL | Álbum/película/título de espectáculo original |
| TOFN | Nombre de archivo original |
| TOLY | Letrista/escritor original |
| TOPE | Artistas/intérpretes originales |
| TORY | Año de publicación original |
| TOWN | Propietario/licenciatario del archivo |
| TPE1 | Intérpretes/solistas principales |
| TPE2 | Grupo/orquesta/acompañamiento |
| TPE3 | Director/intérprete adicional |
| TPE4 | Interpretado, remezclado o editado por |
| TPOS | Parte de un conjunto |
| TPUB | Publisher |
| TRCK | Número de pista/posición en el conjunto |
| TRDA | Fechas de grabación |
| TRSN | Nombre de emisora de Internet |
| TRSO | Propietario de emisora de Internet |
| TSIZ | Tamaño |
| TSRC | ISRC (código de grabación estándar internacional) |
| TSSE | Software/hardware y configuración empleados para la codificación |
| TYER | Año |
| WXXX | Fotograma de vínculo de URL |
Cuando utilice esta propiedad, tenga en cuenta el modelo de seguridad de Flash Player:
id3 de un objeto Sound siempre está permitida para archivos SWF que se encuentren en el mismo entorno limitado de seguridad que el archivo de sonido. Para los archivos de otros entornos limitados existen comprobaciones de seguridad.load() de la clase Sound, puede especificar un parámetro context, que es un objeto SoundLoaderContext. Si establece la propiedad checkPolicyFile del objeto SoundLoaderContext como true, Flash Player buscará un archivo de política entre dominios en el servidor desde el que se carga el sonido. Si hay un archivo de política entre dominios y éste admite el dominio del archivo SWF que se carga, el archivo podrá acceder a la propiedad id3 del objeto Sound; en caso contrario, no será posible.Para más información, consulte las siguientes secciones:
public function get id3():ID3Info
Véase también
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);
}
}
}
| isBuffering | propiedad |
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.
public function get isBuffering():Boolean
| length | propiedad |
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.
public function get length():Number
| url | propiedad |
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.
public function get url():String
Véase también
| 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.
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).
|
| 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().
IOError — No se pudo cerrar el flujo o éste no se abrió.
|
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.
Sound.load() si el archivo SWF que realiza la llamada se encuentra en el entorno limitado local con el sistema de archivos y el sonido está en un entorno limitado de red.allowNetworking de las etiquetas object y embed de la página HTML que aloja el contenido SWF.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).
|
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
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.
|
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
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 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);
}
}
}
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);
}
}
}| complete | Evento |
flash.events.Event
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 propiedadtype de un objeto de evento complete.
Este evento tiene las propiedades siguientes:
| Propiedad | Valor |
|---|---|
bubbles | false |
cancelable | false; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | El objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto de red que ha terminado de cargarse. |
Véase también
| id3 | Evento |
flash.events.Event
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 propiedadtype de un objeto de evento id3.
Este evento tiene las propiedades siguientes:
| Propiedad | Valor |
|---|---|
bubbles | false |
cancelable | false; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | El objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto 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 |
flash.events.IOErrorEvent
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 propiedadtype de un objeto de evento ioError.
Este evento tiene las propiedades siguientes:
| Propiedad | Valor |
|---|---|
bubbles | false |
cancelable | false; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | El objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | El objeto de red en el que se produce el error de entrada/salida. |
text | Texto que se mostrará como mensaje de error. |
Véase también
| open | Evento |
flash.events.Event
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 propiedadtype de un objeto de evento open.
Este evento tiene las propiedades siguientes:
| Propiedad | Valor |
|---|---|
bubbles | false |
cancelable | false; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | El objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto de red que ha abierto una conexión. |
Véase también
| progress | Evento |
flash.events.ProgressEvent
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 propiedadtype de un objeto de evento progress.
Este evento tiene las propiedades siguientes:
| Propiedad | Valor |
|---|---|
bubbles | false |
bytesLoaded | Número de elementos o bytes cargados en el momento en que el detector procesa el evento. |
bytesTotal | Número total de elementos o bytes que se cargarán en última instancia si el proceso de carga se realiza correctamente. |
cancelable | false; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | El objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | El objeto de red que informa sobre el progreso. |
Véase también
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