Показать сообщение отдельно
Старый 12.06.2018, 17:12
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 8  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
от порядка добавления слушателей порядок распространения событий (во множественном числе) не зависит вообще никак.
Ой ли
Код AS3:
mc.addEventListener(MouseEvent.CLICK,onClick1,false);
mc.addEventListener(MouseEvent.CLICK,onClick2,false);
function onClick1(e:MouseEvent):void {
	trace("handler 1");
}
function onClick2(e:MouseEvent):void {
	trace("handler 2");
}
имеем в консоле
handler 1
handler 2

НО
Код AS3:
mc.addEventListener(MouseEvent.CLICK,onClick2,false);
mc.addEventListener(MouseEvent.CLICK,onClick1,false);
function onClick1(e:MouseEvent):void {
	trace("handler 1");
}
function onClick2(e:MouseEvent):void {
	trace("handler 2");
}
имеем в консоле
handler 2
handler 1

Для разруливания таких ситуаций и нужен параметр priority:
Код AS3:
mc.addEventListener(MouseEvent.CLICK,onClick2,false,0);
mc.addEventListener(MouseEvent.CLICK,onClick1,false,1);
function onClick1(e:MouseEvent):void {
	trace("handler 1");
}
function onClick2(e:MouseEvent):void {
	trace("handler 2");
}
Снова имеем
handler 1
handler 2
т.к. у onClick1 приоритет больше чем у onClick2

У тебя налицо непонимание event flow.
UI события идут от корня(stage) до элемента их испустившего(capture phase),после этого событие начинает "всплывать",двигаясь от ребенка назад к корню(bubbling phase).По дефолту ты ловишь события в фазе всплытия потому у тебя и путаница.Если нужно ловить события в capture phase используй 3-ий параметр у addEventListener.