Обработка событий

Каждый компонент отправляет события при взаимодействии с пользователем. Например, когда пользователь щелкает компонент Button, он отправляет событие MouseEvent.CLICK , а когда пользователь выбирает элемент в списке, компонент List отправляет событие Event. CHANGE . Кроме того, событие отправляется, когда происходит значимое для компонента событие. Например, когда завершается загрузка содержимого для экземпляра UILoader, отправляется событие Event.COMPLETE . Для обработки события создается код ActionScript, который выполняется при отправке события.

В число событий компонента входят события любого класса, наследуемого компонентом. Это означает, что все компоненты пользовательского интерфейса ActionScript 3.0 наследуют события от класса UIComponent, так как он является их базовым классом ActionScript 3.0. Список событий, отправляемых компонентом, см. в разделе «События» в описании класса соответствующего компонента в справочнике ActionScript® 3.0 для Adobe® Flash® Professional CS5 .

Полное описание обработки событий в ActionScript 3.0 см. в руководстве Программирование на ActionScript 3.0 .

О прослушивателях событий

Следующие ключевые положения относятся к обработке событий для компонентов ActionScript 3.0.

  • Все события отправляются экземпляром класса компонента. Экземпляр компонента является отправителем .

  • Прослушиватель событий регистрируется путем вызова метода addEventListener() для экземпляра компонента. Например, следующая строка кода добавляет прослушиватель события MouseEvent.CLICK для экземпляра Button с именем aButton :

    aButton.addEventListener(MouseEvent.CLICK, clickHandler);

    Второй параметр метода addEventListener() регистрирует имя функции, которая будет вызвана при отправке события ( clickHandler ). Эта функция также называется функцией обратного вызова .

  • Для одного экземпляра компонента можно зарегистрировать несколько прослушивателей.

    aButton.addEventListener(MouseEvent.CLICK, clickHandler1); 
    aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
  • Можно также зарегистрировать один прослушиватель для нескольких экземпляров компонента.

    aButton.addEventListener(MouseEvent.CLICK, clickHandler1); 
    bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
  • Функция обработчика событий передается объекту события, содержащему информацию о типе события и об отправившем его объекте. Дополнительные сведения см. в разделе Об объекте события .

  • Прослушиватель остается активным, пока приложение не завершит работу или пока он не будет удален методом removeEventListener() . Например, следующая строка кода удаляет прослушиватель события MouseEvent.CLICK для экземпляра aButton :

    aButton.removeEventListener(MouseEvent.CLICK, clickHandler);

Об объекте события

Объект события является наследником класса объектов Event и имеет свойства, содержащие информацию о событии, включая свойства target и type , предоставляющие важные сведения о событии.

Свойство

Описание

type

Строка, определяющая тип события.

target

Ссылка на экземпляр компонента, отправивший событие.

Если у события есть дополнительные свойства, они указаны в описании класса события в справочнике ActionScript® 3.0 для Adobe® Flash® Professional CS5 .

Объект события автоматически создается и передается функции обработчика в момент отправки события.

Объект события можно использовать внутри функции, чтобы получить имя отправленного события или имя экземпляра отправившего его компонента. Через имя экземпляра можно получить другие свойства компонента. Например, следующий код использует свойство target объекта события evtObj , чтобы получить свойство label экземпляра aButton и показать его на панели вывода.

import fl.controls.Button; 
import flash.events.MouseEvent; 
 
var aButton:Button = new Button(); 
aButton.label = "Submit"; 
addChild(aButton); 
aButton.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function clickHandler(evtObj:MouseEvent){ 
trace("The " + evtObj.target.label + " button was clicked"); 
}