0

我正在尝试使用 Youtube AS3 API 将一些 Youtube 视频显示到我的 flash 电影中,但是当我将其上传到我自己的服务器时,浏览器向我显示以下消息:

错误 #2044:SecurityErrorEvent: text=Error #2121: Sandbox Security Violation : http:// * /magicbook.swf?user=25&id=2283: http://www.youtube.com/apiplayer?version=3 can't进入。

我已经添加了我的Security.allowDomain策略,以允许两台服务器之间的访问。我究竟做错了什么?

这是我的代码:

class YoutubePlayer extends Sprite {

    private var player:Object;
    private var loader:Loader;
    private var _videoID:String;

    public function YoutubePlayer(videoID:String) {

        Security.allowInsecureDomain("*");
        Security.allowDomain("*");          

        //loader = addChild(new Loader()) as Loader;
        loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit, false, 0, true);
        loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
        _videoID = videoID;
    }

    private function onLoaderInit(event:Event):void {
        player = loader.content;
        player.addEventListener("onReady", onPlayerReady);
    }
    private function onPlayerReady(event:Event):void {
        player.setSize(320, 180);
        player.cueVideoByUrl("http://www.youtube.com/v/"+_videoID,0);
        player.addEventListener("onError",seeError);
        this.addChild(loader);
    }

    private function seeError(event:Event):void{
        trace("error");
    }

    public function playYoutube():void{
        player.playVideo();
    }

    public function stopYoutube():void{
        player.stopVideo();
    }
}
4

1 回答 1

0

我假设顶部有一个“import flash.system.Security”。

我自己非常相似的代码工作正常,唯一的主要区别是:

  • 我将加载程序添加到 INIT 事件处理程序中的阶段(不是在加载之前)
  • 出于某种原因,我有 Security.allowDomain("*") 和 Security.allowDomain("www.youtube.com") - 我不确定为什么(这可能是一个错误,但现在无法测试)

希望这些差异有所帮助.. 我并不是真正的 flash/actionscript 专家。

于 2012-11-20T19:40:47.370 回答