(cache) Flashゲーム講座&ASサンプル集【タイマーについて】
Flashゲーム講座 & アクションスクリプトサンプル集

 

一定時間隔で、繰り返し関数を実行する(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("実行された");

};