Animation 时间线与x27之间的差异;s停止()并跳到(“结束”)

Animation 时间线与x27之间的差异;s停止()并跳到(“结束”),animation,javafx,javafx-8,Animation,Javafx,Javafx 8,有人能给我解释一下timeline.stop()和timeline.jumpTo(“end”)之间的区别吗?timeline.stop()停止动画,并确保timeline.play()从动画开始就开始;“当前运行”不再进行更新 timeline.jumpTo(“end”)转到位于动画末尾的标记“end”。这与timeline.jumpTo(timeline.getTotalDuration())的效果相同。此时到达的动画的任何效果都将被执行 您可以在以下示例中观察不同的行为: @Override

有人能给我解释一下
timeline.stop()
timeline.jumpTo(“end”)
之间的区别吗?

timeline.stop()
停止动画,并确保
timeline.play()
从动画开始就开始;“当前运行”不再进行更新

timeline.jumpTo(“end”)
转到位于动画末尾的标记
“end”
。这与
timeline.jumpTo(timeline.getTotalDuration())
的效果相同。此时到达的动画的任何效果都将被执行

您可以在以下示例中观察不同的行为:

@Override
public void start(Stage primaryStage) {
    Button btn = new Button("Play / (Stop/Jump)");

    Timeline timeline = new Timeline(
            new KeyFrame(Duration.ZERO, new KeyValue(btn.translateXProperty(), 0d)),
            new KeyFrame(Duration.seconds(10), new KeyValue(btn.translateXProperty(), 200d))
    );

    btn.setOnAction((ActionEvent event) -> {
        if (timeline.getStatus() == Animation.Status.RUNNING) {
//            timeline.jumpTo("end");
            timeline.stop();
        } else {
            timeline.play();
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 400, 400);

    primaryStage.setScene(scene);
    primaryStage.show();
}
timeline.jumpTo(“end”)
按钮移动到动画的终点,
timeline.stop()
按钮停止在当前位置