我正在开发一款2d的java游戏,但是我被计时器的问题所困扰。这是我的游戏循环:
void gameLoop(isRunning){
....
doStuff();
....
}我在循环中有一个fps来测量代码:
long thisLoop = System.currentTimeMillis();
delta = thisLoop - lastLoopTime;
lastLoopTime = thisLoop;所以我知道从上一次循环到现在已经过去了多少时间。但是,每当我尝试使用System.nanoTime()而不是System,currentTimeMillis()时,如下所示:
long thisLoop = System.nanoTime();
delta = thisLoop - lastLoopTime;
lastLoopTime = thisLoop;我的游戏完全搞砸了,没有渲染任何超过第一帧的东西,没有错误报告,只是冻结了。我使用的是Win7 64最新的java 1.6。会出什么问题呢?
发布于 2011-04-20 12:28:06
尝试使用System.nanoTime() / 1000000,因为它的单位是纳秒,而不是您可能期望的毫秒。
发布于 2011-04-20 12:27:50
你是乘还是除以1,000,000?1 millisecond = 1 000 000 nanoseconds。我假设您的其余逻辑是以毫秒为单位实现的。
https://stackoverflow.com/questions/5725472
复制相似问题