使用JFrame在java中开发游戏。
我的问题是关于一个“精灵”,它适当地增加了它的图像,显示在游戏中的每个步骤/帧。
我将计时器设置为33毫秒或30秒(30 fps)。
它正常工作,因为它每隔33毫秒适当地在终端“测试”中打印,但我在窗口中看到的是不同的。当我在窗口中有一个鼠标时,精灵适当地交换图像,似乎在移动,但如果鼠标不在窗口或不移动,它的刷新率会急剧下降。
我在框架中有一个JPanel,里面有一个JLabel。当计时器触发时,调用JLabel.setIcon(),它接收精灵中的下一个图像。
重绘,重新验证无效。精灵以预期速度移动的前~2秒,然后减速到大约2fps,除非我移动鼠标光标,此时它再次以大约30 fps的速度运行大约2秒。
答案 0 :(得分:0)
事实证明,java的专用计时器更适合我的,因为我的依赖于一段时间的真正循环。使用javax.swing.Timer进行重写并在每次重绘时使用Toolkit.getDefaultToolkit()。sync()解决了问题。