Для игры, которую я пишу в 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) {
}
}
в 'Keypressed()' почему вы не просто поставить 'если (! Клавиши [e.getKeyCode()])' перед выполнением действия и настройки, булева? то есть. Выполняйте действие только в том случае, если клавиша не нажата –