0

我的youtube actionscript 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);
        }

    }
}

非常感谢!

4

1 回答 1

1

我遇到了同样的问题,并且在通过 URL 调用视频之前立即使用 API 的 player.setSize(w, h) 方法可以在 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() 有效,但上面的代码确实加载并播放了视频。

于 2010-01-04T05:29:04.983 回答