3

画面上でボールが動き回る小さなゲームがあり、FPS を計算したいと思います。内部で requestAnimationFrame を利用する KineticJS (4.3.1) を使用しています。

      var anim = new Kinetic.Animation(
          function(frame) {

            //game logic
               //move ball
               //check collisions - if collision occurs, stop animation
               //redraw 

          }
      }

「フレーム」オブジェクトには、アニメーションが最初に開始されてからの時間をミリ秒単位で測定する frame.time でアクセスできる time プロパティがあります。

     var timeSinceAnimationStarted = frame.time;

FPS を正確に測定するにはどうすればよいでしょうか?

4

2 に答える 2

2

「1秒間隔のフレーム」を使用した単純な実装。たとえば、5秒間隔のフレームを使用して滑らかにすることができます

// variables accessible from within function(frame)
var frameCount = 0;
var currentSecond = 0;
var frameRate = 0;

// within function(frame), called with current time on each new frame
function updateFrameRate(time) {
    var second = Math.floor(time / 1000); // ms to integer seconds
    if (second != currentSecond) {
       frameRate = frameCount;
       frameCount = 0;
       currentSecond = second;
    }
    frameCount ++;
}
于 2013-01-18T17:33:04.797 に答える
0

提案された構造は次のようです。

  var numFrames = 0;
  var anim = new Kinetic.Animation(
      function(frame) {

        //game logic
           //move ball
           //check collisions - if collision occurs, stop animation
           //redraw 
        numFrames++;
      }
  }

  setInterval(function(){
     alert(numFrames/1000);  //number of frames per second
     numFrames = 0;  //reset frame count
  },1000);   //every second

これは当てはまりますか?

于 2013-01-18T17:33:49.523 に答える