Руководство по actionscript. часть 4, стр. 006
^ I При регистрации приемника события непосредственно в получателе события для уведом-
*S: л щ лений на фазе получения параметр useCapture должен быть всегда установлен в значение
*yj false или вообще опущен. В противном случае приемник никогда не будет вызван.
В следующих разделах представлено множество примеров применения параметра useCapture и рассматривается несколько вопросов, связанных с регистрацией для получения событий на конкретных фазах.
Регистрация приемника предка для фазы захвата
Как мы уже знаем, чтобы зарегистрировать приемник предка для уведомлений о возникновении события в фазе захвата, мы устанавливаем параметру useCapture метода addEventListener ( ) значение true, как показано в следующем коде:
предок. addEventListener{событие, приемник, true)
Теперь используем этот код в работающем примере. Для тестовой иерархии отображения возьмем сценарий, который был изображен на рис. 21.1,— экземпляр класса Stage включает в себя объект Sprite, который, в свою очередь, содержит объект TextField. В листинге 21.1 представлен код для создания этой иерархии.
Листинг 21.1. Тестовая иерархия отображения
// Создаем экземпляр класса Sprite var theSprite:Sprite = new Sprite( );
// Создаем экземпляр класса TextField var theTextFi eld.-TextField = new TextField( ); theTextField. text = «enter input here»; theTextField. autoSize = TextFieldAutoSize. LEFT; theTextField. type = TextFieldType. INPUT;
// Добавляем объект TextField в объект Sprite theSprite. addChi1d(theTextFi eld);
// Добавляем объект Sprite в экземпляр класса Stage. Обратите внимание. // что объект некийОтображаемыйОбъект должен находиться в списке // отображения, чтобы иметь доступ к экземпляру класса Stage. некийОтображаемыйОбъект. stage. addChi1d(theSpri te);
Предположим, что мы хотим зарегистрировать функцию textlnputListener ( ) в объекте theSprite для событий TextEvent. TEXT_INPUT. Вот код функции textlnputListener ( ):
private function textlnputListener (e:TextEvent):void { traceCThe user entered some text»):
}
Мы хотим, чтобы функция textlnputListener ( ) вызывалась в фазе захвата (то есть до того, как объект TextField получит уведомление о возникновении события), поэтому для ее регистрации используем следующий код:
theSprite. addEventListener(TextEvent. TEXT_INPUT. textlnputListener. true)
Предыдущая строка кода заставляет функцию textlnputListener ( ) выполняться всякий раз, когда среда Flash осуществляет диспетчеризацию события TextEvent. TEXT_INPUT, получателем которого является объект theTextField, до того как объект theTextField получит уведомление о возникновении этого события.