【发布时间】:2011-03-25 21:05:29
【问题描述】:
我需要为一个小游戏实现毫秒精度的计时器。哪种方法最适合这种情况?我目前的方法是使用 System.currentTimeMillis()。它似乎工作得很好,但也许有一些我不知道的陷阱。计时的标准方法是什么?
【问题讨论】:
我需要为一个小游戏实现毫秒精度的计时器。哪种方法最适合这种情况?我目前的方法是使用 System.currentTimeMillis()。它似乎工作得很好,但也许有一些我不知道的陷阱。计时的标准方法是什么?
【问题讨论】:
您的计时器只会与您的系统实现的一样好。它根本不会比这更好。
作为一名前专业游戏开发人员(并且仍在做副项目),我建议不要满足毫秒级精度要求。你可能不需要它。
使用此程序确定您的时钟精度:
/*
C:\junk>javac TimerTest.java
C:\junk>java TimerTest
Your delay is : 16 millis
C:\junk>
*/
class TimerTest {
public static void main(String[] args) {
long then = System.currentTimeMillis();
long now = then;
// this loop just spins until the time changes.
// when it changes, we will see how accurate it is
while((now = System.currentTimeMillis()) == then); // busy wait
System.out.println("Your delay is : " + (now-then) + " millis");
}
}
【讨论】:
currentTimeMillis 准确性施加太大压力是对的。
currentTimeMillis 的准确性。