当按下两次时,如何使我的Escape键暂停并恢复游戏?我试过在我的线程类中调用键适配器类,但它只是暂停游戏;它没有恢复它。
以下是暂停游戏的代码:
//the thread class
class recMove extends Thread {
JFrame b;
public boolean running=true;
//public boolean gameover=false;
public recMove(JFrame b){
this.b=b;
pauseGame();
}
public void run(){
while(running){
b.repaint();
try {
Thread.sleep(100);
} catch(InterruptedException e){}
}
}
public void pauseGame(){
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
int keyCode=e.getKeyCode();
if(keyCode==KeyEvent.VK_ESCAPE) {
running=false;
System.out.println("escape pressed");
}
if(keyCode==KeyEvent.VK_END){
System.exit(0);
}
}
});
}
}
答案 0 :(得分:0)
它没有恢复,因为线程被杀死,当你按下转义时,running
值设置为false
因此循环:
while(running){
b.repaint();
try {
Thread.sleep(100);
} catch(InterruptedException e){}
}
将结束,这反过来会使run()
方法退出。当一个run()
类扩展Thread
(或实现Runnable
)的方法退出时,该线程正在被杀死,因此无需再听你的按键了。
您需要更改run()
逻辑,以便在running
设置为false
时不退出,而是等待下一次按键或将侦听器添加到其他位置(在另一个线程中)所以它将再次与游戏创建一个新线程。
此外,您的逻辑esc
只会将running
更改为false,如果您希望它恢复游戏,则应检查running
的状态以及是否false
{ {1}}您应该将其设置为true
。