Кажется, нет ничего плохого в том, как ваши слушатели назначаются и удаляются в показанном вами коде.Я подозреваю одно из следующего:
a) Стандартные элементы пользовательского интерфейса во Flash используют константу Event.CHANGE
для распространения изменений, которая разрешается в строку «change», в то время как ваши слушателивсе назначено на «Изменено».Если только когда вы добавите прослушиватель к собственному «изменению», ваши прослушиватели событий будут правильно вызываться при каждом изменении значения, но removeEventListener ("Changed",...)
никогда не будет работать.В любом случае, вы всегда должны использовать строковые константы вместо символьных последовательностей, когда вы назначаете или удаляете слушателей, чтобы избежать ошибок в написании.вложенный DisplayObject
с использованием события bubbling .
c) Экземпляры сцены ваших слайдбаров - это не те же объекты, на которые ссылаются _sb1 и _sb2.Это может произойти, если вы в какой-то момент создадите новый экземпляр slideBar, но никогда не будете обновлять переменные элемента.Чтобы избежать этого, вы можете использовать event.target.removeEventListener()
вместо явного обращения к _sb1 или _sb2.
d) Что-то не так с вашей логикой.Вы уверены, что removeEventListener
звонки когда-либо были сделаны?Возможно, заявления if никогда не оцениваются как истинные?Это может иметь место, если любая из сторон сравнения равна NaN
, или если значения slideBar неверно рассчитаны.
Я также не понимаю, почему вы вообще хотите удалить слушателей - кажется, высоздают какой-то механизм фильтрации, и хотя имеет смысл установить this._active
на false
, если элемент не находится в указанном диапазоне, вам все равно придется прослушивать изменения slideBar, чтобы активировать его позднее.