Руководство по actionscript. часть 4, стр. 027
Предположим, мы разрабатываем тестовое приложение для выполнения нагрузочных испытаний наших компонентов. Наше приложение программным путем вызывает интерактивное поведение компонентов. В тесте мы должны гарантировать, что внутреннее событие Event. DEACTIVATE не переводит наши тестируемые компоненты в неактивное состояние. В противном случае наше тестовое приложение не сможет работать с ними программным путем. Таким образом, в конструкторе основного класса нашего текстового приложения мы регистрируем приемник для события Event. DEACTIVATE в экземпляре класса Stage. Этот приемник использует
метод stopImmediatePropagation ( ) для поглощения всех внутренних событий Event. DEACTIVATE, как показано в следующем коде:
private function deactivateListener (e: Event):void { e. stopImmediatePropagation( );
}
Поскольку разрабатываемое нами тестовое приложение поглощает все события Event. DEACTIVATE, компоненты никогда не получат уведомления о возникновении события Event. DEACTIVATE и, следовательно, никогда не перейдут в неактивное состояние в ответ на потерю фокуса средой Flash. В процессе тестирования оператор тестового приложения сможет в любой момент устанавливать или убирать фокус со среды выполнения, не оказывая никакого влияния на способность тестового приложения управлять компонентами программным путем.
Приоритет и цепочка диспетчеризации событий
Когда приемник события регистрируется в объекте, находящемся в иерархии отображения, параметр priority влияет на порядок вызова только тех приемников, которые зарегистрированы в этом объекте. Параметр priority не изменяет и не может изменить порядок, в котором происходит уведомление объектов в цепочке диспетчеризации событий.
I Не существует способа сделать так, чтобы приемник одного объекта в цепочке дис-j « петчеризации события вызывался до или после приемника другого объекта в той же ¦^-Щ? цепочке.
Например, представьте объект Sprite, содержащий объект TextField. Объект Sprite регистрирует приемник spriteClickListener ( ) для события MouseEvent. CLICK — параметру useCapture установлено значение false, а параметру priority присвоено значение 2:
o6beKrSpr7′te. addEventLi stener (MouseEvent. CLICK, spriteClickListener, false. 2)
Точно так же объект TextField регистрирует приемник textClickListener ( ) для события MouseEvent. CLICK — значение параметра useCapture установлено в false, а параметру priority присвоено значение 1:
0бъектТехЬПе1с1. addEventLi stener (MouseEvent. CLICK, textClickListener, false. 1)
Когда пользователь щелкает кнопкой мыши на объекте TextField, среда Flash выполняет диспетчеризацию события MouseEvent. CLICK, получателем которого является объект TextField. В результате метод textClickListener ( ) вызывается в фазе получения перед методом spriteClickListener ( ), который вызывается в фазе всплытия. Два приемника события вызываются в порядке, устанавливаемом цепочкой диспетчеризации события, даже несмотря на то, что метод spriteClickListener ( ) был зарегистрирован с более высоким приоритетом, чем textClickListener ( ).