Trabajo con sonidos incorporados

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

La utilización de sonidos incorporados, en lugar de cargar sonidos de un archivo externo, resulta útil para sonidos de pequeño tamaño que se emplean como indicadores en la interfaz de usuario de la aplicación (por ejemplo, los sonidos que se reproducen cuando se hace clic en los botones).

Si se incorpora un archivo de sonido en la aplicación, el tamaño del archivo SWF resultante aumenta con el tamaño del archivo de sonido. Es decir, la incorporación de archivos de sonido grandes en la aplicación puede hacer que el tamaño del archivo SWF sea excesivo.

El método preciso de incorporar un archivo de sonido en el archivo SWF de la aplicación varía de un entorno de desarrollo a otro.

Uso de un archivo de sonido incorporado en Flash

La herramienta de edición de Flash permite importar sonidos en varios formatos de sonido y almacenarlos como símbolos en la Biblioteca. Después se pueden asignar a fotogramas en la línea de tiempo o a los fotogramas de un estado de botón, utilizarlos con Comportamientos o utilizarlos directamente en código ActionScript. En esta sección se describe la manera de utilizar sonidos incorporados en código ActionScript con la herramienta de edición de Flash. Para más información sobre las otras maneras de utilizar sonidos incorporados en Flash, consulte "Importación de sonidos" en Uso de Flash .

Para incorporar un archivo de sonido utilizando la herramienta de edición de Flash:

  1. Seleccione Archivo > Importar > Importar a biblioteca y, a continuación, elija un archivo de sonido para importarlo.

  2. Haga clic con el botón derecho en el nombre del archivo importado en el panel Biblioteca y seleccione Propiedades. Active la casilla de verificación Exportar para ActionScript.

  3. En el campo Clase, escriba el nombre que debe utilizarse al hacer referencia a este sonido incorporado en ActionScript. De manera predeterminada, utilizará el nombre del archivo de sonido de este campo. Si el nombre de archivo incluye un punto, como en "DrumSound.mp3", debe cambiarlo por otro como "DrumSound"; ActionScript no permite utilizar un punto en un nombre de clase. El campo Clase base debe mostrar flash.media.Sound.

  4. Haga clic en OK (Aceptar). Es posible que vea un cuadro de mensaje que indique que no se encontró una definición para esta clase en la ruta de clases. Haga clic en Aceptar y continúe. Si se introduce una clase cuyo nombre no coincide con el de ninguna de las clases de la ruta de clases de la aplicación, se genera automáticamente una nueva clase que hereda de la clase flash.media.Sound.

  5. Para utilizar el sonido incorporado hay que hacer referencia al nombre de clase del sonido en ActionScript. Por ejemplo, el código siguiente empieza creando una nueva instancia de la clase DrumSound generada automáticamente:

    var drum:DrumSound = new DrumSound(); 
    var channel:SoundChannel = drum.play();

    DrumSound es una subclase de la clase flash.media.Sound, por lo que hereda los métodos y las propiedades de la clase Sound, incluido el método play() antes mostrado.

Uso de un archivo de sonido incorporado en Flex

Hay muchas maneras de incorporar activos de sonido en una aplicación Flex, como:

  • Utilizar la etiqueta de metadatos [Embed] en un script

  • Usar la directiva @Embed en MXML para asignar un activo incorporado como una propiedad de un componente, como Button o SoundEffect.

  • Utilizar la directiva @Embed dentro de un archivo CSS

Esta sección explica la primera opción: cómo incorporar código ActionScript en una aplicación Flex usando la etiqueta de metadatos [Embed] .

Para incorporar un activo en código ActionScript, utilice la etiqueta de metadatos [Embed] .

Coloque el archivo de sonido en la carpeta principal de código fuente o en otra carpeta situada en la ruta de compilación del proyecto. Cuando el compilador encuentra una etiqueta de metadatos Embed, crea automáticamente la clase de activo incorporado. Se puede acceder a la clase mediante una variable del tipo de datos Class declarada inmediatamente después de la etiqueta de metadatos [Embed] .

El código siguiente incorpora un sonido llamado smallSound.mp3 y utiliza una variable denominada soundClass para almacenar una referencia a la clase del activo incorporado asociado a ese sonido. A continuación, el código crea una instancia de la clase del activo incorporado, la convierte en una instancia de la clase Sound y llama al método play() de dicha instancia:

package 
{ 
    import flash.display.Sprite; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 
 
    public class EmbeddedSoundExample extends Sprite 
    { 
        [Embed(source="smallSound.mp3")] 
        public var soundClass:Class; 
         
        public function EmbeddedSoundExample() 
        { 
            var smallSound:Sound = new soundClass() as Sound; 
            smallSound.play(); 
        } 
    } 
}

Para utilizar el sonido incorporado para establecer una propiedad de un componente Flex, debería convertirse como en instancia de la clase mx.core.SoundAsset en lugar de en una instancia de la clase Sound. Para ver un ejemplo parecido que utilice la clase SoundAsset, consulte Clases de activos incorporados.