我花了最后几天整理一个以Applet运行的游戏,但我也希望将它作为一个应用程序提供。
我已经尝试将applet放在一个框架中,但是这样做时我只得到一个黑屏(以及偶尔的菜单屏幕)。小程序仍在运行,声音仍在播放,但没有别的。
我不想分解代码并为独立应用程序重写它,因为它很耗时,但如果没有别的办法,那么我会做我必须做的事情。该程序有点复杂,因为“主”类(包含所有媒体信息,游戏相关事件等)是Applet类的扩展(包含KeyListener
,init()
事件, run()
事件等等)也许我只是想把错误的东西放在框架中?
这是游戏的src文件夹的链接。我已经尝试将AWPASG类和Game类放在一个框架中,并且看到两者都有相同的结果。
非常感谢任何帮助。
答案 0 :(得分:2)
那是因为你的班级设计不是很好。您已将所有内容捆绑在一起,分为两类,而不是至少将UI窗口小部件(面板等)与UI容器分开。
此外,您正在使用旧式AWT Applet和Panel。您应该使用新的Swing JApplet和JPanel(以及所有opthers JXxx组件)
简而言之,尝试将GUI构建(绘图)隔离到扩展JPanel(或包含JPanel)的类中。然后你可以有两个独立的启动类,一个将你的游戏JPanel放在一个JApplet中,另一个放入一个JFrame(因此你可以把它作为一个桌面应用程序启动)。
此外,您可能希望将GAME初始化逻辑与Applet初始化生命周期分开,您的游戏应该能够在不关心基础GUI技术的情况下进行初始化。