以相同速度运行的 Javascript 游戏循环?

标签 javascript loops frame-rate

我有一个 javascript 游戏,它在某些计算机上运行得非常快,而在其他计算机上运行得非常慢。我一直在做一些研究,我发现我需要根据时间更新我的循环,但我似乎找不到任何关于 javascript 的好例子。有人可以为我指明正确的方向,让我了解如何让游戏在任何硬件上以 30fps 的速度运行吗?

谢谢

最佳答案

通常游戏从 Delta Time 开始工作,即自上一帧渲染以来的时间量。

伪代码(大致为 C#):

DateTime lastFrameTimeStamp = DateTime.Now;
void Draw()
{
    TimeSpan timeSinceLastFrame = DateTime.Now.Subtract(lastFrameTimeStamp);
    float deltaTime = timeSinceLastFrame.TotalSeconds;

    // Do all of your movement and other time-based math based on the deltaTime, Like:
    float x = x + (MovementPerSecond * deltaTime);


    lastFrameTimeStamp = DateTime.Now;
}

使用增量时间可以防止对 CPU 功率或帧绘制频率的所有依赖。

关于以相同速度运行的 Javascript 游戏循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7193011/

相关文章:

javascript - TypeScript:有没有办法扩展多个接口(interface)并合并相同的属性?

java - 做了一个简单的数组,似乎有一个编译错误

java - 从文本文件中识别具有升序字符的单词

c++ - 使用 delta 变量 C++ 限制 while 循环在 30 "FPS"处运行

javascript - jQuery 函数 Mouseenter 和 Mouseleave 不工作

javascript - 将文本区域链接到某物

javascript - 在 JavaScript 中检查两个元素是否相等

python - 如何从Python 3中的for循环获得正确的结果?

Javascript setTimeout 和帧率

c# - WaitForSeconds 逐渐变得不同步... Unity