gpt4 book ai didi

java - 多线程程序中的Swing图形

转载 作者:行者123 更新时间:2023-12-01 23:40:32 25 4
gpt4 key购买 nike

我正在编写一个游戏;像这样的:/image/HBrEE.png

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

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

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

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

预先感谢您提供的任何帮助。

最佳答案

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

关于java - 多线程程序中的Swing图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com