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