我刚刚学习Java不久前,现在我正在开发我的第一个java游戏。问题是,当我尝试在主循环中获得delta时间时,delta时间通常为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;
答案 0 :(得分:4)
您在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());
}