动画(时间轴)播放问题
Animation (timeline) playing issue
我已经创建了一个时间轴对象,它应该通过交替其可见属性使标签闪烁,但这不起作用。当您在我的代码示例中按下按钮时,时间线应该开始播放。谁能帮我解决这个问题?
@Override
public void start(Stage primaryStage) {
Label lbl = new Label("label");
Button btn = new Button("play");
btn.setOnAction(event -> {
//create timeline
KeyValue keyValue = new KeyValue(lbl.visibleProperty(), false);
KeyFrame keyFrame = new KeyFrame(Duration.seconds(0.5), keyValue);
Timeline timeline = new Timeline(keyFrame);
timeline.setCycleCount(6);
timeline.setAutoReverse(true);
timeline.play();
});
VBox pane = new VBox(lbl, btn);
pane.setAlignment(Pos.CENTER);
Scene sc = new Scene(pane, 200, 200);
primaryStage.setScene(sc);
primaryStage.show();
}
插值 Boolean
是有问题的,因为动画跳到最终结果,如果动画到达一个点,到最后的时间差非常小,它被认为是零。在这种情况下,这会导致问题。
你当然可以在这里使用 3 个 KeyFrame
,但更简单的方法是简单地使用 EventHandler
来否定每个 visible
属性执行时间:
btn.setOnAction(event -> {
// create timeline
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0.25), evt -> {
lbl.setVisible(!lbl.isVisible());
}));
timeline.setCycleCount(6);
timeline.play();
});
我已经创建了一个时间轴对象,它应该通过交替其可见属性使标签闪烁,但这不起作用。当您在我的代码示例中按下按钮时,时间线应该开始播放。谁能帮我解决这个问题?
@Override
public void start(Stage primaryStage) {
Label lbl = new Label("label");
Button btn = new Button("play");
btn.setOnAction(event -> {
//create timeline
KeyValue keyValue = new KeyValue(lbl.visibleProperty(), false);
KeyFrame keyFrame = new KeyFrame(Duration.seconds(0.5), keyValue);
Timeline timeline = new Timeline(keyFrame);
timeline.setCycleCount(6);
timeline.setAutoReverse(true);
timeline.play();
});
VBox pane = new VBox(lbl, btn);
pane.setAlignment(Pos.CENTER);
Scene sc = new Scene(pane, 200, 200);
primaryStage.setScene(sc);
primaryStage.show();
}
插值 Boolean
是有问题的,因为动画跳到最终结果,如果动画到达一个点,到最后的时间差非常小,它被认为是零。在这种情况下,这会导致问题。
你当然可以在这里使用 3 个 KeyFrame
,但更简单的方法是简单地使用 EventHandler
来否定每个 visible
属性执行时间:
btn.setOnAction(event -> {
// create timeline
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0.25), evt -> {
lbl.setVisible(!lbl.isVisible());
}));
timeline.setCycleCount(6);
timeline.play();
});