Java: KeyListener не работает - PullRequest
0 голосов
/ 28 ноября 2018

Я работаю над своей пустой игрой, и я начинаю добавлять к ней приключенческую сторону, но она не работает.У меня было там, где он мерцал и выключался, но когда я начал больше работать над ним, он начал не работать.

Вот код с резьбой:

thread = new Thread(this);
IH = new ImageHandler(this);
listener = new Listener(this);
removeEntity = new ArrayList<>();
addEntity = new HashMap<>();

frame = new JFrame("IDLE");
frame.add(this);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setResizable(false);
frame.setUndecorated(true);
frame.addWindowListener(listener);
frame.addMouseListener(listener);
frame.addMouseMotionListener(listener);
frame.addKeyListener(listener);
frame.pack();

Image bgBase = IH.getImg("background");

frame.setVisible(true);
WIDTH = frame.getWidth();
HEIGHT = frame.getHeight();

background = IH.getBG();
adv = new Adventures(this);
//Stuff here to load in the variables and entity data
start();

Итак, вот мой старт и остановка:

private synchronized void start() {
    thread.start();
}
public synchronized void stop() {
    save();
    frame.setVisible(false);
    try {
        thread.join();
    } catch(InterruptedException e) {
        e.printStackTrace();
    }
    System.exit(1);
}

А теперь мой класс "run" (из-за темы):

    public void run() {

    long lastTime = System.nanoTime();
    final double ns = 1000000000.0 / 60.0;//60 times per second
    double delta = 0;
    requestFocus();
    while(frame.isVisible()) {
        long now = System.nanoTime();
        delta = delta + ((now-lastTime) / ns);
        lastTime = now;
        while (delta >= 1)//Make sure update is only happening 60 times a second
        {
            //handles all of the logic restricted time
            update();
            delta--;
        }
        this.repaint();//displays to the screen unrestricted time
    }
}

Если вам нужно больше кода, пожалуйста, дайте мнезнаю!

1 Ответ

0 голосов
/ 28 ноября 2018

Пожалуйста, убедитесь, что вы на самом деле реализовали один из методов интерфейса, к которому обращается KeyListener.Я вижу объявление и привязку в вашем коде frame.addKeyListener(listener);, но должно быть что-то вроде keyPressed(KeyEvent e) метода.

...