| 今回は、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 戻る |