Есть ли что-то, чего мне не хватает в разделе моего ключевого слушателя/ключевого события, что препятствует перемещению спрайта в Java

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

Я пытался изменить коды клавиш (VK_RIGHT и т. д.), но ни одно из изменений, похоже, не повлияло на него и не заставило его работать. Я использую рабочее пространство eclipse, поэтому я не уверен, что это может быть так.

Страница игры

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_D) player.right = true;
    if (e.getKeyCode() == KeyEvent.VK_A) player.left = true;
    if (e.getKeyCode() == KeyEvent.VK_W) player.up = true;
    if (e.getKeyCode() == KeyEvent.VK_S) player.down = true;

Страница игрока

public boolean right,left,up,down;
private int speed = 4;

public Player(int x,int y) {
    setBounds(x,y,32,32);
}
public void tick() {
    if (right)x+=speed;
    if (left)x-=speed;
    if (up)y-=speed;
    if (down)y+=speed;
}    

Я ожидаю, что игрок будет двигаться по экрану в направлении, соответствующем направлению нажатия клавиши, но ничего не происходит, и он вообще не движется

Вы когда-нибудь устанавливали поля left, right, up, down в false?

Maurice Perry 29.01.2019 11:36

Ваш класс реализует этот интерфейс public interface KeyListener

Prashant Zombade 29.01.2019 11:37

Вы вызываете тик ()?

JoschJava 29.01.2019 11:38

Изменение ваших переменных недостаточно. Вам нужно будет перерисовать «экранный мир», чтобы отразить новое изменение состояния игры / значения переменных.

nullPointer 29.01.2019 11:38

Когда вы устанавливаете один на true, вам нужно установить 3 других на false

azro 29.01.2019 11:39

Я попытался установить их в false, и ничего не изменилось, я попытался вызвать тик, но он сказал, что в игре не может быть 2 экземпляров тика, и установка остальных 3 в false ничего не меняет.

T. Bradshaw 29.01.2019 12:37

Также что подразумевается под перерисовкой "экранного мира"

T. Bradshaw 29.01.2019 12:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
7
39
0

Другие вопросы по теме