Timer クラスについて
■Timer クラスについて
Timer クラスを使用すると、好きな時間隔で登録した関数を実行することができます。
フレームレートとは違う時間隔で実行する事も可能です。
Timer は指定したタイミングが来ると同期的に関数が呼び出されます。
処理落ちが発生すると次のタイマーの関数実行も遅れます。
また、呼び出される関数内で無限ループ処理を作ってしまうと全体の処理も停止します。
Timer クラスを使用する
サンプルをダウンロード
1.Timerクラスをインスタンス化する
まず、Timer クラスをインスタンス化します。
第01引数には、「関数を繰り返し呼び出す」時間隔をミリ秒で指定します。
第02引数には、繰り返す実行回数を指定します。0 を指定した場合、永遠に呼び出されます。
第02引数には、繰り返す実行回数を指定します。0 を指定した場合、永遠に呼び出されます。
100ミリ秒間隔で呼び出される Timer オブジェクトを作成する
// タイマーオブジェクトを作成
var timer : Timer = new Timer(100,0);
3 秒後に 1 度だけ呼び出される Timer オブジェクトを作成する
// タイマーオブジェクトを作成
var timer : Timer = new Timer(3000,1);
2.関数を登録する
Timer クラスは、TimerEvent.TIMER イベントと TimerEvent.TIMER_COMPLETE イベントに対応しています。
TIMER イベントは、指定した時間隔で毎回呼び出されます。
TIMER_COMPLETE イベントは、指定した回数をすべて消化したときに1度だけ呼び出されます。
TIMER イベントは、指定した時間隔で毎回呼び出されます。
タイマーに関数を登録する
// タイマーオブジェクトを作成
var timer:Timer = new Timer(1000,10);
// 指定した時間隔で呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
trace("タイマー");
});
// 指定した回数をすべて消化したときに呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER_COMPLETE,function(e:TimerEvent):void{
trace("タイマーが終了した");
});
3.タイマーを開始する
start() メソッドを呼び出すとタイマーを開始します。
タイマーを開始する
// タイマーオブジェクトを作成
var timer:Timer = new Timer(1000,10);
// 指定した時間隔で呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
trace("TIMER:");
});
// 指定した回数をすべて消化したときに呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER_COMPLETE,function(e:TimerEvent):void{
trace("TIMER_COMPLETE:");
});
// タイマー開始
timer.start();
4.タイマーを終了する
タイマーを途中で終了したい場合は、stop() メソッドを呼び出します。
停止したとき、「タイマーに登録した関数」の実行カウント数はそのまま維持されます。
画面をクリックされたらタイマーを停止する
// タイマーオブジェクトを作成
var timer:Timer = new Timer(1000,10);
// 指定した時間隔で呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
trace("TIMER:");
});
// 指定した回数をすべて消化したときに呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER_COMPLETE,function(e:TimerEvent):void{
trace("TIMER_COMPLETE:");
});
// タイマー開始
timer.start();
// マウスがダウンされたときに呼び出されるイベント
stage.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent):void{
// タイマー停止
timer.stop();
});
■タイマー内の変更を描画に反映する
タイマー内で変更した内容をすぐに描画に反映させたい場合、引数から渡される TimerEvent オブジェクトの updateAfterEvent() メソッドを呼び出します。
タイマー内の処理結果を描画に反映する
// タイマーオブジェクトを作成
var timer:Timer = new Timer(1000,10);
// 指定した時間隔で呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
// 適当に描画
var g : Graphics = stage.graphics;
g.clear();
// 描画を更新
e.updateAfterEvent();
});
■タイマーに登録した関数の実行回数を取得する
「タイマーに登録した関数」が何回繰り返し実行されたかを取得するには、currentCount プロパティを使用します。
終了とする実行回数を取得するには、repeatCount プロパティを使用します。
タイマーの実行回数を取得する
// タイマーオブジェクトを作成
var timer:Timer = new Timer(1000,10);
// 指定した時間隔で呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
trace("タイマー: " + timer.currentCount + " / " + timer.repeatCount);
});
// タイマー開始
timer.start();
タイマーに登録した関数の実行回数をリセットする
「タイマーに登録した関数」の実行回数を 0 に戻したい場合は、reset() メソッドを呼び出します。このメソッドを呼び出すと
タイマーが停止します。
画面をクリックされたらタイマーカウントをリセットする
var timer:Timer = new Timer(1000,10);
// 指定した時間隔で呼び出されるイベント
timer.addEventListener(TimerEvent.TIMER,function(e:TimerEvent):void{
trace("タイマー: " + timer.currentCount + " / " + timer.repeatCount);
});
// マウスがダウンされたときに呼び出されるイベント
stage.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent):void{
// タイマーのカウントをリセット
timer.reset();
// タイマー開始
timer.start();
});

