requestAnimationFrame调用超过60FPS

问题描述:

我做一个简单的游戏,我有其中最小化窗口的几秒钟,在返回后,游戏运行在两倍帧率,之后更是一个问题,增加60次。我的游戏循环如下所示:requestAnimationFrame调用超过60FPS

function disp(){ 
update(); 
draw(); 
requestAnimationFrame(disp); 
} 
requestAnimationFrame(disp); 

同时更新和绘制不包括requestAnimationFrame。我已经在firefox和chrome上尝试了这一点,获得了相同的结果。任何想法为什么发生这种情况?我用了同样的方法很多次,这是第一次发生这种情况。

编辑:你可以在http://jsfiddle.net/5ttGs/ 找到它的一个小提琴它非常简单,只要这种有点暂停我的进步。点击它几次,并享受10000 + FPS游戏

+0

你能出示有关[的jsfiddle(HTTP减少的测试用例:// WWW。 jsfiddle.net)或[jsbin](http://www.jsbin.com)(或可公开访问的链接)? – Barney

+0

有没有证明这个问题的例子? –

+0

尝试使用全局变量animation = requestAnimationFrame(disp)..在循环动画= requestAnimationFrame(disp)中。这应该确保您只执行一次。 – cocco

解决了与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/