不久前我刚刚学完 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/