我正在尝试实现一种在游戏中创建计时器的方法。这是我目前的代码;如何创建一个简单的计时器来检查是否已经过了1秒?
public class Time {
private static long lastTime = System.nanoTime();
public static double getDeltaTime(){
return (System.nanoTime()-lastTime)/1000000000d;
}
public static void updateDelta(){
lastTime = System.nanoTime();
}
}
答案 0 :(得分:0)
根据您的需要,使用System.currentTimeMillis()
。您不应该使用static
。
public final class StopWatch {
private long startMillis = System.currentTimeMillis();
public double getElapsedTimeInSeconds() {
return (System.currentTimeMillis() - this.startMillis) / 1000.0;
}
public void reset() {
this.startMillis = System.currentTimeMillis();
}
}
答案 1 :(得分:0)
用你已经拥有的东西,我会做这样的事情:
public class Timer {
// Last time in nanoseconds
private static long second = 1000000000;
private long lastTime;
// Returns change in time as double
private long getDeltaTime(){
return (System.nanoTime()-lastTime);
}
// Updates lastTime
private void updateTime(){
this.lastTime = System.nanoTime();
}
// Public constructor for Timer object
public Timer() {
this.lastTime = System.nanoTime();
}
// Returns true if a second has passed and updates time,
// otherwise returns false and does nothing.
public boolean hasSecondPassed() {
if (getDeltaTime() >= second) {
updateTime();
return true;
}
else return false;
}
}
通过这种方式,您可以实例化多个Timer对象,然后使用线程或其他方法单独检查它们以查看是否已经过了一秒。代码也可以很容易地适应使用不同的时间。