Pacote | flash.media |
Classe | public class SoundLoaderContext |
Herança | SoundLoaderContext Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
da classe Sound.
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 são permitidos se a chamada for local e tentar carregar e reproduzir um som remoto. O usuário deve conceder permissão explícita para permitir isso.
- Certas operações que lidam com som são restritas. Os dados de um som carregado não podem ser acessados por um arquivo de um domínio diferente, a menos que você implemente um arquivo de diretivas de URL. As APIs relacionadas com som que se enquadram nesta restrição são a propriedade
Sound.id3
e os métodosSoundMixer.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.
Propriedade | Definido por | ||
---|---|---|---|
bufferTime : Number = 1000
O número de milissegundos para pré-carregar um som de streaming em um buffer antes que o som inicie o streaming. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
Especifica se o aplicativo deverá tentar baixar um arquivo de diretivas de URL a partir do servidor do som carregado antes de começar a carregar esse som. | SoundLoaderContext | ||
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object |
Método | Definido por | ||
---|---|---|---|
Cria um novo objeto de contexto do carregador de som. | SoundLoaderContext | ||
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 | ||
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 |
bufferTime | propriedade |
public var bufferTime:Number = 1000
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
O número de milissegundos para pré-carregar um som de streaming em um buffer antes que o som inicie o streaming.
Observe que você não pode sobrescrever o valor de SoundLoaderContext.bufferTime
configurando a propriedade global SoundMixer.bufferTime
. A propriedade SoundMixer.bufferTime
afeta o tempo de buffer para o fluxo de sons incorporados em um arquivo SWF e é independente dos objetos Sound criados dinamicamente (ou seja, objetos Sound criados no ActionScript).
checkPolicyFile | propriedade |
public var checkPolicyFile:Boolean = false
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica se o aplicativo deverá tentar baixar um arquivo de diretivas de URL a partir do servidor do som carregado antes de começar a carregar esse som. Essa propriedade se aplica a um som que é carregado de fora do próprio domínio do arquivo chamador usando o método Sound.load()
.
Configure essa propriedade como true
quando você carrega um som de fora do próprio domínio e o código no arquivo de chamada precisa do acesso de baixo nível aos dados de som do ActionScript. Entre os exemplos do acesso de baixo nível aos dados de um som estão a referência à propriedade Sound.id3
para obter um objeto ID3Info ou a chamada ao método SoundMixer.computeSpectrum()
para obter exemplos do som carregado. Se você tentar acessar os dados de som sem configurar a propriedade checkPolicyFile
como true
na hora do carregamento, você pode obter uma exceção SecurityError porque o arquivo de política exigido não foi baixado.
Se você não precisar de acesso de baixo nível aos dados de som que você está carregando, evite configurar checkPolicyFile
como true
. A verificação de um arquivo de política consome largura de banda da rede e pode atrasar o início do seu download, por isso ela só deve ser feita quando necessário.
Ao chamar Sound.load()
com SoundLoaderContext.checkPolicyFile
configurado como true
, o Flash Player deve fazer download bem-sucedido do arquivo de diretivas de URL pertinente ou determinar se não existe nenhum arquivo de diretivas antes de iniciar o download do som especificado. O Flash Player ou o AIR realiza as seguintes ações, nesta ordem, para verificar a existência de um arquivo de política:
- O Flash Player ou o AIR considera os arquivos de política que já foram baixados.
- O Flash Player ou o AIR tenta baixar os arquivos de política pendentes especificados em chamadas a
Security.loadPolicyFile()
. - O Flash Player ou o AIR tenta fazer download de um arquivo de política do local padrão que corresponde à URL do som, que é
/crossdomain.xml
no mesmo servidor queURLRequest.url
. (A URL do som é especificada na propriedadeurl
do objeto URLRequest transmitido paraSound.load()
ou para a função construtora Sound.)
Em todos os casos, o Flash Player ou o AIR exige que exista um arquivo de política adequado no servidor do som, que fornece acesso ao arquivo de som em URLRequest.url
por causa do local do arquivo de política, e que permite que o domínio do arquivo SWF de chamada acesse o som, através de uma ou mais marcas <allow-access-from>
.
Se você configurar checkPolicyFile
como true
, o Flash Player ou o AIR aguarda até que o arquivo de política seja verificado antes de carregar o som. Você deve esperar para realizar operações de baixo nível nos dados de som, tais como chamar Sound.id3
ou SoundMixer.computeSpectrum()
, até que os eventos progress
e complete
sejam despachados do objeto Sound.
Se você configura checkPolicyFile
como true
, mas não for encontrado nenhum arquivo de política apropriado, você só vai receber um erro quando realizar uma operação que exige um arquivo de política, e depois o Flash Player lança uma exceção SecurityError
. Depois de receber um evento complete
, você pode testar se foi encontrado um arquivo de política relevante obtendo o valor de Sound.id3
dentro de um bloco try
e vendo se é lançado SecurityError
.
Tenha cuidado com checkPolicyFile
se estiver baixando som de uma URL que usa os redirecionamentos HTTP do lado do servidor. O Flash Player ou o AIR tenta recuperar os arquivos de política que correspondem à propriedade url
do objeto URLRequest transmitido como Sound.load()
. Se o arquivo de som final vier de uma URL diferente devido aos redirecionamentos HTTP, os arquivos de política inicialmente baixados podem não ser aplicáveis à URL final do som, que é a URL que importa nas decisões de segurança.
Se você se encontrar nessa situação, eis uma solução possível. Depois de receber um evento progress
ou complete
, você pode examinar o valor da propriedade Sound.url
, que contém a URL final do som. Então chame o método Security.loadPolicyFile()
com uma URL do arquivo de política que você calcula com base na URL final do som. Por fim, determine o valor de Sound.id3
até que nenhuma exceção seja lançada.
Isso não se aplica ao conteúdo na área de segurança do AIR. O conteúdo na caixa de proteção do aplicativo sempre tem acesso programático ao conteúdo do som, independentemente da origem.
Para obter mais informações relacionadas à segurança, consulte o tópico do Centro dos desenvolvedores do Flash Player Security.
Elementos da API relacionados
SoundLoaderContext | () | Construtor |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Cria um novo objeto de contexto do carregador de som.
ParâmetrosbufferTime:Number (default = 1000 ) — O número de segundos para pré-carregar um som de streaming em um buffer antes que o som inicie o streaming.
| |
checkPolicyFile:Boolean (default = false ) — Especifica se há um arquivo de política de URL ao carregar o objeto (true ) ou não.
|
Exemplo ( Como usar este exemplo )
O primeiro parâmetro de um objeto SoundLoaderContext (context
) é usado para aumentar o valor padrão do buffer de um segundo para três segundos. (O valor encontra-se em milésimos de segundo.) Se o segundo parâmetro do objeto SoundLoaderContext estiver configurado como true
, o Flash Player vai verificar se há um arquivo de política entre vários domínios ao carregar o objeto. Aqui ele está configurado com o valor padrão false
, por isso nenhum arquivo de política será verificado. O método load()
do objeto de som usará a configuração de contexto para garantir que vai levar três segundos para pré-carregar o streaming de som em um buffer antes de começar o streaming do som. O objeto URLRequest
determina o local do arquivo, que é um podcast da Adobe. Caso ocorra um erro IOErrorEvent.IO_ERROR
durante o carregamento do arquivo de som, é invocado o método errorHandler()
.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Wed Jun 13 2018, 11:10 AM Z