作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不久前我刚刚学完 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/
我是一名优秀的程序员,十分优秀!