我有一个顺序过渡,我有一个滑块。滑块将用于更改顺序过渡的速度(在播放动画时)。但是,我不太确定该怎么做。我尝试使用滑块来更改动画的持续时间,但似乎无法使持续时间保持为0,因此动画甚至无法播放。
如果有人可以显示我的问题的简化示例,那就太好了。
谢谢。
编辑:
因此将滑块值绑定到rate属性可以使我有效地更改动画的速度。但是我希望我的Slider值从我尝试过的中间开始:
animationSpeedSlider = new Slider(1, 4, 2);
但是那没有用。我也尝试手动设置值,例如: animationSpeedSlider = new Slider(1、4、2); animationSpeedSlider.setValue(2);
这似乎也不起作用,在两种情况下,滑块值仍位于最左侧。
此外,我希望速度在最左边时不为0,这就是为什么我将下限设置为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();
}