|
Modus ponens
модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
|
У всех событий которые диспатчатся дисплей объектами всегда есть 2 фазы - capture и target. Иногда у них еще может быть третья фаза - bubbling. Как правило, когда вы добавляете слушателя - вы его добавляете на bubbling / target фазу (эти две случаются после capture). К сожалению, во флешевой реализации событий и дисплей листа вы не можете из дисплей объекта диспатчить событие без capture фазы (ну, только разве что если вы замените ему dispatchEvent и подставите туда диспетчер, который не является дисплей объектом.
Но это не всегда удобно + медленно. Еще один недостаток в реализации capture фазы заключается в том, что если вы добавите слушателя не непосредственно к объекту, а к любому из его родителей, то вы все равно это событие получите... и вот это уже геморрой... А, поскольку stage - это самый верхний объект в дисплей листе, то все события на capture фазе сначала прийдут к нему, а потом уже спустятся к потомкам...
Другими словами - если у вас всю сцену перекрывает какой-нибудь дисплей объект подписаный, на, например, MouseEvent.CLICK, useCapture=false|true (не важно), и, в это же время stage подписан на MouseEvent.CLICK, useCapture=true - то stage получит событие первым, и вы не успеете запустить stopImmediatePropagation() - вот такие вот пироги с котятами...
__________________
Hell is the possibility of sanity
Последний раз редактировалось wvxvw; 25.12.2009 в 18:07.
|