AS3指定是否存在具有活动侦听器的不可见的displayObjects

时间:2010-09-17 08:56:36

标签: flash actionscript-3 memory-leaks garbage-collection listener

是否有任何方法可以计算(指定)从舞台中删除并具有活动侦听器的对象的平均数量?
我有一个非常大的项目(游戏),超过100个班级。现在我扫描每个班级,如果有活跃的不必要的听众,我将其删除。

现在,我想要这样一个工具,它会告诉我哪里有其他不必要的听众,或者至少告诉我是否有一切正常。

这就像一个愚蠢的问题,也许你可以建议我控制听众的任何工具。

谢谢

2 个答案:

答案 0 :(得分:0)

没有一个打包工具可以执行此操作,但您可以创建某种映射实用程序来监视您的事件侦听器。此实用程序将提供API以允许您向特定对象添加侦听器并提供回调/处理程序。然后它将拥有所有对象及其回调的映射/列表。它可以通过静态方法或依赖注入提供此功能。

Flash Builder探查器是一种用于跟踪内存泄漏的绝佳工具,但它不提供您正在寻找的特定功能。

答案 1 :(得分:0)

首先,尝试使用弱事件侦听器,以便在任何DisplayObject设置为Null时删除它们。 其次,您必须自己构建此功能。 例如,找出在MainContainer DisplayObject中附加了Mouse CLICK事件的不可见对象。 你可以使用以下代码

For(var j:int = 0; j< MainContainer.length; j ++) {

var Obj = MainContainer.getChildAt(j);
   if(!Obj.visible&& Obj.hasEventListener(MouseEvent.CLICK))    {           // 做一点事    }

}