Dav*_*ave 5 javascript loops frame-rate
我有一个javascript游戏,在某些计算机上运行速度非常快,而在其他计算机上运行速度非常慢.我一直在做一些研究,我发现我需要根据时间更新我的循环,但我似乎无法找到任何关于javascript的好例子.有人能指出我如何在任何硬件上以30fps的速度运行游戏吗?
谢谢
通常游戏是从Delta Time开始工作的,也就是说,自上一帧渲染以来的时间量.
Psuedocode(大致是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;
}
Run Code Online (Sandbox Code Playgroud)
使用增量时间可防止对CPU功率的依赖性或帧的绘制频率.
你不能强迫一个游戏在30fps的运行,如果硬件是无法实现这一目标.如果它正在做的事情超过1/30秒,那你就不走运了.
您可以使用requestAnimationFrame让它尽可能快地运行.见这里:http://paulirish.com/2011/requestanimationframe-for-smart-animating/
像 EaselJS 这样的框架通常具有每 x 毫秒运行一次的 Tickers/Timers。
http://easeljs.com/docs/Ticker.html
JavaScript 游戏框架列表:
https://gist.github.com/768272
归档时间: |
|
查看次数: |
5493 次 |
最近记录: |