0

我正在编写游戏代码;像这样的东西:http: //i.stack.imgur.com/HBrEE.png

我有一个名为 Canvas 的类,它扩展了 JLabel 并在 overriden 中paintComponent(),将网格线图像作为背景,然后绘制玩家和障碍物(墙壁)。

通过使用createGraphics(),我得到了一个 Graphics2D 对象。我也需要这个来画他们班上的武器和子弹。(如您所见,有几种武器会在特定的时间间隔内发射子弹。)

为了实现所有这些,我使用SwingUtilities.invokeLater()我在 Canvas 类中绘制网格线、播放器和墙壁。我想为每个武器和每个子弹创建一个线程;我知道,这是一种矫枉过正,但由于我是多线程的新手,所以我没有其他想法!

另一个问题是 Graphics2D 对象:我需要在线程之间共享这个对象,所以我想到了使用final关键字;但这是不可能的,因为 Graphics2D 对象的值将在paintComponent().

提前感谢您提供的任何帮助。

4

1 回答 1

3

您永远不应该使用多线程渲染线程(至少在 99% 的情况下)。大多数图形程序将完整的场景状态保存在某个对象树中,只有一个线程每隔一段时间(1/60 秒)渲染一次。渲染线程遍历渲染树中的每个对象并调用 .paint 或任何其他将获取要绘制的对象的方法。冲洗并重复,你就完成了。

于 2013-08-02T15:51:55.253 回答