Paquete | flash.media |
Clase | public final class SoundMixer |
Herencia | SoundMixer Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
por parte de un objeto Sound).
Propiedad | Definido por | ||
---|---|---|---|
audioPlaybackMode : String [estática]
Especifica el modo de reproducción de audio de todos los objetos Sound. | SoundMixer | ||
bufferTime : int [estática]
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 | ||
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
soundTransform : flash.media:SoundTransform [estática]
El objeto SoundTransform que controla las propiedades de sonido global. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [estática]
Alterna el altavoz cuando el dispositivo se encuentra en modo de voz. | SoundMixer |
Método | Definido por | ||
---|---|---|---|
[estática]
Determina si hay sonidos a los que no se puede acceder por restricciones de seguridad. | SoundMixer | ||
[estática]
Toma una instantánea de la onda de sonido actual y la coloca en el objeto ByteArray especificado. | SoundMixer | ||
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 | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
[estática]
Detiene todos los sonidos que se reproducen en ese momento. | SoundMixer | ||
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 |
audioPlaybackMode | propiedad |
audioPlaybackMode:String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 3 |
Especifica el modo de reproducción de audio de todos los objetos Sound. En dispositivos móviles, esta propiedad establece las prioridades de sonido y los valores predeterminados según las plataformas. En entornos de escritorio y de TV, no existe ninguna diferencia funcional entre modos de reproducción de audio.
Los valores válidos de esta propiedad se definen en la clase AudioPlaybackMode.
Nota En iOS, si una aplicación define audioPlaybackMode=AudioPlaybackMode.VOICE
, otras aplicaciones no puede cambiarlo a AudioPlaybackMode.MEDIA
.
Haga el menor uso posible del modo AudioPlaybackMode.VOICE
e intente cambiar al modo AudioPlaybackMode.MEDIA
tan pronto como pueda tras la finalización de la llamada de voz para que otras aplicaciones puedan reproducirse en modo de medios.
Al cambiar el modo de reproducción de audio en iOS, las aplicaciones nativas que reproducen música se detienen brevemente.
El valor predeterminado es AudioPlaybackMode.MEDIA.
Implementación
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Emite
ArgumentError — kInvalidParameterError
|
Elementos de API relacionados
bufferTime | propiedad |
bufferTime:int
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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. Un archivo de un dominio distinto no puede acceder a los datos de un sonido cargado por código (incluido su tiempo de búfer) a no ser que implemente un archivo de política ente dominios. Sin embargo, en el entorno limitado de seguridad de una aplicación de AIR, el código puede acceder a los datos de los archivos de sonido desde cualquier origen. 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 static function set bufferTime(value:int):void
Elementos de API relacionados
soundTransform | propiedad |
soundTransform:flash.media:SoundTransform
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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. 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():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Elementos de API relacionados
useSpeakerphoneForVoice | propiedad |
useSpeakerphoneForVoice:Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 3 |
Alterna el altavoz cuando el dispositivo se encuentra en modo de voz. De forma predeterminada, los smartphones utilizan el auricular el teléfono para la salida de audio si SoundMixer.audioPlaybackMode
está ajustado en AudioPlaybackMode.VOICE
. La propiedad useSpeakerphoneForVoice
permite anular la salida predeterminada para que pueda implementar un botón de altavoces en una aplicación de teléfono. Esta propiedad no tiene ningún efecto en modos que no sean AudioPlaybackMode.VOICE
. En entornos de escritorio y de TV, esta propiedad no tiene ningún efecto.
Nota En iOS, si su aplicación ha establecido audioPlaybackMode=VOICE
y otra aplicación está participando también en modo de voz, no se puede establecer useSpeakerphoneForVoice=true
.
Nota En Android, debe configurar android.permission.MODIFY_AUDIO_SETTINGS
en el descriptor de la aplicación de AIR o cambiar este valor no tendrá ningún efecto. Además, la configuración es un ajuste global del dispositivo. Otras aplicaciones que se ejecutan en el dispositivo puede cambiar la configuración subyacente del dispositivo en cualquier momento.
El valor predeterminado es false.
Implementación
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Elementos de API relacionados
areSoundsInaccessible | () | método |
public static function areSoundsInaccessible():Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, 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 contenido que llama a este método si el servidor del sonido no contiene un archivo de política de URL que permita acceder al dominio de dicho dominio. 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.
En el caso del contenido de la aplicación de AIR del entorno limitado de seguridad, al llamar a este método siempre se devuelve false
. Todos los sonidos, incluidos los cargados desde otros dominios, pueden acceder al contenido en el entorno limitado de seguridad de la aplicación.
Boolean — Representación de cadena del booleano.
|
Elementos de API relacionados
computeSpectrum | () | método |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, 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 locales o con sonidos cargados desde un servidor de un dominio distinto al del contenido 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. Además, no se puede utilizar este método para extraer datos de flujos RTMP, aunque lo llame el contenido que reside en el mismo dominio que el servidor RTMP.
Este método se admite en RTMP en Flash Player 9.0.115.0 y versiones posteriores, y en Adobe AIR. 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.
|
Elementos de API relacionados
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Ejemplo ( Cómo utilizar este ejemplo )
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 conjunto bytes
. El muestreo de los datos se realiza a 44,1 KHz. El conjunto 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 el flujo 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 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Detiene todos los sonidos que se reproducen en ese momento.
>En Flash Professional, 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, puede ser conveniente usar el modelo de seguridad siguiente:
- De forma predeterminada, el método
SoundMixer.stopAll()
sólo detiene sonidos que se encuentren en el mismo entorno limitado de seguridad que el del objeto que llama al método. Los sonidos que no hayan comenzado a reproducirse desde el mismo entorno limitado de seguridad del objeto que llama no se detendrán. - 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 o Adobe AIR buscará un archivo de política entre dominios en el servidor desde el que se carga el sonido. Si el servidor contiene un archivo de política entre dominios y el archivo permite el dominio del contenido que realiza la llamada, el archivo puede detener el sonido mediante el métodoSoundMixer.stopAll()
; en caso contrario, no puede.
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.
Ejemplo ( Cómo utilizar este ejemplo )
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 un evento click 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. Cuando se selecciona de nuevo 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); } } }
Tue Jun 12 2018, 02:12 PM Z