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