在简单的 Java Swing 游戏中使用哪些容器/图形组件?
Posted
技术标签:
【中文标题】在简单的 Java Swing 游戏中使用哪些容器/图形组件?【英文标题】:Which containers / graphics components to use in a simple Java Swing game? 【发布时间】:2011-02-04 00:56:00 【问题描述】:我正在用 Java + Swing 创建一个简单的迷宫游戏。游戏在屏幕上绘制一个随机的迷宫,在中间放置一个人物,然后玩家应该通过箭头键移动人物来找到出路。至于现在,我使用纯色背景并使用 Graphics.drawLine() 绘制迷宫的墙壁。我在 .gif 文件中有一个图形的自定义图片,我将其作为 BufferedImage 对象加载。
但是,我希望玩家一次只能看到迷宫的一部分,并且随着玩家四处移动,屏幕应该跟随游戏中的图形。我计划通过在创建整个迷宫时创建整个迷宫的 Image 对象来做到这一点,然后在图形的当前位置周围“切割”一个正方形并使用 Graphics.drawImage() 显示它。不过,我是 Swing 的新手,我不知道如何在不重绘整个东西的情况下在迷宫“上方”的不同位置绘制图形。我应该为迷宫使用哪个容器/组件,然后为图形使用哪个容器/组件来实现这一点?
【问题讨论】:
当您说“屏幕应该跟随图形”时,您的意思是播放器始终居中吗?玩家可以只看到他们所在的迷宫部分,还是可以看到他们之前探索过的区域? 我的意思是玩家总是居中。玩家可以在他们周围看到一个特定大小的正方形,即有一个可见区域的正方形,始终聚焦在玩家身上。 【参考方案1】:我不知道怎么画 图在“上方”的不同位置 没有重绘的迷宫 整件事。
使用包含图标的 JLabel。然后你只需使用 label.setLocation() 来移动图像。 Swing 足够聪明,可以重新绘制旧区域(图像所在的位置),然后在新位置绘制图像。
您应该能够使用单个 JPanel 来执行此操作。您对面板的自定义绘画将绘制迷宫。作为子组件添加的标签将绘制在迷宫顶部。
查看posting 的最后一个条目,其中包含构建迷宫的有趣方法,它还支持在玩家移动时滚动迷宫。
【讨论】:
【参考方案2】:我认为 玻璃窗格 是您正在寻找的组件:它是一种放置在框架上的玻璃。您在其上绘制的所有内容都会覆盖其背后的内容。因此您可以轻松实现效果,而无需担心剪切原始图像。请参阅here!
【讨论】:
【参考方案3】:您可以查看JLayeredPane
,在How to Use Layered Panes 和此question 中讨论。
【讨论】:
以上是关于在简单的 Java Swing 游戏中使用哪些容器/图形组件?的主要内容,如果未能解决你的问题,请参考以下文章