我用 Java 制作了一个游戏,当我在 Eclipse 中运行它时没有任何问题。一切看起来都很棒,并且有效地完成了(至少在我想出其他事情之前)。所以我一直试图把它放在我的网站上,但是每当我在浏览器中运行游戏时,我只会得到一个白屏,尽管检查 Java 控制台没有显示任何错误。我已经设法将问题缩小到屏幕的绘画。我有一个计时器,它运行游戏并让事情发生。最后,它调用 repaint() 方法。在 Eclipse 中,这工作正常,但在浏览器中,什么也没有发生。
这是相关代码(所有这些都在名为 FinalProject 的主类中):
public class FinalProject extends JApplet implements ActionListener,
KeyListener, MouseListener, MouseMotionListener {
public void init(){
//...initialize program
System.out.println("game started");
}
/**
* A method called every so often by a timer to control the game world.
* Mainly calls other functions to control objects directly, but this
* is used as the only timer, which also calls repaint() at it's end.
*/
private void runGame(){
//...Run game and do important stuff
//This Draws The Screen
System.out.println("about to paint");
repaint();
}
public void paint(Graphics g){
System.out.println("painting");
//...paint screen
}
public void update(Graphics gr){
System.out.println("updating");
paint(gr);
}
}
runGame() 由计时器调用。在 Eclipse 中的输出是:
游戏开始
绘画
绘画
即将绘画
绘画
即将绘画
绘画
即将绘画
绘画
...
在浏览器中执行此操作时(直接在我的机器上脱机运行。所有浏览器也有同样的问题),控制台显示:
...(加载内容)
游戏已启动
基本:Applet 已初始化
基本:启动小程序
基本:已完成性能汇总
基本:小程序可见
基本:小程序启动
基本:告诉客户小程序开始
即将绘画
即将绘画
即将绘画
...
我不知道此时还能尝试什么。尽管我很努力,但我仍然不完全理解 repaint() 的作用,我所知道的是它最终调用了 update() 和 paint()。除了浏览器中似乎没有发生这种情况。我正在使用带有 Java 版本 7 Update 5 的 Windows 7 64x。在此先感谢您的帮助。