如何在AS3中完全删除动画片段

Mak*_*leh 3 flash actionscript actionscript-3

我希望mc被删除所有的计时器,事件,...有一个简单的方法来做到这一点?

fen*_*mas 11

当然...取消注册其计时器和事件,将其从父项中删除,并删除对它的所有引用.;)

也就是说,AS3是一个垃圾收集的语言,因此,当一个对象(包括MC)是你无法控制的真正从内存中删除.当您删除对它的所有引用(包括事件注册)时,GC将检测到不再需要它并为您清理它.

您可以(而且应该)做的一件事是,无论何时注册事件,useWeakReference都要将参数设置为true.那是:

myMC.addEventListener( Event.ENTER_FRAME, onFrame, false, 0, true );
Run Code Online (Sandbox Code Playgroud)

这告诉AS3这个特定的事件监听器不应该作为引用计数 - 所以如果你删除对MC的所有其他引用,即使你没有取消注册监听器,它也会被垃圾收集.(至于计时器,如果你正在使用setTimeout或setInterval,据我所知它们也不被认为是引用.但我不确定.)

所以它的长期和短期是,没有办法让你的MC成功并让Flash清理所有东西.这就是AS3的工作原理 - 管理您的参考和事件是尽责编码的一部分.如果您的MC没有更多的计时器或事件,将从其父级中删除,并且代码的任何部分都不会引用它,那就是它已经消失了.