问题描述
switch(arg0.getKeyCode()) {
//if keycode is 'd' key
case 68:
break;
case 65:
System.out.println("stuff for left key using a");
break;
case 87:
shark.MoveUp();
break;
case 38:
shark.MoveUp();
break;
case 82:
new Game();
break;
}
所以 Game 是类的名称。这不是 JFrame。当我尝试调用 jframe 时,它无法识别它。当我按“R”时,它会创建一个新游戏,但不会摆脱旧游戏。当旧游戏在后台运行时,新游戏由于滞后而无法播放。如何删除正在运行的旧游戏并只运行我在 case 82 中启动的新游戏?
解决方法
我强烈建议在旧游戏上使用 JFrame.dispose(),只要它扩展 JFrame。如果没有,您可以向 Game 类添加一个方法来处理它包含的 JFrame。这样的方法看起来像这样:
JFrame frame = new JFrame("game");//Lets assume thats your frame in Game
//that should be your method inside of Game class:
public void gameDispose(){
if(frame != null)
frame.dispose();
}
现在您可能遇到的唯一问题是无法调用此 dispose 方法,因为您的游戏不在变量内。因此,当创建游戏时,它应该发生在一个变量内,如下所示:
Game g = new Game();//Just for understaning of g variable.
稍后需要时调用您的方法。
因此,您的代码应如下所示:
Game g = new Game();
switch(arg0.getKeyCode()) {
//if keycode is 'd' key
case 68:
break;
case 65:
System.out.println("stuff for left key using a");
break;
case 87:
shark.MoveUp();
break;
case 38:
shark.MoveUp();
break;
case 82:
g.dispose().
g = new Game()
break;
}