我正在开发一款2D游戏,但我遇到了计时器问题。这是我的游戏循环:
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;
我的游戏完全搞砸了,没有渲染任何东西超过第一帧,没有错误报告只是冻结。我在胜利7 64最新java 1.6。可能有什么不对?
答案 0 :(得分:5)
尝试使用System.nanoTime() / 1000000
,因为它是以纳秒为单位,而不是像您预期的那样毫秒。
答案 1 :(得分:4)
您是乘以或除以1,000,000? 1 millisecond = 1 000 000 nanoseconds。我假设你的逻辑的其余部分是以毫秒为单位实现的。