我已经继承了一个大型的传统Flex项目,并且我深入了解代码,我越来越担心。例如,我正在查看应用程序中的“窗口”类型图像查看器的代码。每次显示时,下面的eventListeners都会被添加并且不会被删除。添加具有相同参数的eventListener为null /替换以前的eventListeners吗?
由于这些是强引用,并且从不删除,这是一个问题,但是这种重复添加eventListeners的操作让我暂停。 “窗口”可以在应用程序的生命周期中多次显示和隐藏。
我的问题:,这是否意味着是有ñ =(4 *次数显示)事件监听器? (...不寒而栗)。
这是一个庞大的预算紧张的项目修订,所以我试图确定我是否解决了这类问题或只是放开它。
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
谢谢 - 是的,我的意思是添加相同的eventListeners - 所以至少不会有无数的孤儿eventListeners。我可以通过并做弱refs,但有** lot **的类,等等。你知道如果调用removeEventListener为一个不存在的eventListener会抛出一个错误? – 2014-12-05 13:42:22
它不应该,但是如果你想确定,你可以在它前面放置一个if条件的'hasEventListener(type:String)'。 – DodgerThud 2014-12-05 13:46:35
根据我的经验,在某些情况下,相同的侦听器也会堆叠,堆栈侦听器最显着的事件是'Event.ENTER_FRAME'。 – Vesper 2014-12-05 13:51:10