2011-04-20 53 views
1

我正在开发一个2d的java游戏,但我坚持定时器问题。这是我的游戏循环:System.nanoTime问题()

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

你正在做什么'delta'或'lastLoopTime'?这可能是问题所在,但你没有发布该代码。 – 2011-04-20 04:39:39

+0

什么操作系统和版本?另见[这个答案](http://stackoverflow.com/questions/4588605)。 – trashgod 2011-04-20 04:47:50

回答

4

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

+1

很确定毫秒有1,000,000纳秒:) – WhiteFang34 2011-04-20 04:31:23

+0

AHAHAHAHAHAH!我现在很累,眼睛受伤了。但也许这是代码中的问题? – les2 2011-04-20 04:32:30

+0

呵呵,我喜欢你现在如何将转换链接到Google。 – WhiteFang34 2011-04-20 04:34:51

5

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

相关问题