tande lab.

[AS3] 指定した秒・フレーム数の経過後に実行する

考え方としては2通りあると思います。

(1) Flashを実行してからのフレーム数をカウントする方法
(2) getTimer関数を利用する方法

フレーム数で指定したいか、秒数で指定したいかで使い分けています。
おそらく(2)の方が負荷も少なく一般的だとは思います。

(1) Flashを実行してからのフレーム数をカウントする方法 の例

// フレームレートを指定
stage.frameRate = 12;

// 指定したいフレーム数
// ex. フレームレート12のとき、3秒を指定したい場合 → 36
var waitTime:int = 36;

// フレーム数をカウントするための変数
var frameCount:int = 0; 

// Flashを実行してからのフレーム数をカウント
this.addEventListener(Event.ENTER_FRAME, frameCountFunc);
function frameCountFunc(e:Event):void{

	// フレーム数をカウント
	frameCount++;

	// 現在のフレーム数と指定したフレーム数の差分を比較
	if(frameCount > waitTime){

		// 指定秒たってから実行したいことを記述
		trace("3秒たったよ");
	}
}

ただし、このサンプルコードだと3秒以上たったらずっと実行されつづけるので無限ループに陥りますw ので、実際に使うときは3秒以上5秒以内とか実行する時間の範囲を区切ったりした方が良いです。

(2) getTimer関数を利用する方法 の例

function countTimeFunc(){

	// 指定したい秒数(時間単位はミリ秒)
	// ex. 3秒を指定したい場合 → 3000
	var waitTime:int  = 3000; 

	// 現在の時間を一時的に格納
	var nowTime:int  = getTimer(); 

	// 今の時間から、さっき格納した時間の差分を比較
	while((getTimer() - nowTime) < waitTime){

		// 指定時間が経過最中に実行したいことを記述
		trace("3秒待ってる");
	}

	// 指定時間たってから実行したいことを記述
	trace("3秒たったよ");
}

// 関数を実行
countTimeFunc();



0 comments
Submit comment