2010-01-02 76 views
0

我的YouTube操作问题api ...问题是,您可以看到播放按钮和加载标志,并且您可以听到视频的声音,但你看不到它。Youtube API问题 - 看不到视频

这是为什么?

下面的代码:

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

    } 
} 

太谢谢你了!

回答

1

我有同样的问题,并立即使用API​​的player.setSize(W,H)方法调用由URL视频之前能够正确显示的Flex 3.5视频:

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

还要注意, youtube API文档说,loadVideoByUrl()方法不适用于AS3(仅适用于Javascript),并且只有cueVideoByURL()可以工作,但上面的代码确实可以加载和播放视频。