我有一个 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/