Руководство по actionscript. часть 4, стр. 019
С другой стороны, если пользователь щелкнет кнопкой мыши в области отображения, среда Flash выполнит диспетчеризацию события MouseEvent. CLICK, получателем которого является объект Stage, и в результате будет выведена следующая информация:
Current event phase: Target
Как будет рассмотрено в следующем разделе, переменная eventPhase обычно используется для отличия событий, получателем которых является некий объект, от событий, получателями которых являются потомки этого объекта. Реже переменная eventPhase применяется для отличия фазы захвата от фазы всплытия внутри приемников предка, зарегистрированных для обеих фаз.
Отличие событий, получателем которых является некий объект, от событий, получателями которых являются его потомки
Когда переменной eventPhase объекта Event, передаваемого в функцию-приемник, присвоено значение EventPhase. AT TARGET, мы знаем, что получателем события является объект, в котором зарегистрирован данный приемник. С другой стороны, когда переменной eventPhase присвоено значение EventPhase. CAPTURING_PHASE или EventPhase. BUBBLING_PHASE, мы знаем, что получателем события является потомок объекта, в котором зарегистрирован данный приемник.
Таким образом, приемник может использовать следующий код, чтобы игнорировать события, получателями которых являются потомки объекта, зарегистрировавшего этот приемник:
private function некийПриемник (е:НекоеСобытие):void { if (е. eventPhase == EventPhase. ATJARGET) { // Этот код выполняется только в том случае, если получателем события // является объект, зарегистрировавший данный приемник.
}
}
Мы можем использовать предыдущую методику, чтобы написать код, который реагирует на события ввода, получаемые неким конкретным объектом, но не его потомками. Например, представьте приложение, в котором экземпляр класса Stage содержит множество кнопок, текстовых полей и других объектов для ввода данных. Чтобы реагировать только на щелчки кнопкой мыши, которые происходят над незаполненными областями экземпляра класса Stage, мы используем следующий код:
// Регистрируем приемник в экземпляре класса Stage для событий // MouseEvent. CLICK. В результате метод clickListener( ) будет вызываться // всегда, когда щелкают на *любом* объекте в списке отображения, stage. addEventLi stener(MouseEvent. CLICK, cli ckLi stener);
// …где-то в классе определяем приемник события MouseEvent. CLICK
private function clickListener (e:MouseEvent):void {
// Если этот приемник был вызван в фазе получения…