JavaScript 是否提供高分辨率计时器?
我从头开始编写了一些游戏引擎,有些是用 C 语言编写的,有些是用 Java 编写的,有些是用 Flash 编写的。在动画和交互式图形方面,我始终遵循相同的基本模型。使用以下设计创建一个基本类/结构:
void init() { /* Called once, preload essential resources here. */ }
void update(double time) { /* Updates game/animation state using high resolution time. */ }
void render(double time) { /* Updates screen graphics using high resolution time. */ }
void run()
{
double time;
init();
while (!done)
{
time = queryTime();
update(time);
render(time);
}
}
时间对于平滑动画和游戏状态计算非常重要。在本机代码 Windows 中,我使用QueryPerformanceCounter()
和QueryPerformanceFrequency()
来执行queryTime()
每个游戏循环中的角色,并通过时间来更新/渲染。在 Java 中,我使用System.nanoTime()
.
JavaScript 中的等价物是什么?也就是说,一些函数像queryTime()
它以高精度(亚毫秒)返回时间值。据我所知,您在 JavaScript 中可以获得的最佳准确度约为 15 毫秒……这对于动画来说太可怕了。