Нет, вам не нужно дважды удалять слушателя в этой ситуации.
Вам необходимо удалить несколько слушателей в двух ситуациях:
- если вы добавите двух прослушивателей событий с разными функциями прослушивателей:
txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true );
txtField.addEventlistener( Event.CHANGE, changeCb2, false, 0, true );
- если вы установили одно событие на этапе захвата:
txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true );
txtField.addEventlistener( Event.CHANGE, changeCb, true, 0, true );
Так что вам нужно только удалить события, которые зарегистрированы по-разному друг от друга.
Вы не можете получить число прослушивателей событий с тем, что предоставляется из коробки во Flex, но вы можете проверить, есть ли у него прослушиватель событий для определенного типа события, используя hasEventListener(type)
.
Однако, поскольку исходный код, если он предоставляется, вы можете «Monkey patch» UIComponent или класс FlexSprite, чтобы добавить эту функциональность, как описано в этом блоге . На самом деле, вам даже не нужно это делать. Код приведен в примере. Довольно круто.