Я работаю над очень простой игрой во Flash. Я хочу сделать все анимации независимыми от частоты кадров, чтобы я мог изменять частоту кадров, не влияя на ход и скорость игры.
Я где-то читал, что если вы хотите это сделать, вы просто создаете объект Timer и присоединяете слушатель событий к этому таймеру.
Что если у меня много объектов, которые должны слушать один и тот же таймер? Посмотрите код, чтобы понять, что я пытаюсь сделать. На этом этапе ничего не ломается, но событие не срабатывает.
Вот класс Main, который запускается при выполнении SWF:
public class Main extends MovieClip {
private static var _stage:Stage;
private static var _timer:Timer;
public function Main() {
trace("STARTING_GAME");
init();
}
private function init(){
var player:Player = new Player(100);
this.addChild(player);
_stage = this.stage
_timer = new Timer(30);
}
public static function get stage():Stage{
return _stage;
}
public static function get timer():Timer{
return _timer;
}
}
А вот класс Player, один из объектов, который будет нуждаться в таймере:
public class Player extends MovieClip {
private var playerHealth:int;
public function Player(_health:int=100) {
init(_health);
}
private function init(_health:int){
trace("creating player object");
playerHealth = _health;
addEventListeners();
trace(Main.timer); //this returns [object timer] - so it's supposed to work?
}
private function addEventListeners(){
Main.timer.addEventListener(TimerEvent.TIMER, ef_Repaint);
//this.addEventListener(Event.ENTER_FRAME, ef_Repaint);
}
private function ef_Repaint(e:Event):void{
trace("timer event firing");
}
}
Заранее спасибо!