Trabalho com sons incorporados

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

O uso de sons incorporados, em vez do carregamento de som de um arquivo externo, é mais útil para pequenos sons que são usados como indicadores dentro da interface do usuário do aplicativo, como sons que são reproduzidos quando botões são clicados.

Quando um arquivo de som é incorporado no aplicativo, o tamanho do arquivo SWF resultante aumenta pelo tamanho do arquivo de som. Em outras palavras, a incorporação de arquivos de som grandes no aplicativo pode aumentar o tamanho do arquivo SWF para um tamanho indesejado.

O método exato a ser usado para incorporar um arquivo de som no arquivo SWF do aplicativo varia de acordo com o ambiente de desenvolvimento.

Uso de um arquivo de som incorporado no Flash

A ferramenta de autoria do Flash permite importar sons de vários formatos e armazená-los como símbolos na Biblioteca. Em seguida, é possível atribuí-los a quadros na linha do tempo ou a quadros de um estado de botão, usá-los com Comportamentos ou usá-los diretamente no código do ActionScript. Esta seção descreve como usar sons incorporados no código ActionScript com a ferramenta de autoria do Flash. Para obter informações sobre as outras maneiras de usar sons incorporados no Flash, consulte “Importação de sons” em Uso do Flash .

Para incorporar um arquivo de som usando a Ferramenta de autoria do Flash:

  1. Selecione Arquivo > Importar > Importar para biblioteca e, em seguida, selecione e importe um arquivo de som.

  2. Clique com o botão direito do mouse no nome do arquivo importado no painel Biblioteca e selecione Propriedades. Clique na caixa de seleção Exportar para ActionScript.

  3. No campo Classe, digite um nome a ser usado ao fazer referência a esse som incorporado no ActionScript. Por padrão, ele usará o nome do arquivo de som nesse campo. Se o nome do arquivo incluir um ponto, como no nome “DrumSound.mp3”, você deverá alterá-lo para algo como “DrumSound”. O ActionScript não permite um caractere ponto em um nome de classe. O campo Classe base ainda deve mostrar flash.media.Sound.

  4. Clique em OK. Talvez você veja uma caixa de diálogo informando que uma definição dessa classe não pôde ser localizada no caminho de classe. Clique em OK e continue. Se você inseriu um nome de classe que não corresponde ao nome de qualquer uma das classes no caminho de classe do aplicativo, uma nova classe que herda da classe flash.media.Sound será gerada automaticamente para você.

  5. Para usar o som incorporado, você faz referência ao nome da classe para aquele som no ActionScript. Por exemplo, o código a seguir começa criando uma nova ocorrência da classe DrumSound gerada automaticamente:

    var drum:DrumSound = new DrumSound(); 
    var channel:SoundChannel = drum.play();

    DrumSound é uma subclasse da classe flash.media.Sound portanto ela herda os métodos e as propriedades da classe Sound, incluindo o método play() conforme mostrado acima.

Uso de um arquivo de som incorporado no Flex

Existem várias maneiras de incorporar recursos de som em um aplicativo Flex, incluindo:

  • Usar a tag de metadados [Embed] em um script

  • Usar a diretiva @Embed no MXML para atribuir um recurso incorporado como uma propriedade de um componente, como Button ou SoundEffect.

  • Usar a diretiva @Embed dentro de um arquivo CSS.

Esta seção descreve a primeira opção: como incorporar sons no código ActionScript dentro de um aplicativo Flex usando a tag de metadados [Embed] .

Para incorporar um ativo no código ActionScript, use a tag de metadados [Embed] .

Coloque o arquivo de som na pasta de origem principal ou em outra pasta que esteja no caminho de criação do projeto. Quando o compilador do encontra uma tag de metadados Embed, ele cria a classe de ativos incorporada para você. É possível acessar a classe por meio de uma variável de tipo de dados Class que pode ser declarada imediatamente após a tag de metadados [Embed] .

O código a seguir incorpora um som denominado smallSound.mp3 e usa uma variável denominada soundClass para armazenar uma referência à classe de ativos incorporada associada àquele som. Em seguida, o código cria uma ocorrência da classe de ativos incorporada, projeta-a como uma ocorrência da classe Sound e chama o método play() naquela ocorrência:

package 
{ 
    import flash.display.Sprite; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 
 
    public class EmbeddedSoundExample extends Sprite 
    { 
        [Embed(source="smallSound.mp3")] 
        public var soundClass:Class; 
         
        public function EmbeddedSoundExample() 
        { 
            var smallSound:Sound = new soundClass() as Sound; 
            smallSound.play(); 
        } 
    } 
}

Para usar o som incorporado para definir uma propriedade de um componente Flex, ele deve ser projetado como uma ocorrência da classe mx.core.SoundAsset em vez de uma ocorrência da classe Sound. Para obter um exemplo semelhante que usa a classe SoundAsset, consulte "Classes de ativos incorporadas" em Aprendendo o ActionScript 3.0.