当前位置: 首页 > 知识库问答 >
问题:

暂停AnimationTimer JavaFX

贾实
2023-03-14

我现在正在用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();
                }

            }
        }
    });

共有1个答案

东郭存
2023-03-14

您使用的是连续的if语句,其中如果第一个语句执行,那么第二个语句也将执行,没有异常。看一下您的代码:

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

pause为false时,执行第一个if块,该块将pause设置为true,并启动计时器。这使得第二个if块的条件计算为true,从而将pause设置为false,并停止计时器。换句话说,你开始然后立即停止计时器。注pause的初始值是多少并不重要,因为在上述代码至少运行一次之后,pause将为false(因为有第二个if块)。

由于布尔值只有两种可能的状态,并且您希望在这两种状态之间切换,所以只需使用一个简单的if-else:

if (paused) {
  paused = false;
  timer.start();
} else {
  paused = true;
  timer.stop();
}
 类似资料:
  • 暂停脚本的当前线程。 #p::Pause ; 按一次 Win+P 会暂停脚本. 再按一次则取消暂停. Pause [, On|Off|Toggle, OperateOnUnderlyingThread?] 参数 On|Off|Toggle 如果为空或省略, 则它默认为 Toggle. 否则, 请指定下列单词的其中一个: Toggle:如果在当前线程下的潜在线程处于运行状态,则暂停当前线程,否则让潜

  • 1.若要暂停训练,请按下该按钮。显示暂停。若要继续训练,请点击绿色箭头图标。 2.若要停止训练,在记录训练期间或处于暂停模式时长按该按钮三秒钟,直至计数器清零。或者您可以点击并按住显示屏上的红色停止按钮。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。

  • 若要暂停训练 长按正面按钮 或 在训练视图中向右滑动,找出并轻触暂停图标。 通过向左滑动您可以在暂停模式中看到训练总结。 恢复暂停的训练 轻触绿色箭头图标。 停止训练 在训练期间或在暂停模式中,长按正面按钮直至绿色计时器一直倒数。 或 在暂停模式中,轻触并按住红色停止图标可结束记录。

  • 1.若要暂停训练,请按“返回”按钮。显示“记录已暂停”。若要继续训练,请按“开始”。 2.若要停止训练,在训练记录或处于暂停模式时长按“返回”按钮三秒钟,直到显示“记录已结束”。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。

  • 可能会有暂停应用的需求,那这里给做了一个。 实现非常简单,就是对容器的启动使用做了一个Sleep 当然还有另一种方案是将 replace 设置为 0

  • 按下“返回”,暂停您的训练课。 要继续训练,请按“确定”。要停止训练课,长按 BACK(返回)。停止训练后,会立即从手表上获得训练总结。 如果在暂停后停止训练课,则暂停后经过的时间不包括在总训练时间内。