java - 如何在Java中获取准确的deltaTime

标签 java timedelta

不久前我刚刚学完 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());
}

关于java - 如何在Java中获取准确的deltaTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678799/

相关文章:

java - 如何在java中读取和播放实时声音流?

java - Java 中的正则表达式

java - Android - 在 R.id 中定义组

python - Pandas Timedelta 属性 (_m, _s) : odd behaviour

python - 将 HH :MM:SS. 微字符串转换为微秒?

object - Pandas 将对象转换为timedelta

java - 致命异常 : android. app.RemoteServiceException Context.startForegroundService() 然后没有调用 Service.startForeground()

java - Spring - 发送对象列表以查看并返回到仅在 Controller 中发布一个对象

python - 尝试在Python中减去两个日期并在几小时内(大于24小时时间段)得到结果

python - 在Python中让线程休眠直到特定时间