Руководство по actionscript. часть 4, стр. 054
Листинг 22.5. Пользовательский указатель мыши
package { import flash. display.*; import flash. ui.*; import flash. events.*; import flash. geom.*;
// Отображаемый класс, который заменяет указатель мыши новым изображением. // Когда объект CustomMousePointer добавляется в список отображения, он
// автоматически скрывает системный указатель и начинает следовать за его // позицией. Когда объект CustomMousePointer удаляется из списка // отображения, он автоматически восстанавливает системный указатель мыши, public class CustomMousePointer extends Sprite { // Конструктор
public function CustomMousePointer ( ) { // Создаем синий треугольник, который будем применять в качестве // пользовательского указателя мыши graphics. lineStyle(l); graphics. beginFill(OxOOOOFF. 1); graphics. lineTo(15. 5); graphics. lineTo(5. 15); graphics. lineTo(0. 0); graphics. endFi11( );
// Регистрируем приемник для получения уведомлений, когда этот объект // добавляется в список отображения или удаляется из него (требуется // пользовательский вспомогательный класс StageDetector) var StageDetector:StageDetector = new StageDetector(this); StageDetector. addEventListener(StageDetector. ADDED_TO_STAGE.
addedToStageListener); StageDetector. addEventListener(StageDetector. REMOVED_FROM_STAGE.
removedFromStageListener);
}
// Обрабатывает события StageDetector. ADDED_TO_STAGE private function addedToStageListener (e:Event):void {
// Прячем системный указатель мыши
Mouse. hide( );
// Регистрируем приемник для получения уведомлений, когда системный // указатель мыши перемещается над областью отображения приложения // Flash Player или выходит за ее пределы
stage. addEventLi stener(MouseEvent. M0USE_M0VE. mouseMoveLi stener); stage. addEventLi stener(Event. M0USE_LEAVE. mouseLeaveLi stener);
}
// Обрабатываем события StageDetector. REM0VED_FR0M_STAGE private function removedFromStageListener (e:Event):void { // Отображаем системный указатель мыши
Mouse. show( );
// Отменяем регистрацию приемников для событий мыши в экземпляре // класса Stage
stage. removeEventLi stener(MouseEvent. M0USE_M0VE. mouseMoveLi stener); stage. removeEventLi stener(Event. M0USE_LEAVE. mouseLeaveLi stener);
}
// Обрабатываем события Event. M0USE_LEAVE
private function mouseLeaveListener (e:Event):void {
// Когда мышь выходит за пределы области отображения приложения Flash // Player, прячем пользовательский указатель. В противном случае // пользовательский указатель мыши и системный указатель мыши будут // отображаться на экране одновременно, visible = false;
}
// Обрабатывает события MouseEvent. M0USE_M0VE
private function mouseMoveListener (e:MouseEvent):void {
// При перемещении мыши обновляем позицию пользовательского указателя.