Руководство по actionscript. часть 4, стр. 023
Public function containerClickListenerOne (e:MouseEvent):void { // Исключаем получение события функциями containerClickListenerTwo( ) // и chi1dClickListener( ) e. stopImmediatePropagation( );
}
С другой стороны, если функция containerClickListenerOne ( ) поглотит событие путем вызова метода stopPropagation ( ) вместо метода stoplmme diatePropagation ( ), то перед остановкой процесса диспетчеризации события будут вызваны оставшиеся приемники события MouseEvent. CLICK объекта container. Следовательно, функция containerClickListenerTwo ( ) получит событие, а функция childClickListener ( ) — нет.
public function containerClickListenerOne (e:MouseEvent):void { // Исключаем получение события только функцией childClickListener( ) e. stopPropagation( );
}
Обратите внимание, что предыдущий пример основывается на условии, что функция containerClickListenerOne ( ) была зарегистрирована перед функцией containerClickListenerTwo ( ). Дополнительную информацию о порядке, в котором вызываются приемники событий, можно найти в гл. 12.
Поглощение событий обычно происходит для того, чтобы остановить или переопределить стандартную реакцию программы на событие. Предположим, что подкласс
ToolPanel класса Sprite содержит группу элементов управления интерфейса, каждый из которых позволяет вводить данные. Класс Tool Panel имеет два рабочих состояния: активен и неактивен. Когда объект ToolPanel неактивен, пользователь не должен иметь возможность взаимодействовать с любым из его вложенных элементов управления интерфейса.
Для реализации состояния «неактивен» в каждом объекте ToolPanel регистрируется метод clickListener ( ) для уведомления о возникновении события MouseEvent. CLICK в фазе захвата. Когда объект ToolPanel неактивен, метод clickListener ( ) останавливает все события щелчка кнопкой мыши до того, как они достигнут дочерних объектов Tool. В листинге 21.3 представлен класс ToolPanel, который был сильно упрощен, чтобы акцентировать внимание на коде, поглощающем событие (выделен полужирным шрифтом). В этом листинге дочерние элементы управления интерфейса класса ToolPanel являются экземплярами базового класса Tool, который отсутствует в листинге. Однако в реальном приложении эти элементы управления могут быть кнопками, меню или любыми другими видами интерактивных инструментов.