Javascript 限制画布应用程序上的帧速率

Javascript 限制画布应用程序上的帧速率,javascript,html,canvas,frame-rate,Javascript,Html,Canvas,Frame Rate,我构建了一个非常基础的平台“引擎”: [小提琴移走] 当你用箭头键移动时,帧速率在精神上是快的 我尝试使用以下方法限制帧速率: var fps = 30; var now; var then = Date.now(); var interval = 1000/fps; var delta; 然后在draw函数中: now = Date.now(); delta = now - then; if (delta > interval) { //redrawing scene here

我构建了一个非常基础的平台“引擎”:
[小提琴移走]

当你用箭头键移动时,帧速率在精神上是快的

我尝试使用以下方法限制帧速率:

var fps = 30;
var now;
var then = Date.now();
var interval = 1000/fps;
var delta;
然后在draw函数中:

now = Date.now();
delta = now - then;
if (delta > interval) {
    //redrawing scene here
    then = now - (delta % interval);
}
但不幸的是,这仍然具有相同的帧速率,但性能下降(如帧跳过而不是帧速率限制)

请帮帮我(


我想,你应该回顾一下你的GameLoop函数。现在,你要求每秒1000帧。哎呀

当我把它编辑成这个,它给我大约33 fps

    GameLoop: function() { //initialise game loop
        Game.Vars.GameLoop = setTimeout(function() { 
            requestAnimationFrame(Game.Functions.Update, Game.C); 
        }, 30);
    },
你把30写成1:) 巧克力片,如果可以的话。如果没有,我就要白巧克力和覆盆子


编辑:艾芬地狱,你成功了一定要喜欢自己写的那些信息D

我想,你应该回顾一下你的GameLoop函数。目前,你要求每秒1000帧。哎呀

当我把它编辑成这个,它给我大约33 fps

    GameLoop: function() { //initialise game loop
        Game.Vars.GameLoop = setTimeout(function() { 
            requestAnimationFrame(Game.Functions.Update, Game.C); 
        }, 30);
    },
你把30写成1:) 巧克力片,如果可以的话。如果没有,我就要白巧克力和覆盆子


编辑:艾芬地狱,你成功了一定要喜欢自己写的那些信息D

代码为什么要做任何事情?它所做的只是设置一些变量?为清晰起见进行了编辑。。。添加了注释为什么代码要做任何事情?它所做的只是设置一些变量?为清晰起见进行了编辑。。。添加了一个可爱的评论!谢谢-你说的“信息”是什么意思?*给你一块巧克力饼干*(编辑)哦,你是说老家伙怎么说的?lolNom Nom Nom。我喜欢饼干在过去(大约IE4年),我通常使用“消防车”这个词而不是“错误”——虽然它确实有助于减轻看到它所带来的挫折感,但向我的大学讲师解释并不是最有趣的笑:哦,刚刚看到你的编辑。“是的,”扎克特利说。先看到代码,然后放慢速度,我得到了它,对我说,太好了!谢谢-你说的“信息”是什么意思?*给你一块巧克力饼干*(编辑)哦,你是说老家伙怎么说的?lolNom Nom Nom。我喜欢饼干在过去(大约IE4年),我通常使用“消防车”这个词而不是“错误”——虽然它确实有助于减轻看到它所带来的挫折感,但向我的大学讲师解释并不是最有趣的笑:哦,刚刚看到你的编辑。“是的,”扎克特利说。先看到代码,然后放慢速度后,我得到了它并对我说。