Paqueteflash.media
Clasepublic final class SoundMixer
HerenciaSoundMixer Inheritance Object

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

La clase SoundMixer contiene propiedades y métodos estáticos para el control global de sonido del archivo SWF. La clase SoundMixer controla los flujos de sonido incorporados en un archivo SWF; no controla objetos Sound creados dinámicamente (es decir, objetos Sound creados con ActionScript).



Propiedades públicas
 PropiedadDefinido por
  bufferTime : int
[static] El número de segundos que se tarda en precargar un flujo de sonido incorporado en un búfer antes de que comience a reproducirse.
SoundMixer
 Inheritedconstructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
Object
 Inheritedprototype : Object
[static] Una referencia al objeto prototipo de una clase u objeto de función.
Object
  soundTransform : SoundTransform
[static] El objeto SoundTransform que controla las propiedades de sonido global.
SoundMixer
Métodos públicos
 MétodoDefinido por
  
[static] Determina si hay sonidos a los que no se puede acceder por restricciones de seguridad.
SoundMixer
  
computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
[static] Toma una instantánea de la onda de sonido actual y la coloca en el objeto ByteArray especificado.
SoundMixer
 Inherited
Indica si un objeto tiene definida una propiedad especificada.
Object
 Inherited
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
Object
 Inherited
Indica si existe la propiedad especificada y si es enumerable.
Object
 Inherited
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
Object
  
[static] Detiene todos los sonidos que se reproducen en ese momento.
SoundMixer
 Inherited
Devuelve la representación de cadena del objeto especificado.
Object
 Inherited
Devuelve el valor simple del objeto especificado.
Object
Información sobre propiedades
bufferTimepropiedad
bufferTime:int  [read-write]

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

El número de segundos que se tarda en precargar un flujo de sonido incorporado en un búfer antes de que comience a reproducirse. Un archivo SWF de un dominio distinto no puede acceder a los datos de un sonido cargado (incluido su tiempo de búfer) a no ser que implemente un archivo de política ente dominios. Para más información sobre la seguridad y los sonidos, consulte la descripción de la clase Sound.

La propiedad SoundMixer.bufferTime solamente afecta al tiempo de búfer en los flujos de sonido incorporados de un archivo SWF y no tiene nada que ver con los objetos Sound creados dinámicamente (es decir, objetos Sound creados con ActionScript). El valor de SoundMixer.bufferTime no puede anular ni establecer el valor predeterminado del tiempo de búfer especificado en el objeto SoundLoaderContext que se transmite al método Sound.load().


Implementación
    public static function get bufferTime():int
    public function set bufferTime(value:int):void

Véase también

soundTransformpropiedad 
soundTransform:SoundTransform  [read-write]

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

El objeto SoundTransform que controla las propiedades de sonido global. Un objeto SoundTransform incluye propiedades para establecer el volumen, el desplazamiento lateral, la asignación del altavoz izquierdo y la asignación del altavoz derecho. Este objeto SoundTransform solamente afecta a sonidos incrustados de un archivo SWF. El objeto SoundTransform utilizado en esta propiedad proporciona una configuración de sonido final que se aplica a todos los sonidos, aunque se les haya aplicado previamente una configuración de sonido individual.


Implementación
    public static function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void

Véase también

Información sobre métodos
areSoundsInaccessible()método
public static function areSoundsInaccessible():Boolean

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

Determina si hay sonidos a los que no se puede acceder por restricciones de seguridad. Por ejemplo, no se podrá acceder a un sonido cargado desde un dominio distinto al del archivo SWF si el servidor del sonido no contiene un archivo de política entre dominios que permita acceder al dominio del archivo SWF. Es posible seguir cargando y reproduciendo el sonido, pero no se pueden llevar a cabo operaciones de bajo nivel (como obtener metadatos ID3 del sonido) en sonidos inaccesibles.

Valor devuelto
Boolean

Véase también

computeSpectrum()método 
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void

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

Toma una instantánea de la onda de sonido actual y la coloca en el objeto ByteArray especificado. Se da formato a los valores como valores de coma flotante normalizados, en el intervalo que va de -1.0 a 1.0. El objeto ByteArray transmitido al parámetro outputArray se sobrescribe con los nuevos valores. El tamaño del objeto ByteArray creado se fija en 512 valores de coma flotante, donde los primeros 256 valores representan el canal izquierdo y los otros 256 el canal derecho.

Nota: este método está sujeto a restricciones de seguridad de archivos locales y a restricciones de carga entre dominios. Si trabaja con archivos SWF locales o con sonidos cargados desde un servidor de un dominio distinto al del archivo SWF que llama, tal vez necesite abordar las restricciones del entorno limitado a través de un archivo de política entre dominios. Para más información, consulte la descripción de la clase Sound.

Este método se admite a través de RTMP en Flash Player Update 3 y versiones posteriores. Puede controlar el acceso a transmisiones en Flash Media Server en un script del lado del servidor. Para más información, consulte las propiedades Client.audioSampleAccess y Client.videoSampleAccess en la referencia del lenguaje ActionScript del servidor para Adobe Flash Media Server.

Parámetros

outputArray:ByteArray — Un objeto ByteArray que incluye los valores asociados al sonido. Si, por restricciones de seguridad, no hay sonidos disponibles (areSoundsInaccessible == true), el objeto outputArray no se modifica. Si se detienen todos los sonidos, el objeto outputArray se rellena con ceros.
 
FFTMode:Boolean (default = false) — Un valor booleano que indica si se realizará primero una transformación de Fourier en los datos de sonido. Si este parámetro se establece en true, el método devolverá un espectro de frecuencias en lugar de la onda de sonido en bruto. En el espectro de frecuencias, las frecuencias bajas están representadas a la izquierda y las altas a la derecha.
 
stretchFactor:int (default = 0) — La resolución de las muestras de sonido. Si establece el valor de stretchFactor en 0, los datos se muestran a 44,1 KHz; con un valor de 1 se muestrean a 22,05 KHz; con un valor de 2, a 11,025 KHz, etc.

Véase también


Ejemplo

En el ejemplo siguiente, se utiliza el método computeSpectrum() para producir una representación gráfica de los datos de las ondas de sonido.

En el constructor, se carga un archivo de sonido y se establece su reproducción. (No hay gestión de errores en este ejemplo y se asume que el archivo de sonido se encuentra en el mismo directorio que el archivo SWF.) El ejemplo detecta el evento Event.ENTER_FRAME mientras se reproduce el sonido, activando repetidamente el método onEnterFrame() para dibujar un gráfico de los valores de los datos de sonido. Cuando el sonido termina de reproducirse, el método onPlaybackComplete() detiene el proceso de dibujo quitando el detector para el evento Event.ENTER_FRAME.

En el método onEnterFrame(), el método computeSpectrum() almacena el sonido sin formato en el objeto de matriz bytes. El muestreo de los datos se realiza a 44,1 KHz. La matriz de bytes contiene 512 bytes de datos, cada uno de los cuales incluye un valor de coma flotante entre -1 y 1. Los primeros 256 valores representan el canal izquierdo y los segundos 256 representan el canal derecho. El primer bucle for, lee los primeros 256 valores de datos (el canal estéreo izquierdo) y dibuja una línea de cada punto al siguiente utilizando el método Graphics.lineTo(). (La visualización gráfica de vectores de la onda de sonido se escribe directamente en el objeto Sprite de la clase.) Los bytes de sonido se leen como número de coma flotante de 32 bits desde la transmisión de bytes y se multiplican por la altura de trazo para permitir el rango vertical del gráfico. La anchura se establece en el doble de la anchura de la longitud del canal. El segundo bucle for lee el siguiente conjunto de 256 valores (el canal estéreo derecho) y traza las líneas en orden inverso. Los métodos g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); y g.lineTo(0, PLOT_HEIGHT); dibujan la línea base de las ondas. El trazo de formas de ondas resultante produce un efecto de imagen reflejada.

package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.Event;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.text.TextField;

    public class SoundMixer_computeSpectrumExample extends Sprite {

        public function SoundMixer_computeSpectrumExample() {
            var snd:Sound = new Sound();
            var req:URLRequest = new URLRequest("Song1.mp3");
            snd.load(req);

            var channel:SoundChannel;
            channel = snd.play();
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
        }

        private function onEnterFrame(event:Event):void {
            var bytes:ByteArray = new ByteArray();
            const PLOT_HEIGHT:int = 200;
            const CHANNEL_LENGTH:int = 256;

            SoundMixer.computeSpectrum(bytes, false, 0);

            var g:Graphics = this.graphics;

            g.clear();

            g.lineStyle(0, 0x6600CC);
            g.beginFill(0x6600CC);
            g.moveTo(0, PLOT_HEIGHT);

            var n:Number = 0;

            for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
            }

            g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
            g.endFill();

            g.lineStyle(0, 0xCC0066);
            g.beginFill(0xCC0066, 0.5);
            g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);

            for (i = CHANNEL_LENGTH; i > 0; i--) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
            }

            g.lineTo(0, PLOT_HEIGHT);
            g.endFill();
        }

        private function onPlaybackComplete(event:Event):void {
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
    }
}

stopAll()método 
public static function stopAll():void

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

Detiene todos los sonidos que se reproducen en ese momento.

Este método no detiene la cabeza lectora. Se reanudará la reproducción de los sonidos que deben transmitirse mientras la cabeza lectora se mueve sobre los fotogramas donde se encuentran.

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

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


Ejemplo

En el ejemplo siguiente, se utiliza el método stopAll() para silenciar dos sonidos que se reproducen al mismo tiempo.

En el constructor, se cargan y se establece la reproducción de dos archivos de sonido distintos. El primer sonido se carga localmente y se asigna a un canal de sonido. (Se asume que el archivo está en el mismo directorio que el archivo SWF.) El segundo archivo se carga y se transmite desde el sitio de Adobe. Para utilizar el método SoundMixer.stopAll(), deben estar accesibles todos los sonidos. (Se puede utilizar un objeto SoundLoaderContext para comprobar el archivo de política entre distintos dominios.) Cada sonido tiene también un detector de eventos que se invoca si se produce un error de entrada y salida mientras se carga el archivo de sonido. También se crea un archivo de texto muteButton, que detecta el clic del ratón y que invocará el método muteButtonClickHandler().

En el método muteButtonClickHandler(), si el contenido del campo de texto es "MUTE", el método areSoundsInaccessible() comprueba si el mezclador de sonido tiene acceso a los archivos. Si los archivos son accesibles, el método stopAll() detiene los sonidos. Si se hace clic de nuevo en el campo de texto, comienza a reproducirse el primer sonido y el contenido del campo de texto cambia de nuevo a "MUTE". Esta vez, el método stopAll() silencia el sonido uno que está reproduciéndose. Tenga en cuenta que el método stop() del canal de sonido puede también utilizarse para detener un sonido específico asignado al canal. (Para utilizar la funcionalidad del canal, el sonido necesita reasignarse al canal cada vez que se invoca el método play().)

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundLoaderContext;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.events.IOErrorEvent;

    public class SoundMixer_stopAllExample extends Sprite  {
        private var firstSound:Sound = new Sound();
        private var secondSound:Sound = new Sound();
        private var muteButton:TextField = new TextField();
        private var channel1:SoundChannel = new SoundChannel();

        public function SoundMixer_stopAllExample() {
            firstSound.load(new URLRequest("mySound.mp3"));
            secondSound.load(new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"));

            firstSound.addEventListener(IOErrorEvent.IO_ERROR, firstSoundErrorHandler);
            secondSound.addEventListener(IOErrorEvent.IO_ERROR, secondSoundErrorHandler);

            channel1 = firstSound.play();
            secondSound.play();

            muteButton.autoSize = TextFieldAutoSize.LEFT;
            muteButton.border = true;
            muteButton.background = true;
            muteButton.text = "MUTE";

            muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler);

            this.addChild(muteButton);
        }

        private function muteButtonClickHandler(event:MouseEvent):void {

            if(muteButton.text == "MUTE") {

                if(SoundMixer.areSoundsInaccessible() == false) {
                    SoundMixer.stopAll();
                    muteButton.text = "click to play only one of sound.";
                }
                else {
                    muteButton.text = "The sounds are not accessible.";
                }
            }
           else {
                firstSound.play();
                muteButton.text = "MUTE";
           }
        }

        private function firstSoundErrorHandler(errorEvent:IOErrorEvent):void {
            trace(errorEvent.text);
        }

        private function secondSoundErrorHandler(errorEvent:IOErrorEvent):void {
            trace(errorEvent.text);
        }
    }
}




 

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/SoundMixer.html