Actionscript 3 youtube无铬as3播放器

Actionscript 3 youtube无铬as3播放器,actionscript-3,youtube,youtube-api,Actionscript 3,Youtube,Youtube Api,我正在玩弄新的youtube as3 API,但被卡住了。这是 我(通过查看他们的示例代码)走了多远 我真的不知道下一步是什么。我没有发现任何错误,也没有发现任何东西。我很确定我的事件没有正确执行 更新: 我按照Amarghosh的回答做了以下工作: private function onLoaderInit(e:Event):void { player = Sprite(loader.content); addChild(player); player.addEventListe

我正在玩弄新的youtube as3 API,但被卡住了。这是 我(通过查看他们的示例代码)走了多远

我真的不知道下一步是什么。我没有发现任何错误,也没有发现任何东西。我很确定我的事件没有正确执行

更新: 我按照Amarghosh的回答做了以下工作:

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:找不到com.google.youtube.event.ExternalEvent的属性数据,并且没有标准值。
(来自瑞典语) 当更改为Object(e.target)。数据时,它跟踪“未定义”,Object(e.target)跟踪[Object SwfProxy]

如果我尝试
player.loadVideoById(“uad17d5hR5s”)我得到这个错误:


1061:通过静态类型flash的引用调用一个可能未定义的loadVideoById方法。display:Sprite。

如果变量
player
应该容纳加载的youtube播放器,请将其类型从
对象更改为更坚固的对象,如
Sprite

private var player:Sprite;
现在,我不知道youtube API,但是您的
onLoaderInit
方法有一个问题。您应该将这些侦听器添加到加载的内容中,而不是其
LoaderInfo
对象中
LoaderInfo
调度与加载过程相关的事件-一旦加载成功,它就不相关。这些调用中提到的事件将由加载的内容发送。将方法更改为:

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);
}

最近youtube为他们的无铬播放器发布了一个包装库。你应该明确地使用这个版本(你可以自己再写一次,但那是重新发明轮子),查看本页上的教程/示例


很抱歉给您带来了图书馆方面的混乱,不过我想我已经找到了您其他错误的答案。当您执行此操作时,
Sprite(loader.content)
您“强制”将播放机转换为一个Sprite,因为您需要api的方法,我建议您使用普通的旧对象,因为它不会抱怨未类型化的方法:

// No particluar type
var player:Object;

private function onLoaderInit(e:Event):void
{
    player = loader.content;
    addChild(player as DisplayObject);

    var dispatcher:IEventDispatcher = player as IEventDispatcher;
    dispatcher.addEventListener("onReady", onPlayerReady);
    dispatcher.addEventListener("onError", onPlayerError);
    dispatcher.addEventListener("onStateChange", onPlayerStateChange);
    dispatcher.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}

伟大的更进一步。我已经更新了我的帖子。非常感谢。当你的问题(你在问题中提出的问题)解决后,问一个新问题是个好主意,与其继续在同一条线上讨论所有问题,还不如把它当作另一个问题来问。这个包装器是很久以前发布的,不是由youtube发布的。包装器是针对as2 API的,我想试用as3 API。我确信这是真的,但上面的链接是针对as3包装器库的,该库是针对ActionScript 3.0的,严格类型的事件和所有内容。我确信包装器有严格类型的事件和所有内容,但它仍然使用旧的不推荐的API。很抱歉,Johan,在比较了包装器库和新的无铬swf的url之后,你是对的。非常抱歉,我想我可能已经解决了你的另一个问题。。。。
// No particluar type
var player:Object;

private function onLoaderInit(e:Event):void
{
    player = loader.content;
    addChild(player as DisplayObject);

    var dispatcher:IEventDispatcher = player as IEventDispatcher;
    dispatcher.addEventListener("onReady", onPlayerReady);
    dispatcher.addEventListener("onError", onPlayerError);
    dispatcher.addEventListener("onStateChange", onPlayerStateChange);
    dispatcher.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}