フレームレートに依存せずに、一定間隔で繰り返し同じ処理をしたい場合、Timer クラスを使います。
Timer クラスのインスタンスは、設定した間隔で timer イベントを発生します。 Timer クラスのインスタンスにリスナー登録すると一定間隔でメソッドを呼び出すことが出来ます。
タイマーを開始するには、最初に Timer クラスのインスタンスを作成し、そのインスタンスに対して、タイマーイベントを生成する頻度と生成終了までの送出回数を指定します。
下記のコードは、1 秒ごとにイベントを発生し、それを 60 秒間続けるタイマーインスタンスを作成します。
[sourcecode language=”js”]
var oneMinuteTimer:Timer = new Timer(1000, 60);
下記の例は、1 秒ごとに出力ウインドウにタイマーの起動回数を出力し、それを 5 秒間続けます。
currentCount プロパティ は、ゼロで開始してから現在までに起動されたタイマーの合計回数です。
var myTimer:Timer = new Timer(1000, 5);
myTimer.addEventListener ("timer", timerHandler);
myTimer.start ();function timerHandler (event:TimerEvent):void {
trace (event.target.currentCount);
}
[/sourcecode]Timer オブジェクトでは、所定の時間間隔が経過するたびに TimerEvent オブジェクトを送出します。TimerEvent オブジェクトのイベント型は timer (定数 TimerEvent.TIMER によって定義される) です。TimerEvent オブジェクトには、標準の Event オブジェクトと同じプロパティが格納されます。また、繰り返しの回数が固定されたタイマーインスタンスの場合、最後の時間間隔に到達したときに timerComplete イベント (定数 TimerEvent.TIMER_COMPLETE によって定義される) も送出されます。
下記の例は、1 秒ごとに出力ウインドウにタイマーの起動回数を出力し、それを 60 秒間続けます。60 秒経過後、出力ウインドウにメッセージを出力します。
[sourcecode language="js"]
package {
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;public class minuteTimer extends Sprite {
public function minuteTimer () {
var myTimer:Timer = new Timer(1000, 60);myTimer.addEventListener (TimerEvent.TIMER, onTimer);
myTimer.addEventListener (TimerEvent.TIMER_COMPLETE, onTimerComplete);myTimer.start ();
}public function onTimer (event:TimerEvent):void {
trace (event.target.currentCount);
}public function onTimerComplete (event:TimerEvent):void {
trace ("complete!");
}
}
}
[/sourcecode]fla ファイルのフレームアクションに次のコードを記述します。
[sourcecode language="js"]var countTime:minuteTimer = new minuteTimer();[/sourcecode]