Я пытаюсь сделать простую игру, которая требует движения. Единственная проблема заключается в том, что когда я набираю клавишу, каждая клавиша возвращает keyCode «0». Я немного прочитал о переполнении стека, и все ответы, которые я нашел на свой вопрос, заключались в том, чтобы использовать KeyPressed вместо KeyTyped. Единственная проблема в том, что я использую KeyPressed, и все ключи по-прежнему возвращают 0.
Мой код KeyListener ниже:
Примечание: print(bool) = System.out.print(bool), мне надоело все это писать.
frame.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W) {up = true; print(up);}
if(e.getKeyCode() == KeyEvent.VK_A) {left = true; print(left);}
if(e.getKeyCode() == KeyEvent.VK_S) {down = true; print(down);}
if(e.getKeyCode() == KeyEvent.VK_D) {right = true; print(right);}
System.out.println("Pressed " + e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W) {up = false;}
if(e.getKeyCode() == KeyEvent.VK_A) {left = false;}
if(e.getKeyCode() == KeyEvent.VK_S) {down = false;}
if(e.getKeyCode() == KeyEvent.VK_D) {right = false;}
//System.out.println("Released " + e.getKeyChar());
}
@Override
public void keyPressed(KeyEvent e) {}
});
Это, скорее всего, будет простым решением, но я не очень разбираюсь в этой области кодирования. Спасибо за любую помощь.
keyPressed()
. Скопируйте туда свой код изkeyTyped()
и посмотрите, что получится. - person Dragondraikk   schedule 05.08.2015