Bouw je eigen ActionScript YouTube Player

Tijdens deze tut zullen we een kijkje nemen bij het gebruik van de YouTube API om een ​​aangepaste YouTube-speler te bouwen met ActionScript 3.0.


Eindresultaat voorbeeld

Laten we eens kijken naar het eindresultaat waar we naartoe zullen werken:


Stap 1: Bestand instellen

Hier is hoe dit gaat werken:

  • We maken een wrapper voor YouTube-spelers die de ID van de video ontvangt
  • We zullen een documentklasse maken om de speler te instantiëren en de bedieningselementen in te stellen
  • We bouwen de gebruikersinterface van de speler met de ontwerphulpmiddelen in Flash IDE en verwijzen ernaar in de documentklasse

Hiervoor hebben we de volgende bestanden nodig:


Stap 2: Fase-instellingen

Open Main.fla en bewerk de stage om er 500x440 van te maken met 30 frames per seconde. Stel de documentklasse in op 'Hoofd'.


Stap 3: Lagen instellen

We hebben slechts twee lagen nodig voor deze zelfstudie: de spelershouder, die wordt gevuld door onze YouTube-speler en de bedieningslaag, die alle knoppen heeft die worden gebruikt om de speler te bedienen. In dit geval hebben we een "play / pause" een "mute / unmute" een voortgangsbalk (staat voor het geladen bedrag) en een volheidsbalk (staat voor de tijd van de afspeelkop).

Ik heb een aantal andere frames toegevoegd voor grafische weergave, die heb je niet echt nodig.


Stap 4: Besturing

Dit zijn eenvoudige filmclipsymbolen met de instantienamen "play_mc" en "mute_mc", "progress_mc" en "fullness_mc."


Stap 5: Spelerhouder

De speler is ook een eenvoudige zwarte vorm geconverteerd naar een filmclip met de instantienaam "holder_mc."


Stap 6: YoutubePlayer-klasse

Open YoutubePlayer.as en bouw een skeletbasisklasse die een MovieClip-klasse uitbreidt

 package public class YoutubePlayer breidt MovieClip uit openbare functie YoutubePlayer () 

Stap 7: YoutubePlayer.as Importeert

We moeten de volgende klassen importeren:

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

Stap 8: YoutubePlayer.as Variabelen

... en stel vervolgens de volgende variabelen in (alle code in de komende stappen wordt becommentarieerd):

 var speler: Object; // het object waarbij de speler in var loader wordt geladen: Loader; // de loader die de speler laadt var id: String; // de id van de video var playerStatus: String; // geeft de huidige afspeelstatus van de speler terug var progressRatio: Number; // retourneert het verhoudingsverschil tussen de bytes en het bytes-totaal, van 0 tot 1, (nuttig voor de voortgangsbalk) var fullnessRatio: Number; // retourneert het verhoudingsverschil tussen de afspeelkop en de totale seconden, van 0 tot 1, (nuttig voor de volheidsbalk) var ismuted: Boolean; // geeft waar als speler gedempt is

Stap 9: YoutubePlayer.as YoutubePlayer ()

Als dit wordt geïnstantieerd, moeten we het ID van de video doorgeven aan de functie YoutubePlayer ():

 publieke functie YoutubePlayer ($ id: String) Security.allowDomain ("www.youtube.com"); // toegang toestaan ​​vanaf youtube id = $ id // stelt de id-lader in = new Loader (); // maakt de loader loader.contentLoaderInfo.addEventListener (Event.INIT, onLoaderInit); // Na het laden, roept onLoaderInit loader.load aan (nieuwe URLRequest ("http://www.youtube.com/apiplayer?version=3")); // start het laadproces

Stap 10: YoutubePlayer.as onLoaderInit ()

Hier is de functie onLoaderInit (), die wordt genoemd nadat de loader is geïnstantieerd (zie vorig codeblok).

 private function onLoaderInit (event: Event): void addChild (loader); // voegt de loader toe aan stage loader.content.addEventListener ("onReady", onPlayerReady); // called wanneer de speler klaar is loader.content.addEventListener ("onError", onPlayerError); // called wanneer de speler fouten loader.content.addEventListener ("onStateChange", onPlayerStateChange) heeft; // called wanneer de afspeelstatus is gewijzigd

Stap 11: YoutubePlayer.as onPlayerReady ()

Als alles tot nu toe OK is, wordt de functie onPlayerReady () aangeroepen:

 private function onPlayerReady (event: Event): void player = loader.content; // stelt de player player.setSize in (400, 225); // stelt de weergavegrootte in player.loadVideoById (id) // laadt de video op de id addEventListener (Event.ENTER_FRAME, updatePlayer); // update de speler

Stap 12: YoutubePlayer.as Andere nuttige evenementen ()

Deze sporen zijn handig voor het opsporen van fouten:

 private function onPlayerError (event: Event): void trace ("player error:", Object (event) .data);  // Ik had dit kunnen gebruiken om de playerStatus-variabele bij te werken, maar ik wilde je een andere privé-functie laten zien onPlayerStateChange (event: Event): void trace ("player state:", Object (event) .data); 

Stap 13: YoutubePlayer.as Wrappers

Dit zijn de wrappers voor externe controle:

 openbare functie playVideo () player.playVideo () openbare functie pauseVideo () player.pauseVideo () openbare functie stopVideo () player.stopVideo () openbare functie muteVideo () player.mute () openbare functie unmuteVideo () player.unMute ()

Stap 14: YoutubePlayer.als updatePlayer ()

Slechts één laatste functie en de klas is klaar:

 public function updatePlayer (e) ismuted = player.isMuted () // geeft waar als gedempt // stelt de voortgangsratio in progressRatio = player.getVideoBytesLoaded () / player.getVideoBytesTotal () // stelt de volheidsverhouding in volheidRatio = player.getCurrentTime () /player.getDuration () // zet de spelerStatus voor buitengebruik schakelaar (player.getPlayerState ()) case -1: playerStatus = "niet gestart" pauze; case 0: playerStatus = "ended" break; geval 1: playerStatus = "speel" pauze; geval 2: playerStatus = "gepauzeerd" pauze; 

Stap 15: Main.as Importeren

Hopelijk weet u al hoe u een eenvoudige documentklasse kunt bouwen (maar als dat niet het geval is, bekijk dan deze korte introductie). Binnenin importeer je deze klassen:

 import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; importeer YoutubePlayer;

Stap 17: Main.as Main ()

Dit is onze hoofdfunctie ().

 public function Main () addEventListener (Event.ADDED_TO_STAGE, init); // voorkomt dat oproepen worden gerapporteerd voordat het gereed is

Stap 16: Main.as Init ()

Een vraag die u mogelijk stelt, is: 'Hoe weet ik de id van de video?'

Het is heel simpel: neem bijvoorbeeld de URL van de film "http://www.youtube.com/watch?v=fJGLAo_7F_I"; de video-id is het 11-cijferige nummer dat wordt bijgedragen door de v var - in dit geval "fJGLAo_7F_I".

 private functie init (e) removeEventListener (Event.ADDED_TO_STAGE, init); // verwijdert de vorige listener youtubeplayer = new YoutubePlayer ("txqiwrbYGrs"); // brengt de speler tot leven met deze video-id // stelt de knoppen in play_mc.buttonMode = mute_mc.buttonMode = true; play_mc.addEventListener (MouseEvent.CLICK, playPausePlayer); mute_mc.addEventListener (MouseEvent.CLICK, muteUnmutePlayer); holder_mc.addChild (youtubeplayer) // voegt de speler toe aan de spelerhouder // reset de volheid en voortgang fullness_mc.width = 1 progress_mc.width = 1 // update de volheid en voortgang addEventListener (Event.ENTER_FRAME, loop); 

Stap 17: Main.as playPausePlayer ()

Hier is de functie voor onze eenvoudige knop die "playerStatus" gebruikt om te schakelen tussen afspelen en onderbroken:

 private function playPausePlayer (e) if (youtubeplayer.playerStatus == "playing") youtubeplayer.pauseVideo ();  else youtubeplayer.playVideo (); 

Stap 18: Main.as muteUnmutePlayer ()

Evenzo is hier de functie voor onze knop die "ismuted" gebruikt om te schakelen tussen dempen en dempen opheffen:

 persoonlijke functie muteUnmutePlayer (e) if (youtubeplayer.ismuted) youtubeplayer.unmuteVideo ();  else youtubeplayer.muteVideo (); 

Stap 19: Main.as-lus ()

Laten we eens kijken hoe de voortgang van de film aan het worden is ...

 // als u de verhouding vermenigvuldigt met de totale breedte van de balken, krijgt u de gewenste lengte, omdat de verhouding tussen 0 en 1 gaat. Persoonlijke functie lus (e) fullness_mc.width = youtubeplayer.fullnessRatio * 350 progress_mc.width = youtubeplayer.progressRatio * 350

Conclusie

Zoals je ziet, is het vrij eenvoudig om een ​​eenvoudige youtube-speler te maken in AS3, zorg ervoor dat je de Player API-referentie bekijkt voor een lijst met functies en parameters die je kunt gebruiken om deze uit te breiden.

Ik hoop dat je deze tutorial leuk vond, bedankt voor het lezen!