Застрял на использовании Java Swing Timer - PullRequest
0 голосов
/ 09 апреля 2020

Я создал небольшой прямоугольник на холсте, который находится на JFrame. Я сделал урок синглом (я знаю, что некоторые из вас скажут, что это плохая практика, но я в порядке). В настоящее время я просто использую метод repaint () всякий раз, когда нажимается клавиша со стрелкой. Однако сейчас я смотрю на создание игры l oop с таймером свинга.

Я создал класс с именем «GameL oop. java» и добавил следующий код.

public class GameLoop implements ActionListener {


    Timer timer = new Timer(10, this);

    public void actionPerformed(ActionEvent e) {

        timer.start();
        GameCanvas.getInstance().repaint();

    }
}

Это, однако, ничего не делает на экране при нажатии стрелки , Я что-то упускаю / делаю неправильно?

1 Ответ

1 голос
/ 09 апреля 2020

actionPerformed(ActionEvent e) вызывается только после , таймер запускается, поэтому его нельзя использовать для запуска таймера. Вы должны начать это в другом месте. Например:

public class GameLoop implements ActionListener {

    GameLoop() {
        Timer timer = new Timer(10, this);
        timer.start();
    }

    public void actionPerformed(ActionEvent e) {
        GameCanvas.getInstance().repaint();
    }
}
...