在加载外部文件以最小化加载时间的相同按钮中卸载SWF文件

时间:2015-12-26 06:44:28

标签: actionscript-3 flash actionscript

我有两个SWF文件。第一个是home.swf,第二个是menu.swf。每个SWF文件都有一个加载外部SWF文件的按钮。

这是home.swf文件中的代码:

stop();
menu_btn.addEventListener(MouseEvent.CLICK, func_menu);
function func_menu(e:MouseEvent):void {
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    loader.load(new URLRequest("menu.swf"));
}

function onComplete(e:Event):void {
    var movie:* = LoaderInfo(e.currentTarget).content;
    stage.addChild(movie);
}

这是menu.swf文件中的代码:

stop();
home_btn.addEventListener(MouseEvent.CLICK, func_home);
function func_home(e:MouseEvent):void {
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    loader.load(new URLRequest("home.swf"));
}

function onComplete(e:Event):void {
    var movie:* = LoaderInfo(e.currentTarget).content;
    stage.addChild(movie);
}

如果我多次单击按钮,则SWF文件的加载时间会更长。我注意到那些代码没有卸载文件。卸载以前的SWF文件需要什么代码? 我是动作中的新手。请放轻松我。

1 个答案:

答案 0 :(得分:0)

我从问题中了解到,您很可能经常在SWF之间切换(加载主页和卸载菜单,反之亦然)。

我建议你创建一个容器SWF,它将加载两个SWF,并在加载完成时保存对加载器/它们内容的引用。

一旦加载了两者,只需调用addChild()和removeChild()来交换它们。

如果您想从SWF中触发交换,您可以在单击其中创建的按钮时调度事件,并在容器SWF中侦听已调度的事件。

这样你就可以在瞬间交换它们多次,而不必每次都重新加载它们,而且你可以避免不断分配和释放内存。