78. Фазы событий

В ActionScript 3 для отображаемых объектов добавлены три фазы распространения событий:
1. захват (capturing)
Событие начинается со stage и спускается вниз, вызывая обработчики связанные с этим событием у всех объектов (если же обработчика не существует, ничего не происходит).
Код:
event +---------|----+ | parent | | | +------V-+ | | |child | | | | | | | +--------+ | +--------------+

2. обработка (targeting)
На стадии обработки вызывается обработчик события объекта которому собственно оно и предназначалось.
Код:
+--------------+ | parent | | +------ -+ | | |child | | | |event X | | | +--------+ | +--------------+

3. подъем (bubbling)
Перебираются все объекты, начиная с "виновника" события и до stage.
Код:
+---------^----+ | parent | | | +------|-+ | | |child | | | | | event| | | | +--------+ | +--------------+


По умолчанию addEventListener подписывает обработчик события только на две фазы 2 (обработка) и 3 (подъем). Это позволяет вашему обработчику события реагировать на событие у себя а так же на это событие и у детей.
Если вы хотите реагировать на стадию захвата (1), необходимо в addEventListener указать третьим параметром true.
Код:
target.addEventListener("event", listener, true);

При этом обработчик события будет реагировать только на стадию захвата. Если вы хотите подписать обработчик события на все стадии нужно вызвать addEventListener дважды:
Код:
target.addEventListener("event", listener, true); // захват target.addEventListener("event", listener, false); // обработка и подъем