2010-01-02 11 views
0

J'ai un problème avec l'actioncript youtube api ... Le problème est que vous pouvez voir le bouton de lecture et le signe de chargement, et vous pouvez entendre le son de la vidéo mais vous ne pouvez pas le voir.Youtube API Problème - Impossible de voir la vidéo

Pourquoi est-ce?

Voici le code:

// myPlayer.as 
package { 
    import flash.display.*; 
    import flash.events.*; 
    import flash.ui.*; 
    import flash.net.*; 
    public class myPlayer extends MovieClip { 
     var player:Object; 
     var loader:Loader; 
     public function myPlayer() { 
      loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit); 
      loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); 
      //loader.load(new URLRequest("http://www.youtube.com/v/O8vcyOKYH9g?enablejsapi=1&playerapiid=ytplayerx=400")); 
      x=300; 
      y=300; 


     } 

     function onLoaderInit(event:Event):void { 
      addChild(loader); 
      //loader.x+=loader.width/2; 
      //loader.y+=loader.height/2; 
      loader.content.addEventListener("onReady", onPlayerReady); 
      loader.content.addEventListener("onError", onPlayerError); 
      loader.content.addEventListener("onStateChange", onPlayerStateChange); 
      loader.content.addEventListener("onPlaybackQualityChange", 
        onVideoPlaybackQualityChange); 
     } 

     function onPlayerReady(event:Event):void { 
      // Event.data contains the event parameter, which is the Player API ID 
      trace("player ready:", Object(event).data); 

      // Once this event has been dispatched by the player, we can use 
      // cueVideoById, loadVideoById, cueVideoByUrl and loadVideoByUrl 
      // to load a particular YouTube video. 
      player=loader.content; 
      player.cueVideoById("O8vcyOKYH9g", 0, "default"); 
      //player.cueVideoByUrl("http://www.youtube.com/watch?v=2ekLO8BwxwE", 0, "default");} 
     } 
     function onPlayerError(event:Event):void { 
      // Event.data contains the event parameter, which is the error code 
      trace("player error:", Object(event).data); 
     } 

     function onPlayerStateChange(event:Event):void { 
      // Event.data contains the event parameter, which is the new player state 
      trace("player state:", Object(event).data); 
     } 

     function onVideoPlaybackQualityChange(event:Event):void { 
      // Event.data contains the event parameter, which is the new video quality 
      trace("video quality:", Object(event).data); 
     } 

    } 
} 

// main.as 

package { 
    import flash.display.*; 
    import flash.events.*; 
    import flash.ui.*; 
    import flash.net.*; 
    public class main extends MovieClip { 
     var m:myPlayer; 
     public function main() { 
      m=new myPlayer(); 
      addChild(m); 
     } 

    } 
} 

Merci beaucoup!

Répondre

1

J'ai eu ce même problème, et la méthode utilisant player.setSize (w, h) de l'API immédiatement avant d'appeler la vidéo par URL travaillé pour afficher correctement la vidéo dans Flex 3.5:

Object(ytSwfLoader.content).setSize(300, 300); 
if (vidsArr[ currVid ].indexOf('youtube.com') != -1) Object(ytSwfLoader.content).loadVideoByUrl(vidsArr[ currVid ]); 

Notez également que les docs de l'API youtube disent que la méthode loadVideoByUrl() ne fonctionne pas pour AS3 (uniquement Javascript) et que seul cueVideoByURL() fonctionne, mais le code ci-dessus a effectivement chargé et lu la vidéo.