我一直在使用最新版本的Java Java 6在Eclipse中为学校作业进行战舰游戏,直到我意识到我需要为1.4.2 JRE提供兼容性。
我一直小心不要使用任何在1.4.2编译器中不可用的功能和库类,并且我的代码可以很好地编译。问题在于游戏的背景图片无法正确渲染-仅渲染了左上角的一个小角。
供参考,以下是显示我的问题的屏幕截图:
Java 6运行时环境下的游戏渲染正确
Image Link (I can't embed them yet.)
1.4.2 JRE下仅渲染角
Image Link (I can't embed them yet.)
而且,当然,两个屏幕截图中的代码没有区别,只是运行时环境不同。
背景绘制在可见的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类的一部分。
我几乎尝试了所有事情,这是我的不得已的方法。这可能是较旧的运行时环境的错误吗?任何见识将不胜感激!
非常感谢。 :)
最佳答案
看一下这篇文章:http://java.sun.com/products/jfc/tsc/articles/painting/#mgr
我认为您需要查看脏区并告诉程序在哪里重绘,而不是假设它知道正在发生什么。