我一直在使用最新版本的Java Java 6在Eclipse中为学校作业进行战舰游戏,直到我意识到我需要为1.4.2 JRE提供兼容性。
我一直小心不要使用任何在1.4.2编译器中不可用的功能和库类,并且我的代码可以很好地编译。 问题在于游戏的背景图片无法正确渲染-仅渲染了左上角的一个小角。
供参考,以下是显示我的问题的屏幕截图:
Java 6运行时环境下的游戏渲染正确
1.4.2 JRE下仅渲染角
而且,当然,两个屏幕截图中的代码没有区别,只是运行时环境不同。
背景是在可见的JPanel上绘制的,并使用setContentPane()添加到JFrame中。 将图像加载到程序中没有错误。
我做了很多测试,发现我的输入处理程序只响应其中有图像的那个小角落的输入,这意味着我的JPanel不能填满整个屏幕-但是我已经仔细检查了一下它的大小,并且与JFrame的大小(800 x 600)相匹配。
这是我的渲染代码:
public void render() {
Graphics2D g = (Graphics2D) getGraphics();
Graphics2D gb = (Graphics2D) buffer.getGraphics();
gb.drawImage(background, 0, 0, null);
gb.setColor(new Color(45, 45, 45));
gb.setFont(new Font("Arial", Font.BOLD, 18));
gb.drawString("Outwit the computer. Are you up for the challenge?", 175, 185);
cont.draw(gb, contState);
//Draw buffer to screen
g.drawImage(buffer, 0, 0, null);
}
重复调用此方法以渲染游戏的框架。 它是JPanel类的一部分。
我几乎尝试了所有事情,这是我的不得已的方法。 这可能是较旧的运行时环境的错误吗? 任何见解将不胜感激!
非常感谢。 :)