Lag en Jazzy XML Driven MP3-spiller

ActionScript 3.0 tillater Flash-utviklere og designere å gjøre alle slags ting i Flash relativt enkelt. Denne opplæringen vil lære deg hvordan du lager din egen ActionScript 3.0 MP3-spiller med lydspekter, albumkunst, fargeskifter og sanginformasjonsdisplay.




Trinn 1

Begynn med å opprette et nytt ActionScript 3.0-dokument. Still scenestørrelsen til 600px x 600px og 30 FPS. Jeg har valgt # 333333 som bakgrunnsfargen min.

Steg 2

Gå til Arkiv> Importer> Importer til bibliotek ... og importer et bilde (jeg har endret en del av en iPod fra free4illustrator.com for dette eksempelet. Du bør bruke et .png-format i stedet for .jpg-format for å utnytte gjennomsiktigheten for din gjenstand.). Etter å ha importert bildet, åpne biblioteket ditt (Ctrl + L) og dra .png til scenen.

Trinn 3

Velg bildet og konverter det til et filmklippsymbol (F8). Gi det navnet "Ipod" eller et annet navn hvis du foretrekker det. Jeg har valgt øverste venstre hjørne som registreringspunkt.

Trinn 4

Dobbeltklikk på "Ipod" movieclip-symbol for å skrive inn tidslinjen. Pass på at du er inne i movieclip og ikke "Scene 1".

Trinn 5

I baren Tidslinje, sett inn et nytt lag over "IpodBody" -laget, og merk det "Knappelag". Vi legger alle våre knappsymboler i dette laget.

Trinn 6

Bruk Rectangle Tool, # 00ff00 som fyllfarge og fargeløs som slagfargen. Vi trenger ikke et slag her, og faktisk kan fyllfarge være hvilken som helst farge du vil, det vil ikke bli vist i sluttresultatet. Tegn en form over det forrige ikonet, som ligner på bildet nedenfor:

Trinn 7

Konverter formen som du nettopp har trukket inn i et knappesymbol (F8) og betegne "prev" som vist på bildet nedenfor:

Trinn 8

Gi "prev" -knappsymbolet et instansnavn. Jeg har kalt den "prevBtn" og endret Color Style to Alpha med 0%.

Trinn 9

Følgende trinn vil trenge det samme knappesymbolet som "prev" -knappsymbolet. Kopier "prev" -knappsymbolet og lim det inn på "Neste" -ikonet på bitmappen din. For å duplisere dette symbolet, gå til Egenskapslinje og klikk på "Bytt". Et swap-symbolvindu vil dukke opp, på hvilket tidspunkt må du klikke på "Kopier symbol" (pass på at du velger "prev" -knappssymbolet.). Gi det navnet "neste".

Trinn 10

Nå har vi et nytt symbol som ligner på "prev" -symbolet, men heter "neste". Gi dette symbolet et instansnavn for "nextBtn". Fargestilen forblir alfa 0%.

Trinn 11

Gjenta trinn 9 - 10 ved å duplisere "prev" -symbolet for å lage "play", "pause" og "stop" -symbolene. Tilordne instansnavnene til henholdsvis "playBtn", "pauseBtn" og "stopBtn".

Trinn 12

Sett inn et nytt lag over "Buttons Layer" og navnet "Text".

Trinn 13

Tegn en tekstboks som ligner på bildet som er vist nedenfor i "Text" -laget. Angi "Dynamic Text" som teksttype, tilordne instansnavnet "titleTxt", Arial font face, Skriftstørrelse satt til 12px og fet, hvit farge (#ffffff) og justert til sentrum.

Trinn 14

Opprett en annen tekstboks rett under tekstboksen "titleTxt". Angi denne nye tekstboksen som dynamisk tekst, gi den et instansnavn på "artistTxt", med Arial-skriftfarge, skriftstørrelse satt til 10px, hvit farge (#ffffff) og igjen, justert til sentrum.

Trinn 15

Sett inn et nytt lag over "Text" -laget, og merk det "Color Changer".

Trinn 16

Bruk Rectangle Tool og sett # ff0000 som fyllfarge. Tegn et lite firkant på 14px X 14px i øverste høyre hjørne av iPod-skjermen, og konverter det til et knappesymbol (F8) med navnet "rødt". Gi det et instansnavn for "redBtn".

Trinn 17

Gjenta trinn 16 og lag 2 flere firkanter. Fyll ett felt med # ffff00, betegne det "gul" og tilordne et instansnavn for "yellowBtn". Fyll den andre firkanten med # 66ccff, betegne den "blå" med et instansnavn på "blueBtn". Du kan angi dette til hvilken som helst farge du vil, det vil tillate brukeren å endre lydspektrumfarge.

Trinn 18

Sett inn et nytt lag over "Color Changer" -laget, og kaller det "ActionScript Layer".

Trinn 19 - Start scriptet

Fra dette øyeblikket skal vi spille med ActionScript 3.0. På den første Keyframe av "Actionscript Layer" trykk F9. Et handlingsvindu vil dukke opp. Vi legger inn skriptet vårt i dette vinduet senere.

Trinn 20 - Angi variabler

Først må vi fortelle Flash hva hva ipod-spilleren inneholder og dets egenskaper. Det er flere variabler vi trenger. Når Flash har lastet helt, trenger vi det til å begynne å kjøre. Funksjonen "Lastet" starter umiddelbart. Lasteren laster en XML-fil, hvis sti er oppgitt i "URLRequest" av "Loader". Vi lager senere "musiclist.xml" -filen for denne iPod-spilleren.

 var musicReq: URLRequest; var thumbReq: URLRequest; Var musikk: Lyd = Ny lyd (); var sndC: SoundChannel; var nåværendeSnd: Lyd = musikk; var posisjon: tall; var currentIndex: Number = 0; var sangPaused: boolsk; var sangStoppet: boolsk; var lineClr: uint; var changeClr: boolsk; var xml: XML; var sangliste: XMLList; var loader: URLLoader = ny URLLoader (); loader.addEventListener (Event.COMPLETE, Loaded); loader.load (ny URLRequest ("musiclist.xml"));

Trinn 21 - Album Art Holder

Senere lager vi albumkunst som vises på skjermen til iPod-spilleren. Følgende skript angir koordinatene til albumkunst, som vil bli holdt i et filmklippsymbol.

 var thumbHd: MovieClip = ny MovieClip (); thumbHd.x = 50; thumbHd.y = 70; addChild (thumbHd);

Trinn 22 - Definer funksjonen "Lastet"

La oss nå definere funksjonen "Lastet". Vi vil at det skal gå til XML og hente sangadressen som skal spilles av i spilleren. Når sangen er lastet, vil den spille umiddelbart, og albumkunst for sangen blir lastet samtidig. Når sangen er ferdig med å spille, begynner den å spille neste sang.

 funksjon Loaded (e: Event): void xml = new XML (e.target.data); sangliste = xml.song; musicReq = ny URLRequest (sangliste [0] .url); thumbReq = ny URLRequest (sangliste [0] .thumb); music.load (musicReq); sndC = music.play (); titleTxt.text = songList [0] .title; artistTxt.text = songList [0] .artist; loadThumb (); sndC.addEventListener (Event.SOUND_COMPLETE, nextSong); 

Trinn 23 - Definer funksjonen "loadThumb"

Nå skal vi definere funksjonen "loadThumb". Når tommelen er lastet, vil den fortelle Flash for å starte funksjonen "thumbLoaded". Denne funksjonen vil legge til en filmklipp som inneholder albumkunst.

 funksjon loadThumb (): void var thumbLoader: Loader = new Loader (); thumbReq = ny URLRequest (sangliste [currentIndex] .thumb); thumbLoader.load (thumbReq); thumbLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, thumbLoaded);  funksjon thumbLoaded (e: Event): void var thumb: Bitmap = (Bitmap) (e.target.content); var holder: MovieClip = thumbHd; holder.addChild (tommel); 

Trinn 24 - Tilstand "EventListener" av knapper

Her har jeg uttalt at knappene vi opprettet har sine respektive funksjoner. For å tillate brukere å klikke på knappen og utføre funksjonen, bruker vi "MouseEvent.CLICK". Alle funksjonene til de respektive knappene vil bli nevnt i de neste trinnene.

 prevBtn.addEventListener (MouseEvent.CLICK, prevSong); nextBtn.addEventListener (MouseEvent.CLICK, nextSong); playBtn.addEventListener (MouseEvent.CLICK, playSong); pauseBtn.addEventListener (MouseEvent.CLICK, pauseSong); stopBtn.addEventListener (MouseEvent.CLICK, stopSong);

Trinn 25 - Definer funksjonen "prevSong"

"prevBtn" (Forrige knapp) -funksjon, definer "prevSong":

 funksjon prevSong (e: Event): void if (currentIndex> 0) currentIndex--;  else currentIndex = songList.length () - 1;  var prevReq: URLRequest = ny URLRequest (sangliste [currentIndex] .url); var prevPlay: Lyd = nytt lyd (prevReq); sndC.stop (); titleTxt.text = songList [currentIndex] .title; artistTxt.text = songList [currentIndex] .artist; sndC = prevPlay.play (); currentSnd = prevPlay; songPaused = false; loadThumb (); sndC.addEventListener (Event.SOUND_COMPLETE, nextSong); 

Trinn 26 - Definer "NextSong" -funksjonen

"nextBtn" (Next button) -funksjonen, definer "nextSong":

 funksjon nextSong (e: Event): void if (currentIndex < (songList.length() - 1)) currentIndex++;  else  currentIndex = 0;  var nextReq:URLRequest = new URLRequest(songList[currentIndex].url); var nextPlay:Sound = new Sound(nextReq); sndC.stop(); titleTxt.text = songList[currentIndex].title; artistTxt.text = songList[currentIndex].artist; sndC = nextPlay.play(); currentSnd = nextPlay; songPaused = false; loadThumb(); sndC.addEventListener(Event.SOUND_COMPLETE, nextSong); 

Trinn 27 - Definer "playSong" -funksjonen

"playBtn" (Play button) -funksjonen, definer "playSong":

 funksjon playSong (e: Event): void if (songPaused) sndC = currentSnd.play (posisjon); songPaused = false;  annet hvis (songStopped) sndC = currentSnd.play (posisjon); songStopped = false;  ellers hvis (! sndC) sndC = currentSnd.play (posisjon); 

Trinn 28 - Definer funksjonen "pauseSong"

"pauseBtn" (Pause-knapp) -funksjon, definer "pauseSong":

 funksjon pauseSong (e: Event): void if (sndC) posisjon = sndC.position; sndC.stop (); songPaused = true; 

Trinn 29 - Definer "stopSong" -funksjonen

"stopBtn" (Stoppknapp) -funksjonen, definer "stopSong":

 funksjon stopSong (e: Event): void sndC.stop (); posisjon = 0; songStopped = true; 

Vi har nå bygget spillerkontrollene.

Trinn 30 - Oppgi "EventListener" med farget knapper

Knappene vi opprettet i trinnene 15-17 er ikke ubrukelige. Vi må nå fortelle Flash hva deres rolle er innenfor spilleren:

 redBtn.addEventListener (MouseEvent.CLICK, changeRed); yellowBtn.addEventListener (MouseEvent.CLICK, changeYellow); blueBtn.addEventListener (MouseEvent.CLICK, changeBlue);

Trinn 31 - Definer fargede knappfunksjonerS

Hver farget knapp har sin respektive funksjon. "changeRed" vil sette spekterets linje til "0xFF0000" (Rød). "changeYellow" vil sette den til "0xFFFF00" (gul) og "changeBlue" vil angi "0x66CCFF" (Cyan). Vi vil også ha Flash for å vite at når vi klikker på rød farge, vil den arve 100% opacity mens de andre får 50% opacity

Merk: I ActionScript 3.0, 100% = 1, 10% = 0,1 og så videre.

Alle fargede knapper vil ha denne funksjonen, så vi må oppgi knappene på knappen i hver funksjon.

 funksjonsendringRed (e: Event): void lineClr = 0xFF0000; changeClr = true; redBtn.alpha = 1; yellowBtn.alpha = 0.5; blueBtn.alpha = 0.5;  funksjonsendringYellow (e: Event): void lineClr = 0xFFFF00; changeClr = true; redBtn.alpha = 0.5; yellowBtn.alpha = 1; blueBtn.alpha = 0.5;  funksjonsendringBlue (e: Event): void lineClr = 0x66CCFF; changeClr = true; redBtn.alpha = 0.5; yellowBtn.alpha = 0.5; blueBtn.alpha = 1; 

Trinn 32 - Angi standardfarge på spektret

La oss nå angi standardfarge på linjen. Jeg velger rød som standard, du kan bruke hvilken farge du liker.

 hvis (! changeClr) lineClr = 0xFF0000; redBtn.alpha = 1; yellowBtn.alpha = 0.5; blueBtn.alpha = 0.5; 

Trinn 33 - Tegn spektret

Den siste delen av Actionscript; vi vil at Flash skal tegne spekteret av sangen. "lineClr" i "lineStyle" er en variabel innenfor fargeknappen i trinn 31. "for (var i: uint = 30; i<280; i++)" stated the starting x coordinate of the line and the end coordinate of the line.

I "var num: Nummer = ba.readFloat () * 50 + 170;" 50 tillater Flash å multiplisere Float i sangen og 170 er y-koordinatet til spekteret.

 var ba: ByteArray = ny ByteArray (); addEventListener (Event.ENTER_FRAME, drawl); funksjonstrykk (e: Event): void graphics.clear (); graphics.lineStyle (1, lineClr, 0.5); graphics.moveTo (30, 150); SoundMixer.computeSpectrum (ba); for (var jeg: uint = 30; jeg<280; i++)  var num:Number = ba.readFloat()*50 + 170; graphics.lineTo(i, num);  

Trinn 34 - Opprett XML

Tittel og artist vil bli vist i vår spiller senere. ""og""er stiene til albumkunst og sangen. XML kan enkelt opprettes (du kan bruke Notisblokk til å skrive inn følgende kode og lagre som .XML-fil). Du må lagre den som" musiclist.xml "som det er slik vi" Jeg refererte til det i handlingsskriptet til spilleren.

   Massen Era pics / era.jpg sanger / themass.mp3   Dr.No tema  -  pics / drno.jpg sanger / drno.mp3  

Trinn 35 - Opprett Album Art

Lag albumkunst for sangene. Anbefalt størrelse er 65px x 65px; det passer fint inn på skjermen.

Konklusjon

Test filmen din (Ctrl + Enter) for å sjekke utfallet. Du vil ha din egen flash iPod-spiller! Du kan bruke den som musikkspiller for nettstedet ditt; rediger musikklisten som du ønsker. Det er opp til deg. Gå videre og eksperiment, hvis du har noen kule resultater, vær sikker på å dele dem med oss.

Jeg håper du likte denne opplæringen, takk for å lese!