通过Slider Java FX更改顺序过渡的速度

时间:2019-01-20 11:43:00

标签: java javafx

我有一个顺序过渡,我有一个滑块。滑块将用于更改顺序过渡的速度(在播放动画时)。但是,我不太确定该怎么做。我尝试使用滑块来更改动画的持续时间,但似乎无法使持续时间保持为0,因此动画甚至无法播放。

如果有人可以显示我的问题的简化示例,那就太好了。

谢谢。

编辑:

因此将滑块值绑定到rate属性可以使我有效地更改动画的速度。但是我希望我的Slider值从我尝试过的中间开始:

animationSpeedSlider = new Slider(1, 4, 2);

但是那没有用。我也尝试手动设置值,例如:     animationSpeedSlider = new Slider(1、4、2);     animationSpeedSlider.setValue(2);

这似乎也不起作用,在两种情况下,滑块值仍位于最左侧。

此外,我希望速度在最左边时不为0,这就是为什么我将下限设置为1,但它似乎仍会停止动画的原因。

1 个答案:

答案 0 :(得分:1)

在不停止动画的情况下调整动画速度的唯一方法是通过rate属性:动画的循环持续时间由rate属性的值确定有效循环持续时间

示例

@Override
public void start(Stage stage) throws Exception {
    Duration d = Duration.seconds(1);

    Rectangle rect = new Rectangle(50, 50);
    TranslateTransition t1 = new TranslateTransition(d, rect);
    t1.setToX(350);
    TranslateTransition t2 = new TranslateTransition(d, rect);
    t2.setToY(350);
    TranslateTransition t3 = new TranslateTransition(d, rect);
    t3.setToX(0);
    TranslateTransition t4 = new TranslateTransition(d, rect);
    t4.setToY(0);

    SequentialTransition transition = new SequentialTransition(t1, t2, t3, t4);
    transition.setCycleCount(Animation.INDEFINITE);
    transition.play();

    Pane pane = new Pane(rect);
    pane.setPrefSize(400, 400);

    Slider slider = new Slider(0.1, 4, 1);
    transition.rateProperty().bind(slider.valueProperty());

    stage.setScene(new Scene(new VBox(slider, pane)));
    stage.show();
}