Я бездельничаю с новым API youtube as3, но застрял. Это
как далеко я добрался (глядя на их пример кода).
http://pastie.org/656088
public class Main extends Sprite
{
Security.allowDomain("*");
private var player:Object;
private var loader:Loader;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
}
private function onLoaderInit(e:Event):void
{
addChild(loader);
loader.contentLoaderInfo.addEventListener("onReady", onPlayerReady);
loader.contentLoaderInfo.addEventListener("onError", onPlayerError);
loader.contentLoaderInfo.addEventListener("onStateChange", onPlayerStateChange);
loader.contentLoaderInfo.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}
private function onPlayerReady(e:Event):void
{
trace("Player ready: " + Object(e).Data);
}
private function onPlayerError(e:Event):void
{
trace("Player error: " + Object(e).Data);
}
private function onPlayerStateChange(e:Event):void
{
trace("Player state: " + Object(e).Data);
}
private function onVideoPlaybackQualityChange(e:Event):void
{
trace("Video quality: " + Object(e).Data);
}
}
Я действительно не знаю, каков будет следующий шаг. Я не получаю ошибок и ничего не отслеживается. Я почти уверен, что мои события не реализованы правильно.
Обновление:
Я последовал за ответом Амаргоша и сделал вместо этого:
private function onLoaderInit(e:Event):void
{
player = Sprite(loader.content);
addChild(player);
player.addEventListener("onReady", onPlayerReady);
player.addEventListener("onError", onPlayerError);
player.addEventListener("onStateChange", onPlayerStateChange);
player.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}
Теперь события onPlayerReady и onStateChange запускаются, но я получаю ошибки. При трассировке объекта (e). Данные я получаю эту ошибку
ReferenceError: Error #1069: the property Data was not found for com.google.youtube.event.ExternalEvent and there is no standard value.
(переведено со шведского)
При изменении на Object (e.target) .Data он отслеживает «неопределенный», а Object (e.target) отслеживает [объект SwfProxy].
Если я попытаюсь player.loadVideoById("uad17d5hR5s");
, я получу эту ошибку:
1061: Call to a possibly undefined method loadVideoById through a reference with static type flash.display:Sprite.