这是一个最近困扰我的话题。
在JFrame中创建游戏时,如果要使用paintComponent()
方法将图形添加到JPanel,您将如何为游戏提供不同的阶段?哪个最适合表现?
我能想到的两种方式是:
paintComponent()
- 方法和计时器的面板。一个不同的面板将用于游戏的每个阶段(等级等)。paintComponent()
- 方法中,请使用if语句表示if(gameover)
,然后为此阶段的游戏绘制图形。 还有其他更好的方法吗?
答案 0 :(得分:16)
“放弃所有希望,你们[通过Swing创造游戏]进入!”
要回答你的问题,JPanels只是一个可以画画的表面,比如黑板或纸张。它们与阶段无关,或者除了可以绘制的东西之外的任何其他东西,以及其他子组件的容器。
为了解决游戏特定的问题,我建议你不要浪费时间使用Swing组件来构建游戏界面。虽然可能,但是你会遇到一堆性能问题,这会耗费你的时间。基于你的问题,你已经在考虑像计时器那样的低级别事情来安排事情,并覆盖paintComponent()
方法 - 这是一个非常常见的错误,也是许多失败的项目花费时间寻找的道路这不是最好的方式。
如果您的问题确实是您可以看到的森林中的路径,您会注意到这些事情:
相反,使用类似Slick2D(适用于2D游戏)或jMonkeyEngine之类的3D shtuff。这些库专为设计用于构建游戏,并且可以帮助您免于重新发明众所周知的轮子,只是为了让您的游戏继续进行。他们还有自己的社区,可以帮助您解决特定于图书馆的问题。
最重要的是,他们已经解决了一些最棘手的跨平台问题,比如处理各种版本的OpenGL,以及其他技术细节,我敢打赌你在最后时并不关心这些细节。那一天,你真正想要的是,“嘿,只要给我一个[任意分辨率],图形加速的表面来画画,不要让它变得复杂!”