flash as3检查事件监听器

Dav*_*801 7 flash actionscript-3

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

stage.addEventListener(MouseEvent.CLICK, clickdownfunction);
Run Code Online (Sandbox Code Playgroud)

基本上,我想删除监听器,但有时它已被删除,所以我想检查它是否存在,如果它存在,然后删除它.

这可能吗?

Mal*_*rer 17

查看hasEventListener()功能

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

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


Tyl*_*eto 8

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

hasEventListener(type:String):Boolean
Run Code Online (Sandbox Code Playgroud)

或者你可以打电话removeEventListener,如果它没有注册,它只会忽略通话.

希望有所帮助,


Vin*_*nyD 5

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

if(stage.hasEventListener(MouseEvent.CLICK))
     stage.removeEventListener(MouseEvent.CLICK, clickdownfunction);
Run Code Online (Sandbox Code Playgroud)