当外部瑞士法郎的比赛结束时,移除外部瑞士法郎

时间:2013-05-16 16:17:06

标签: actionscript-3 flash actionscript

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

在我的主要瑞士法郎中你应该点击开始并出现一个游戏swf,当你完成它时,它应该会消失。

我已经查找了教程,他们在外部swfs中访问变量,但我无处可去。

1 个答案:

答案 0 :(得分: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);
}