Я пытаюсь сделать эту игру, в которой значок изображения перемещается по экрану в зависимости от ввода с клавиш со стрелками. Я начал с использования Key Listeners, который работал нормально, но чтобы избежать будущих проблем с фокусировкой и удобством сопровождения, я решил попробовать связывание клавиш, потому что каждый рекомендует использовать связывание клавиш поверх слушателей. Однако я обнаружил, что прослушиватели клавиш обеспечивают плавное непрерывное движение, а привязки клавиш создают неровную анимацию, в которой можно увидеть, как спрайт мгновенно перемещается из одной позиции в заданный интервал пикселей в некотором направлении. Я делаю что-то неправильно? Стоит ли просто прислушиваться к слушателям?
Мой код для привязки клавиш (только для перемещения вправо):
im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, false), "right");
am = this.getActionMap();
am.put("right", new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
if(x != 440)
{
x+=1;
repaint();
}
}
});
}