加载无法访问的外部SWF加载程序内容

时间:2017-10-16 01:29:39

标签: actionscript-3 flash loader movieclip swfloader

实际上我有一个由另一个SWF加载的SWF。 加载的SWF本身会加载另一个SWF。

这可能很奇怪,但它是在线游戏的背景下,让你开发SWF作为插件。

所以,我们有SWFA(视频游戏)---> SWFB ----> SWFC

当我尝试加载外部SWFC时,COMPLETE事件触发,但我只能通过直接添加Loader将它添加到舞台,因为加载器没有任何内容属性。

    public function load(){
        loader = new Loader();
        loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
        loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
        loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
        loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onIoError);
        loader.contentLoaderInfo.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError);
        applicationContext = new LoaderContext(true, ApplicationDomain.currentDomain); 
        loader.load(getRequest(),applicationContext);
    }


    private function getRequest():URLRequest {
        Security.allowDomain("https://mock.com");
        Security.loadPolicyFile("https://mock.com/crossdomain.xml");
        var req:URLRequest = new URLRequest("https://mock.com/mock.swf");
        req.method = URLRequestMethod.POST;
        req.data = new URLVariables("name=kk");

        var encoder:Base64Encoder = new Base64Encoder();       
        encoder.encode("user:pass");
        var credsHeader:URLRequestHeader = new 
        URLRequestHeader("Authorization", "Basic " + encoder.toString());
        req.requestHeaders.push(credsHeader);
        return req;
    }

这是onComplete函数

    public function onComplete (e:Event):void{;
        this.addChild(e.target.content); // this is null
        this.addChild(e.currentTarget.content); //  null too
    }

因此,当我从本地计算机运行SWF时,一切顺利,e.target.content包含我的外部SWF。 但是当我在网络游戏中的SWF Loader中运行相同的内容时,我无法找到任何内容属性。另外,LoaderInfo的childAllowParent属性始终为false。

有人知道发生了什么吗?

由于

0 个答案:

没有答案