System.nanoTime()的问题

时间:2011-04-20 04:24:04

标签: java

我正在开发一款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。可能有什么不对?

2 个答案:

答案 0 :(得分:5)

尝试使用System.nanoTime() / 1000000,因为它是以纳秒为单位,而不是像您预期的那样毫秒。

答案 1 :(得分:4)

您是乘以或除以1,000,000? 1 millisecond = 1 000 000 nanoseconds。我假设你的逻辑的其余部分是以毫秒为单位实现的。