Руководство по actionscript. часть 2, стр. 056
___«j
При создании приемника для пользовательского события указывайте тип данных параметра приемника в соответствии с типом данных событийного объекта, изначально передаваемого в метод dispatchEvent().
В листинге 12.4 полностью показан код для нашего пользовательского события Game. GAME_OVER, который также содержит таймер, вызывающий метод
endGame ( ), имитируя окончание реальной игры (подробную информацию по классу Timer можно найти в справочнике по языку ActionScript корпорации Adobe).
Листинг 12.4. Пользовательское событие «gameOver»
// Класс Game (получатель события) package { import flash. events.*;
import flash. utils.*; // Требуется для класса Timer
public class Game extends EventDispatcher { public static const GAME_0VER:String = «gameOver»;
public function Game ( ) { // Завершает игру спустя одну секунду var timer:Timer = new TimerdOOO. 1); timer. addEventListener(TimerEvent. TIMER. timerListener); timer. start( );
// Вложенная функция, которая выполняется через одну секунду // после создания данного объекта function timerListener (e:TimerEvent):void { endGame( );
}
}
private function endGame ( ):void { // Выполнение действий для завершения игры (код не показан)
// …после чего просим среду Flash // выполнить диспетчеризацию события. // обозначающего окончание игры di spatchEvent(new Event(Game. GAME_0VER));
}
}
}
// Класс Console (регистрирует приемник для события) package {
import flash. display.*;
import flash. events.*;
public class Console extends Sprite { // Конструктор
public function Console ( ) { var game:Game = new Game( );
game. addEventListener(Game. GAME_0VER. gameOverListener);
}
private function gameOverListener (e:Event):void { traceCThe game has ended!»);
// Отображает пользовательский интерфейс «back to console» (код не показан)
}
}
}
Теперь рассмотрим другой пример, создающий событие для элемента пользовательского интерфейса.