Aprenda a fazer um MP3 Player com Equalizador XML com nome da Música, Artista, Álbum, imagem do Álbum SeekeBar e Volume.
Faça o download para começar.
Formato: Flash CS5
Arquivo: MP3Player.rar
Descompacte o arquivo, temos uma pasta chamada som e outra chamada capas, 1 arquivo xml musicas.xml e 1 arquivo Flash mp3player.fla Abra o mp3player.fla, temos o MP3 pronto só falta as Actions. Vamos as Actions:
Faça o download para começar.
Formato: Flash CS5
Arquivo: MP3Player.rar
Descompacte o arquivo, temos uma pasta chamada som e outra chamada capas, 1 arquivo xml musicas.xml e 1 arquivo Flash mp3player.fla Abra o mp3player.fla, temos o MP3 pronto só falta as Actions. Vamos as Actions:
MP3Player com Equalizador |
import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.DropShadowFilter; //Adicionando nossas variáveis var getMusica:URLRequest; var Musica:Sound = new Sound(); var PosProgresso:Number; var soundChannel:SoundChannel; var MusicaAtual:Sound = Musica; var pos:Number; var Atual:Number = 0; var AtualP:Number; var AtualA:Number; var MusicaPlay:Boolean = false; var xml:XML; var ListaMusica:XMLList; var MusicaVolume:SoundTransform = new SoundTransform(); var ProVolume:Number; var VolumeLimite:Rectangle = VolumeBar.getBounds(VolumeBar); var xPos:Number = VolumeLimite.x; var yPos:Number = VolumeLimite.y; var widthPos:Number = VolumeLimite.width - VolumeBar.VolumeDrag.width; var heightPos:Number = 0; var limites:Rectangle = new Rectangle(xPos,yPos,widthPos,heightPos); var SeekLimite:Rectangle = SeekBar.getBounds(SeekBar); var xSeekPos:Number = SeekLimite.x; var ySeekPos:Number = SeekLimite.y; var widthSeekPos:Number = 332; var heightSeekPos:Number = 0; var limitesSeek:Rectangle = new Rectangle(xSeekPos,ySeekPos,widthSeekPos, heightSeekPos); var loadIMG:Loader = new Loader(); var loadIMGR:Loader = new Loader(); var loadIMGP:Loader = new Loader(); //usando uma máscara para a capa com reflexo Imagem.load_imgr.cacheAsBitmap = true; Imagem.mask_ref.cacheAsBitmap = true; Imagem.load_imgr.mask = Imagem.mask_ref; //carregando XML var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, CarregaXML); var URLRe:URLRequest = new URLRequest("musicas.xml"); loader.load(URLRe); //carregando música function LoadProgress(e:Event){ var loadedPct:uint = Math.round(344 * (MusicaAtual.bytesLoaded/MusicaAtual. bytesTotal)); SeekBar.SeekBar_load.width = loadedPct; } //música carregada function LoadComplete(e:Event){ SeekBar.SeekBar_load.width = 344; stage.removeEventListener(Event.ENTER_FRAME, LoadProgress); } //apos carregamento do XML function CarregaXML(e:Event){ xml = new XML(e.target.data); ListaMusica = xml.som; getMusica = new URLRequest(ListaMusica[0].url); Musica.load(getMusica); soundChannel = Musica.play(); //carrega as informções da música musica_txt.text = ListaMusica[0].musica; artista_txt.text = ListaMusica[0].artista; album_txt.text = ListaMusica[0].album; ProximaMc.musica_txtp.text = ListaMusica[1].musica; ProximaMc.artista_txtp.text = ListaMusica[1].artista; //carragando capas, normal, reflexo e miniatura da próxima loadIMG.load(new URLRequest(ListaMusica[0].img)); loadIMGR.load(new URLRequest(ListaMusica[0].img)); loadIMGP.load(new URLRequest(ListaMusica[1].img)); Imagem.load_img.load_mc.addChild(loadIMG); Imagem.load_imgr.load_mc.addChild(loadIMGR); ProximaMc.load_imgp.load_mc.addChild(loadIMGP); //quando a música acabar chamar função ProximaMusica soundChannel.addEventListener(Event.SOUND_COMPLETE, ProximaMusica); stage.addEventListener(Event.ENTER_FRAME, Atualiza); stage.addEventListener(Event.ENTER_FRAME, LoadProgress); Musica.addEventListener(Event.COMPLETE, LoadComplete); } //Atualiza e mostra o tempo da música function AtualizaTempo(num:Number){ var TempoAtual:Number = num / 1000; var TempoTotal:Number = MusicaAtual.length / 1000; var Minutos:Number = 0; var Segundos:Number = 0; var MinutosTotal:Number = 0; var SegundosTotal:Number = 0; Minutos = Math.floor(TempoAtual / 60); Segundos = Math.floor(TempoAtual) % 60; MinutosTotal = Math.floor(TempoTotal / 60); SegundosTotal = Math.floor(TempoTotal) % 60; TempoAtualTxt.text = ((Minutos<10) ? "0"+Minutos : Minutos)+":"+((Segundos<10) ? "0"+Segundos : Segundos); TempoTotalTxt.text = "de "+((MinutosTotal<10) ? "0"+MinutosTotal : MinutosTotal)+":"+((SegundosTotal<10) ? "0"+SegundosTotal : SegundosTotal); } //Atualiza SeekBar function Atualiza(e:Event){ soundChannel.addEventListener(Event.SOUND_COMPLETE, ProximaMusica); var MusicaProgresso:Number = soundChannel.position / MusicaAtual.length; SeekBar.SeekDrag.x = SeekBar.SeekBar_bg.x + MusicaProgresso * 332; SeekBar.SeekBarPro.width = SeekBar.SeekDrag.x + 14; AtualizaTempo(soundChannel.position); } //Controles de próxima, anterior, pause Controles.btnProxima.addEventListener(MouseEvent.CLICK, ProximaMusica); Controles.btnAnterior.addEventListener(MouseEvent.CLICK, AnteriorMusica); Controles.btnPause.addEventListener(MouseEvent.CLICK, PauseMusica); //botão próxima com imagem ProximaMc.btn_ProximaMc.buttonMode = true; ProximaMc.btn_ProximaMc.addEventListener(MouseEvent.CLICK, ProximaMusica); ProximaMc.btn_ProximaMc.addEventListener(MouseEvent.MOUSE_OVER, ProximaOver); ProximaMc.btn_ProximaMc.addEventListener(MouseEvent.MOUSE_OUT, ProximaOut); ProximaMc.btn_ProximaMc.addEventListener(MouseEvent.MOUSE_UP, ProximaOver); ProximaMc.btn_ProximaMc.addEventListener(MouseEvent.MOUSE_DOWN, ProximaPress); function ProximaOver(e:MouseEvent){ ProximaMc.gotoAndStop(2); } function ProximaOut(e:MouseEvent){ ProximaMc.gotoAndStop(1); } function ProximaPress(e:MouseEvent){ ProximaMc.gotoAndStop(3); } //ProximaMusica função para mudar para a próxima música function ProximaMusica(e:Event){ if (Atual < (ListaMusica.length() - 1)){ Atual++; }else{ Atual = 0; } if (Atual == ListaMusica.length() - 1){ AtualP = 0; }else{ AtualP = Atual + 1; } var nextReq:URLRequest = new URLRequest(ListaMusica[Atual].url); var Musica:Sound = new Sound(nextReq); soundChannel.stop(); musica_txt.text = ListaMusica[Atual].musica; artista_txt.text = ListaMusica[Atual].artista; album_txt.text = ListaMusica[Atual].album; ProximaMc.musica_txtp.text = ListaMusica[AtualP].musica; ProximaMc.artista_txtp.text = ListaMusica[AtualP].artista; loadIMG.load(new URLRequest(ListaMusica[Atual].img)); loadIMGR.load(new URLRequest(ListaMusica[Atual].img)); loadIMGP.load(new URLRequest(ListaMusica[AtualP].img)); soundChannel = Musica.play(); MusicaPlay = true; MusicaAtual = Musica; stage.addEventListener(Event.ENTER_FRAME, Atualiza); stage.addEventListener(Event.ENTER_FRAME, LoadProgress); MusicaAtual.addEventListener(Event.COMPLETE, LoadComplete); } //AnteriorMusica função para a música anterior function AnteriorMusica(e:Event){ if (Atual > 0){ Atual--; }else{ Atual = ListaMusica.length() - 1; } if (Atual == 0){ AtualA = 2; }else{ AtualA = Atual - 1; } var prevReq:URLRequest = new URLRequest(ListaMusica[Atual].url); var Musica:Sound = new Sound(prevReq); soundChannel.stop(); musica_txt.text = ListaMusica[Atual].musica; artista_txt.text = ListaMusica[Atual].artista; album_txt.text = ListaMusica[Atual].album; ProximaMc.musica_txtp.text = ListaMusica[AtualA].musica; ProximaMc.artista_txtp.text = ListaMusica[AtualA].artista; loadIMG.load(new URLRequest(ListaMusica[Atual].img)); loadIMGR.load(new URLRequest(ListaMusica[Atual].img)); loadIMGP.load(new URLRequest(ListaMusica[AtualA].img)); soundChannel = Musica.play(); MusicaPlay = true; MusicaAtual = Musica; stage.addEventListener(Event.ENTER_FRAME, Atualiza); stage.addEventListener(Event.ENTER_FRAME, LoadProgress); MusicaAtual.addEventListener(Event.COMPLETE, LoadComplete); } //Pausa a música function PauseMusica(e:Event){ pos = soundChannel.position; soundChannel.stop(); MusicaPlay = false; stage.removeEventListener(Event.ENTER_FRAME, Atualiza); Controles.btnPlay.addEventListener(MouseEvent.CLICK, PlayMusica); } //Reproduz a música function PlayMusica(e:Event){ if (MusicaPlay == false){ soundChannel = MusicaAtual.play(pos); soundChannel.addEventListener(Event.SOUND_COMPLETE, ProximaMusica); MusicaPlay = true; stage.addEventListener(Event.ENTER_FRAME, Atualiza); Controles.btnPlay.removeEventListener(MouseEvent.CLICK, PlayMusica); } } //SoundMixer.computeSpectrum - Equalizador var ba:ByteArray = new ByteArray(); //Cria um Sprite e adiciona ao palco var gr:Sprite = new Sprite(); gr.y = 85; gr.x = 365; gr.cacheAsBitmap = true; addChild(gr); //máscara para o equalizador mask_gr.cacheAsBitmap = true; mask_gr.y = 25; mask_gr.x = 365; gr.mask = mask_gr; var Mtime:Timer = new Timer(70); Mtime.addEventListener(TimerEvent.TIMER, Equalizador); Mtime.start(); //função Equalizador function Equalizador(e:TimerEvent){ SoundMixer.computeSpectrum(ba, true, 0); var i:int; //tamanho do width(Largura) das barras; var w:uint = 5; gr.graphics.clear(); //tamanho e cor da linha; gr.graphics.lineStyle(0, 0x222222); //cor das barras; gr.graphics.beginFill(0x3079ED); for (i=0; i<170; i+=w){ var t:Number = ba.readFloat(); var n:Number = (t * 50); gr.graphics.drawRect(i, 0, w, -n); } } //Volume VolumeBar.VolumeDrag.x = widthPos; VolumeBar.mouseEnabled = false; VolumeBar.VolumeDrag.buttonMode = true; VolumeBar.VolumeDrag.addEventListener(MouseEvent.MOUSE_OVER, overDrag); VolumeBar.VolumeDrag.addEventListener(MouseEvent.MOUSE_OUT, outDrag); VolumeBar.VolumeDrag.addEventListener(MouseEvent.MOUSE_DOWN, dragVolume); //Quando mover o MC do Volume function dragVolume(e:MouseEvent){ VolumeBar.VolumeDrag.startDrag(false,limites); //chama a função Volume que atualiza o % do volume addEventListener(Event.ENTER_FRAME, Volume); stage.addEventListener(MouseEvent.MOUSE_UP, stopVolume); } //Quando soltar o MC do Volume function stopVolume(e:MouseEvent){ VolumeBar.VolumeDrag.stopDrag(); stage.removeEventListener(MouseEvent.MOUSE_UP, stopVolume); } //atualiza o % do Volume e o Width da Barra do Volume function Volume(e:Event){ ProVolume = VolumeBar.VolumeDrag.x / widthPos; MusicaVolume.volume = ProVolume; soundChannel.soundTransform = MusicaVolume; VolumeBar.VolumeBarPro.width = VolumeBar.VolumeDrag.x + 14; VolumeTxt.text = Math.round((VolumeBar.VolumeDrag.x)/(limites.right-limites .left)* 100) + "%"; } //SeekBar SeekBar.mouseEnabled = false; SeekBar.SeekDrag.buttonMode = true; SeekBar.SeekDrag.addEventListener(MouseEvent.MOUSE_OVER, overSeekDrag); SeekBar.SeekDrag.addEventListener(MouseEvent.MOUSE_OUT, outSeekDrag); SeekBar.SeekDrag.addEventListener(MouseEvent.MOUSE_DOWN, dragSeek); SeekBar.SeekBar_m.addEventListener(MouseEvent.CLICK, ClickSeek); SeekBar.SeekBar_m.buttonMode = true; //Quando clicar em alguma area do SeekBar function ClickSeek(e:MouseEvent){ PosProgresso = Math.round(MusicaAtual.length*(SeekBar.SeekBar_m.mouseX-7)/332); SoundMixer.stopAll(); stage.addEventListener(Event.ENTER_FRAME, Atualiza); soundChannel = MusicaAtual.play(PosProgresso); } //Quando mover o MC do SeekBar function dragSeek(e:MouseEvent){ SeekBar.SeekDrag.startDrag(false,limitesSeek); SoundMixer.stopAll(); stage.removeEventListener(Event.ENTER_FRAME, Atualiza); //chama a função Seek que atualiza p Tempo stage.addEventListener(Event.ENTER_FRAME, Seek); stage.addEventListener(MouseEvent.MOUSE_UP, stopSeek); } //Quando soltar o MC do SeekBar function stopSeek(e:MouseEvent){ SeekBar.SeekDrag.stopDrag(); SoundMixer.stopAll(); stage.addEventListener(Event.ENTER_FRAME, Atualiza); stage.removeEventListener(Event.ENTER_FRAME, Seek); stage.removeEventListener(MouseEvent.MOUSE_UP, stopSeek); soundChannel = MusicaAtual.play(PosProgresso); //correção por Johnny MusicaPlay = true; } //atualiza o Tempo e o Width da Barra do SeekBar function Seek(e:Event){ PosProgresso = Math.round(MusicaAtual.length*(SeekBar.SeekDrag.x)/332); SeekBar.SeekBarPro.width = SeekBar.SeekDrag.x + 14; AtualizaTempo(PosProgresso); } function overDrag(e:MouseEvent){ VolumeBar.VolumeDrag.gotoAndStop(2); } function outDrag(e:MouseEvent){ VolumeBar.VolumeDrag.gotoAndStop(1); } function overSeekDrag(e:MouseEvent){ SeekBar.SeekDrag.gotoAndStop(2); } function outSeekDrag(e:MouseEvent){ SeekBar.SeekDrag.gotoAndStop(1); }
0 comentários:
Postar um comentário