我需要做一个动作,而动画就在那里。就像我的矩形在Y轴上旋转180度一样。我需要它在90度完成时改变颜色,并在完成180度时使文本可见。
我被告知使用时间轴并将事件处理程序添加到相关的关键帧,但我真的不知道如何。
public void open() {
RotateTransition trans = new RotateTransition(Duration.seconds(1), rec);
trans.setOnFinished(event -> {
text.setVisible(true);
rec.setFill(Color.WHITE);
});
trans.play();
}
答案 0 :(得分:1)
Timeline
允许您为属性设置动画以及在给定时间触发事件。在下面的示例中,矩形的rotate
属性从0到180动画,使用2 KeyFrame
s进行初始旋转和最终旋转值(第一个不需要,除非您想要反转动画或多次播放动画等;在这种情况下,颜色需要更多的工作)。其他KeyFrame
会触发EventHandler<ActionEvent>
,从而更改fill
的{{1}}:
Rectangle
如果您需要指定一个支点,您还可以将Rotate
transform应用于Rectangle rec = new Rectangle(50, 50, 50, 50);
Duration rotateDuration = Duration.seconds(5);
Timeline timeline = new Timeline(
new KeyFrame(Duration.ZERO, new KeyValue(rec.rotateProperty(), 0)), // initial rotate
new KeyFrame(rotateDuration.divide(2), evt -> {
// event for halfway through
rec.setFill(Color.RED);
}),
new KeyFrame(rotateDuration, new KeyValue(rec.rotateProperty(), 180)) // end value of rotate
);
timeline.play();
并为其Node
属性设置动画:
angle