Paquete | flash.media |
Clase | public class Sound |
Herencia | Sound EventDispatcher Object |
Subclases | SoundAsset |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
En Flash Player 1.5 y versiones posteriores, y en AIR 1.5 y versiones posteriores, también se puede utilizar esta clase para trabajar con sonido generado de forma dinámica. En este caso, el objeto Sound utilizará la función asignada a un controlador de eventos sampleData
para buscar datos de sonido. El sonido se reproducirá conforme se recupere de un objeto ByteArray llenado con datos de sonido. Puede utilizar Sound.extract()
para extraer datos de sonido de un objeto Sound. A continuación, puede manipularlo antes de volver a escribirlo en el flujo para la reproducción.
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, puede ser conveniente usar el siguiente modelo de seguridad:
- No se admite la carga ni la reproducción de un sonido si el archivo que realiza la llamada se encuentra en el entorno limitado de red y el archivo de sonido que debe cargarse está en un sistema local.
- De forma predeterminada, no está permitido cargar y reproducir un sonido si el archivo que realiza la llamada es local e intenta cargar y reproducir sonido remoto. El usuario debe proporcionar permiso de forma explícita para permitir este tipo de acceso.
- Están restringidas ciertas operaciones relacionadas con sonidos. Un archivo de un dominio distinto no puede acceder a los datos de un sonido cargado a no ser que implemente un archivo de política ente dominios. Las API relacionadas con sonidos a las que afecta esta restricción son
Sound.id3
,SoundMixer.computeSpectrum()
,SoundMixer.bufferTime
y la caseSoundTransform
.
Sin embargo, en Adobe AIR, el contenido del entorno limitado de seguridad de la aplicación
(contenido instalado con la aplicación de AIR) no está limitado por estas restricciones de seguridad.
Para obtener más información, consulte el tema del Centro de desarrollo de Flash Player Seguridad.
Elementos de API relacionados
Propiedad | Definido por | ||
---|---|---|---|
bytesLoaded : uint [solo lectura]
Devuelve el número actual de bytes disponibles en el objeto de sonido. | Sound | ||
bytesTotal : int [solo lectura]
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 [solo lectura]
Proporciona acceso a los metadatos que forman parte de un archivo MP3. | Sound | ||
isBuffering : Boolean [solo lectura]
Devuelve el estado del búfer de archivos MP3 externos. | Sound | ||
isURLInaccessible : Boolean [solo lectura]
Indica si se ha truncado la propiedad Sound.url. | Sound | ||
length : Number [solo lectura]
Longitud del sonido actual, expresada en milisegundos. | Sound | ||
url : String [solo lectura]
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 | ||
Extrae datos de sonido sin procesar de un objeto Sound. | Sound | ||
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 | ||
carga datos de sonido MP3 de un objeto ByteArray en un objeto Sound. | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Carga datos de sonido de coma flotante PCM de 32 bits de un objeto ByteArray en un objeto Sound. | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
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 de este objeto, con formato según las convenciones específicas de configuración regional. | 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 | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
Se distribuye cuando los datos se han cargado correctamente. | Sound | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | 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 | |||
Se distribuye cuando el motor de ejecución solicita nuevos datos de audio. | Sound |
bytesLoaded | propiedad |
bytesLoaded:uint
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Devuelve el número actual de bytes disponibles en el objeto de sonido. Esta propiedad suele ser útil únicamente en archivos cargados externamente.
Implementación
public function get bytesLoaded():uint
bytesTotal | propiedad |
id3 | propiedad |
id3:ID3Info
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
En Flash Player 9 y versiones posteriores y en AIR se admiten etiquetas ID3 2.0, concretamente 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 correspondiente de la clase Sound |
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 |
En la siguiente tabla se describen las etiquetas ID3 admitidas, pero que no tienen propiedades predefinidas la clase Sound. Se puede acceder a ellas llamando a mySound.id3.TFLT
, mySound.id3.TIME
, etc. NOTA: ninguna de estas etiquetas se admite en Flash Lite 4.
Propiedad | Description |
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:
- La propiedad
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. - Al cargar el sonido con el método
load()
de la clase Sound, puede especificar un parámetrocontext
, que es un objeto SoundLoaderContext. Si establece la propiedadcheckPolicyFile
del objeto SoundLoaderContext comotrue
, Flash Player comprobará la existencia de un archivo de política URL en el servidor desde el que se carga el sonido. Si existe un archivo de política y éste permite acceder desde el dominio del archivo SWF que se carga, el archivo podrá acceder a la propiedadid3
del objeto Sound; en caso contrario, no será posible.
Sin embargo, en Adobe AIR, el contenido del entorno limitado de seguridad de la aplicación
(contenido instalado con la aplicación de AIR) no está limitado por estas restricciones de seguridad.
Para obtener más información, consulte el tema del Centro de desarrollo de Flash Player Seguridad.
Implementación
public function get id3():ID3Info
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
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
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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
isURLInaccessible | propiedad |
isURLInaccessible:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10.1, AIR 2 |
Indica si se ha truncado la propiedad Sound.url
. Cuando el valor de isURLInaccessible
es true
, el valor de Sound.url
es sólo el dominio de la URL final desde la que se cargó el sonido. Por ejemplo, la propiedad se trunca si el sonido se carga desde http://www.adobe.com/assets/hello.mp3
, y la propiedad Sound.url
tiene el valor http://www.adobe.com
. El valor de isURLInaccessible
es true
sólo cuando todos los siguientes también son true:
- Se ha producido una redirección HTTP mientras se cargaba el archivo de sonido.
- El archivo SWF que llama a
Sound.load()
procede de un dominio distinto que la URL final del archivo de sonido. - El archivo SWF que llama a
Sound.load()
no tiene permiso para acceder al archivo de sonido. Se concede permiso para acceder al archivo de sonido del mismo modo que se concede permiso para la propiedadSound.id3
: estableciendo un archivo de política y utilizando la propiedadSoundLoaderContext.checkPolicyFile
.
Nota: la propiedadisURLInaccessible
se añadió en Flash Player 10.1 y en AIR 2.0. No obstante, esta propiedad está disponible para los archivos SWF de todas las versiones si el motro de ejecución de Flash lo admite. Así, utilizar determinadas herramientas de edición en “modo estricto” provoca un error de compilación. Para solucionar el error, utilice la sintaxis indirecta mySound["isURLInaccessible"]
o desactive el modo estricto. Si utiliza Flash CS5 Professional o Flex SDK 4.1, puede usar y compilar esta API para motores de ejecución previos a Flash Player 10.1 y AIR 2.
Para contenido de la aplicación en AIR, el valor de esta propiedad siempre es false
.
Implementación
public function get isURLInaccessible():Boolean
Elementos de API relacionados
length | propiedad |
url | propiedad |
url:String
[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 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 la biblioteca de un archivo 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 petición de 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
.
En algunos casos, el valor de la propiedad url
se trunca; consulte la propiedad isURLInaccessible
para obtener más detalles.
Implementación
public function get url():String
Elementos de API relacionados
Sound | () | Información sobre |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
load()
, se puede utilizar el controlador de eventos sampleData
para cargar sonido de forma dinámica en el objeto Sound.
Parámetros stream:URLRequest (default = null ) — La URL que señala a un archivo MP3 externo.
| |
context:SoundLoaderContext (default = null ) — Objeto de contexto SoundLoader opcional que puede definir el tiempo del búfer (número mínimo de milisegundos de datos MP3 almacenados en el búfer del objeto Sound) y puede especificar si la aplicación debe buscar un archivo de política entre dominios para poder cargar el sonido.
|
close | () | método |
public function close():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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 ( Cómo utilizar este ejemplo )
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; } } }
extract | () | método |
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Extrae datos de sonido sin procesar de un objeto Sound.
Este método se ha diseñado para utilizarse cuando se trabaja con audio generado dinámicamente, utilizando una función asignada al evento sampleData
para un objeto Sound diferente. Esto significa que puede utilizar este método para extraer sonido de un objeto Sound. Seguidamente, puede escribir los datos en el conjunto de bytes que otro objeto Sound esté utilizando para flujos de audio dinámico.
Los datos de audio se colocan en el conjunto de bytes de destino comenzando por la posición actual del conjunto. Los datos de audio siempre se exponen como Estéreo a 44100 Hz. El tipo de muestra es un punto flotante de 32 bits, el cual se puede convertir a un valor Number utilizando ByteArray.readFloat()
.
Parámetros
target:ByteArray — Un objeto ByteArray en el que se colocan las muestran de sonido extraídas.
| |
length:Number — El número de muestras de sonido que se van a extraer. Una muestra contiene los canales izquierdo y derecho, es decir, dos valores de punto flotante de 32 bits.
| |
startPosition:Number (default = -1 ) — La muestra en la que se inicia la extracción. Si no se especifica un valor, la primera llamada a Sound.extract() se inicia al comienzo del sonido; la llamadas siguientes sin un valor para startPosition progresan secuencialmente a través del archivo.
|
Number — El número de muestras escritas en ByteArray especificado en el parámetro target .
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
extract()
de la clase Sound para acceder a los datos de audio.
Los datos mp3 se cargan en el elemento sourceSnd
del objeto Sound. Cuando la aplicación carga los datos mp3, llama a la función loaded()
(el controlador de eventos del evento complete
del objeto sourceSnd
). Un segundo objeto Sound, outputSound
, se utiliza para reproducir el audio modificado. El objeto outputSound
tiene un detector de eventos sampleData
, de modo que el objeto distribuye eventos sampleData
de forma periódica una vez llamado el método play()
del objeto. El método upOctave()
devuelve un conjunto de datos de audio modificados basados en los datos de audio originales. Devuelve el audio una octava por encima omitiendo cualquier otra muestra de audio incluida en los datos originales. El controlador de eventos del evento sampleData
escribe el conjunto de bytes devuelto en la propiedad data
del objeto outputSound
. El conjunto de bytes data
se añade a los datos de audio de salida para el objeto outputSound
.
Para probar este ejemplo, añada un archivo test.mp3 al mismo directorio que el archivo SWF.
var sourceSnd:Sound = new Sound(); var outputSnd:Sound = new Sound(); var urlReq:URLRequest = new URLRequest("test.mp3"); sourceSnd.load(urlReq); sourceSnd.addEventListener(Event.COMPLETE, loaded); function loaded(event:Event):void { outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound); outputSnd.play(); } function processSound(event:SampleDataEvent):void { var bytes:ByteArray = new ByteArray(); sourceSnd.extract(bytes, 4096); event.data.writeBytes(upOctave(bytes)); } function upOctave(bytes:ByteArray):ByteArray { var returnBytes:ByteArray = new ByteArray(); bytes.position = 0; while(bytes.bytesAvailable > 0) { returnBytes.writeFloat(bytes.readFloat()); returnBytes.writeFloat(bytes.readFloat()); if (bytes.bytesAvailable > 0) { bytes.position += 8; } } return returnBytes; }
load | () | método |
public function load(stream:URLRequest, context:SoundLoaderContext = null):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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, puede ser conveniente usar el modelo de seguridad siguiente:
- No se admiten llamadas a
Sound.load()
si el archivo 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. - Para acceder desde el entorno limitado local de confianza o local con acceso a la red se necesitan permisos del sitio web a través de un archivo de política URL.
- No es posible conectar con puertos reservados comúnmente. Para obtener una lista completa de los puertos bloqueados, consulte la sección “Restricción de API de red” en el Guía del desarrollador de ActionScript 3.0.
- Se puede impedir que un archivo SWF utilice este método si define el parámetro
allowNetworking
de las etiquetasobject
yembed
de la página HTML que aloja el contenido SWF.
En Flash Player 10 y versiones posteriores, si utiliza una estructura Content-Type de varias partes (por ejemplo, "multipart/form-data") con una acción de carga (indicada por un parámetro "filename" en un encabezado "content-disposition" dentro del cuerpo POST), la operación POST está sujeta a las reglas de seguridad aplicadas a las cargas:
- Es preciso realizar una operación POST como respuesta a una acción iniciada por el usuario, por ejemplo, un clic de ratón o la pulsación de una tecla.
- Si la operación POST afecta a varios dominios (el destino POST no se encuentra en el mismo servidor que el archivo SWF que envía la petición POST), el servidor de destino debe proporcionar un archivo de política URL que permita el acceso a varios dominios.
Asimismo, en cualquier estructura Content-Type de varias partes, la sintaxis debe ser válida (de acuerdo con la norma RFC2046). Si la sintaxis no es válida, la operación POST está sujeta a las reglas de seguridad que se aplican a las cargas.
En Adobe AIR, el contenido del entorno limitado de seguridad de la aplicación
(contenido instalado con la aplicación de AIR) no está limitado por estas restricciones de seguridad.
Para obtener más información, consulte el tema del Centro de desarrollo de Flash Player Seguridad.
Parámetros
stream:URLRequest — Una URL que señala a un archivo MP3 externo.
| |
context:SoundLoaderContext (default = null ) — Objeto de contexto SoundLoader opcional que puede definir el tiempo del búfer (número mínimo de milisegundos de datos MP3 almacenados en el búfer del objeto Sound) y puede especificar si la aplicación debe buscar un archivo de política entre dominios para poder cargar el sonido.
|
Emite
IOError — Error de red que provoca un fallo en la carga.
| |
SecurityError — Los archivos locales que no son de confianza no pueden comunicarse en Internet. Puede solucionar este problema reclasificando el archivo como archivo local de red o archivo de confianza.
| |
SecurityError — No es posible conectar con puertos reservados comúnmente. Para obtener una lista completa de los puertos bloqueados, consulte la sección “Restricción de API de red” en el Guía del desarrollador de ActionScript 3.0.
| |
IOError — La propiedad digest del objeto stream no es null . Sólo debe establecerse la propiedad digest de un objeto URLRequest al llamar al método URLLoader.load() cuando se carga un archivo SWZ (componente de plataforma de Adobe).
|
Ejemplo ( Cómo utilizar este ejemplo )
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; } } }
loadCompressedDataFromByteArray | () | método |
public function loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 3, Flash Player 11 |
carga datos de sonido MP3 de un objeto ByteArray en un objeto Sound. Los datos se leen desde la posición actual de ByteArray y deja la posición de ByteArray al final de la longitud de bytes especificada una vez terminado. Si los datos de sonido MP3 contienen datos ID3, se distribuirán eventos ID3 durante esta llamada a la función. Esta función emitirá una excepción si el objeto ByteArray no contiene suficientes datos.
Parámetros
bytes:ByteArray | |
bytesLength:uint |
loadPCMFromByteArray | () | método |
public function loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 3, Flash Player 11 |
Carga datos de sonido de coma flotante PCM de 32 bits de un objeto ByteArray en un objeto Sound. Los datos se leen desde la posición actual de ByteArray y la posición de ByteArray queda al final de la longitud de muestra especificada, multiplicada por 1 o 2 canales si después de terminar se establece el indicador estéreo.
A partir de Flash Player 11.8, se ha limitado la cantidad de datos de audio que pueden pasar a esta función. Para versiones de SWF >= 21, esta función emite una excepción si la cantidad de datos de audio pasados a ella es superior a 1800 segundos. Es decir, el valor de muestras/frecuencia de muestreo debería ser igual o inferior a 1800. En versiones de SWF < 21, se produce un error silencioso del motor de ejecución si la cantidad de datos de audio pasados supera los 12000 segundos. Esto solo sirve para compatibilidad con versiones anteriores.
Esta función produce una excepción si el objeto ByteArray no contiene suficientes datos.
Parámetros
bytes:ByteArray | |
samples:uint | |
format:String (default = "float ")
| |
stereo:Boolean (default = true )
| |
sampleRate:Number (default = 44100.0 )
|
play | () | método |
public function play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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:flash.media: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.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
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
propiedad Event.type =
flash.events.Event.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 los datos se han cargado correctamente.
La constanteEvent.COMPLETE
define el valor de la propiedad type
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 | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto de red que ha terminado de cargarse. |
Elementos de API relacionados
id3 | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.ID3
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Distribuido por un objeto Sound cuando hay datos ID3 disponibles para un sonido MP3.
La constanteEvent.ID3
define el valor de la propiedad type
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 | 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. |
Elementos de API relacionados
ioError | Evento |
flash.events.IOErrorEvent
propiedad IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
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 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 | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
errorID | Un número de referencia asociado al error concreto (sólo AIR). |
target | El objeto de red en el que se produce el error de entrada/salida. |
text | Texto que se mostrará como mensaje de error. |
Elementos de API relacionados
open | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.OPEN
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 se inicia la operación de carga.
La constanteEvent.OPEN
define el valor de la propiedad type
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 | 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. |
Elementos de API relacionados
progress | Evento |
flash.events.ProgressEvent
propiedad ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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 | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | El objeto que informa sobre el progreso. |
Elementos de API relacionados
sampleData | Evento |
flash.events.SampleDataEvent
propiedad SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Se distribuye cuando el motor de ejecución solicita nuevos datos de audio.
Define el valor de la propiedadtype
de un objeto de evento SampleDataEvent
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
position | El punto desde el que se proporcionan los datos de audio. |
Ejemplo ( Cómo utilizar este ejemplo )
var mySound:Sound = new Sound(); function sineWaveGenerator(event:SampleDataEvent):void { for ( var c:int=0; c<8192; c++ ) { event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); } } mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); mySound.play();
Elementos de API relacionados
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); } } }
Tue Jun 12 2018, 02:12 PM Z