因此,当我运行正在运行的游戏时,FPS会忽高忽低。但比赛时间也是如此。帧速率越高,移动速度越快。fps越低,移动越慢。我使用的是延迟10ms的javax.swing.Timer类和个性化的ActionListener类。有人知道如何摆脱这些时间难题吗?像Unity的Time.deltaTime这样的东西会很完美,因为我已经习惯了。
在ActionListener
类中记录时间:
class MyActionListener implements ActionListener {
private long previousStartTime = -1;
@Override
public void actionPerformed(ActionEvent e) {
long now = System.currentTimeMillis();
long elapsedTime = previousStartTime != -1 ? now - previousStartTime : 0;
previousStartTime = now;
// use elapsedTime
// e.g.
double pixelsToMove = speedPerMs * elapsedTime;
}
}
在第一次迭代中,elapsedTime
将为零。