如何使用自定义deltaTime函数检查是否已经过了1秒[Java]

时间:2015-09-08 15:55:19

标签: java timedelta

我正在尝试实现一种在游戏中创建计时器的方法。这是我目前的代码;如何创建一个简单的计时器来检查是否已经过了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();
    }

}

2 个答案:

答案 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对象,然后使用线程或其他方法单独检查它们以查看是否已经过了一秒。代码也可以很容易地适应使用不同的时间。