Java System.nanoTime()存在问题

Java System.nanoTime()存在问题,java,Java,我正在做一个2d java游戏,但我被计时器的问题困住了。这是我的游戏循环: void gameLoop(isRunning){ .... doStuff(); .... } 我在回路中有一个fps测量代码,如下所示: long thisLoop = System.currentTimeMillis(); delta = thisLoop - lastLoopTime; lastLoopTime = thisLoop; 所以我得到了自上次循环以来经过了多少时间。但是,每当我尝试使用Sys

我正在做一个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;

我的游戏被彻底搞砸了,没有渲染任何超过第一帧的内容,没有错误报告,只是冻结了。我在win 7 64最新java 1.6上。有什么不对劲吗?

你是乘1000000还是除以1000000。我假设您的逻辑的其余部分是以毫秒为单位实现的。

您是乘1000000还是除以1000000。我假设您的其余逻辑是以毫秒为单位实现的。

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

尝试使用
System.nanoTime()/1000000
因为它是以纳秒为单位的,而不是你可能期望的毫秒。

非常确定一毫秒内有1000000纳秒:)哈哈哈!我现在太累了,我的眼球疼。但也许这就是代码中的问题?!!!呵呵,我喜欢你现在将转换链接到谷歌的方式。非常确定一毫秒内有1000000纳秒:)哈哈哈!我现在太累了,我的眼球疼。但也许这就是代码中的问题?!!!呵呵,我喜欢你现在将转换链接到谷歌的方式。你在用
delta
lastLoopTime
做什么?这可能就是问题所在,但您尚未发布该代码。什么操作系统和版本?另请参见。您是否正在使用
delta
lastLoopTime
执行任何操作?这可能就是问题所在,但您尚未发布该代码。什么操作系统和版本?另见。