Bygg din egen ActionScript YouTube-spiller

Under denne tuten tar vi en titt på YouTube-API-en for å bygge en tilpasset YouTube-spiller med ActionScript 3.0.


Endelig resultatforhåndsvisning

La oss se på det endelige resultatet vi vil jobbe for:


Trinn 1: Filoppsett

Slik fungerer dette:

  • Vi lager et YouTube-spilleromslag som vil motta videoens ID
  • Vi lager en dokumentklasse for å instantiere spilleren og sette sine kontroller
  • Vi skal bygge spillernes brukergrensesnitt med designverktøyene i Flash IDE og referere dem i dokumentklassen

For dette trenger vi følgende filer:


Trinn 2: Stageoppsett

Åpne Main.fla og rediger scenen for å gjøre det 500x440 med 30 bilder per sekund. Sett dokumentklassen til "Main".


Trinn 3: Lagoppsett

Vi trenger bare to lag for denne opplæringen: Spilleren holder, som vil bli befolket av vår YouTube-spiller og kontroller laget, som vil ha alle knappene som brukes til å styre spilleren. I dette tilfellet vil vi ha en "play / pause" en "dempe / deaktivere" en fremdriftslinje (representerer beløpet lastet) og en fullhetslinje (representerer spilleledetid).

Jeg har lagt til en haug med andre rammer bare for grafisk utseende, du trenger egentlig ikke de.


Trinn 4: Kontroller

Dette er enkle filmklippssymboler med forekomstnavnene "play_mc" og "mute_mc", "progress_mc" og "fullness_mc."


Trinn 5: Spiller Holder

Spilleren er også en enkel svart form konvertert til en filmklipp med forekomstnavnet "holder_mc."


Trinn 6: YoutubePlayer Class

Åpne YoutubePlayer.as og bygg en skjelettbase klasse som utvider en MovieClip klasse

 pakke offentlig klasse YoutubePlayer utvider MovieClip offentlig funksjon YoutubePlayer () 

Trinn 7: YoutubePlayer.as Import

Vi må importere følgende klasser:

 importer flash.display.MovieClip; importer flash.display.Loader; importere flash.events.Event; importere flash.system.Security; importere flash.net.URLRequest;

Trinn 8: YoutubePlayer.as Variabler

... og sett deretter inn følgende variabler (alle koden i de kommende trinnene kommenteres):

 var spiller: Objekt; // objektet som vil ha spilleren lastet til var loader: Loader; // lasteren som vil laste spilleren var id: String; // videoens id var playerStatus: String; // returnerer spillerne nåværende spillestatus var progressRatio: Number; // returnerer forholdsforskjellen mellom byte lastet og bytes totalt, fra 0 til 1, (nyttig for fremdriftslinjen) var fullhetRatio: Nummer; // returnerer forholdsforskjellen mellom avspillingshode og de totale sekundene, fra 0 til 1, (nyttig for fullhetslinjen) var ismuted: Boolean; // returnerer sant hvis spilleren er dempet

Trinn 9: YoutubePlayer.as YoutubePlayer ()

Når instantiated trenger vi videoens id bestått til YoutubePlayer () -funksjonen:

 offentlig funksjon YoutubePlayer ($ id: String) Security.allowDomain ("www.youtube.com"); // tillat tilgang fra youtube id = $ id // setter id loader = ny Loader (); // instanserer loader loader.contentLoaderInfo.addEventListener (Event.INIT, onLoaderInit); // Etter innlasting, ringer onLoaderInit loader.load (ny URLRequest ("http://www.youtube.com/apiplayer?version=3")); // begynner å laste prosessen

Trinn 10: YoutubePlayer.as onLoaderInit ()

Her er funksjonen onLoaderInit (), kalt etter at lasteren er instantiated (se forrige kodeblokk).

 privat funksjon onLoaderInit (event: Event): void addChild (loader); // legger lasteren til scene loader.content.addEventListener ("onReady", onPlayerReady); // kalt når spilleren er klar loader.content.addEventListener ("onError", onPlayerError); // kalt når spilleren har feil loader.content.addEventListener ("onStateChange", onPlayerStateChange); // kalles når spilltilstanden endres

Trinn 11: YoutubePlayer.as onPlayerReady ()

Hvis alt er borte OK så langt, kalles funksjonen onPlayerReady ():

 privat funksjon onPlayerReady (event: Event): void player = loader.content; // setter spilleren player.setSize (400, 225); // setter skjermstørrelsen player.loadVideoById (id) // laster videoen med id addEventListener (Event.ENTER_FRAME, updatePlayer); // oppdaterer spilleren

Trinn 12: YoutubePlayer.as Andre nyttige hendelser ()

Disse sporene er nyttige for feilsøking:

 privat funksjon onPlayerError (event: Event): void trace ("player error:", Object (event) .data);  // Jeg kunne ha brukt dette til å oppdatere playerStatus-variabelen, men jeg ønsket å vise deg en annen metode privat funksjon onPlayerStateChange (event: Event): void trace ("player state:", Object (event) .data); 

Trinn 13: YoutubePlayer.as Wrappers

Dette er pakkene til ekstern kontroll:

 offentlig funksjon playVideo () player.playVideo () offentlig funksjon pauseVideo () player.pauseVideo () offentlig funksjon stopVideo () player.stopVideo () offentlig funksjon muteVideo () player.mute () offentlig funksjon unmuteVideo () player.unMute ()

Trinn 14: YoutubePlayer.as updatePlayer ()

Bare en siste funksjon og klassen er ferdig:

 offentlig funksjon updatePlayer (e) ismuted = player.isMuted () // returnerer sant hvis dempet // angir fremdriftsforholdet progressRatio = player.getVideoBytesLoaded () / player.getVideoBytesTotal () // angir fyldeforholdet fullnessRatio = player.getCurrentTime () /player.getDuration () // setter spillerenStatus for ekstern bruk bryter (player.getPlayerState ()) case -1: playerStatus = "unstarted" break; tilfelle 0: playerStatus = "ended" break; tilfelle 1: playerStatus = "playing" break; tilfelle 2: playerStatus = "pauset" pause; 

Trinn 15: Main.as Import

Forhåpentligvis vet du allerede hvordan du bygger en grunnleggende dokumentklasse (selv om ikke, sjekk ut denne raske introduksjonen). Innsiden, importere disse klassene:

 importer flash.display.MovieClip; importere flash.events.Event; importer flash.events.MouseEvent; importere YoutubePlayer;

Trinn 17: Main.as Main ()

Her er vår Main () funksjon.

 offentlig funksjon Main () addEventListener (Event.ADDED_TO_STAGE, init); // forhindrer anrop til scenen før den er klar

Trinn 16: Main.as Init ()

Et spørsmål du kanskje spør er, "Hvordan kjenner jeg videoens ID?"

Det er veldig enkelt: ta url av filmen du er etter "http://www.youtube.com/watch?v=fJGLAo_7F_I", for eksempel; video-ID er det 11-sifrede nummer som bæres av v var - i dette tilfellet "fJGLAo_7F_I".

 privat funksjon init (e) removeEventListener (Event.ADDED_TO_STAGE, init); // fjerner forrige lytter youtubeplayer = ny YoutubePlayer ("txqiwrbYGrs"); // instanser spilleren med dette video-IDet // setter opp knappene play_mc.buttonMode = mute_mc.buttonMode = true; play_mc.addEventListener (MouseEvent.CLICK, playPausePlayer); mute_mc.addEventListener (MouseEvent.CLICK, muteUnmutePlayer); holder_mc.addChild (youtubeplayer) // legger spilleren til spillerens holder // tilbakestiller fylde og fremgang fullness_mc.width = 1 progress_mc.width = 1 // oppdaterer fylle og fremdrift addEventListener (Event.ENTER_FRAME, loop); 

Trinn 17: Main.as playPausePlayer ()

Her er funksjonen for vår enkle knapp som bruker "playerStatus" for å veksle mellom å spille og pause:

 privat funksjon playPausePlayer (e) if (youtubeplayer.playerStatus == "playing") youtubeplayer.pauseVideo ();  ellers youtubeplayer.playVideo (); 

Trinn 18: Main.as muteUnmutePlayer ()

På samme måte er her funksjonen for vår knapp som bruker "ismuted" for å veksle mellom stum og unmute:

 privat funksjon muteUnmutePlayer (e) if (youtubeplayer.ismuted) youtubeplayer.unmuteVideo ();  ellers youtubeplayer.muteVideo (); 

Trinn 19: Main.as loop ()

La oss finne ut hvordan filmens fremgang gjør ...

 // multiplisere forholdet med den totale bredden av stolpene gir oss ønsket lengde siden forholdet går fra 0 til 1 privatfunksjonsløkke (e) fullness_mc.width = youtubeplayer.fullnessRatio * 350 progress_mc.width = youtubeplayer.progressRatio * 350

Konklusjon

Som du kan se, er det ganske enkelt å lage en grunnleggende youtube player i AS3, pass på at du sjekker ut spiller API-referansen for en liste over funksjoner og parametere du kan bruke til å utvide denne.

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