Задержка ввода Java KeyBindings

1

Я не был уверен, как сформулировать название этого вопроса. В основном я делаю космических захватчиков с JFrames и использую KeyBindings для ввода с клавиатуры. Функциональные клавиши отлично работают, и я могу перемещать корабль без проблем. Однако, если я удерживаю ключ, корабль перемещается на 5 пикселей, а затем останавливается примерно на полсекунды, после чего он плавно перемещается. Когда клавиша нажата, мой код увеличивает скорость судна (который перемещает корабль на 5-10 пикселей за каждый кадр). Я предполагаю, что это обычное и нормальное поведение ввода с клавиатуры, но я хочу, чтобы корабль двигался последовательно плавно. Есть ли способ достичь этого?

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

Теги:
swing
keyboard-events
key-bindings

1 ответ

5
Лучший ответ

Задержка зависит от ОС. Каждая ОС определяет свою собственную "частоту повторения" для генерации событий при удерживании ключа.

Секрет состоит в том, чтобы запустить таймер Swing при нажатии клавиши, а затем использовать таймер для создания событий для анимации и затем остановить таймер при отпускании клавиши. Таким образом, вы можете управлять интервалом анимации, независимым от ОС.

Проверьте движение с помощью клавиатуры. Код примера KeyboardAnimation показывает один из способов сделать это.

  • 0
    Как раз то, что я искал. Большое спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню