requestAnimationFrame调用超过60FPS
问题描述:
我做一个简单的游戏,我有其中最小化窗口的几秒钟,在返回后,游戏运行在两倍帧率,之后更是一个问题,增加60次。我的游戏循环如下所示:requestAnimationFrame调用超过60FPS
function disp(){
update();
draw();
requestAnimationFrame(disp);
}
requestAnimationFrame(disp);
同时更新和绘制不包括requestAnimationFrame。我已经在firefox和chrome上尝试了这一点,获得了相同的结果。任何想法为什么发生这种情况?我用了同样的方法很多次,这是第一次发生这种情况。
编辑:你可以在http://jsfiddle.net/5ttGs/ 找到它的一个小提琴它非常简单,只要这种有点暂停我的进步。点击它几次,并享受10000 + FPS游戏
答
解决了与cocco的帮助下的问题。每次点击画布时,基本上onclick
事件都会调用disp
函数。因为disp
函数中有一个帧,所以它每秒钟调用它两次,导致帧的涌入。为了解决我只是在 canvas.addEventListener
function mouse_up() {
var matches = 0;
var overlap = 69;
mouse.up = false;
console.log("clicked", mouse.x,mouse.y);
disp();
}
摆脱了DISP,你可以在这里找到结果:http://jsfiddle.net/5ttGs/
你能出示有关[的jsfiddle(HTTP减少的测试用例:// WWW。 jsfiddle.net)或[jsbin](http://www.jsbin.com)(或可公开访问的链接)? – Barney
有没有证明这个问题的例子? –
尝试使用全局变量animation = requestAnimationFrame(disp)..在循环动画= requestAnimationFrame(disp)中。这应该确保您只执行一次。 – cocco