2012-05-04 3 views
-3

Я добавляю слушателя событий к 25 мувиклипам. Я хочу удалить всех прослушивателей событий из всех них, если один из них используется.прослушиватель событий извлечения

var myMvc:movieclip; 
myMvc.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent) 
{ 
    tasiSuruklemeyeBasla(e,myMvc,1,1); 
    IEventDispatcher(e.currentTarget).removeEventListener(e.type,argu‌​ments.callee); 
}); 
+1

http://stackoverflow.com/questions/10432651/removing-event-listener –

ответ

1

Что вы здесь делаете, это создание отдельного анонимного функционального объекта для каждого из слушателей. Это не имеет большого смысла, поскольку код обработчика событий идентичен для всех слушателей. Возможно, вы пытаетесь передать некоторые данные вместе с каждым из обработчиков событий, чтобы узнать, какой из ваших клипов был запущен. Есть много лучших способов достичь этого, не создавая отдельный обработчик для каждого слушателя.

В любом случае, чтобы убрать слушателей в любое время, вы должны где-то хранить ссылки на свои обработчики. Например, вы можете объявить функцию обработчика событий и передать свою ссылку всем вашим слушателям (вам лучше объявить ее в классе документа или что-то в этом роде, но она также будет работать для кода временной шкалы).

var eventHandler:Function = function(e:MouseEvent):void 
{ 
    var target:MovieClip = e.target as MovieClip; 
    tasiSuruklemeyeBasla(e,target,1,1); 
    target.removeEventListener(e.type,argu‌​ments.callee); 
}; 

myMvc.addEventListener(MouseEvent.MOUSE_DOWN, eventHandler); 

// you can do that any time 
myMvc.removeEventListener(MouseEvent.MOUSE_DOWN, eventHandler); 
+0

Спасибо за ответ. Это не способ решить мою проблему, но она была одной из ведущих. Потому что я передавал параметр в другую функцию в функции tasiSuruklemeyeBasla(). – osmanraifgunes

+0

@gipsydipsydoo: Отправьте найденное решение и отметьте его как принятое, чтобы помочь другому. Вы также улучшите свой рейтинг приема, который будет очень низким. –

Смежные вопросы