BlogBlogs.Com.Br

quarta-feira, 28 de maio de 2008

Carregar e controlar som com AS 3.0

Com AS 3.0 é muito simples manipular arquivos de áudio no Flash (MP3 no windows). Resumidamente as classes com métodos e objetos para se trabalhar com som estão no pacote flash.media:

flash.media.Sound : Responsável por carregar arquivos de som e propriedades báscias.

Flash.media.SoundChannel: Ao reproduzir um objeto do tipo Sound , é criado um objeto SoundChannel. Sua função está no controle da reprodução, como por exemplo manter um dado volume. Cada objeto Sound tem seu próprio SoundChannel.

Flash.media.SoundTransform: Contem valores de certas propriedades do som e é aplicado sobre um objeto SoundChannel.

Abaixo um Script que explora funções básicas de controle de som no Flash.

Em um documento AS 3.0 , Crie duas camadas, chame uma de Actions e a bloqueie. Na outra camada crie quatro botões que serão reponsaveis pelo controle do som. Instancie como play_btn, stop_btn , menos_btn e mais_btn (Para instanciar simbolo que esta no palco, basta selecionar o simbolo e na aba “propriedades” existe uma caixa de texto chamda Instance Name ).

Pressione F9 e vamos ao código:

import flash.events.Event;
import flash.media.Sound;

var sound:Sound = new Sound();
var soundControl:SoundChannel = new SoundChannel();
var volumeControl:SoundTransform = new SoundTransform();

Nesse ponto é criado um objeto tipo Sound , um SoundChannel e um SoundTransform. O objeto sound irá conter o som em si, e os outros dois serão para controle e alteração de propriedades do som.

sound.addEventListener(Event.COMPLETE, onLoadComplete);
sound.addEventListener(IOErrorEvent.IO_ERROR, onIOError);

Esses listeners estão a espera do carregamento do som ou algum erro no processo.

var req:URLRequest = new URLRequest("musica.mp3");
sound.load(req);

O arquivo música.mp3 é a requisição passada como parâmetro para o método load do objeto do tipo Sound.

mais_btn.addEventListener(MouseEvent.CLICK, increaseVolume);
mais_btn.buttonMode = true; //ativa cursor em caso de MC
menos_btn.addEventListener(MouseEvent.CLICK, decreaseVolume);
menos_btn.buttonMode = true;

Listeners para os botões de aumentar e diminuir o volume. Sendo eventos de mouse ao clicar.

function onLoadComplete(event:Event):void
{
play_btn.addEventListener(MouseEvent.CLICK, playSound);
}

function playSound(event:MouseEvent):void
{
soundControl = sound.play();
play_btn.removeEventListener(MouseEvent.CLICK, playSound);
}

Ao carregar o som o evento OnLoad é disparado e então um listener é ativado sobre o botão play. A função do botão play é reproduzir o o som, alterando o objeto soundControl. Em seqüência o listener é removido para evitar sobreposição do som.

function increaseVolume(event:MouseEvent):void
{
volumeControl.volume += 0.5;
soundControl.soundTransform = volumeControl;
}

function decreaseVolume(event:MouseEvent):void
{
volumeControl.volume -= 0.5;
soundControl.soundTransform = volumeControl;
}

Essas funções são disparadas pelos eventos de click sobre os botões de volume. O objeto soundControl recebe alterações que são feitas o soundTransform .

function onIOError(event:IOErrorEvent)
{
trace("The sound could not be loaded: " + event.text);
}

Função ouvinte para possíveis erros.

Baseado nisso , é bem simples implementar um controle de stop. Basta criar um outro listener e uma função alterando o objeto soundControl com sound.stop().

1 comentários:

Israel C. Araujo disse...

olá, vc poderia desponibilar o arquivo .fla para dowunload sobre sons.