タイマー制御関数の扱いについて、ActionScript 3.0 では Timer クラス(flash.utils.Timer)を使用する方法が推奨されています。このクラスを使用すると、所定の時間間隔が経過するたびにイベントを送出することができます。
タイマーを開始するには、最初に Timer クラスのインスタンスを作成し、そのインスタンスに対して、タイマーイベントを生成する頻度と生成終了までの送出回数を指定します。
例えば次のコードでは、1 秒ごとのイベント送出を 60 秒間続けるタイマーインスタンスを作成します。
var oneMinuteTimer:Timer = new Timer(1000, 60);
Timer オブジェクトでは、所定の時間間隔が経過するたびに TimerEvent オブジェクトを送出します。 TimerEvent オブジェクトのイベント型は
timer
(定数
TimerEvent.TIMER
によって定義される)です。TimerEvent オブジェクトには、標準の Event オブジェクトと同じプロパティが格納されます。
また、繰り返しの回数が固定されたタイマーインスタンスの場合、最後の時間間隔に到達したときに
timerComplete
イベント(定数
TimerEvent.TIMER_COMPLETE
によって定義される)も送出されます。
Timer クラスの実際の動作を確認できる短いサンプルアプリケーションを次に示します。
package
{
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class ShortTimer extends Sprite
{
public function ShortTimer()
{
// creates a new five-second Timer
var minuteTimer:Timer = new Timer(1000, 5);
// designates listeners for the interval and completion events
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
// starts the timer ticking
minuteTimer.start();
}
public function onTick(event:TimerEvent):void
{
// displays the tick count so far
// The target of this event is the Timer instance itself.
trace("tick " + event.target.currentCount);
}
public function onTimerComplete(event:TimerEvent):void
{
trace("Time's Up!");
}
}
}
この例では、ShortTimer クラスが作成されたとき、1 秒ごとのカウントを 5 秒間続ける Timer インスタンスを作成します。 次に、このタイマー用のリスナーを 2 つ指定しています。1 つはカウント各回のイベントを受け取るリスナーであり、もう 1 つは
timerComplete
イベントを受け取るリスナーです。
その後、タイマーのカウントを開始すると、以後は 1 秒間隔で
onTick()
メソッドが繰り返し呼び出されます。
onTick()
メソッドでは、単に現在のカウントを表示しています。5 秒が経過すると
onTimerComplete()
メソッドが呼び出され、カウントが終了したことを表示します。
このサンプルを実行すると、コンソールまたはトレースウィンドウに 1 秒ごとに次の行が表示されます。
tick 1
tick 2
tick 3
tick 4
tick 5
Time's Up!