【发布时间】:2015-06-08 20:21:10
【问题描述】:
所以,我正在尝试使用 Java 中的 Swing 创建一个小游戏。我创建的游戏循环使用 javax.swing 计时器。 这个计时器(通常)每 5 毫秒调用一次循环。
Timer tm = new Timer(5, this);
tm.start();
@Override
public void actionPerformed(ActionEvent e) {
game.tick();
repaint();
revalidate();
}
我的代码可能非常繁重,因为它包含很多 for 循环,所以我并不奇怪这实际上不是每 5 毫秒运行一次循环。 相反,它以相当稳定的 160fps 流动,至少在我的电脑上是这样。当我在我兄弟的电脑上尝试我的游戏时(更少的 RAM),它一开始以相同的 160fps 运行,但大约 2 分钟后,帧数下降到稳定的 60fps。
我个人觉得很奇怪,帧在同一时间间隔内下降这么多,并且在其余时间保持稳定。
如果有人遇到类似问题并且知道是什么原因造成的,请告诉我。提前致谢。 〜Krikke
【问题讨论】:
-
尝试使用 VisualVM 分析您的应用程序(至少在安装 JDK 时附带)。这应该告诉您哪些方法需要很长时间才能执行,以及需要多长时间。
-
如果您使用摇摆定时器,请务必测量实际的实时时间片,并将您的物理基于真实的时间片,不是基于摇摆定时器的估计时间频率保证不是很准确。