flash as3检查事件监听器

时间:2011-03-01 17:06:39

标签: flash actionscript-3

他们是否可以检查是否已存在事件监听器以将其删除?

stage.addEventListener(MouseEvent.CLICK, clickdownfunction);

基本上,我想删除监听器,但有时它已被删除,所以我想检查它是否存在以及是否存在,然后将其删除。

这可能吗?

4 个答案:

答案 0 :(得分:16)

中查看hasEventListener()功能

https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/IEventDispatcher.html#hasEventListener()

我不确定你为什么要做那个检查。删除不存在的侦听器不会使Flash丢弃异常或错误,因此检查只是增加了不必要的开销。

答案 1 :(得分:8)

您无法检查特定功能是否已注册为侦听器,您可以检查是否已注册类型。这可以通过以下方式完成:

hasEventListener(type:String):Boolean

或者你只需​​拨打removeEventListener即可,如果它没有注册,它只会忽略通话。

希望有所帮助,

答案 2 :(得分:3)

以下是仅当事件侦听器处于活动状态时才需要删除它的代码:

if(stage.hasEventListener(MouseEvent.CLICK))
     stage.removeEventListener(MouseEvent.CLICK, clickdownfunction);

答案 3 :(得分:1)

您还可以使用Fingers

 on(stage).click -= clickdownfunction;