2017-02-22 19 views
1

API YouTube AS3. Этот простой код был выдан давно. и все было в порядке. Но несколько дней назад некоторые проблемы. Рано (до 18 числа в этом месяце) все работает нормально. Flash-плеер с использованием API AS3.API YouTube AS3 (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

Это ответ. API YouTube для AS3 (Flash) был обесценен. Я знаю это, потому что он просто сломался в нашем приложении несколько дней назад, к счастью, мы переместились по 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); 

и все ок, но теперь я нужен груз apiplayer из локального хранилища, а не с youtube.

+0

Это может работать временно, но вскоре это тоже не сработает. Реальный ответ: AS3 больше не поддерживается YouTube. https://developers.google.com/youtube/flash_api_reference –

1

попробовать этот открытый исходный раствор https://github.com/myflashlab/AS3-youtube-parser-video-link

+0

, используя это, как я мог бы передать поток вместо того, чтобы сначала загрузить весь файл? и как я могу загрузить? – quantomworks

+0

вы можете использовать flash.media.Video класс для воспроизведения видео, вы не можете загрузить. –

+0

Я бы просто сделал цель netstream URL-адресом видео, а затем привязал ns к видео? – quantomworks

2

Я столкнулся с той же проблемой. Я использую этот API для отображения видео Youtube (без хромированного плеера) в флеш-игре. Поэтому, к сожалению, я не могу переключиться на плеер HTML5, так как он не работает внутри Flash. Поскольку я придерживаюсь API Youtube на основе Flash, я попытался решить эту проблему, например OP.

После некоторых исследований я обнаружил, что: - Адрес хоста API был перемещен 18 февраля. (теперь в домене googleapis.com вместо youtube.com) - После этого перемещения домена API не может правильно загрузиться с Youtube. Как описано в документе, когда вы загружаете API, он должен запускать событие onReady. В настоящее время этого никогда не бывает. - Вызов любого метода, описанного в документе (loadVideo(), stopVideo() и т. Д.) На проигрывателе теперь приведет к ошибке «Метод X() не существует». Таким образом, не только событие onReady не запускается, но и API не загружается . Еще одно доказательство того, что что-то не так с API-интерфейсом Flash Player на стороне Youtube, заключается в том, что открытие URL-адреса хромированного игрока в браузере нет более длинный дисплей логотипа «Youtube», как это было раньше. - Мое предложение состояло в том, что они забыли переписать некоторый внутренний URL-адрес, когда они переместили API из домена в другой, и теперь он больше не может загружать все свои зависимости или что-то в этом роде.

К сожалению, это не решит проблему, просто уточните, где она находится.

Я думаю, что единственным способом было бы связаться с Youtube, чтобы они «исправили» все, что не так с их текущим API. Если они не отключили его добровольно (что было бы грустно, поскольку HTML5 не может охватить все виды использования, которые игрок AS3 сделал).

Смежные вопросы