是否有一种快速有效的方法可以从我的应用中删除所有儿童听众等。如果所有内容都包含在名为View的舞台上的显示对象中?我有很多动态调用的子节点,当我删除它们所在的视图时,它们的侦听器不会被删除。
public function _discard ():void
{
// Quick way to discard the view, remove children and listeners
removeChild(View);
View = null;
}
这是删除父母和孩子的有效方法吗?
答案 0 :(得分:2)
AFAIK,无法在ActionScript中枚举侦听器。因此,您必须编写清理代码,removeEventListener
调用对称addEventListener
。
答案 1 :(得分:2)
如果您使用弱引用的侦听器,那么侦听器将不会阻止对象在您取消它们时进行垃圾回收。
useWeakReference是addEventListener调用中的第5个参数。
答案 2 :(得分:0)
alxx是对的。解决这个问题并不容易。为了避免手动删除所有子/侦听器,我将创建一个接收View
的辅助方法,并递归删除所有子级及其各自的侦听器。