我不久前刚刚学习Java,现在正在开发我的第一个Java游戏。问题是,当我尝试在主循环中获取增量时间时,增量时间通常为0。如何解决此问题?我的主循环的代码:

double deltaTime=0;
    while(!windowIsClosed){         //main loop
        double beginTime=System.nanoTime()/1e9;  //divide by 1e9 because I want time variables to be in seconds

        animations(deltaTime);
        repaint();


        double endTime=System.nanoTime()/1e9;
        deltaTime=endTime-beginTime;

最佳答案

您在while循环开始时覆盖了beginTime,因此现在计算的是动画完成所需的时间。
如果要从启动while循环开始计算增量,则应将beginTime的分配放在while之上。

同样,如果您使用的是Java 8,则可以使用新的Date / Time-API并利用诸如Instant的类来存储开始和结束时间,并使用Duration来计算其中两个时间点之间的持续时间:

Duration deltaTime = Duration.ZERO;
Instant beginTime = Instant.now();
while(!windowIsClosed){

    animations(deltaTime);
    repaint();

    deltaTime = Duration.between(beginTime, Instant.now());
}

07-24 22:25