我遇到的问题是每次按下“单人游戏”按钮,启动Snake游戏时,GameTimer类的新实例初始化,问题是当我点击“返回”按钮时stopTimer方法无法取消或停止计时器,它只是忽略它。计时器功能运行良好,但它非常无效,简单地说是愚蠢的。
问题:stopTimer()方法不会取消计时器。
这是我在github上的项目: https://github.com/AquaSolid/JavaFX_Snake/blob/master/src/Snake/GameTimer.java
...code omitted..
public void stopTimer() {
timerTask.cancel();
timer.cancel();
timer.purge();
isActive = false;
} ...code omitted..
答案 0 :(得分:2)
您的代码完美无缺。但是:
在某些情况下会产生NullPointerException:
Stage stage = (Stage) buttonBackToMenu.getScene().getWindow();
这将有效:
Node target = (Node) event.getTarget();
Stage stage = (Stage) target.getScene().getWindow();
P.S。如果你愿意,我可以将固定版本上传到Git。