Руководство по actionscript. часть 3, стр. 147
Однако после создания новый объект CustomMousePointer не находится в списке отображения, поэтому не имеет доступа к экземпляру класса Stage и не может зарегистрироваться для получения события MouseEvent. MOUSE MOVE. Вместо этого объект должен ожидать уведомления о том, что он был добавлен в список отображения (через событие Event. ADDEDTOSTAGE). Как только объект CustomMousePointer будет добавлен в список отображения, его переменная stage будет ссылаться на экземпляр класса Stage и он сможет успешно зарегистрироваться для получения события MouseEvent. MOUSE_MOVE. Следующий код демонстрирует соответствующий фрагмент кода, относящийся к событию Event. ADDED_TO_STAGE, из класса CustomMousePointer. Полный листинг кода класса CustomMousePointer можно найти в подразд. «Определение позиции указателя мыши» разд. «События мыши» гл. 22.
package {
public class CustomMousePointer extends Sprite { public function CustomMousePointer ( ) { // Просим сообщить, когда этот объект будет добавлен // в список отображения
addEventListener(Event. ADDED_TO_STAGE, addedToStageListener);
}
// Вызывается, когда этот объект добавляется в список отображения
private function addedToStageLi stener (e: Event) -.void { // Теперь можно безопасно регистрироваться в экземпляре класса Stage // на получение событий MouseEvent. M0USE_M0VE stage. addEventLi stener(MouseEvent. M0USE_M0VE, mouseMoveLi stener);
}
}
}
Собственные события Event. ADDED_TO_STAGE и Event. REMOVE_FROM_ STAGE. Первая версия приложения Flash Player 9 не содержала ни события Event. ADDED_TO_STAGE, ни события Event. REMOVED_FROM_STAGE. Тем не
менее, воспользовавшись обычным интерфейсом API отображения и проявив немного изобретательности, мы можем вручную определить, что данный объект был добавлен в список отображения или удален из него. Для этого мы должны отслеживать состояние предков данного объекта с помощью событий Event. ADDED и Event. REMOVED.
В листинге 20.8 демонстрируется данный подход. В этом примере пользовательский класс StageDetector следит за отображаемым объектом, чтобы определить, когда он добавляется в список отображения или удаляется из него. Класс StageDetector рассылает пользовательское событие:
? StageDetector. ADDED TO STAGE — когда объект добавляется в список отображения;
? StageDetector. REMOVED_FROM_STAGE — когда объект удаляется из списка отображения.