时间轴的stop()和jumpTo(“结束”)之间的区别

时间:2016-09-20 11:57:07

标签: animation javafx javafx-8

有人可以解释一下timeline.stop()timeline.jumpTo("end")之间的区别吗?

1 个答案:

答案 0 :(得分:1)

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")Button移动到动画的结束点,timeline.stop()停止其中Button的当前位置。