Javascript - 测量FPS并将其与事件同步
Javascript - measuring FPS and sync it with events
假设我有一个这样的游戏循环
function update(){
myTime = Date.now() - myTime
// use myTime as you wish...
// reset myTime
myTime = Date.now()
}
事情发生在那里,理想情况下是 60fps,但并非总是如此。使用 Date.now() 我需要知道一帧和另一帧之间发生了多少毫秒。原因如下:
我有一个变量X
,这个变量应该直线增加,以便每 1 秒增加 480 个单位。这种增加应该尽可能平稳,所以,我认为,它应该是每毫秒 0,48
考虑到我每 16,6 毫秒 (60fps) 绘制一次屏幕,我该怎么做?我需要通过添加 0,48 * 16,6 来补偿吗?或。。。什么样的论坛?我对此感到疯狂,提前感谢!
我不确定我是否理解这个问题,但也许这会有所帮助?
要获取自上次运行函数以来的时间,您可以执行以下操作:
var lastTime = Date.now();
function update(){
//do stuff here
var myTime = Date.now(),
timePassed = myTime - lastTime; //time passed since last time
lastTime = Date.now(); //set for next time
}
要查看函数每秒可以运行多少次,请执行以下操作:
var lastTime = Date.now(), framerate=1;
function update(){
//do stuff
framerate++;
if ((Date.now()-1000)>lastTime) { //if a second or more has passed
console.log(framerate); //log number of times function has ran
framerate=0; //and reset values
lastTime = Date.now();
}
}
要加入这些功能,请执行以下操作:
var lastTimeEach = Date.now(), lastTimeSecond = Date.now(), framerate=1, x=480;
function update(){
//do game logic
var myTime = Date.now(), //time now
timePassed = myTime - lastTimeEach; //time passed since last iteration
lastTimeEach = Date.now(); //reset for next iteration
framerate++;
if ((myTime-1000)>lastTimeSecond) { //one second has passed
x += 480; //add 480 to x
framerate=0; //reset framerate
lastTimeSecond = Date.now(); //reset for next second
}
}
这是一个演示
相关文章:
- webglcontextcreatenerror事件:是否同步触发
- 在更改事件上同步两个纸张输入的值
- 只有 Firefox 在阻塞同步 XMLHttpRequest 上切换事件吗?未来是什么
- Javascript - 测量FPS并将其与事件同步
- 键入预置和服务器端文本更改事件未正确同步
- Backbone.js:如何将挂起的同步事件排队到服务器
- Ajax数据与日期选择器事件不同步
- 两个同步事件创建了一个无限循环
- 同步,即使有Promises,也需要一些事件监听器
- 正在使用进度事件侦听器重写主干同步
- 正在使用“”触发事件侦听器;.点击()"同步的
- JavaScript库来同步事件
- Javascript:同步可观察事件
- 主干(同步)更新事件
- 在javascript中异步或同步调用事件处理程序
- 如何使用phonegap同步设备日历以进行事件添加
- 我可以将视频与DOM事件同步吗?
- 异步onload事件同步返回值
- 如何将jquery加载文件与jquery绑定事件同步
- 通过JavaScript事件同步两个CSS属性