Я постараюсь быть как можно более кратким.У меня есть несколько объектов в массиве, и я применяю слушатели событий для каждого из них, используя замыкания:
//reduced to the logic in question:
buttons.forEach(function(button:EventDispatcher, i:int, list:Array):void {
button.addEventListener(MouseEvent.MOUSE_OVER, function(e:Event):void {
button.filters = [button_glow_filter];
});
});
//button-specific click handlers:
buttons[0].addEventListener(MouseEvent.MOUSE_CLICK, handle_some_action);
Это работает некоторое время, пока я не выполню несвязанное действие с пользовательским интерфейсом.Это очень сложная система, поэтому я не совсем уверен, что происходит.Я могу подтвердить, что несвязанное действие не оказывает прямого влияния на объект, который содержит кнопки или сами кнопки (по крайней мере, он ничего не меняет через общедоступные интерфейсы).Кнопки все еще существуют, и слушатели событий щелчка по-прежнему работают правильно, потому что им индивидуально назначены реальные функции на интерфейсе класса.
Поэтому мой вопрос: кто-нибудь знает, что может заставить эти замыкания перестать обрабатывать события MouseOverбез какого-либо другого ощутимого влияния на связанные объекты?
Есть несколько способов выполнить это поведение MouseOver, и на данный момент я переключился на один, который работает, но я все еще хотел бы знать,ответ на этот вопрос для дальнейшего использования.