YouTube AS3 API(onReady还没有更多功能吗?)

时间:2017-02-22 02:36:37

标签: actionscript-3 flash youtube-data-api

YouTube AS3 API。这个简单的代码很久以前就被写了。一切都很好。 但前几天有些问题。 早(本月18日)全部工作正常。 使用AS3 API的Flash播放器。

    public function Main()
          {
                 super();
                 Security.allowInsecureDomain("*");
                 Security.allowDomain("*");
                 stage.align = StageAlign.TOP_LEFT;
                 stage.scaleMode = StageScaleMode.SHOW_ALL;
                 this._loader = new Loader();
                 this._loader.contentLoaderInfo.addEventListener(Event.INIT,this._onLoaderInit);
                 this._loader.addEventListener(IOErrorEvent.IO_ERROR,this.errorHandlerIOErrorEvent);
                 this._loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.errorHandlerIOErrorEvent);
                 this._loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR,this.onUncaughtError);
                 this.loadTime = new Date();
                 this._loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3");
    }

    private function _onLoaderInit(param1:Event) : void
          {
             this.player = this._loader.content;
             this.player.addEventListener("onReady",this.onPlayerReady);
             this.player.x = 0;
             this.player.y = 0;
             addChild(DisplayObject(this.player));
             this._loader.contentLoaderInfo.removeEventListener(Event.INIT,this._onLoaderInit);
             this._loader = null;
    }

function onPlayerReady(param1:Event) : void // start from 18th this month , onReady dont fired
{

}

有人知道这个问题,或者如何修复它? Thx。

5 个答案:

答案 0 :(得分:2)

@Ivan Korneev

这就是答案。 YouTube API for AS3(Flash)已弃用。我知道这是因为几天前它刚刚在我们的应用程序中出现了,幸运的是我们移动了HTML5。我建议你这样做。您可以在https://developers.google.com/youtube/iframe_api_reference

了解更多信息

答案 1 :(得分:2)

请回答@All的回复。 我发现了一些有趣的事情。

apiplayer.api在DirectAccessAPI类中有函数

protected function forwardAPICall(param1:String, param2:Array)
        {
            var _loc_3:* = new APICallEvent(this.API_CALL, param1, param2);
            this.loader.contentLoaderInfo.sharedEvents.dispatchEvent(_loc_3);
            return _loc_3.returnValue;
        }// end function

但是API_CALL常量是APICallEvent的成员, 我只是像这样修理它

var _loc_3:* = new APICallEvent(APICallEvent.API_CALL, param1, param2);

一切都好,但现在我需要从本地存储加载apiplayer,而不是从youtube加载。

答案 2 :(得分:2)

我遇到了同样的问题。我使用此API在基于Flash的游戏中显示Youtube视频(无格式播放器)。所以,遗憾的是我无法切换到HTML5播放器,因为它不能在Flash内部工作。由于我坚持使用基于Flash的Youtube API,我试图像OP一样解决这个问题。

经过一番调查,我发现: - API的主机地址已于2月18日左右移动。 (现在在googleapis.com域而不是youtube.com上) - 此域移动后,API无法从Youtube正确加载。如文档中所述,当您加载API时,它应该触发" onReady"事件。目前,这从未发生过。 - 在播放器上调用doc(loadVideo(),stopVideo()等)中描述的任何方法现在将导致"方法X()不存在"错误。所以它不只是" onReady"事件没有触发,但API无法加载自身 - 进一步证明Youtube端的Flash Player API出现问题,就是在浏览器中打开无色播放器URL不再显示" Youtube"徽标,就像以前一样。 - 我的建议是,当他们将API从域移动到另一个域时,他们忘记重写一些内部URL,现在它不能再加载所有依赖项或类似的东西。

不幸的是,这并没有解决问题,只是改进它的位置。

我认为唯一的方法是与Youtube取得联系,以便他们能够修复"他们当前的API有什么问题。除非他们自愿禁用它(这会很难过,因为HTML5不能涵盖AS3播放器的所有用途)。

答案 3 :(得分:1)

  • 尝试使用https作为Youtube路径。 例如: .load(new URLRequest("https://www.youtube.com/api...etc

  • 而不是http://www.youtube.com/apiplayer?version=3
    尝试:https://youtube.googleapis.com/apiplayer?version=3

答案 4 :(得分:1)