Неисправность, ограничивающая границы движения для спрайта, управляемого клавиатурой в Java - PullRequest
0 голосов
/ 13 января 2019

У меня есть графическое изображение, которое я закодировал для перемещения при нажатии клавиш со стрелками на клавиатуре. Я хочу, чтобы он двигался, только если он находится в определенной области графического интерфейса.

Что я пробовал:

public void keyPressed(KeyEvent e)
{
    int key = e.getKeyCode();
    if(key==KeyEvent.VK_UP && y > 42)
    {
        up();
    }
}

Целое число "y" - это координата y изображения. Я думал, что если это условие не будет выполнено, функция up () не будет вызвана. Это сработало, но только если я отпустил клавишу «вверх» в пределах ограниченной области, где у <42. Если бы я попытался использовать стрелку вверх, изображение не двигалось бы. Тем не менее, если я удерживая стрелку вверх, не отпуская ее, она будет просто проходить через границу. </p>

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

Любая помощь будет оценена.

...