后台:我有一个遗留项目,我负责调试和修改。预算非常低,并且不允许进行重大的重构。我正在慢慢地进入代码并遇到许多可能的问题和/或效率低下。
问题:多次添加相同的eventListener有什么后果?它会覆盖现有的eventListener吗?这只是效率低下的问题吗?
有一个非常频繁地调用的例程,它添加了eventListeners。我输入了一个trace语句来确认eventListener冗余。
trace("*** already has eventListener", tempEventButton.hasEventListener("eventClicked"));
答案 0 :(得分:0)
根据Event Dispatcher类的官方Actionscript 3.0参考:
请记住,在监听器注册后,后续调用 addEventListener()使用不同的类型或useCapture值结果 在创建单独的监听器注册。
这意味着,如果您没有使用不同的类型或useCapture注册相同的侦听器(传递给addEventListener
的函数),则不会创建新的eventListener。
问题是,对于事件调度程序执行此操作是否比执行检查更昂贵,以确保此事件的addEventListener()
仅被调用一次。您可以标记已在hasEventListener()
中添加了侦听器,而不是调用Boolean
执行此检查,这不是一个非常昂贵的检查。