Pacote | flash.media |
Classe | public final class SoundMixer |
Herança | SoundMixer Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
).
Propriedade | Definido por | ||
---|---|---|---|
audioPlaybackMode : String [estático]
Especifica o modo de reprodução de áudio de todos os objetos Sound. | SoundMixer | ||
bufferTime : int [estático]
O número de segundos para pré-carregar um som de streaming incorporado em um buffer antes que ele inicie o streaming. | SoundMixer | ||
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
soundTransform : flash.media:SoundTransform [estático]
O objeto SoundTransform que controla propriedades de som globais. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [estático]
Alterna o speakerphone quando o dispositivo está no modo de voz. | SoundMixer |
Método | Definido por | ||
---|---|---|---|
[estático]
Determina se os sons não são acessíveis devido a restrições de segurança. | SoundMixer | ||
[estático]
Tira um instantâneo da onda sonora atual e o coloca no objeto ByteArray especificado. | SoundMixer | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
[estático]
Para todos os sons em reprodução atualmente. | SoundMixer | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object |
audioPlaybackMode | propriedade |
audioPlaybackMode:String
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 3 |
Especifica o modo de reprodução de áudio de todos os objetos Sound. Em dispositivos móveis, essa propriedade define prioridades de áudio e padrões conforme os idiomas da plataforma. Em ambientes da área de trabalho e de televisão, nenhuma diferença funcional existe entre os modos de reprodução de áudio.
Os valores válidos desta propriedade são definidos na classe AudioPlaybackMode.
Observação Em iOS, se um aplicativo definir audioPlaybackMode=AudioPlaybackMode.VOICE
, outros aplicativos não podem alterá-lo para AudioPlaybackMode.MEDIA
.
Faça o uso mínimo do modo AudioPlaybackMode.VOICE
, e tente alternar para o modo AudioPlaybackMode.MEDIA
assim que puder, depois que a chamada de voz terminar para permitir que outros aplicativos sejam executados no modo mídia.
Quando você altera o modo de reprodução de áudio no iOS, os aplicativos nativos que estão reproduzindo música pausam rapidamente.
O valor padrão é AudioPlaybackMode.MEDIA.
Implementação
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Lança
ArgumentError — kInvalidParameterError
|
Elementos da API relacionados
bufferTime | propriedade |
bufferTime:int
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O número de segundos para pré-carregar um som de streaming incorporado em um buffer antes que ele inicie o streaming. Os dados em um som carregado, incluindo o tempo de buffer, não podem ser acessados por um arquivo SWF em um domínio diferente, a menos que você implemente um arquivo de política de vários domínios. Para obter mais informações sobre segurança e som, consulte a descrição da classe Sound. Os dados em um som carregado, incluindo o tempo de buffer, não podem ser acessados por um código em um arquivo em um domínio diferente, a menos que você implemente um arquivo de política de vários domínios. Contudo, na caixa de proteção do aplicativo no aplicativo AIR o código pode acessar os dados no arquivo de som a partir de qualquer fonte. Para obter mais informações sobre segurança e som, consulte a descrição da classe Sound.
A propriedade SoundMixer.bufferTime
só afeta o tempo de buffer para os sons de streaming incorporados em um SWF e é independente dos objetos Sound criados dinamicamente (ou seja, objetos Sound criados no ActionScript). O valor de SoundMixer.bufferTime
não pode substituir ou configurar o padrão do tempo de buffer especificado no objeto SoundLoaderContext que é transmitido para o método Sound.load()
.
Implementação
public static function get bufferTime():int
public static function set bufferTime(value:int):void
Elementos da API relacionados
soundTransform | propriedade |
soundTransform:flash.media:SoundTransform
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O objeto SoundTransform que controla propriedades de som globais. O objeto SoundTransform inclui propriedades para configurar o volume, o panorama, a atribuição do alto-falante esquerdo e a atribuição do alto-falante direito. O objeto SoundTransform usado nesta propriedade fornece configurações finais de som que são aplicadas a todos os sons depois que são aplicadas as configurações individuais do som.
Implementação
public static function get soundTransform():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Elementos da API relacionados
useSpeakerphoneForVoice | propriedade |
useSpeakerphoneForVoice:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 3 |
Alterna o speakerphone quando o dispositivo está no modo de voz. Por padrão, os smartphones utilizarão o receptor do telefone como saída de áudio quando SoundMixer.audioPlaybackMode
for definido para AudioPlaybackMode.VOICE
. A propriedade useSpeakerphoneForVoice
permite que você substitua a saída de padrão para que possa implementar um botão speakerphone em um aplicativo telefônico. Esta propriedade não tem nenhum efeito em outros modos, exceto emAudioPlaybackMode.VOICE
. Em ambientes de área de trabalho e de televisão, esta propriedade não tem nenhum efeito.
Observação No iOS, se o seu aplicativo definiu audioPlaybackMode=VOICE
e outro aplicativo também está sendo executado no modo de voz, não é possível definir useSpeakerphoneForVoice=true
.
Observe no Andróide, deve estabelecer o android.permission. MODIFY_AUDIO_SETTINGS
no descritor de aplicativo de AIR ou alterar este valor não tem nenhum efeito. Além disso, a configuração é a configuração de dispositivo global. Outros aplicativos que executam no dispositivo podem alterar a configuração dispositivo subjacente em qualquer momento.
O valor padrão é false.
Implementação
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Elementos da API relacionados
areSoundsInaccessible | () | método |
public static function areSoundsInaccessible():Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Determina se os sons não são acessíveis devido a restrições de segurança. Por exemplo, um som carregado de um domínio diferente daquele do conteúdo chamando este método não pode ser acessado se o servidor do som não tiver um arquivo de política de URL que concede acesso àquele domínio. O som ainda pode ser carregado e reproduzido, mas operações de baixo nível, como obter metadados ID3 para o som, não podem ser realizadas em sons inacessíveis.
Para o conteúdo AIR na área de segurança do aplicativo, o chamado deste método sempre retorna false
. Todos os sons, incluindo aqueles carregados de outros domínios, estão acessíveis para o conteúdo na área de segurança.
Boolean — Representação do booliano em formato de string.
|
Elementos da API relacionados
computeSpectrum | () | método |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Tira um instantâneo da onda sonora atual e o coloca no objeto ByteArray especificado. Os valores são formatados como valores normalizados de ponto flutuante, no intervalo –1,0 a 1,0. O objeto ByteArray transmitido para o parâmetro outputArray
é substituído pelos novos valores. O tamanho do objeto ByteArray criado é fixado em 512 valores de ponto flutuante, nos quais os primeiros 256 valores representam o canal esquerdo, e os 256 valores seguintes representam o canal direito.
Observação: esse método está sujeito às restrições locais de segurança de arquivo e às restrições no carregamento entre vários domínios. Se você estiver trabalhando com arquivos locais ou sons carregados de um servidor em um domínio diferente do que o conteúdo de chamada, talvez seja necessário tratar das restrições da caixa de proteção através de um arquivo de política entre vários domínios. Para obter mais informações, consulte a descrição da classe Sound. Além disso, este método não pode ser usado para extrair dados de fluxos RTMP, mesmo que seja chamado pelo conteúdo residente no mesmo domínio que o servidor RTMP.
Este método é suportado pelo RTMP no Flash Player 9.0.115.0 e posterior e no Adobe AIR. Você pode controlar o acesso a fluxos no Flash Media Server em um script do lado do servidor. Para obter mais informações, consulte as propriedades Client.audioSampleAccess
e Client.videoSampleAccess
na Referência de lado do servidor do ActionScript para Adobe Flash Media Server.
Parâmetros
outputArray:ByteArray — Um objeto ByteArray que mantém os valores associados com o som. Se não houver sons disponíveis devido a restrições de segurança (areSoundsInaccessible == true ), o objeto outputArray fica inalterado. Se todos os sons forem interrompidos, o objeto outputArray é preenchido com zeros.
| |
FFTMode:Boolean (default = false ) — Um valor booliano indicando se foi realizada uma transformação Fourier nos dados de som primeiro. A definição deste parâmetro como true faz com que o método retorne um espectro de frequência, em vez da onda de som bruta. No espectro de frequência, as baixas frequências são representadas à esquerda e as altas frequências, à direita.
| |
stretchFactor:int (default = 0 ) — A resolução das amostras de som. Se você definir o valor stretchFactor em 0, os dados são amostrados a 44,1 KHz; com o valor 1, os dados são amostrados a 22,05 KHz; com o valor 2, os dados são amostrados a 11,025 KHz; e assim por diante.
|
Elementos da API relacionados
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Exemplo ( Como usar este exemplo )
computeSpectrum()
é usado para produzir uma representação gráfico dos dados da onda do som.
No construtor, um arquivo de som é carregado e configurado para reprodução. (Não há tratamento de erro neste exemplo e assume-se que o arquivo de som se encontra no mesmo diretório que o arquivo SWF.) O exemplo ouve o evento Event.ENTER_FRAME
enquanto o som é reproduzido, disparando repetidamente o método onEnterFrame()
para desenhar um gráfico dos valores de dados do som. Quando o som termina de ser reproduzido, o método onPlaybackComplete()
interrompe o processo de desenho removendo o ouvinte para o evento Event.ENTER_FRAME
.
No método onEnterFrame()
, o método computeSpectrum()
armazena o som bruto no objeto da matriz de bytes bytes
. Os dados são amostrados a 44,1 KHz. A matriz de bytes contendo 512 bytes de dados, e cada um delas contém um valor de ponto flutuante entre –1 e 1. Os primeiros 256 valores representam o canal esquerdo, e os 256 valores seguintes representam o canal direito. O primeiro loop for lê os primeiros 256 valores de dados (o canal estéreo esquerdo) e desenha uma linha de cada ponta para o próximo usando o método Graphics.lineTo()
. (A exibição do gráfico de vetor da onda de som é gravada diretamente no objeto da entidade gráfica da classe.) Os bytes do som são lidos como um número de ponto flutuante de 32 bits a partir do fluxo de bytes e multiplicados pela altura de plot, para permitir o intervalo vertical do gráfico. A largura é definida como o dobro da largura da extensão do canal. O segundo loop for lê o próximo conjunto de 256 valores (o canal estéreo direito) e plota as linhas na ordem inversa. Os métodos g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
e g.lineTo(0, PLOT_HEIGHT);
desenham a linha de base para as ondas. O plot resultante do formato de onda produz um efeito de imagem de espelho.
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Para todos os sons em reprodução atualmente.
>No Flash Professional, este método não para a cabeça de reprodução. Os sons configurados para stream vão retomar a reprodução à medida que o indicador de reprodução se move sobre os quadros nos quais se localizam.
Ao usar essa propriedade, considere o seguinte modelo de segurança:
- Por padrão, chamar o método
SoundMixer.stopAll()
interrompe apenas os sons na mesma sandbox de segurança que o objeto que está chamando o método. O som cuja reprodução não foi iniciada da mesma sandbox que o objeto que chama não é interrompido. - Ao carregar o som, usando o método
load()
da classe Sound, você pode especificar um parâmetrocontext
, que é um objeto SoundLoaderContext. Se você definir a propriedadecheckPolicyFile
do objeto SoundLoaderContext comotrue
, o Flash Player ou o Air verifica se há um arquivo de política de vários domínios no servidor do qual o som é carregado. Se o servidor tiver um arquivo de política de vários domínios, e o arquivo permitir o domínio do conteúdo de chamada, então o arquivo pode interromper o som carregado usando o métodoSoundMixer.stopAll()
; do contrário, ele não pode interromper.
Contudo, no Adobe AIR, o conteúdo na caixa de proteção de segurança application
(conteúdo instalado com o Adobe AIR) não é restringido por essas limitações de segurança.
Para obter mais informações relacionadas à segurança, consulte o tópico do Centro dos desenvolvedores do Flash Player Security.
Exemplo ( Como usar este exemplo )
stopAll()
é usado para emudecer dois sons que estão sendo reproduzidos ao mesmo tempo.
No construtor, dois arquivos de som diferentes são carregados e configurados para reprodução. O primeiro som é carregado localmente e é atribuído a um canal de som. (Assume-se que o arquivo de som se encontra no mesmo diretório que o arquivo SWF.) O segundo arquivo é carregado e sofre streaming do site da Adobe. Para usar o método SoundMixer.stopAll()
, todo o som deve estar acessível. (Pode-se usar um objeto SoundLoaderContext para verificar se há um arquivo de política de vários domínios.) Cada som também tem um ouvinte de evento que é invocado caso tenha ocorrido um erro IO enquanto o arquivo de som estava sendo carregado. Também é criado um campo de texto muteButton
. Ele ouve um evento de clique que vai chamar o método muteButtonClickHandler()
.
No método muteButtonClickHandler()
, caso o conteúdo do campo de texto seja "MUTE", o método areSoundsInaccessible()
verifica se o mixer de som tem acesso aos arquivos. Se os arquivos estiverem acessíveis, o método stopAll()
interrompe os sons. Selecionando o campo de texto novamente, o primeiro som começa a ser reproduzido e o conteúdo do campo de texto troca para "MUTE" novamente. Dessa vez, o método stopAll()
tira o volume do som que está sendo executado. Observe que o método stop()
do canal de som também pode ser usado para parar um som específico atribuído ao canal. (Para usar a funcionalidade de canal, o som precisa ser reatribuído ao canal todas as vezes que o método play()
for invocado.)
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); } } }
Wed Jun 13 2018, 11:10 AM Z