java - 使用 delta 计算耗时

标签 java math timedelta

我一定在我的代码中犯了一些愚蠢的错误,在我看来这应该可以工作,但是计时器工作得有点太快了(我想以秒为单位获得剩余时间)。

我的代码:

timeElapsed = 0;
timeLeft = 60;
//delta = time it took to get through one frame (60 fps). 

timeElapsed += delta/getFramesPerSecond(); //FPS = 60f
timeLeft -= timeElapsed; //timeLeft starts at 60 (seconds)
timeDisplay = "Time left: " + timeLeft;

我已经检查过 FPS 始终为 60,我在这里错过了什么?

Delta 样本打印:

0.016969847
0.017038532
0.017123796
0.017026689
0.016969848
0.017059453
0.01697774
0.016987609
0.017073665
0.017035767
0.01708432

最佳答案

timeElapsed+timeLeft 应该是一个常量(因此两者应该在相反的方向上以相同的量变化),但是,您反复将 timeLeft 减少 timeElapsed

timeElapsed 中步骤 1 的演示示例中,您的代码给出

timeElapsed   timeLeft
    0            60
    1            59
    2            57
    3            54
    4            50
    5            45
    6            39
    7            32

将代码更改为

timeDelta    = delta/getFramesPerSecond(); 
timeElapsed += timeDelta; 
timeLeft    -= timeDelta; 
timeDisplay  = "Time left: " + timeLeft;

关于java - 使用 delta 计算耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609808/

相关文章:

python - Django查询: "datetime + delta" as an expression

python - 如何从 timedelta 中删除微秒

java - 默认 spring-security 配置中匿名身份验证提供程序的用途

java - 如何为日期变量定义正确的日期

java - 如何拆分包含两个日期的文本行

java - 仅求解四次多项式实根的最有效方法

algorithm - 如何用离散来接近优化算法

java - 如何在不使用正则表达式的情况下解析操作数和运算符的数学表达式并解决它?

python - 当减去 pandas 中的日期列并将结果除以 np.timedelta64(1, 'D' ) 时,为什么会出现错误?

java - 通过socket查询时如何发送结果?