我一直在努力寻找一个方法,我尝试了许多代码示例,但都没有成功。
这是我在我的主.SWF文件中用来加载名为(Stage4.SWF(的外部.SWF文件的代码。当这个SWF文件在Stage4.SWF文件内加载时,如何卸载它?
var child_loader:Loader = new Loader();
addChild(child_loader);
var url:URLRequest = new URLRequest("Stage4.swf");
child_loader.load(url);
child_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, load_completed);
child_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, on_progress);
function load_completed(e:Event):void {
child_loader.x = 0;
child_loader.y = 0;
}
function on_progress(e:ProgressEvent):void {
trace(e.bytesLoaded + " out of " + e.bytesTotal);
}
您应该让子SWF调度一个将由其父级侦听的自定义Event
。很可能您的代码片段不起作用,因为堆栈包含子SWF的代码。类似这样的东西:
public static const UNLOAD_SWF:String='unload_swf';
...
function load_completed(e:Event):void {
this.addEventListener(UNLOAD_SWF,doUnload);
// rest of code
}
function doUnload(e:Event):void {
removeEventListener(UNLOAD_SWF,doUnload);
addEventListener(Event.ENTER_FRAME,unloadNow);
}
function unloadNow(e:Event):void {
removeEventListener(Event.ENTER_FRAME,unloadNow);
child_loader.unloadAndStop(); // should work now
}