0

我正在创建一系列迷你游戏和动画,并计划将它们全部放入一个 flash 文件中。每个游戏都需要在玩家完成后消失。游戏完成后,我不知道在外部 swfs 的部分中放入什么。我目前只有一个痕迹(“完成”)。

在我的主 swf 中,您应该单击开始,然后会出现一个游戏 swf,完成后,它应该会消失。

我查了一些教程,它们是关于访问外部 swfs 中的变量的,但我对它们一无所知。

4

1 回答 1

2

代替trace("finished");,调度类似完整事件的内容:

dispatchEvent(new Event(Event.COMPLETE));

然后在容器 swf 中侦听该事件并做出适当的响应。

以下是主机(父)swf 的示例:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadDone, false,0,true);
loader.load(new URLRequest("temp2.swf"));

function loadDone(e:Event){
    trace("CONTENT LOADED");
    addChild(loader.content);
    loader.content.addEventListener(Event.COMPLETE,go,false,0,true); //listen on the capture phase (third parameter true) if you're complete event is NOT on the main timeline of your child swf
}

function go(e:Event):void {
    trace("Content is all done");
    removeChild(loader.content);
    loader.unloadAndStop(); //tries to free the app of all memory used by the loaded swf
    loader = null;
}

另一种方法是代替跟踪(“完成”),您可以让子 swf 自行删除(根据对问题的评论)。我认为这是一个不太理想的解决方案(尽管更加封装),因为它降低了可重用性,并且可能仍会将 swf 留在内存中:

stop();
if(this.parent){
    this.parent.removeChild(this);
}
于 2013-05-16T16:33:45.207 回答