Java getKeyCode връща само 0 в keyPressed

Опитвам се да направя проста игра, която изисква движение. Единственият проблем е, че когато въвеждам ключ, всеки ключ връща keyCode от '0'. Прочетох малко около Stack Overflow и всички отговори, които намерих на моя въпрос, бяха да използвам KeyPressed вместо KeyTyped. Единственият проблем е, че използвам KeyPressed и всички клавиши все още връщат 0.

Моят код на KeyListener по-долу:

Sidenote: 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) {}
            });

Това най-вероятно ще бъде лесно решение, но нямам много опит в тази област на кодиране. Благодаря за всяка помощ.


person Dominic Simone    schedule 05.08.2015    source източник
comment
Ако вашият код е идентичен с примера, тогава не, не използвате keyPressed(). Копирайте кода си от keyTyped() там и вижте какво ще се случи.   -  person Dragondraikk    schedule 05.08.2015


Отговори (1)


Използвам KeyPressed и всички клавиши все още връщат 0.

Това е вашата реализация на манипулатора keyPressed:

@Override
public void keyPressed(KeyEvent e) {}

Изглежда очевидно.

person Marko Topolnik    schedule 05.08.2015