Daeee Galera !!! Vou te passar algo muito interessa para resolver seu problema, trata-se da classe Sound. Com a classe Sound podemos adicionar um som no nosso filme Flash e controlá-lo. Neste tutorial vou mostrar-lhes como funciona alguns métodos da classe Sound e depois criaremos um simples player de MP3. Então vamos conhecer os métodos dos quais falaremos a respeito : METODOS Sound.attachSound(seu_som); - Anexa o som especificado nos parênteses. O som deve estar na biblioteca e com um linkage. Sound.getBytesLoaded(); - Retorna o número de bytes carregados. Sound.getBytesTotal(); - Retorna o número de bytes no total. Sound.setPan(valor); - Define a distribuição direita/esquerda do som. Os valores vão de 100 a -100 onde 100 é usado para que o som saia na direita e -100 para que o som saia na esquerda, use 0 para que o som fique distribuído igualmente em ambos os lados. Sound.getPan(); - Retorna o nível de pan definido na última chamada setPan. Sound.setVolume(valor); - Define o nível de volume do som que vai de 0 a 100. Sound.getVolume(); - Retorna o nível de volume do som. Sound.loadSound(url, streaming); - Url é o local onde se encontra o som . mp3 a ser carregado. Streaming é um valor booleano (true/false), caso seja true o som será tocado enquanto vai sendo carregado, o Flash o armazena em buffer, se for false o Flash carrega todo o som e só depois o reproduz. Sound.start(deslocamento em segundos, loops); - Deslocamento em segundos permite reproduzir um som de um ponto específico. Ex.: Se temos um som de 1:00 e queremos iniciá-lo a partir dos 30 segundos basta escrevermos Sound.start(30,loops); Loops é o número de vezes que o som deve ser reproduzido consecutivamente. Ex.: Sound.start(30,9999); Ambos os parâmetros são opcionais. Vale lembrar que no caso do som estar sendo carregado por streaming os loops não funcionam como deveriam, mas isso é algo fácil de se resolver e nós veremos mais a frente. Sound.stop(); - Para o som especificado ou todos os sons que estiverem sendo reproduzidos no momento. PROPRIEDADES Sound.duration(); - Somente leitura. Retorna a duração de um som em milisegundos. Sound.position(); - Somente leitura. Retorna a posição do som em milisegundos. EVENTOS Sound.onSoundComplete - Evento chamado automaticamente quando a reprodução do som é concluída. Sound.onLoad - Evento chamado automaticamente quando o som é carregado. Gostaria de lembrar que não mencionei todos os métodos, propriedades e eventos da classe Sound. Os demais deixarei para uma próxima oportunidade. Agora que conhecemos a classe Sound podemos trabalhar um pouco com seus métodos. MONTANDO SEU MP3 PLAYER Crie um documento de flash novo; No primeiro Frame, abra o painel de ações e escreva : Caso queira carregar um som que esteja fora de seu documento flash, use esses comandos :
//Criando o objeto som
som = new Sound();
//Carregando o som
som.loadSound("arquivo.mp3", false);/*aqui carregamos o som arquivo .mp3 que está na mesma pasta que o nosso filme. Como você deve ter percebido o segundo parâmetro está false, ou seja, não estamos usando o streaming.*/
som.stop();/*aqui definimos que o som deve ficar parado, mas se você deseja que ele se inicialize sozinho, basta alterar esta parte por som.start(0,1);*/
Caso o som esteja na biblioteca, use estas funções :
//Criando o objeto som
som = new Sound();
//Carregando o som
Sound.attachSound("arquivo.mp3");/*aqui carregamos o som arquivo .mp3 que está na biblioteca do arquivo flash. Não se esquesa de fazer o linkage do som.*/
som.stop();/*aqui definimos que o som deve ficar parado, mas se você deseja que ele se inicialize sozinho, basta alterar esta parte por som.start(0,1);*/
Se você rodar o seu filme Flash verá que o som será tocado, mas ainda não podemos comandá-lo.
Bom agora crie 3 botões (Play, Stop e Pause).
Play - vai iniciar o nosso som quando clicado.
Stop - vai parar o nosso som quando clicado.
Pause - vai pausar o nosso som quando clicado.
Agora vamos criar as ações nos botões, selecione o botão Pause, abra o painel de ações e coloque o seguinte:
on(release){//Quando realizado
som.pausa = som.position/1000;/*O som.pausa pega a posição atual do som. Dividimos por 1000 pois a posição está em milisegundos mas precisamos dela em segundos. */
som.stop();//Paramos a reprodução.
}
Você pode não estar entendendo, mas garanto que agora, quando fizermos o botão Play irá entender perfeitamente a lógica da coisa. Selecione o botão Play e no painel de ações coloque o seguinte:
on (release) {//Quando realizado
if (som.pausa != null) {/* Damos uma condição: Se som.pausa for diferente (!) de nulo (0)*/
som.start(som.pausa, 0);/*Veja que o parâmetro Deslocamento em segundos se encontra som.pausa, ou seja, o ponto atual da reprodução do som. Isso faz com que o som seja continuado a partir do ponto de onde demos Pausa.*/
} else {//Caso o contrário
som.start(0, 1);//Inicia o som com 0 de deslocamento e 1 loop.
}
}Feito isso vamos ao botão Stop, portanto selecione-o e abra o painel de ações:on (release) {//Quando realizado
som.stop();//Paramos a reprodução do som
som.pausa = 0;/*Definimos o valor de som.pausa como 0. O motivo é bem simples, se não fizermos isso, quando clicarmos no botão Pause, o botão Stop perde sua funcionalidade pois ele vai pausar a música e não parar.*/
}
Bom, agora podemos controlar o som de certa forma. Mas seria bom se pudéssemos controlar o volume e o balanço, e quem sabe até mostrarmos o transcorrer da música.
Mãos à obra. Agora em uma nova camada vamos criar dois campos de texto dinâmicos. O primeiro terá instância "vol_t" (sem aspas) e será o responsável em mostrar o nível de volume para nós. Ao lado do campo "vol_t" crie mais dois botões "+" e "-" (sem aspas). Faço o mesmo para o balanço mas coloque a instância do campo de "bal_t" (sem aspas).
Agora vá novamente na primeira frame onde no começo colocamos as ações iniciais e adicione o seguinte:
//Criamos as variáveis com os valores de volume e balanço
var vol = 100;//O valor inicial do volume será 100, ou seja, o máximo.
var bal = 0;//O valor inicial do balanço será 0, ou seja, o som será distribuído em
//ambas as caixas de som.
_root.onEnterFrame = function() {//Usamos o evento EnterFrame para que os
//valores sempre se atualizem
som.setVolume(vol);//Definimos o volume do som, o valor do volume está na
//variável vol.
vol_t.text = vol;//Aqui mostramos o valor de vol no campo de texto vol_t
som.setPan(bal);//Definimos o balanço do som, o valor do balanço está na
// variável bal.
bal_t.text = bal;//Aqui mostramos o valor de bal no campo de texto bal_t
};
Agora só está faltando a nossa barra que indicará o transcorrer da música. Para isso crie em uma nova camada uma barra de tamanho x = 100. Transforme-a em um MC e a instâncie de "duracao" (sem aspas). Agora para que possamos redimensionar a barra sem que mudemos o seu valor (x = 100) selecione o MC e aperte F8 para criarmos mais um objeto do tipo MC com nome e instância de "barra_d" (sem aspas). Agora, na primeira frame, vamos inserir mais um código.
Logo abaixo da linha bal_t.text = bal; coloque:
barra_d.duracao._xscale = som.position/som.duration*100;/* A escala de x da barra vai conforme o tempo que a música toca. Usamos o som.position dividido pelo som.duration para definir o tempo que se transcorreu a música.*/
O código completo fica assim:
//Criando o objeto som
som = new Sound();
//Carregando o som
som.loadSound("arquivo.mp3", false)/*aqui carregamos o som arquivo.mp3 que está na mesma pasta que o nosso filme. Como você deve ter percebido o segundo parâmetro está false, ou seja, não estamos usando o streaming.*/
som.stop();/*aqui definimos que o som deve ficar parado, mas se você deseja que ele se inicialize sozinho, basta alterar esta parte por som.start(0,1);*/
//Criamos as variáveis com os valores de volume e balanço
var vol = 100;//O valor inicial do volume será 100, ou seja, o máximo.
var bal = 0;//O valor inicial do balanço será 0, ou seja, o som será distribuído em
//ambas as caixas de som.
_root.onEnterFrame = function() {//Usamos o evento EnterFrame para que os
//valores sempre se atualizem
som.setVolume(vol);//Definimos o volume do som, o valor do volume está na
//variável vol.
vol_t.text = vol;//Aqui mostramos o valor de vol no campo de texto vol_t
som.setPan(bal);//Definimos o balanço do som, o valor do balanço está na
// variável bal.
bal_t.text = bal;//Aqui mostramos o valor de bal no campo de texto bal_t
barra_d.duracao._xscale = som.position/som.duration*100;/* A escala de x da barra vai conforme o tempo que a música toca. Usamos o som.position dividido pelo som.duration para definir o tempo que se transcorreu a música.*/
};
Como você viu, os valores de loop que definimos para som.start foram 1. Isso que dizer que a música se repetirá somente 1 vez. Se desejar que ela toque sempre, defina o valor como 9999, é o máximo permitido. Caso esteja carregando a música por streaming, para que ela se repita teremos de usar o evento som.onSoundComplete. O código com o streaming ficaria assim:
//Criando o objeto som
som = new Sound();
//Carregando o som
som.loadSound("arquivo.mp3", true)/*aqui carregamos o som arquivo.mp3 que está na mesma pasta que o nosso filme. Agora estamos usando o streaming.*/
som.stop();/*aqui definimos que o som deve ficar parado, mas se você deseja que ele se inicialize sozinho, basta alterar esta parte por som.start(0,1);*/
//Criamos as variáveis com os valores de volume e balanço
var vol = 100;//O valor inicial do volume será 100, ou seja, o máximo.
var bal = 0;//O valor inicial do balanço será 0, ou seja, o som será distribuído em
//ambas as caixas de som.
_root.onEnterFrame = function() {//Usamos o evento EnterFrame para que os
//valores sempre se atualizem
som.setVolume(vol);//Definimos o volume do som, o valor do volume está na
//variável vol.
vol_t.text = vol;//Aqui mostramos o valor de vol no campo de texto vol_t
som.setPan(bal);//Definimos o balanço do som, o valor do balanço está na
// variável bal.
bal_t.text = bal;//Aqui mostramos o valor de bal no campo de texto bal_t
barra_d.duracao._xscale = som.position/som.duration*100;/* A escala de x da barra vai conforme o tempo que a música toca. Usamos o som.position dividido pelo som.duration para definir o tempo que se transcorreu a música.*/
som.onSoundComplete = function(){/*Usamos o evento onSoundComplete para que quando o som chegue ao fim, se execute a função que fará a música tocar novamente, desta forma temos um loop infinito.*/
this.start(0,1);
}
};
Bom, é isso. Espero que tenham aproveitado e aprendido bastante com esta pequena explicação sobre a classe Sound. Agora meus amigos, basta vocês usarem sua criatividade. Qualquer duvida me mandem uma MP !!! B) (Tutorial baseado em um tutorial do Flash Masters)