2015-07-07 4 views
2

Для игры, которую я пишу в java, мне нужно открыть диалог при нажатии клавиши x на моей клавиатуре, а затем снова закрыть его, когда я снова нажимаю клавишу x. Проблема в том, что всякий раз, когда я нажимаю клавишу x, она показывает диалог на экране в течение миллисекунды, а затем снова исчезает. Я думаю, что это потому, что кажется, что ключ используется несколько раз, а не один раз. Есть ли способ убедиться, что мне действительно нужно освободить ключ, прежде чем я смогу снова выполнить действие, связанное с этим же ключом?Как проверить, была ли нажата клавиша много раз

Это то, что я использую для проверки нажатий на клавиши:

public class KeyManager implements KeyListener { 

    private boolean[] keys; 
    public boolean up, down, left, right, enter, x, c; 

    public KeyManager() { 
     keys = new boolean[256]; 
    } 

    public void tick() { 
     up = keys[KeyEvent.VK_W]; 
     down = keys[KeyEvent.VK_S]; 
     left = keys[KeyEvent.VK_A]; 
     right = keys[KeyEvent.VK_D]; 
     enter = keys[KeyEvent.VK_ENTER]; 
     x = keys[KeyEvent.VK_X]; 
     c = keys[KeyEvent.VK_C]; 
    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     keys[e.getKeyCode()] = true; 
     // System.out.println("Pressed"); 
    } 

    @Override 
    public void keyReleased(KeyEvent e) { 
     keys[e.getKeyCode()] = false; 
    } 

    @Override 
    public void keyTyped(KeyEvent e) { 

    } 
} 
+2

в 'Keypressed()' почему вы не просто поставить 'если (! Клавиши [e.getKeyCode()])' перед выполнением действия и настройки, булева? то есть. Выполняйте действие только в том случае, если клавиша не нажата –

ответ

Смежные вопросы