Pacote | flash.media |
Classe | public class Sound |
Herança | Sound EventDispatcher Object |
Subclasses | SoundAsset |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
No Flash Player 10 e posterior e no AIR 1.5 e posterior, você pode também usar esta classe para trabalhar com o som gerado dinamicamente. Nesse caso, o o objeto Sound usa a função atribuída a um identificador de evento sampleData
para consultar dados de som. O som é reproduzido quando é recuperado de um objeto ByteArray que você preenche com dados de som. É possível usar a função Sound.extract()
para extrair dados de som de um objeto Sound e, depois, manipulá-los antes de gravá-los novamente no fluxo de reprodução.
Para controlar sons que estão incorporados em um arquivo SWF, use as propriedades na classe SoundMixer.
Observação: a API Sound do ActionScript 3.0 é diferente do ActionScript 2.0. No ActionScript 3.0, não é possível pegar os objetos de som e organizá-los em uma hierarquia para controlar suas propriedades.
Ao usar essa classe, considere o seguinte modelo de segurança:
- Não é permitido carregar e reproduzir um som se o arquivo de chamada estiver em uma caixa de proteção de rede e o arquivo de som a ser carregado for local.
- Por padrão, o carregamento e a reprodução de um som não serão permitidos se o arquivo de chamada for local e houver tentativa de carregar e reproduzir um som remoto. O usuário deve conceder permissão explícita para permitir esse tipo de acesso.
- Certas operações que lidam com som são restritas. Os dados em um som carregado não podem ser acessados por um arquivo em um domínio diferente, a menos que você implemente um arquivo de política de vários domínios. As APIs relacionadas com som que se enquadram nesta restrição são as classes
Sound.id3
,SoundMixer.computeSpectrum()
,SoundMixer.bufferTime
eSoundTransform
.
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.
Elementos da API relacionados
Propriedade | Definido por | ||
---|---|---|---|
bytesLoaded : uint [somente leitura]
Retorna o número atualmente disponível de bytes neste objeto de som. | Sound | ||
bytesTotal : int [somente leitura]
Retorna o número total de bytes neste objeto de som. | Sound | ||
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
id3 : ID3Info [somente leitura]
Fornece acesso aos metadados que fazem parte de um arquivo MP3. | Sound | ||
isBuffering : Boolean [somente leitura]
Retorna o estado de buffer dos arquivos MP3 externos. | Sound | ||
isURLInaccessible : Boolean [somente leitura]
Indica se a propriedade Sound.url foi truncada. | Sound | ||
length : Number [somente leitura]
A duração do som atual em milésimos de segundo. | Sound | ||
url : String [somente leitura]
A URL a partir da qual esse som foi carregado. | Sound |
Método | Definido por | ||
---|---|---|---|
Cria um novo objeto Sound. | Sound | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. | EventDispatcher | ||
Fecha o fluxo, resultando no encerramento de qualquer download de dados. | Sound | ||
Envia um evento para o fluxo de eventos. | EventDispatcher | ||
Extrai dados de som brutos de um objeto Sound. | Sound | ||
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. | EventDispatcher | ||
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 | ||
Inicia o carregamento de um arquivo MP3 externo a partir da URL especificada. | Sound | ||
carrega dados de áudio MP3 a partir de um objeto ByteArray em um objeto Sound. | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Carrega dados de áudio do ponto flutuante PCM de 32 bits de um objeto ByteArray para um objeto Sound. | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Gera um novo objeto SoundChannel para reproduzir o som. | Sound | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Remove um ouvinte do objeto EventDispatcher. | EventDispatcher | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
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 | ||
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. | EventDispatcher |
Evento | Resumo | Definido por | ||
---|---|---|---|---|
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR ganha o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado quando os dados foram carregados com êxito. | Sound | |||
[transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR perde o foco do sistema operacional e está se tornando inativo. | EventDispatcher | |||
Despachado por um objeto Sound quando dados ID3 estão disponíveis para sons MP3. | Sound | |||
Despachado quando ocorre um erro de entrada/saída que resulta na falha de uma operação de carregamento. | Sound | |||
Despachado quando uma operação de carregamento é iniciada. | Sound | |||
Despachado quando os dados são recebidos ao longo do progresso de uma operação de carregamento. | Sound | |||
Despachado quando o tempo de execução solicita novos dados de áudio. | Sound |
bytesLoaded | propriedade |
bytesLoaded:uint
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Retorna o número atualmente disponível de bytes neste objeto de som. Geralmente, essa propriedade é útil somente para arquivos carregados externamente.
Implementação
public function get bytesLoaded():uint
bytesTotal | propriedade |
id3 | propriedade |
id3:ID3Info
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Fornece acesso aos metadados que fazem parte de um arquivo MP3.
Os arquivos de som MP3 podem conter marcas ID3, que fornece metadados sobre o arquivo. Caso um som MP3 que você carregar com o método Sound.load()
contiver marcas ID3, você pode pesquisar essas propriedades. Apenas as marcas ID3, que usam o conjunto de caracteres UTF-8, recebem suporte.
O Flash Player 9 e posterior e o AIR oferecem suporte a marcas ID3 2.0, especialmente 2.3 e 2.4. As tabelas a seguir listam as marcas ID3 2.0 padrão e o tipo de conteúdo que elas representam. A propriedade Sound.id3
fornece acesso a essas marcas através do formato my_sound.id3.COMM
, my_sound.id3.TIME
e assim por diante. A primeira tabela descreve as marcas que podem ser acessadas através do nome da propriedade ID3 2.0 ou do nome da propriedade ActionScript. A segunda tabela descreve as marcas ID3 que recebem suporte, mas não têm propriedade predefinidas no ActionScript.
Marca ID3 2.0 | Propriedade da classe Sound correspondente |
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 |
A tabela a seguir descreve as marcas ID3 suportadas, mas que não têm propriedades pré-definidas na classe Sound. Você as acessa chamando mySound.id3.TFLT
, mySound.id3.TIME
e assim por diante. NOTA: Nenhuma destas tags é suportada no Flash Lite 4.
Propriedade | Descrição |
TFLT | Tipo de arquivo |
TIME | Tempo |
TIT1 | Descrição do grupo de conteúdo |
TIT2 | Título/nome da música/descrição do conteúdo |
TIT3 | Subtítulo/refinamento da descrição |
TKEY | Chave inicial |
TLAN | Idiomas |
TLEN | Duração |
TMED | Tipo de mídia |
TOAL | Álbum/filme/título do show originais |
TOFN | Nome do arquivo original |
TOLY | Compositores/autores do texto originais |
TOPE | Artistas/intérpretes originais |
TORY | Ano da versão original |
TOWN | Propriedade do arquivo/licenciado |
TPE1 | Principais artistas/solistas |
TPE2 | Banda/orquestra/acompanhamento |
TPE3 | Refinamento de condutor/realizador |
TPE4 | Interpretado, remixado ou modificado por |
TPOS | Parte de um conjunto |
TPUB | Editor |
TRCK | Número/posição da faixa em conjunto |
TRDA | Datas da gravação |
TRSN | Nome da estação de rádio da Internet |
TRSO | Proprietário da estação de rádio da Internet |
TSIZ | Tamanho |
TSRC | ISRC (código de gravação padrão internacional) |
TSSE | Software/hardware e configurações usadas para codificação |
TYER | Ano |
WXXX | Quadro do link de URL |
Ao usar essa propriedade, considere o modelo de segurança do Flash Player:
- A propriedade
id3
de um objeto Sound é sempre permitida pelos arquivos SWF que estão na mesma sandbox de segurança que o arquivo de som. Para os arquivos em outras sandboxes, há verificações de segurança. - Ao carregar o som, usando o método
load()
da classe Sound, você pode especificar um parâmetrocontext
, que é um objeto SoundLoaderContext. Se você define a propriedadecheckPolicyFile
do objeto SoundLoaderContext comotrue
, o Flash Player verifica se há um arquivo de diretivas de URL no servidor do qual o som é carregado. Se existir um arquivo de diretivas que permita o acesso a partir do domínio do arquivo SWF de carregamento, o arquivo poderá acessar a propriedadeid3
do objeto Sound; caso contrário, ele não poderá.
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.
Implementação
public function get id3():ID3Info
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
No construtor, o arquivo de som é carregado, mas não é configurado para reprodução. Aqui assume-se que o arquivo esteja no diretório SWF. O sistema deve ter permissão para ler as marcas ID3 de um arquivo de som carregado. Se houver informações ID3 no arquivo e o programa tiver permissão para lê-las, será acionado um evento Event.ID3
, e a propriedade id3
do arquivo de som será preenchida. A propriedade id3
contém um objeto ID3Info
com todas as informações ID3.
No método id3Handler()
, as marcas ID3 do arquivo são armazenadas em id3
, um objeto da classe ID3Info. O campo de texto é instancionado para exibir a lista das marcas ID3. O loop for realiza todas as marcas ID3 2.0 e anexa o nome e o valor ao conteúdo do campo de texto. Usando as propriedades de informações ID3 (ID3Info
), o artista, o nome da música e o álbum também são anexados. O ActionScript 3.0 e o Flash Player 9 e as versões posteriores oferecem suporte às marcas ID3 2.0, especificamente 2.3 e 2.4. Se você iterar pelas propriedades como no loop for, vão aparecer apenas as marcas ID3 2.0. No entanto, as datas das versões anteriores também são armazenadas na propriedade id3
da música, podendo ser acessada com as propriedades da classe de informação ID3. As marcas para o ID3 1.0 estão no final do arquivo, enquanto as marcas ID3 2.0 estão no começo do arquivo. (Às vezes, os arquivos podem ter marcas da versão anterior e da versão mais recente no mesmo lugar.) Caso um arquivo tenha sido codificado com marcas da versão 1.0 e 2.0 no começo e no final do arquivo, o método id3Handler()
será invocado duas vezes. Ele primeiro lê a versão 2.0 e depois a versão 1.0. Caso apenas a marca ID3 1.0 esteja disponível, as informações podem ser acessadas através das propriedades de informação ID3, como id3.songname
. Para o ID3 2.0, a propriedade id3.TITS
vai recuperar o nome da música a nova marca (TITS).
Observe que nenhum tratamento de erro é gravado para este exemplo e, se o conteúdo ID3 for longo, o resultado pode ir além da área visualizável.
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 | propriedade |
isBuffering:Boolean
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Retorna o estado de buffer dos arquivos MP3 externos. Se o valor for true
, qualquer reprodução está suspensa no momento, enquanto o objeto aguarda mais dados.
Implementação
public function get isBuffering():Boolean
isURLInaccessible | propriedade |
isURLInaccessible:Boolean
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10.1, AIR 2 |
Indica se a propriedade Sound.url
foi truncada. Quando o valor isURLInaccessible
o é true
o valor Sound.url
é apenas o domínio do URL final do qual o som carregou. Por exemplo, a propriedade será truncada se o som for carregado de http://www.adobe.com/assets/hello.mp3
e a propriedade Sound.url
tiver o valor http://www.adobe.com.br
. O valor isURLInaccessible
é true
somente quando todos os seguintes também são true:
- Um redirecionamento de HTTP ocorreu ao carregar o arquivo de som.
- A chamada de arquivo SWF
Sound.load()
é de um domínio diferente do que o URL final do arquivo sólido. - A chamada de arquivo SWF
Sound.load()
não tem permissão para acessar o arquivo sólido. A permissão é dada para acessar o arquivo de som da mesma forma que é dada para a propriedadeSound.id3
: estabeleça um arquivo de política e use a propriedadeSoundLoaderContext.checkPolicyFile
.
Observação: A propriedade isURLInaccessible
foi adicionada para o Flash Player 10.1 e o AIR 2.0. Contudo, esta propriedade está disponível para arquivos SWF de todas as versões quando o tempo de execução do Flash a suporta. Desta maneira, usar algumas ferramentas de autoria no "modo estrito" causa um erro de compilação. Para trabalhar em retorna do erro usam a sintaxe indireta mySound ("isURLInaccessible")
, ou desativam o modo estrito. Se você estiver usando Flash Professional CS5 ou Flex SDK 4.1, você pode usar e compilar este API para tempos de execução lançados antes do Flash Player 10.1 e AIR 2.
Para conteúdo de aplicativo no AIR, o valor desta propriedade é sempre false
.
Implementação
public function get isURLInaccessible():Boolean
Elementos da API relacionados
length | propriedade |
url | propriedade |
url:String
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
A URL a partir da qual esse som foi carregado. Essa propriedade é aplicável apenas aos objetos Sound que foram carregados usando o método Sound.load()
. Para os objetos Sound que estão associados com um ativo de som de uma biblioteca do SWF, o valor da propriedade url
é null
.
Quando você chama primeiro Sound.load()
, a propriedade url
inicialmente tem o valor null
, pois a URL final ainda não é conhecida. A propriedade url
terá um valor não null tão logo seja despachado um evento open
do objeto Sound.
A propriedade url
contém a URL final e absoluta a partir da qual foi carregado um som. O valor de url
é geralmente igual ao valor passado para o parâmetro stream
de Sound.load()
. No entanto, se você passou uma URL relativa para Sound.load()
, o valor da propriedade url
vai representar a URL absoluta. Além disso, se a solicitação da URL original foi redirecionada por um servidor HTTP, o valor da propriedade url
reflete a URL final a partir da qual o arquivo de som foi realmente baixado. Esse relatório de uma URL final absoluta é equivalente ao comportamento de LoaderInfo.url
.
Em alguns casos, o valor da propriedade url
é truncado; consulte a propriedade isURLInaccessible
para obter detalhes.
Implementação
public function get url():String
Elementos da API relacionados
Sound | () | Construtor |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Cria um novo objeto Sound. Se você passar um objeto URLRequest válido para o construtor Sound, o construtor chama automaticamente a função load()
para o objeto Sound. Se você não passar um objeto URLRequest válido para o construtor Sound, você mesmo deve chamar a função load()
para o objeto Sound, ou o fluxo não será carregado.
Depois que load()
é chamado em um objeto Sound, você não pode carregar mais tarde um arquivo de som diferente naquele objeto Sound. Para carregar um arquivo de som diferente, crie um objeto Sound.
load()
, você pode usar o identificador de evento sampleData
para carregar dinamicamente o som no objeto Sound.
Parâmetros stream:URLRequest (default = null ) — A URL que aponta para um arquivo MP3 externo.
| |
context:SoundLoaderContext (default = null ) — Um objeto context opcional SoundLoader, que pode definir o tempo do buffer (o número mínimo de milissegundos de dados de MP3 a ser armazenado buffer do objeto Sound) e pode especificar se o aplicativo deve pesquisar uma política de vários domínios antes de carregar o som.
|
close | () | método |
public function close():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Fecha o fluxo, resultando no encerramento de qualquer download de dados. Não é possível ler dados do fluxo depois que se chama o método close()
.
Lança
IOError — O fluxo não poderia ser fechado, ou o fluxo não foi aberto.
|
Exemplo ( Como usar este exemplo )
Sound.close()
será chamado e o som vai parar com o streaming.
No construtor, é criado um campo de texto para o botão Iniciar e Parar. Quando o usuário clica no campo de texto, o método clickHandler()
é invocado. Ele lida com o início e a interrupção do arquivo de som. Observe que, dependendo da conexão de rede ou de quando o usuário clica no botão Parar, boa parte do arquivo já poderia ter sido carregado, podendo levar algum tempo para que o arquivo de som comece a ser reproduzido. É usado um bloco try...catch
para capturar qualquer erro IO que pode ocorrer enquanto se fecha o fluxo. Por exemplo, se o som é carregado de um diretório local e não passa por streaming, é capturado o erro 2029, que afirma o seguinte: "Esse objeto URLStream não tem um fluxo aberto".
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Extrai dados de som brutos de um objeto Sound.
Este método deve ser usado quando você estiver trabalhando com áudio gerado dinamicamente, usando uma função atribuída ao evento sampleData
de um objeto Sound diferente. Ou seja, você pode usar esse método para extrair dados de som de um objeto Sound. Em seguida, grave os dados na matriz de bytes que um outro objeto Sound está usando para transmitir áudio dinâmico.
Os dados de áudio são colocados na matriz de bytes de destino, começando na posição atual da matriz de bytes. Os dados de áudio são sempre expostos como 44100 Hz Stereo. O tipo de amostra é um valor de ponto de flutuação de 32 bits que pode ser convertido em número usando a função ByteArray.readFloat()
.
Parâmetros
target:ByteArray — Um objeto ByteArray no qual são colocadas as amostras de som extraídas.
| |
length:Number — O número de amostras de som para extrair. Uma amostra contém os canais esquerdo e direito, ou seja, dois valores de ponto flutuante de 32 bits.
| |
startPosition:Number (default = -1 ) — A amostra na qual começa a extração. Se você não especificar um valor, a primeira chamada à função Sound.extract() começará no início do som; as chamadas subsequentes sem um valor para startPosition avançam em sequência pelo arquivo.
|
Number — O número de amostras gravado no ByteArray especificado no parâmetro target .
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
extract()
da classe Sound para acessar os dados de áudio.
Os dados mp3 são carregados no objeto Sound sourceSnd
. Quando o aplicativo carrega os dados mp3, ele chama a função loaded()
(o manipulador do evento complete
do objeto sourceSnd
). Um segundo objeto Sound, outputSound
, é usado para reproduzir o áudio modificado. O objeto outputSound
tem um ouvinte de evento sampleData
; assim, o objeto despacha eventos sampleData
periódicos quando você chama o método play()
do objeto. O método upOctave()
retorna uma matriz de bytes dos dados de áudio modificados com base nos dados de áudio de origem. Ele retorna áudio um oitavo mais alto, ignorando todas as outras amostras de áudio dos dados de origem. O manipulador do evento sampleData
grava a matriz de bytes retornada na propriedade data
do objeto outputSound
. A matriz de bytes data
é acrescentada aos dados de áudio de saída do objeto outputSound
.
Para testar esse exemplo, adicione o arquivo test.mp3 ao mesmo diretório do arquivo 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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Inicia o carregamento de um arquivo MP3 externo a partir da URL especificada. Se você fornecer um objeto URLRequest válido ao construtor Sound, o construtor chama Sound.load()
para você. Você mesmo só precisa chamar Sound.load()
se você não passar um objeto URLRequest válido para o construtor Sound ou passar um valor null
.
Depois que load()
é chamado em um objeto Sound, você não pode carregar mais tarde um arquivo de som diferente naquele objeto Sound. Para carregar um arquivo de som diferente, crie um objeto Sound.
Ao usar esse método, considere o seguinte modelo de segurança:
- A chamada de
Sound.load()
não é permitida se a chamada do arquivo encontra-se na caixa de proteção local com sistema de arquivo e o som está na sandbox de rede. - O acesso da caixa de proteção local confiável ou local com rede exige permissão de um site através de um arquivo de diretivas de URL.
- Não é possível conectar-se às portas normalmente reservadas. Para ver uma lista completa de portas bloqueadas, consulte "Restrição de APIs de rede" no Guia do Desenvolvedor do ActionScript 3.0.
- Você pode impedir o arquivo SWF de usar esse método definindo o parâmetro
allowNetworking
das tagsobject
eembed
na página HTML com o conteúdo SWF.
No Flash Player 10 e posterior, se você usar um Content-Type de partes múltiplas (por exemplo, "multipart/form-data") que contém um upload (indicado por um parâmetro "filename" no cabeçalho "content-disposition" do corpo POST), a operação POST ficará sujeita às regras de segurança aplicadas a uploads:
- A operação POST deverá ser executada em resposta a uma ação iniciada pelo usuário, por exemplo, clique de mouse ou pressionamento de tecla.
- Se a operação POST for entre domínios (se o destino de POST não estiver no mesmo servidor do arquivo SWF que está enviando a solicitação POST), o servidor de destino deverá fornecer um arquivo de diretivas de URL que permita o acesso entre domínios.
Além disso, a sintaxe deverá ser válida (de acordo com os padrões RFC2046) para qualquer Content-Type de partes múltiplas. Se a sintaxe for inválida, a operação POST ficará sujeita às regras de segurança aplicadas a uploads.
No Adobe AIR, o conteúdo na caixa de proteção de segurança application
(conteúdo instalado com o aplicativo 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.
Parâmetros
stream:URLRequest — Uma URL que aponta para um arquivo MP3 externo.
| |
context:SoundLoaderContext (default = null ) — Um objeto context opcional SoundLoader, que pode definir o tempo do buffer (o número mínimo de milissegundos de dados de MP3 a ser armazenado buffer do objeto Sound) e pode especificar se o aplicativo deve pesquisar uma política de vários domínios antes de carregar o som.
|
Lança
IOError — Um erro de rede fez com que houvesse falha no carregamento.
| |
SecurityError — Os arquivos locais não confiáveis não podem se comunicar com a Internet. Você pode trabalhar com isso reclassificando esse arquivo como local com rede ou confiável.
| |
SecurityError — Não é possível conectar-se às portas normalmente reservadas. Para ver uma lista completa de portas bloqueadas, consulte "Restrição de APIs de rede" no Guia do Desenvolvedor do ActionScript 3.0.
| |
IOError — A propriedade digest do objeto stream não é null . Somente defina a propriedade digest de um objeto URLRequest quando chamar o método URLLoader.load() ao carregar um arquivo SWZ (componente da plataforma Adobe).
|
Exemplo ( Como usar este exemplo )
No construtor, é criado um objeto URLRequest
para identificar o local do arquivo de som, que é um podcast da Adobe. O arquivo é carregado em um bloco try...catch
para capturar qualquer erro que pode ocorrer enquanto se está carregando o arquivo. Se tiver ocorrido um erro IO, o método errorHandler()
também é invocado e a mensagem de erro é gravada no campo de texto pretendido para o relatório de progresso. Enquanto a operação de carga está em progresso, é despachado um evento ProgressEvent.PROGRESS
e o método progressHandler()
é chamado. Aqui, o evento ProgressEvent.PROGRESS
é usado como timer para calcular o progresso do carregamento.
O método progressHandler()
divide o valor bytesLoaded
transmitido com o objeto ProgressEvent
pelo valor bytesTotal
para chegar a uma percentagem dos dados de som que estão sendo carregados. Então, esses valores são exibidos no campo de texto. (Observe que, se o arquivo for pequeno, estiver em cache ou estiver no diretório local, não é possível observar o progresso.)
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 3, Flash Player 11 |
carrega dados de áudio MP3 a partir de um objeto ByteArray em um objeto Sound. Os dados serão lidos na posição de ByteArray atual e deixarão a posição ByteArray no fim do comprimento de bytes especificado, após o término. Se os dados de áudio de MP3 contiverem dados ID3, os eventos de ID3 serão despachados durante estas chamadas de função. Essa função irá gerar uma exceção se o objeto ByteArray não contiver dados suficientes.
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 3, Flash Player 11 |
Carrega dados de áudio do ponto flutuante PCM de 32 bits de um objeto ByteArray para um objeto Sound. Os dados serão lidos na posição de ByteArray atual e deixarão a posição ByteArray no fim do comprimento de amostra especificado, multiplicado por 1 canal ou por 2 canais, se o sinalizador estéreo for definido, após o término.
A partir do Flash Player 11.8, a quantidade de dados de áudio que podem ser transmitidos para essa função é limitada. Em versões SWF >= 21, essa função lançará uma exceção se a quantidade de dados de áudio transmitidos nessa função for acima de 1800 segundos. Isto é, as amostras / sampleRate deve ser menor ou igual a 1800. Em versões swf < 21, o tempo de execução falha silenciosamente se a quantidade de dados de áudio transmitidos for mais de 12000 segundos. Isso é fornecido somente para compatibilidade retroativa.
Essa função gera uma exceção se o objeto ByteArray não contiver dados suficientes.
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Gera um novo objeto SoundChannel para reproduzir o som. Esse método retorna um objeto SoundChannel, que você acessa para parar o som e monitorar o volume. (Para controlar o volume, o panorama e o equilíbrio, acesse o objeto SoundTransform atribuído ao canal de som.)
Parâmetros
startTime:Number (default = 0 ) — A posição inicial em milissegundos na qual a reprodução deve iniciar.
| |
loops:int (default = 0 ) — Define o número de vezes que um som realiza loop novamente para o valor startTime antes que o canal de som pare de ser reproduzido.
| |
sndTransform:flash.media:SoundTransform (default = null ) — O objeto SoundTransform inicia atribuído ao canal de som.
|
SoundChannel — Um objeto SoundChannel, que você usa para controlar o som. Esse método retorna null se você não tiver placa de som ou se ficar sem canais de som disponíveis. O número máximo de canais de sons disponíveis de uma vez é 32.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
O construtor chama o método Sound.load()
para iniciar o carregamento dos dados de som. Em seguida, ele chama o método Sound.play()
que vai começar a reproduzir o som tão logo tenham sido carregados dados suficientes. O método Sound.play()
retorna um objeto SoundChannel que pode ser usado para controlar a reprodução do som. O campo de texto exibe as instruções. Para garantir que o conteúdo de onde o usuário deseja que o som seja iniciado já tenha sido carregado, o objeto bar
Sprite é criado e exibido depois que o carregamento do arquivo foi concluído. É despachado um evento Event.COMPLETE
quando o arquivo é carregado com sucesso, que dispara o método completeHandler()
. O método completeHandler()
cria então a barra e a adiciona à lista de exibição. (É usado um objeto sprite no lugar de um objeto de forma para suportar a interatividade.) Quando o usuário clica na barra, o método clickHandler()
é acionado.
No método clickHandler()
, a posição da coordenada x do clique do usuário, event.localX
, é usada para determinar onde o usuário quer que o arquivo comece. Como a barra tem 100 pixels e começa nos 100 pixels da coordenada x, é fácil determinar a percentagem da posição. Além disso, como o arquivo é carregado, a propriedade length
do arquivo de som terá a extensão do arquivo completo em milissegundos. Usando a duração do arquivo de som e a posição na linha, é determinada uma posição inicial para o arquivo de som. Depois que se interrompe a reprodução do som, o arquivo reinicia na posição inicial selecionada, que fica depois do parâmetro startTime
do 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; } } }
No construtor, o som é carregado, e é criado apenas um objeto button
simples da entidade gráfico do retângulo. (É usado um objeto sprite no lugar de um objeto de forma para suportar a interatividade.) Aqui assume-se que o arquivo de som encontra-se no mesmo diretório que o arquivo SWF. (Não há código de manuseio de erro para este exemplo.)
Dois ouvintes de eventos são configurados para responder a cliques únicos ou cliques duplos do mouse. Se o usuário clicar uma vez, é invocado o método clickHandler()
, que reproduz o som. Se o usuário clicar duas vezes em um botão, é invocado o método doubleClickHandler()
, que reproduzirá o arquivo de som duas vezes. O segundo argumento do método play()
é configurado como 1
, o que significa que haverá no som um loop novamente para a hora de início e ele será reproduzido novamente. A hora de início, o primeiro argumento, é configurada como 0
, significando que o arquivo será reproduzido desde o início.
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); } } }
No construtor, o arquivo é carregado em um bloco try...catch
para capturar qualquer erro que pode ocorrer enquanto se está carregando o arquivo. É acrescentado um ouvinte ao objeto de som que vai responder a um evento IOErrorEvent
chamando-se o método errorHandler()
. É acrescentado outro ouvinte para o aplicativo principal, que vai responder a um evento Event.ENTER_FRAME
que é usado como mecanismo de tempo para mostrar o progresso da reprodução. Por fim, é acrescentado um terceiro ouvinte para o canal de som que vai responder a um evento Event.SOUND_COMPLETE
(quando tiver terminado a reprodução do som), chamando-se o método soundCompleteHandler()
. O método soundCompleteHandler()
também remove o ouvinte do evento Event.ENTER_FRAME
.
O método enterFrameHandler()
divide o valor bytesLoaded
transmitido com o objeto ProgressEvent
pelo valor bytesTotal
para chegar a uma percentagem dos dados de som que estão sendo carregados. A percentagem dos dados de som que estão sendo reproduzidos poderia ser determinada pela divisão do valor da propriedade position
do canal de som pela duração dos dados de som. No entanto, se os dados de som não forem totalmente carregados, a propriedade length
do objeto de som mostra apenas o tamanho dos dados de som que são atualmente carregados. É calculada uma estimativa do tamanho real do arquivo de som completo dividindo-se o valor de length
do objeto de som atual pelo valor da propriedade bytesLoaded
dividida pelo valor da propriedade bytesTotal
.
Observe que, se o arquivo for pequeno, estiver em cache ou estiver no diretório local, não é possível observar o progresso do carregamento. Além disso, o tempo de atraso entre o momento em que os dados de som começam a ser carregados e em que os dados carregados começam a ser reproduzidos é determinado pelo valor da propriedade SoundLoaderContext.buffertime
, que é, por padrão, 1000 milissegundos e pode ser restaurada.
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
propriedade Event.type =
flash.events.Event.COMPLETE
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando os dados foram carregados com êxito.
A constanteEvent.COMPLETE
define o valor da propriedade type
de um objeto de evento complete
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto de rede que concluiu o carregamento. |
Elementos da API relacionados
id3 | Evento |
flash.events.Event
propriedade Event.type =
flash.events.Event.ID3
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado por um objeto Sound quando dados ID3 estão disponíveis para sons MP3.
A constanteEvent.ID3
define o valor da propriedade type
de um objeto de evento id3.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto Sound que carrega o MP3 para o qual dados ID3 estão agora disponíveis. target não é sempre o objeto na lista de exibição que registrou o ouvinte de evento. Use a propriedade currentTarget para acessar o objeto na lista de exibição que está processando o evento no momento. |
Elementos da API relacionados
ioError | Evento |
flash.events.IOErrorEvent
propriedade IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando ocorre um erro de entrada/saída que resulta na falha de uma operação de carregamento.
Define o valor da propriedadetype
de um objeto de evento ioError
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
errorID | Um número de referência associado ao erro específico (somente AIR). |
target | O objeto de rede que está recebendo o erro de entrada/saída. |
text | Texto a ser exibido como uma mensagem de erro. |
Elementos da API relacionados
open | Evento |
flash.events.Event
propriedade Event.type =
flash.events.Event.OPEN
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando uma operação de carregamento é iniciada.
A constanteEvent.OPEN
define o valor da propriedade type
de um objeto de evento open.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto de rede que abriu uma conexão. |
Elementos da API relacionados
progress | Evento |
flash.events.ProgressEvent
propriedade ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Despachado quando os dados são recebidos ao longo do progresso de uma operação de carregamento.
Define o valor da propriedadetype
de um objeto de evento progress
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
bytesLoaded | O número de itens ou bytes carregados no momento em que o ouvinte processa o evento. |
bytesTotal | O número total de itens ou bytes que serão carregados no final se o processo de carregamento tiver êxito. |
cancelable | false ; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto que está informando o andamento. |
Elementos da API relacionados
sampleData | Evento |
flash.events.SampleDataEvent
propriedade SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Despachado quando o tempo de execução solicita novos dados de áudio.
Define o valor da propriedadetype
de um objeto de evento SampleDataEvent
.
Esse evento tem as seguintes propriedades:
Propriedade | Valor |
---|---|
bubbles | false |
cancelable | false ; não há comportamento padrão a ser cancelado. |
position | O ponto a partir do qual os dados de áudio são fornecidos. |
Exemplo ( Como usar este exemplo )
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 da 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); } } }
Wed Jun 13 2018, 11:10 AM Z