一定時間隔で、繰り返し関数を実行する(Flash 6 以降)
■一定時間隔で、繰り返し関数を実行する
一定時間隔で、繰り返し関数を実行するには、setInterval() 関数を使用します。
戻り値から、ハンドル値が得られます。
setInterval( 関数 , 時間 ) :Number
第01引数 | Function | 実行したい関数を指定 |
第02引数 | Number | 関数を繰り返し実行するための時間隔を指定(単位:ミリ秒) |
戻り値 | Number | ハンドル値 |
1000 ミリ秒の時間隔で関数を実行する
// 一定時間隔で、繰り返し実行される関数
function IntervalFunc(){
trace("実行された");
}
// 1000 ミリ秒の時間隔で関数を実行する
var interval_id = setInterval(IntervalFunc , 1000);
■setInterval() 関数を使用して登録したタイマーをキャンセルする
setInterval() 関数を使用して登録したタイマーをキャンセルするには、clearInterval() 関数を使用します。
引数に、「setInterval() 関数の戻り値から得られた値」を指定します。
setInterval() 関数を使用して登録したタイマーをキャンセルする
// 一定時間隔で、繰り返し実行される関数
function IntervalFunc(){
trace("実行された");
}
// 1000 ミリ秒の時間隔で関数を実行する
var interval_id = setInterval(IntervalFunc , 1000);
// setInterval() 関数を使用して登録したタイマーをキャンセルする
clearInterval(interval_id);
■強制的に再描画する
setInterval() 関数から、ムービークリップを操作しても、再描画は行われません。
再描画は、次のフレームの実行タイミングで行われます。
強制的に再描画したい場合は、updateAfterEvent() 関数を呼び出します。
ムービークリップ mc を円のように移動させる
// ------------------------------------------------------------
// 初期化
// ------------------------------------------------------------
var px = 200; // 円の中心 x 座標
var py = 150; // 円の中心 y 座標
var rot = 0; // 円の角度(0 ~ 360)
var rot_speed = 1; // 円の角度変化量(0 ~ 360)
var radius = 30; // 円の半径
// ------------------------------------------------------------
// 0 ミリ秒の時間隔で関数を実行する
// ------------------------------------------------------------
setInterval(function (){
// 角度を変化させる
rot += rot_speed;
// 角度からラジアンに返還する
var rad = rot * Math.PI / 180;
var x = px + Math.cos(rad) * radius;
var y = py + Math.sin(rad) * radius;
// 座標をインスタンスの座標に反映
mc._x = x;
mc._y = y;
// 再描画を行う
updateAfterEvent();
} , 0);
フレームレート間隔で、繰り返し関数を実行する
■フレームレート間隔で、繰り返し関数を実行する
フレームレート間隔で、繰り返し関数を実行するには、以下のイベントを使用します。
onClipEvent ハンドラの enterFrame イベント
MovieClip クラスの onEnterFrame イベントハンドラ
毎フレーム実行されるイベント
// 毎フレーム実行されるイベント
onClipEvent (enterFrame) {
trace("実行された");
}
毎フレーム実行されるイベント (Flash 6 以降)
// 毎フレーム実行されるイベント
_root.onEnterFrame = function (){
trace("実行された");
};