无限循环如果暂停java游戏

无限循环如果暂停java游戏,java,Java,我有一部分代码: while(_running){ // render screens if( _input.escape) { if( isPaused ) { pauseDialog.setVisible(false); remuse(); // set isPaused = false, _running = true and render scre

我有一部分代码:

while(_running){
   // render screens 
     if( _input.escape) {
          if( isPaused ) {                  
                 pauseDialog.setVisible(false);
                 remuse(); // set isPaused = false, _running = true and render screens
           }
           else {
                 pause(); // set isPaused = true and _running = false and render screens                        
                 pauseDialog.setVisible(true);
          }
     }
}
像这样输入

public void keyPressed(KeyEvent e) {
    keys[e.getKeyCode()] = true;
}
@Override
public void keyReleased(KeyEvent e) {
    keys[e.getKeyCode()] = false;   
}
还有波塞迪亚洛

public class PauseDialog extends JDialog{
JButton b1,b2;
public PauseDialog() {
    setLayout(new GridLayout(2, 1,8,8));
    setSize(new Dimension(85, 180));
    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    b1 = new JButton("resume");
    b2 = new JButton("exit");

    b1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println("resume");               
        }
    });
    b2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println("exit");
        }
    });             
    add(b1); add(b2);
}

但若我在释放escape键时为pauseDialog设置VisibleTrue,变量_input.escape总是设置为true值,所以对话框会出现、消失并再次出现。。。就像一个无限循环。接下来我该怎么办?谢谢。

按下escape后,是否将input.escape设置为False

或者_input.escape是否需要为True才能暂停

如果是这样的话,那就意味着出了问题,因为你不需要按住Escape键来暂停游戏

看起来你需要一个好的逻辑系统,这样对话框就不会被多次触发


也许可以检查它是否已经触发并且不再触发?

按下时设置为true,释放时设置为false,我已经将冷却时间设置为调用的暂停代码的2倍之间。但不是working@BlackW-设置使其在按下时改变状态,而不是在按下时变为true,在释放时变为false…请尝试e.preventDefault中的keyPressed和keyReleased函数…并记录:b1和b2是非常糟糕的名称。使用能够告诉读者变量背后的内容的名称。将remuse更改为resume。另外,运行的是什么?你可以边写边写。