我正在创建一系列迷你游戏和动画,并计划将它们全部整合到一个Flash文件中。当玩家完成游戏时,每个游戏都需要消失。当游戏完成时,我不知道在外部swfs中放入什么内容。我目前只有一个痕迹(“完成”)。
在我的主要瑞士法郎中你应该点击开始并出现一个游戏swf,当你完成它时,它应该会消失。
我已经查找了教程,他们在外部swfs中访问变量,但我无处可去。
答案 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);
}