Flash 链接的电影剪辑完全删除并替换,如何设置

Flash 链接的电影剪辑完全删除并替换,如何设置,flash,replace,linked-list,Flash,Replace,Linked List,我做了一个flash小游戏,现在我正在改变 第一帧我有一个默认的movieclip和一个按钮。点击按钮添加一个链接的movieclip,该movieclip包含游戏功能的所有部分,并将其自身移除。所以现在开始屏幕消失了 这一部分起作用了,游戏仍然像以前一样功能正常 现在,我尝试了至少50种不同的东西,但我不能让它做我想要的 当你输了游戏,我想删除包含功能性游戏的movieclip,并添加一个新的孩子,赢或输movieclip [大多数情况下,我使用containAll“root”moviecli

我做了一个flash小游戏,现在我正在改变

第一帧我有一个默认的movieclip和一个按钮。点击按钮添加一个链接的movieclip,该movieclip包含游戏功能的所有部分,并将其自身移除。所以现在开始屏幕消失了

这一部分起作用了,游戏仍然像以前一样功能正常

现在,我尝试了至少50种不同的东西,但我不能让它做我想要的

当你输了游戏,我想删除包含功能性游戏的movieclip,并添加一个新的孩子,赢或输movieclip

[大多数情况下,我使用containAll“root”movieclip作为前缀。]

至少,它似乎删除了游戏movieclip,赢/输显示在前面,但游戏movieclip仍然是“活动的”,听众仍然在运行gameLoop

有人知道我能做什么吗?或者,真的,比这更好的设计。如果需要我可以粘贴的代码,现在尝试任何东西都会很麻烦

谢谢

至少,它似乎删除了游戏的电影唇,赢/输 在正面显示,但游戏movieclip在屏幕上仍处于“活动”状态 侦听器仍在运行gameLoop

从后台删除
MovieClip
或任何对象(或者,就此而言,将对象设置为
null
)不会清理其事件侦听器,这将继续运行,并将防止对象被垃圾收集,您的游戏可能最终出现内存泄漏

您应该做的是,当您从舞台上移除对象(游戏
MovieClip
)时,调用“清理”功能,您应该:

  • 删除所有事件侦听器

    //for example, let's say that earilier in your code 
    //you add an enter frame listener:
    this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
    
    //on your clean up function you should do:
    this.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
    
还要确保删除其所有子事件侦听器

  • 停止所有计时器(并删除其侦听器)

这是一个很好的问题/答案,可以作为AS3清理的进一步参考:

很难说出你想问什么。你能把你的问题写得更清楚些吗?谢谢,丹尼,这正是问题所在,现在已经解决了,所有的错误都消失了。我想知道的一件事是,我有动画的“伤害”数字。我不跟踪它们,它们有一个事件侦听器,完成后删除侦听器及其本身。我不跟踪它们,所以当游戏结束时,它们仍然在屏幕上,是否有办法同时清除它们?我想你有两个选择,要么通过在全局变量中存储对对象的引用来“跟踪它们”,要么在完成后将其从舞台上移除(通过执行objToRemove.parent.removeChild(objToRemove)或(我更喜欢这种方法)将它们“放在”另一个你确实有参考并且在完成时已经移除的MovieClip中,例如,将它们设置为实际游戏屏幕的child。