我是Java(C#程序员)的新手,我遇到了一个我不明白的问题。抱歉蹩脚的英语。 =)
我正在开发一个简单的Snake游戏,我有不同的类,枚举等。我的问题是,如果我用Menu类中的游戏调用JFrame,它什么都不做。我可以通过代码调试,但它不会绘制任何东西。如果我从Main方法直接启动Game类,则没有问题。
我认为这是一个简单的错误,我只是愚蠢地看到它。
这里是代码:
鼠标事件:
else if (mouseX > 75 && mouseX < 175 && mouseY > 260
&& mouseY < 285) {
startGame();
菜单类中的startGame方法:
public void startGame(){
this.setVisible(false);
game = new Game();
}
游戏构造函数:
public Game() {
super("Snake V 0.1");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(940, 620);
setLocation(200, 200);
addKeyListener(keyListener);
setVisible(true);
//this.createBufferStrategy(2);
zeichnung.addFigur(new Field(0, 0));
snake = new Snake(40, 300, 1);
zeichnung.addFigur(snake);
zeichnung.addFigur(new Diamond());
this.getContentPane().add(jpanel);
this.repaint();
this.Intervall();
}
INTERVALL:
public void Intervall() {
while (true) {
try {
snake.direction = keyListener.getDirection();
zeichnung.checkCollision(snake);
snake.move();
this.repaint();
Thread.sleep(150);
} catch (InterruptedException e) {
// TODO: handle exception
}
}
}
正如我之前所说。如果我直接从Main方法启动游戏类(简单的游戏游戏=新游戏();)没有问题。
我希望我不会忘记任何重要信息。
答案 0 :(得分:1)
它在任何Swing GUI中根本不起作用。
Thread.sleep()杀死重画和聆听。
在此处查看最终帖子,例如问题
http://www.coderanch.com/t/600642/GUI/java/update-getGraphics
使用Swing Timer