【问题标题】:Pause AnimationTimer JavaFX暂停动画定时器 JavaFX
【发布时间】:2020-01-02 00:26:15
【问题描述】:

我现在正在使用 JavaFX 制作游戏。我只是想知道如何暂停动画计时器。我按键盘上的一个键,计时器暂停,如果再次按下它将恢复。有可能这样做吗?提前致谢。

之后我尝试过再次使用 timer.stop() 和 timer.start(),但计时器只会停止并且永远不会再次启动。

gameScene.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {

        @Override
        public void handle(KeyEvent t) {
            if(t.getCode()== KeyCode.ESCAPE)
            {
                if(!pause){
                    pause = true;
                    timer.start();
                }
                if(pause){
                    pause = false;
                    timer.stop();
                }

            }
        }
    });

【问题讨论】:

标签: animation javafx


【解决方案1】:

您正在使用连续的if 语句,如果第一个语句执行,那么第二个语句 执行,没有例外。看看你的代码:

if(!pause){
    pause = true;
    timer.start();
}
if(pause){
    pause = false;
    timer.stop();
}

pause 为假时,将执行第一个if 块,将pause 设置为真并启动计时器。这使得第二个if 块的条件评估为真,这导致pause 被设置回假并停止计时器。换句话说,您正在启动然后立即停止计时器。请注意,pause 的初始值是多少并不重要,因为在上述代码至少运行一次后,pause 将为 false(因为第二个 if 块)。

由于布尔值只有两种可能的状态,并且您想在两者之间切换,只需使用简单的 if-else:

if (paused) {
  paused = false;
  timer.start();
} else {
  paused = true;
  timer.stop();
}

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2016-03-28
    • 2013-11-25
    相关资源
    最近更新 更多