开发者

Youtube API Problem - Can't see the video

I've a problem with the youtube actionscript api... The problem is that you can see the play button and the loading sign, and you can hear the sound of the video, but you can't see it.

Why is that?

Here's the 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;
   开发者_如何学C     public function main() {
            m=new myPlayer();
            addChild(m);
        }

    }
}

Thank you so much!


I had this same problem, and using the API's player.setSize( w, h ) method immediately before calling the video by URL worked to correctly display the video in Flex 3.5:

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

Also note that the youtube API docs say that the loadVideoByUrl() method does not work for AS3 ( only Javascript ) and that only cueVideoByURL() works, but the above code did indeed load and play the video.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜