第57回
今回は、Flash的に画面の更新をしてみよう(かなり違う)、という実験です。
というのは、つまりfps、[F/s]という概念を入れてみる、という意味です。
画面の更新というのはこの場合、画面に表示しているエレメント等の(主に)座標を、
定期的に(短い間隔で)、ある関数によっていじる、ということにしましょう。
そしてその関数を以下のようにします。
function Frame(){
	if(FrameTimer)
		clearTimeout(FrameTimer);
	var t1=new Date().getTime();

//	以下画面の処理

//	以上画面の処理

	var t2=new Date().getTime();

//	このとき、(t2-t1)[ms]はこの「フレーム(F)」一回にかかった時間です。
//	つまり、[F/s]、すなわち1[s]に処理できるフレーム数は、
//	1/(t2-t1)、ではなく、1000/(t2-t1)、としたいところですが、タイマーの間隔を入れて
//	1000/(t2-t1+1)としましょう。つまり、このフレームだけで[F/s]を計算すると、
//	1000/(t2-t1+1)[F/s]となります。

	FrameTimer=setTimeout('Frame()',1);
}
見にくい上にわかりづらいでしょうが、コメントが全てを物語っています。
[F/s]という概念があるということは、その必要条件として、
画面を定期的に呼び出されるある関数によって更新する
ということがいえるわけです。つまりこれがやりたかった。
サンプルがあるので、それを見たほうが早いかもしれませんが、むしろ遅いと思います。
サンプル「ブラックホール」
カーソルの方向にエレメントたちが加速度的に移動します。
クリックで一時停止、マウスホイールでエレメント数(Length)の増減が出来ます。
表示されているSpeedがfpsです。
top  戻る