Javascript HTML5画布的Uncapped vs SetInterval帧速率?

Javascript HTML5画布的Uncapped vs SetInterval帧速率?,javascript,html,canvas,Javascript,Html,Canvas,查看并使用以下代码以每秒30帧的速度更新帧: var FPS = 30; setInterval(function() { update(); draw(); }, 1000/FPS); 从传统视频游戏的角度来看,限制游戏的帧速率是不好的做法(当游戏,通常是糟糕的控制台端口,这样做时,这真的很烦人)。我想知道这是否是HTML5画布游戏的必要条件。无限制的帧速率会不会真的导致浏览器被锁定,或者耗尽计算机的所有资源 我想到的代码是这样的: update(); function up

查看并使用以下代码以每秒30帧的速度更新帧:

var FPS = 30;
setInterval(function() {
    update();
    draw();
}, 1000/FPS);
从传统视频游戏的角度来看,限制游戏的帧速率是不好的做法(当游戏,通常是糟糕的控制台端口,这样做时,这真的很烦人)。我想知道这是否是HTML5画布游戏的必要条件。无限制的帧速率会不会真的导致浏览器被锁定,或者耗尽计算机的所有资源

我想到的代码是这样的:

update();
function update()
{
    // Move stuff around
    draw();
}
function draw()
{
    // Draw the changes
    update();
}

有更好的方法吗?

查看outwindow.requestAnimationFrame(RAF)。

顾名思义,英国皇家空军是为了在管理动画方面做得不错而成立的

英国皇家空军试图给你最好的有上限和无上限计时器

  • RAF创建一个动画循环,该循环与显示刷新同步良好
  • RAF异步等待,以便在等待下一帧时不会阻塞UI线程
  • 英国皇家空军将自动尝试以约60帧/秒的速度循环
  • 最新的RAF为您提供了一个已用计时器,您可以使用该计时器(1)在需要较少的fps时跳过此循环(2)在跳过最后一帧(例如由于系统垃圾收集)时捕捉动画

这肯定会浪费资源,因为显示器不会经常更新,所以很多计算/移动/无论你做什么都不会有任何效果。今天浏览器的渲染引擎不是“传统的视频游戏”引擎,所以不要试图把它们变成这样。如果你想充分利用今天的可能性,请查看
requestAnimationFrame
。限制游戏帧速率是什么意思?你曾经开发过传统的电子游戏吗?你知道吗,不管你的游戏帧速率是多少,大多数监视器总是以每秒60帧的速度更新?即使您的游戏使用更高的帧速率,您的显示器仍将仅显示60 FPS。使用固定帧速率有几个优点:1)程序员不必担心帧速率的变化。所有计算都是相对于固定帧速率进行的。2) 可变帧速率会遇到一些问题,比如无关进程占用程序员的CPU时间control@CBroe我不知道浏览器的更新速度不是无限的。它们的更新速度是多少?当浏览器更新时是否有更新的方法?@AaditMShah一些监视器的刷新率高于60 FPS。大多数为个人电脑开发的游戏都不限制帧速率,这是一件好事。