Я начинаю программировать на Java & Я делаю приложение, требующее, чтобы объект перемещался по сетке, заполненной квадратами. Объект должен перемещать только один квадрат за раз, и если пользователь хочет перейти на другой квадрат, он должен снова нажать клавишу. Мой метод шаг следующие:Как остановить объект от перемещения по нажатой клавише
public void move() {
x += dx;
y += dy;
}
Я использую интерфейс KeyListener для реализации Keypressed, keyTyped и keyReleased методы и у меня есть условия, как в фрагменте ниже внутри Keypressed
//KeyPressed
int c = e.getKeyCode();
if (c == KeyEvent.VK_UP) {
player.setDy(-5);
}
Этот позволяет объекту свободно перемещаться. Однако он будет продолжать двигаться, пока нажимается стрелка ВВЕРХ. Есть ли какой-либо способ, чтобы объект двигался вверх, произнося -5 один раз, а затем останавливался, даже если клавиша все еще нажата? Я не уверен, нужно ли мне изменить метод перемещения или методы KeyListener для этого. Надеюсь, что я был достаточно ясен по поводу того, что я прошу, и я был бы очень признателен за любые указания.
В то время как все еще правильный ответ, в нем отсутствуют основные части информации - вы можете включить примеры, которые показывают, как использовать keyReleased , например – specializt
Спасибо за ответ. Я пробовал это, но объект продолжает «навсегда» двигаться, не останавливаясь, как только выйдет ключ. – AmazingBergkamp