Member 14719776 Ответов: 1

Как заблокировать удержание ключа


Привет, у меня есть небольшая проблема, потому что я хочу, чтобы мой прямоугольник прыгал только один раз, когда я нажимаю пробел, но не повторяется, когда я держу эту клавишу

Что я уже пробовал:

@Override
public void keyPressed(KeyEvent e) {

    if(e.getKeyCode() == KeyEvent.VK_SPACE) {
        jump();
    }
}

public void jump() {

    if(started) {

        if (yMotion > 0) {
            yMotion = 0;
        }
        yMotion -= 20;
    }
}

1 Ответов

Рейтинг:
12

Wendelius

Почему бы не использовать keyReleased[^]

Другим вариантом было бы использовать оба keyPressed и keyReleased и если вы уже прыгнули после нажатия клавиши, вы не будете прыгать снова. В псевдокоде что-то вроде

@Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_SPACE && jumpOk) {
            jump();
            jumpOk=false;
        }
    }
....
<pre>@Override
    public void keyReleased(KeyEvent e) {
       jumpOk=true;
    }


Просто не забудьте инициализировать jumpOk переменная принимает значение true при запуске этой части программы