在游戏中使用图形的最佳方式

use*_*118 4 java animation swing awt java-2d

我是 Java 和编程的新手,我正在尝试用宇宙飞船和外星人编写一个小射击游戏,但在图形方面有很多问题。似乎我混合了很多不同类型的组件。

我该怎么做才正确?
- 我应该使用 SwingJFrame然后将其添加为Graphics对象吗?
- 我应该先制作一个面板,然后在上面添加图形吗?
- 或者我应该使用画布而不是 JPanel?

有很多选择,在网上搜索答案让我很困惑。一些人建议使用该paint()方法,而另一些人则在使用paintComponent()...

以正确顺序放置图形的首选方式是什么,我应该使用哪些类?

Hov*_*els 5

对于严肃的游戏,不要使用 Swing,而是使用其他更多特定于游戏的 GUI 库,例如LWJGL。对于简单的游戏,Swing 是可以的,但请务必先阅读图形教程,因为您对如何绘制的假设可能需要更改(我知道我的)。例如,您不会使用 Graphics 类字段,但通常会在 JComponent 的paintComponent方法中被动绘制。


Gui*_*let 5

对于简单的游戏,Swing 很好,您可以依赖以下内容:

  1. 使用 Swing 而忘记 AWT。你会用更少的代码获得更好的结果。
  2. 使用 Swing Timer 调整游戏节奏
  3. 对于您的每个组件, extendsJComponent或JPanel和 override paintComponent。在paintComponent只执行绘图操作(不要更新您的模型或修改您的组件的状态)。
  4. 每当你想画东西时,修改你的组件状态,然后调用 repaint()
  5. 要处理图层,您始终可以使用 JLayeredPane