|
||
|
|
| Conheça o Plugfeed | » Início » Programação » XML » Player de MP3 com Flash e XML, parte 2 --> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 04/09/2005Player de MP3 com Flash e XML, parte 2
Johnatan Oliveira Graduando em Tec. Informática e Aplicações Web, é desenvolvedor ASP/SQL Server e atua no mercado web a cerca de 4 anos como desenvolvedor e design de interfaces. É apaixonado por Flash MX/Action Script. Atualmente é Diretor de Projetos do Portal Plugmasters, colaborador da Revista WWW.COM.BR, onde escreve sobre ASP e Flash e designer/programador de uma agência web. Além de manter o site johnatan.net.
Player de MP3 com Flash e XML, parte 2
Bom, agora chegamos a parte funcional do player... O código. Vamos a ele. Action Script Explicarei detalhadamente cada parte do código. Antes de tudo verifique se você instanciou todos os objetos no palco. Se esta tudo ok! Click na camada action, selecione o frame e aperte F9, será aberta a aba Actions, onde o código que controlará todo o player será digitado. Aberta a aba, digite: #include "playermp3.as" Esta ação pega um arquivo (.*as) de texto externo contendo Actionscript e o inclui no script existente da lista de ações. Você deve estar se perguntando o porque disso? É simples. Digitaremos todo o nosso código em um arquivo separado e dentro do playermp3.fla só incluímos ele. Vá em File > New [Ctrl+N], e escolha a opção ActionScript File. Após abrir, salve-o como playermp3.as (File > Save [Ctrl+S]). E vamos a parte mais interessante. Lendo o arquivo XML (musicas.xml) 1 var musicasXML:XML = new XML(); Na linha 1, declaramos o objeto musicasXML como sendo do tipo XML. Na linha 2, usamos musicasXML.ignoreWhite como true para ignorar os espaços em branco do arquivo XML. Na linha 3, criamos uma função que será chamada automaticamente assim que o xml for carregado. Na linha 4, declaramos a Array que conterá as musicas. Na linha 5, faremos um for que vai de a = 0 até a menor que quantidade de nós filhos (<musica> = childNodes[0].childNodes) do 1° nó filho do XML (<musicas> = childNodes[0]). Na linha 6, adicionamos o valor adquiro do atributo nomeMusica a arrayMusicas. Na linha 7, finalizamos o for. 8 cb_musicas.dataProvider = arrayMusicas; Na linha 8, adicionamos todos os dados obtidos do XML, agora localizados em arrayMusicas ao componente ComboBox cb_musicas. Nas linhas 9,10 e 11, alteramos o estilo do ComboBox. Na linha 12, adicionamos um evento ao ComboBox, cb_musicas.addEventListener("change", link);, onde change, quer dizer quando for selecionado e link é a referencia a um objeto que criaremos logo mais. 15 var link = new Object(); Na linha 15, criamos o objeto link. Na linha 16, criamos a função, que será automaticamente chamada quando algum item for selecionado. Na linha 17, verificamos se o item é igual a "Selecione Uma Música", que é o primeiro nó filho de <musicas> do nosso XML. Caso seja, ele para na linha 18 com o break. 19 }else{ Caso não seja igual a "Selecione Uma Música" (Linha 19), chamamos a função paraMusica(); (Linha 20) que será criada logo mais, para o caso de alguma musica estar tocando. Na linha 21, chamamos a função _global.tocaMusica(); que irá tocar a musica selecionada, passando o parâmetro cb_musicas.value, que contem a musica a ser reproduzida. Logo após habilitamos a visualização do Movie Clip controles (Linha 22), e os botões mcPausa (Linha 23) e mcStop (Linha 24). Na linha 25, desabilitamos a visualização do botão mcPlay e na linha 26, habilitamos a visualização do tempo da musica. Configurações Iniciais 29 mcPausa._visible=false; Estão configurações inicias vão estar fora de qualquer função, como o nome já diz, elas tem que ser setadas inicialmente. Nas linhas 29,30,31,32,33,34, desabilitamos a visualização dos botões mcPausa (Linha 29), mcPlay (Linha 30) e mcStop (Linha 31), da caixa de texto tTime (Linha 32) e dos Movie Clips controles (Linha 33) e barra (Linha 34). Nas linhas 35 e 36, criamos as variáveis vol e bal que serviram para setar volume e balano respectivamente. Na linha 37 modificamos o tamanho do Movie Clip barra_d dentro de barra. Funções de Controle de Som 38 _global.tocaMusica = function(nome){ Na linha 38, criamos a primeira função a ser chamada assim que alguma musica do ComboBox for selecionado (Linha 21). Na linha 39, criamos uma variável de apoio, caso as musicas estejam em algum diretório. Na linha 40, criamos a variável lista que vai receber o diretório mais o nome da música passado por parâmetro na função (_global.tocaMusica(cb_musicas.value);). Na linha 41, declaramos uma nova instancia de objeto da classe Sound. Na linha 42, criamos o evento que será chamado automaticamente quando a reprodução do som é concluída. Caso a reprodução for concluída paramos a música (Linha 43). 45 _global.novoSom.loadSound(lista, true); Na linha 45, usamos o método loadSound(url:String, isStreaming:Boolean), onde lista é o local do mp3 e true configura Streaming fazendo com que o som seja tocado enquanto vai sendo carregado. Na linha 46, setamos o buffer do som para 10 segundos. Nas linhas 47 e 48, criamos duas variáveis que vão nos servir para checagem e testes nas funções. Na linha 49, setamos o volume de acordo com a variável vol. Na linha 50, preenchemos a caixa de texto txtvolume. Na linha 51, setamos o balanço de acordo com a variável bal. Na linha 52, preenchemos a caixa de texto txtbalanço. Na linha 53 iniciamos o tempo da musica. 55 _global.tocaMusicaAtual = function (){ Na linha 55, criamos a função utilizada para retornar a reprodução da musica atual, parada ou pausada. Na linha 56, damos um start na música. Na linha 57, retomamos a contagem do tempo. Setamos as variáveis de verificação como false, já que o som retornou (Linha 58 e 59). Habilitamos a visualização dos controles (Linha 60), do mcPausa (Linha 61) e da caixa de texto tTime (Linha 62). Desabilitamos a visualização do mcPlay (Linha 63). 65 _global.pausaMusica = function (){ Na linha 65, criamos a função de pausar musica. Na linha 66, gravamos a posição onde a musica foi pausada. Na linha 67, paramos a musica. Na linha 68, setamos como true a variável somPausado e como false a variável somParado (Linha 69). Na linha 70, habilitamos a visualização do mcPlay, e na linha 71, desabilitamos a visualização do mcPausa. Na linha 72, paramos a contagem do tempo. 74 _global.tiraPausa = function (){ Na linha 74, criamos a função para retomar a música após uma pausa. Na linha 75, retomamos a reprodução exatamente de onde ela foi pausada, de acordo com a posição gravada no momento da pausa (Linha 66). Setamos as variáveis de verificação como false, já que o som retornou (Linha 76 e 77). Habilitamos a visualização do mcPausa (Linha 78). Desabilitamos a visualização do mcPlay (Linha 79). Na linha 80 retomamos a contagem do tempo da musica. 82 _global.paraMusica = function (){ Na linha 82, criamos a função que para a música. Paramos o som (Linha 83). Setamos como false a variável somPausado (Linha 84) e como true a variável somParado (Linha 85). Desabilitamos a visualização do mcPausa (Linha 86). Habilitamos a visualização do mcPlay (Linha 87). Desabilitamos a visualização dos controles (Linha 88) e da barra (Linha 89). Paramos o tempo da música (Linha 90). Preenchemos a caixa de texto tTime com o valor inicial (Linha 91) e desabilitamos a sua visualização (Linha 92). Gerenciamento dos Butões 94 mcPlay.onRelease = function (){ Na linha 94, criamos a função que será chamada automaticamente após o botão mcPlay ser clicado. Na linha 95, verificamos se o som esta pausado, se sim tiramos a pausa (Linha 96), se não (Linha 97), toca música atual (Linha 98). 101 mcPausa.onRelease = function (){ Na linha 101, criamos a função que será chamada automaticamente após o botão mcPausa ser clicado. Na linha 102, chamamos a função que pausa a reprodução da música. 104 mcStop.onRelease = function (){ Na linha 104, criamos a função que será chamada automaticamente após o botão mcStop ser clicado. Na linha 105, chamamos a função que para a reprodução da música. 107 controles.volAumenta.onRelease = function (){ Na linha 107, criamos a função que será chamada automaticamente após o botão volAumenta ser clicado. Caso a variável vol for igual a 100 (Linha 108), aumenta 0 (Linha 109), ou seja, nada. Se não, aumenta 10 (Linha 111). Na linha 112 setamos o novo valor para o volume e preenchemos a respectiva caixa de texto (Linha 113). 116 controles.volDiminui.onRelease = function (){ Na linha 116, criamos a função que será chamada automaticamente após o botão volDiminui ser clicado. Caso a variável vol for igual a 0 (Linha 117), diminui 0 (Linha 118), ou seja, nada. Se não, diminui 10 (Linha 120). Na linha 121 setamos o novo valor para o volume e preenchemos a respectiva caixa de texto (Linha 122). 125 controles.balAumenta.onRelease = function (){ Na linha 125, criamos a função que será chamada automaticamente após o botão balAumenta ser clicado. Caso a variável bal for igual a 100 (Linha 126), aumenta 0 (Linha 127), ou seja, nada. Se não, aumenta 10 (Linha 129). Na linha 130 setamos o novo valor para o balanço e preenchemos a respectiva caixa de texto (Linha 131). 134 controles.balDiminui.onRelease = function (){ Na linha 134, criamos a função que será chamada automaticamente após o botão balDiminui ser clicado. Caso a variável bal for igual a -100 (Linha 135), diminui 0 (Linha 136), ou seja, nada. Se não, diminui 10 (Linha 138). Na linha 139 setamos o novo valor para o balanço e preenchemos a respectiva caixa de texto (Linha 140). Mostrando o Tempo das Músicas 152 _global.pegaTime = function (){ Na linha 152, criamos a função que vai gerar o tempo. Na linha 153, declaramos uma nova instancia de objeto da classe Date. Na linha 154, preenchemos a caixa de texto do time com a junção dos minutos com os segundos, devidamente formatados (a formatação você vai entender logo abaixo). Na linha 155, setamos o tamanho da barra de acordo com o calculo da posição divido pela duração. 157 _global.verTime= function (){ Na linha 157, criamos a função que vai ser chamada nas nossas funções de controle do player. Na linha 158, criamos a variável progresso que recebe o método setInterval, que é usado para executar uma determinada função repetidamente respeitando um intervalo de tempo definido.O método setInterval retorna uma identificação, que posteriormente pode ser utilizada para cancelar a execução através da função clearInterval. Na linha 159, habilitamos a visualização da barra de progresso. 161 _global.paraTime= function (){ Na linha 161, criamos a função que vai para a contagem do tempo, chamando o método clearInterval (Linha 162). 164 _global.formZeros = function(n, q){ Na linha 164 criamos a função que formata os valores tempo.getMinutes() e tempo.getSeconds() (Linha 154). Esta função irá acrescentar os zeros necessários para uma boa visualização. O parâmetro n da função,é quem recebe o numero que vai ser modificado, e q, recebe a quantidade total de dígitos que o n vai contar após a formatação. formZeros(tempo.getMinutes(), 2). Na linha 165, transformamos n em um string e contamos o número de caracteres que ela contém, dessa forma, podemos subtrair n (número) de q (total de dígitos). Por exemplo, se tivermos 1 e queremos 2 dígitos, temos 1 dígitos para um total de 2. Na linha 166, potenciamos nosso a1 à base 10, no nosso caso vai dar 10. Na linha 167, pegamos o valor de a2 e transformamos em um string. Na linha 168, pegamos o valor de a3 (string) e mostramos ele a partir da posição 1, dessa forma por exemplo o 1 de 10 não aparece, restando somente 0. Na linha 169, retornamos a4, que no nosso caso é 0 e somamos com n. Final Arquivos Verifique logo abaixo os fontes e o exemplo do player.Observação importante Ao colocar este projeto na internet nos deparamos com o problema de carregamento das músicas. Por isso tome cuidado com a taxa de bits dos arquivos mp3. Procure sempre acompanhar o tamanho das músicas e qualidade, para que tenhamos sempre um projeto bem elaborado. Procure um programa de edição e salve as mp3 que serão utilizadas com uma taxa de bits inferior a 128. Isso é muito importante, por isso preste atenção neste detalhe. Bom, obrigado pela atenção. Bom estudo. Arquivos anexos ao artigo
Artigos relacionados
Este artigo é a parte 2 de 2 da seguinte série:
Dalvan Alves <djvynny@gmail.com>
O Download dos arquivos não funcionam....
![]() ![]() ![]() ![]() ![]() Diogo Calderaro <diogocalderaro@hotmail.com>
bom.. no meu ".as" inseri a mesma estrutura como esta nessa página, mas aqui no meu não funcionou.. verifiquei os campos e as instancias.. esta tudo correto.. vc pode publicar ou me mandar o "fla" desse arquivo?
ficarei grato, Bom trabalho ![]() ![]() ![]() ![]() ![]() George de Melo <georgedemelo@gmail.com>
não funciona
![]() ![]() ![]() ![]() ![]() Vinny <vinnywebmaster@gmail.com>
realmente o download dos arquivos nao funcionam.
![]() ![]() ![]() ![]() ![]() Ruy Guimarães <ruy@brasiliamix.com>
Como fazer para faezr o botão para passar as musicas para frente e para trás
![]() ![]() ![]() ![]() ![]() Diego Martins <diego.aju@gmail.com>
Cara parabéns pelo artigo. Como sou leigo em flash estava querendo fazer uma modificação no seu player para ele quando parar de tocar a musica tocar a proxima caso o arquivo musica.xml tenha mais ou repetir a musica caso so tenha um arquivo na musica.xml como faria esse laço ou ate tambem eliminar o combo e deixar o carregamento automatico das musicas e um botao para avançar ;) aguardo Contato
Abraço e mais uma vez parabéns :D ![]() ![]() ![]() ![]() ![]() EnzOo <enzo@nqs.com.br>
Bom, eu estou tentando fazer ele passar, mas isso é o menor dos problemas, gostaria de saber, pq depois de um tempo, todas as músicas tocam em ritmo acelerado.
![]() ![]() ![]() ![]() ![]() Aldo Jung <aldojung@terra.com.br>
Muito bom o player e excelentes as dicas. Baseado no artigo e nos ensinamentos desenvolvi um iPod. Confira em www.cantakgente.com, link "Músicas".
![]() ![]() ![]() ![]() ![]() Jonas Borges <jonas@digital.contato.net>
O meu não esta funcionando e olhei tudo pra ver se tinha algum erro mais esta tudo como voce publicou....se voce poder mandar esse arquivo pra min eu agradeço....flw
![]() ![]() ![]() ![]() ![]() marcelo prc <marceloproriz@hotmail.com>
eu fiz como explicado, mas não consegui colocar as musicas para tocar, não consegui especificar o diretorio...
alguem pode me ajudar???? ![]() ![]() ![]() ![]() ![]() jonas <jonas86mb@yahoo.com.br>
Cara muito bom esse tuto...mais não esta funcionando....poderias dar uma olhada o que aconteceu....
flw ![]() ![]() ![]() ![]() ![]() Sheyla <sheyla@sercomtel.com.br>
Fiz o Mp3 player e ficou dez.... Gostaria que escreve-se sobre componentes do flash... Valeu
![]() ![]() ![]() ![]() ![]() roberto costa skelotto <roberto.costa86@gmail.com>
muito demais esse plyer, mas naum consigo fazer ele toxar a proxima musica da lista, se puder me ajudar com isso,,, obrigado....
![]() ![]() ![]() ![]() ![]() Rubens <rubens_vitor@yahoo.com.br>
Muito bom, pois o player é compacto e simples...bem simples. Mas tem um problema, eu preciso colocar o fundo dele preto, mas como é fla está com problema, não consigo. Pô Johnatan não tem como vc me enviar esse FLA correto não...me ajuda aí, pq de todos os players que procurei na net, o seu é o que mais se adaptou à minha página.
![]() ![]() ![]() ![]() ![]() Flavio Oscar <flavio.oscar@gmail.com>
cara... muito legal o tuto...
eu fiz e funcionou certinho... porém precisaria de algumas dicas para realizar algumas alterações... - primeiramente gostaria que o player iniciasse ja tocando a primeira musica da list.. - se possivel gostaria também que disponibilizasse as opçoes de avanço para a próxima musica e retorno... bem, sei que ja tem algum tempo que o isto foi publicado, mais ficaria muito grato se pudesse me ajudar... um grande abraço... ![]() ![]() ![]() ![]() ![]() Rialle <rialle@globo.com>
Cara, muito bom o player, o meu funcionou.
Mas tô com um probleminha. quando abre oplayer começa a tocar a primeira faixa. Blz! Mas demora pra ler a ID do mp3, e quando o player lê a ID da mp3 o som que tiver tocando é reiniciado. Isso acontece em todas as músicas. tem jeito arrumar isso? Agradeço a ajuda !!! Se alguém quiser ver como ficou meu player : www.jambockonline.com/mp3.html. Abraço, Rialle ![]() ![]() ![]() ![]() ![]() Zé <jlbudai@yahoo.com.br>
Muito perfeito, muito bom.
Porém, gostaria de que o combobox mostrasse um titulo mais amigavel e não o nome do mp3 que ele vai ler. Se alguem puder ajudar... Obrigado ![]() ![]() ![]() ![]() ![]() David William <dwrs@bol.com.br>
Muito bom cara! continue seu trabalho!
![]() ![]() ![]() ![]() ![]() rafael <rafa.story@gmail.com>
muito bom cara. consegui baixar os arquivos. mas gostaria que assim que inicializado o player ele ja comecasse a toca a primeira musica. o que eu tenho que mudar!?
abracos ![]() ![]() ![]() ![]() ![]() thiago borges <borges_thiago@hotmail.com>
o meu nao funcionou fiz exatamente linha por linha nd...pode me mandar o .fla?
obg! ![]() ![]() ![]() ![]() ![]() Leandro Neis <lgn2000@hotmail.com>
Não funciona, poderia me passar o link se já foi corrigido?
![]() ![]() ![]() ![]() ![]() Rafael <raffa.demello@gmail.com>
Jonata, pode favor explique como colocar um botão para trocar de música e para voltar a música anterior ?
agradeço desde já ![]() ![]() ![]() ![]() ![]() Silas <silas.barros@hotmail.com>
Valeu cara excelente tuto,no começo não tava funcionando realmente,pq temos q fazer modificações para q ele venha funcionar
![]() ![]() ![]() ![]() ![]() Daniel <glock.rato@gmail.com>
Cara, esse tutorial é excelente! Graças a você eu consegui fazer uma rádio online do zero. Parabéns, muito bem explicado!
![]() ![]() ![]() ![]() ![]() tiago <tiago.marcal@hotmail.com>
pq da linha 140 pula pra 150?
![]() ![]() ![]() ![]() ![]() Alex Rosa <lacomputer@ig.com.br>
Baixei os seus arquivos e ficou muito bom cara! Parabéns! Inclusive pra atualização ou colocar musicas ficou muito dinâmico.Com alguns cliques tá feito! Abraço!!! : Não avaliado
![]() |
![]() |
|
|