[SCRIPT] ACTION : setInterval
今度はインターバルをまとめる。
引用ばかり、多謝。
--------------------
●一定時間刻みで繰り返す
setInterval()関数を使えばonEnterFrameイベントハンドラを使わずに繰り返しの処理を行うことができ、また、時計の秒針移動のように正確なタイミングで動きを制御したい場合やフレームレートとはまったく違うタイミングの繰り返し処理を行うこともできます。
たとえば次のステートメントを実行すると、myObjオブジェクトのmyMethod()メソッドを2秒間隔で呼び出すようになります。
intervalIDにはこのインターバルの設定をキャンセルするためのidが入ります。
intervalID = setInterval(myObj, "myMethod", 2000);myMethod()メソッドの実行の際にパラメータを渡すこともできます。パラメータがv1, v2ならば次のように書きます。
intervalID = setInterval(myObj, "myMethod", 2000, v1, v2);
インターバルをキャンセルするには、clearInterval(intervalID)を実行します。intervalIDは、setInterval()を実行したときに戻ってくる値です。
clearInterval(intervalID);
例:
メインのタイムラインにmyMCインスタンスを作り、フレーム1に次のフレームアクションを書き込みます。このムービーをパブリッシュすると、myMCインスタンスのkaitenメソッドが2秒間隔で呼び出されるようになり、結果として2秒間隔で時を刻むように10度ずつ回転します。
フレームアクション:
//実行するイベントハンドラを設定する
myMC.kaiten = function(d:Number) {
this._rotation += d;
};
//myMCインスタンスのkaitenメソッドを2秒間隔で実行
intervalID = setInterval(myMC, "kaiten", 2000, 10);
----------
●一定時間を待つ
インターバルは一定時間間隔で繰り返しの処理を行いたいときに威力を発揮する機能ですが、一定時間を待つタイマーとしても利用できます。
次のサンプルを実行すると5秒後にインターバルで設定したtimeoutイベントが発生するので、そこでインターバルの設定をクリアします。
フレームアクション:
//timerObjオブジェクトの設定
timerObj = new Object();
timerObj.timeout = function() {
clearInterval(timerID); // インターバルの終了
trace("タイムアウト"); // 出力→ タイムアウト
};
//計測開始(5秒でタイムアウト)
var timerID = setInterval(timerObj, "timeout", 5000);
