Thread Vs javax.swing.Timer,用Java控制游戏动画?

时间:2010-03-03 16:56:03

标签: java animation multithreading timer

我有一个关于Java中Thread和Timer类的非常直接的问题,作为创建游戏动画的一种方式。哪两个更好?两者之间真正的区别是什么,在Java中动画方面最受欢迎?我希望我的问题能够证明,这与我在这里提出的一个问题的答案有关... question

1 个答案:

答案 0 :(得分:6)

GUI需要在EDT上更新以确保正确完成绘画。阅读Concurrency上Swing教程中的部分,以获得有关此概念的完整说明。

当您使用Swing Timer时,事件在EDT中执行,因此您可以告诉组件在新位置重新绘制自己。

当你使用Thread时,循环是在EDT之外完成的,你需要使用SwingUtilities.invokeLater(...)将绘画代码放回到EDT上。

通常,如果您的代码只是将组件从一个位置移动到另一个位置,那么最简单的方法就是使用Timer。但是,如果您的游戏涉及许多复杂的逻辑,那么您不希望该逻辑在EDT上执行,因为它会阻止GUI响应事件并重新绘制自身。在这种情况下,您可能想要使用Thread。