【发布时间】:2016-10-27 12:56:24
【问题描述】:
我制作了这个在我的程序启动时启动的菜单。
(Main.as:启动mainMenu.as,mainMenu.as:在其内部启动其他实例。)这个mainMenu 顶部有一个按钮,上面写着“新游戏”,我希望这个按钮带我进入下一个菜单,因此删除mainMenu-instance。
我确实成功删除了mainMenu。但是,我在我的一个类中使用trace() 后发现一个函数仍在后台运行。 (这是mainMenu-instance 中的实例类)。
我已尝试使用以下方法消除mainMenu-instance:
this.parent.removeChild(this);
trace("all processes shall now be over");
并且,通过使用以下方法删除mainMenu 中的所有子项:
while (this.numChildren > 0) {
this.removeChildAt(0);
}
trace("there shall be nothing going on after this");
这已经从屏幕上删除了所有视觉内容。但是来自mainMenu 内部实例之一的计时器循环功能仍在后台运行,再次受到trace() 的谴责。所有这些孩子都应该在这一点上被淘汰,那么这些进程怎么还在运行呢?这个菜鸟需要帮助。
【问题讨论】:
-
确保在删除菜单本身之前删除主菜单及其内部的所有事件侦听器。如果有任何活动的事件侦听器,则不会对对象进行垃圾收集。或者在添加事件监听器时使用弱引用(在 addEventListener 方法中有一个可选标志)
标签: actionscript-3 removechild