2017-02-22 35 views
1

YouTube AS3 API。這個簡單的代碼很久以前就被記錄下來了。一切都很好。 但前些日子有些問題。 早(本月18日)全部正常工作。 使用AS3 API的Flash播放器。YouTube AS3 API(onReady不適用更多?)

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。

+0

很久以前這不是貶值嗎? – quantomworks

+0

感謝您的回覆。 –

+1

現在我發現問題了。 –

回答

2

@Ivan Korneev

這就是答案。 AS3(Flash)的YouTube API已折舊。我知道這一點,因爲它幾天前剛剛在我們的應用程序中崩潰,幸運的是我們移動了HTML5。我建議你這樣做。你可以在這裏瞭解更多https://developers.google.com/youtube/iframe_api_reference

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

2

THX到@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); 

和一切OK,但現在我需要負載apiplayer從本地存儲,而不是從youtube。

+0

這可能暫時工作,但很快這也不起作用。真正的答案是,YouTube不再支持AS3。 https://developers.google.com/youtube/flash_api_reference –

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播放器的所有用途)。