我正在使用Java + Swing创建一个简单的迷宫游戏。游戏在屏幕上绘制一个随机迷宫,在中间放置一个图形,然后玩家应该通过用箭头键移动图形找到出路。至于现在,我使用普通的背景并使用Graphics.drawLine()绘制迷宫的墙壁。我在.gif文件中有一张自定义的图片图片,我将其作为BufferedImage对象加载。
然而,我希望玩家一次只能看到迷宫的一部分,并且当玩家四处移动时,屏幕应该遵循游戏中的数字。我打算通过创建整个迷宫的Image对象来创建它,然后围绕图形的当前位置“切割”一个方块并使用Graphics.drawImage()显示它。我是Swing的新手,我无法弄清楚如何在迷宫的“上方”不同位置绘制图形而不重绘整个事物。我应该将哪个容器/组件用于迷宫,然后用于实现这个目标?
答案 0 :(得分:3)
我无法弄清楚如何绘制 在“上方”的不同位置的数字 迷宫没有重绘 整件事。
使用包含图标的JLabel。然后你只需使用label.setLocation()来移动图像。 Swing很聪明,可以重新绘制旧区域(图像所在的位置),然后在新位置绘制图像。
您应该可以使用单个JPanel执行此操作。您自定义的面板绘画将绘制迷宫。作为子组件添加的标签将绘制在迷宫的顶部。
查看此posting的最后一个条目,其中包含构建迷宫的有趣方法,并且还支持在玩家移动时滚动迷宫。
答案 1 :(得分:2)
我认为玻璃窗格是您正在寻找的组件:它是放在框架上的一种玻璃。你在它上面绘制的所有内容都将覆盖背后的内容..所以你可以轻松实现效果,而不必担心剪切原始图像..请参阅here!
答案 2 :(得分:1)
您可以查看JLayeredPane
,How to Use Layered Panes和此question中讨论的内容。{/ p>