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