我正在尝试将两个swf文件从同一个域一个接一个地加载到主Flash播放器中...... 当第一个加载时......它工作正常,但是当我试图加载另一个时,第一个的动作脚本出来了(stop()函数停止工作) 另外,第二个问题是沙箱违规(#2121)。
我找不到这个问题的原因......
第一个swf的加载代码:
...
ldr = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
ldr.load(new URLRequest(swf1filename));
...
function swfLoaded(e:Event):void {
mcExt = MovieClip(e.currentTarget.content);
mcExt.x = 0;
mcExt.y = 32;
addChild(mcExt);
}
第二个swf的加载代码:
...
function showSWF2(){
if ( end_movie_swf == null && endMcExt== null ){
end_movie_swf = new Loader();
end_movie_swf.contentLoaderInfo.addEventListener(Event.COMPLETE, Swf2Loaded);
end_movie_swf.load(new URLRequest(endSwffilename));
}else{
endMcExt.gotoAndPlay("show");
}
}
...
function Swf2Loaded(e:Event):void {
trace(e);
endMcExt = MovieClip(e.currentTarget.content);
end_movie_swf.contentLoaderInfo.removeEventListener(Event.COMPLETE, endSwfLoaded);
endMcExt.x = 0;
endMcExt.y = 0;
addChildAt(endMcExt,3);
endMcExt.gotoAndStop("show");
}
我收到了这个错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at SWF1::MainTimeline/frame13()
答案 0 :(得分:0)
我猜这三个swf都在同一个ApplicationDomain中运行。 这意味着您意外地在所有swf中使用相同对象的引用。
你应该尝试发送一个LoaderContext,告诉加载的swf在它自己封装的ApplicationDomain中运行。
像这样:
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.applicationDomain = new ApplicationDomain();
ldr.load(new URLRequest(swf1filename),loaderContext);
对第二个Loader对象执行相同操作。