25-帧率计数器对象原型
8.9.3 帧率计数器对象原型
诸如Asteroids和Geo Blaster Basic,这类街机游戏都要求较高的处理器速度和屏幕刷新速度,这样才能保证给用户呈现可靠的游戏对象的绘制效果和游戏逻辑处理效果。一种判断游戏运行是否达标的方法是使用每秒帧率(FPS)的计数器。以下是一个简单的FPS计数器,也可以在其他画布游戏中使用。
//*** 帧率计数器对象原型
function FrameRateCounter(){
this.lastFrameCount = 0;
var dateTemp = new Date();
this.frameLast = dateTemp.getTime();
delete dateTemp;
this.frameCtr = 0;
}
FrameRateCounter.prototype.countFrames=function(){
var dateTemp = new Date();
this.frameCtr++;
if (dateTemp.getTime()>=this.frameLast+1000){
ConsoleLog.log("frame event");
this.lastFrameCount = this.frameCtr;
this.frameLast = dateTemp.getTime();
this.frameCtr = 0;
}
delete dateTemp;
}
在游戏中创建一个计数器对象的实例,然后在 update()函数中每帧调用一次 count Frames()函数。在render()函数中输出当前的帧率。
例8-11是在例8-10的基础上添加了以上代码。请读者确保在例8-10中添加了 FrameRate Counter原型对象,定义的位置在canvasApp()函数的下方,并且在<script>标签的上方。也可以将代码放在一个单独的.js文件中,并将文件的URL设置为