实际上我有一个由另一个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。
有人知道发生了什么吗?
由于