私は非常に簡単なFlashで作業しています。私はすべてのアニメーションをフレームに依存しないものにしたいので、ゲームの流れやスピードに影響を与えずにフレームレートを変更することができます。 私はどこかで、タイマーオブジェクトを作成し、このタイマーにイベントリスナーをアタッチするだけでよいことを読んでいます。TimerEvent.TIMERイベントを持つタイマーオブジェクトがすべてのオブジェクトにグローバルにアクセス可能
同じタイマーをリッスンする必要があるオブジェクトが多数ある場合はどうなりますか?私がしようとしていることを理解するためのコードを参照してください。この段階で何も壊れませんが、イベントは発生しません。ここで
は、メインクラス、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;
}
}
そしてここでは、プレイヤーのクラス、タイマーを必要とされるオブジェクトのいずれかです。
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");
}
}
前もって感謝します!
Hehe ...正しい!これは私がいつもしている古典的な間違いの一つです。 –
:)また、私の更新された回答を参照してください。可能であれば、アプローチを変更してみてください。 – sch
ありがとうございます - 私はstart()の部分を見逃しました:)イベントリスナーをMainクラスに移動しました。私はそれのために前に記憶上の問題があったので、それをそこに置くのはずっと意味をなさない。ありがとう! – getack