Руководство по actionscript. часть 4, стр. 016
Определение текущей фазы события
Как уже известно из подразд. «Регистрация приемника предка для фазы захвата и фазы всплытия» разд. «Приемники событий и цепочка диспетчеризации событий», дважды вызвав метод addEventListener ( ), можно зарегистрировать одну и ту же функцию-приемник события как для фазы захвата, так и для фазы всплытия процесса диспетчеризации события. В подразд. «Двойное назначение параметра useCapture» разд. «Приемники событий и цепочка диспетчеризации событий» мы также узнали, что приемник события, при регистрации которого параметру useCapture было установлено значение false, может вызываться как в фазе получения, так и в фазе всплытия диспетчеризации события. Следовательно, когда в ответ на возникшее событие выполняется функция-приемник события, текущая фаза события будет известна не всегда. В соответствии с этим язык ActionScript предоставляет переменную экземпляра eventPhase класса Event, которая может быть использована внутри функции-приемника события для определения текущей фазы события.
Переменная eventPhase содержит информацию о том, в какой фазе находится текущий процесс диспетчеризации события — захвата, получения или всплытия.
Когда процесс диспетчеризации события находится в фазе захвата, переменной eventPhase присваивается значение EventPhase. CAPTURING_PHASE, которое означает, что объект-получатель еще не получил уведомление о возникновении события.
Когда процесс диспетчеризации события находится в фазе получения, переменной eventPhase присваивается значение EventPhase. ATTARGET, которое означает, что в настоящий момент объект-получатель обрабатывает событие.
Когда процесс диспетчеризации события находится в фазе всплытия, переменной eventPhase присваивается значение EventPhase. BUBBLING_PHASE, которое означает, что объект-получатель завершил обработку события.
Обычно константам EventPhase. CAPTURING_PHASE, EventPhase. AT_TARGET и EventPhase. BUBBLING_PHASE присваиваются значения 1, 2 и 3 соответственно, но эти значения со временем могут измениться, поэтому использовать их непосредственно в коде не следует. Вместо этого, чтобы определить текущую фазу события внутри функции-приемника события, всегда сравнивайте значение переменной eventPhase с константами класса EventPhase. Например, всегда используйте код наподобие следующего:
private function someListener (e:Event):void { if (e. eventPhase = EventPhase. AT TARGET) {
// Этот приемник был вызван в фазе получения…