-
<?xml version="1.0" encoding="utf-8"?>
-
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
-
xmlns:s="library://ns.adobe.com/flex/spark"
-
xmlns:mx="library://ns.adobe.com/flex/halo"
-
creationComplete="init()" width="500" height="500">
-
<fx:Script>
-
<![CDATA[
-
import flash.display.Loader;
-
import flash.events.*;
-
import mx.controls.Alert;
-
-
private var player:Object;
-
private var loader:Loader;
-
-
[Bindable]
-
private var controlsEnabled:Boolean = false;
-
-
/*
-
* Beim Start der Applikation YT-Player laden
-
*/
-
private function init():void {
-
-
// neuen Loader
-
loader = new Loader();
-
-
// Event Listener für Loader
-
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
-
-
// YouTube Player laden
-
loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
-
}
-
-
private function onLoaderInit(event:Event):void {
-
-
// Video Container zur Bühne hinzufügen
-
vidContainer.addChild(loader);
-
-
// Event Listener hinzufügen
-
loader.content.addEventListener("onReady", onPlayerReady);
-
loader.content.addEventListener("onError", onPlayerError);
-
loader.content.addEventListener("onStateChange", onPlayerStateChange);
-
loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
-
}
-
-
private function onPlayerReady(event:Event):void {
-
-
debugTxt.text += "Player ready: " + Object(event).data + "\r";
-
player = loader.content;
-
-
// Groesse des Player festlegen
-
player.setSize(vidContainer.width, vidContainer.height);
-
-
// Video inkl. Vorschaubild laden
-
player.cueVideoById("V_MmgpGWqpA");
-
}
-
-
private function onPlayerError(event:Event):void {
-
debugTxt.text += "Fehler:" + Object(event).data + "\r";
-
}
-
-
private function onPlayerStateChange(event:Event):void {
-
debugTxt.text += "Player State gewechselt: " + Object(event).data + "\r";
-
-
// sobald der Player abspielt, die untere Buttonleiste einblenden
-
if ( Object(event).data == 1 ) {
-
controlsEnabled = true;
-
}
-
-
}
-
-
private function onVideoPlaybackQualityChange(event:Event):void {
-
// small, medium, large oder hd720
-
debugTxt.text += "Video Qualität: " + Object(event).data + "\r";
-
-
}
-
-
]]>
-
</fx:Script>
-
-
-
<s:layout>
-
<s:VerticalLayout />
-
</s:layout>
-
-
-
<mx:UIComponent id="vidContainer" width="480" height="360" />
-
-
<s:HGroup>
-
<s:Button label="Play" click="player.playVideo()" />
-
<s:Button label="Pause" click="player.pauseVideo()" />
-
<s:Button label="Mute" click="player.mute()" />
-
<s:Button label="Unmute" click="player.unMute()" />
-
</s:HGroup>
-
-
<mx:Spacer height="50" />
-
-
<s:HGroup>
-
<s:Button label="Show Video Duration" click="Alert.show (player.getDuration() )" enabled="{controlsEnabled}" />
-
<s:Button label="Show Video URL" click="Alert.show (player.getVideoUrl() )" enabled="{controlsEnabled}" />
-
<s:Button label="Show Embed" click="Alert.show (player.getVideoEmbedCode() )" enabled="{controlsEnabled}" />
-
<s:Button label="Show playback quality" click="Alert.show (player.getPlaybackQuality() )" enabled="{controlsEnabled}" />
-
</s:HGroup>
-
-
<s:TextArea width="200" height="100" id="debugTxt"/>
-
</s:Application>
8 Kommentare zum Beitrag "YouTube API: Chromeless Player für ActionScript 3"
na Zeit wird es!!! Super Sache!
super! eine Frage: Gibt es den Chromed Youtube Player auch in AS3?
Nein, den Chromed Player gibt's noch nicht für AS3. Ich vermute, dass es den erst gibt, wenn auch der normale Player auf der Webseite von YouTube in AS3 ausgeliefert wird.
[...] 3 API for their Chromeless Player. I looked at some availabe code snippets on different blogs and unfortunateley, I had to realize that the API is not really object-oriented and a little bit [...]
Hi Flo,
dank dir für die Codesnippets :-) Finde die API ein bissl eklig zu benutzen, so ohne mögliche Code-Completion und wirkliche Klassen. Habe mich deshalb mal daran gemacht ein bissl OOP Struktur in diese API einzuführen. Herausgekommen sind 3 Klassen und Komponenten für Flash, Flex und Air.
http://blog.derhess.de/2009/10/27/the-new-youtube-as3-chromeless-api-in-flex-air-flash/
Vielleicht kann es ja der ein oder andere gebrauchen?! Im gebrochen English habe ich das Ganze auch dokumentiert.
Grüße nach Offenburg
von auch einem Flo ;-)
Danke für die Ergänzung. Hilfreiche Sache!
Ich habe gerade einen Container für den Chromeless-Player geschrieben, der es erlaubt, auf alle öffentlichen Methoden der Youtube Api zuzugreifen:
http://bjornson.inhb.de/?p=133
Zusätzlich sind die Infos aus der Dokumentation als ASDoc eingefügt. Endlich Autocomplete und ASDoc bei Youtube-Playern :)
Hi Björn, klingt gut. Danke für den Hinweis, dann gibt es eine weitere Alternative zu der oben bereits verlinkten Hilfsklassen.
Schreibe einen Kommentar