JavaFX 时间线周期监听器

Hau*_*uke 1 javafx

有没有办法在下一轮循环开始时获取信息?时间线的 onFinish 方法不适用于无限循环。

我唯一的想法是使用 currentTimeProperty 并检查值是否增加或减少。

感谢您的帮助豪克

fab*_*ian 5

将事件处理程序添加到最后一个KeyFrame(或修改现有的)以在Timeline动画重新启动时运行事件,例如更改

Timeline timeline = new Timeline(
        new KeyFrame(Duration.ZERO, new KeyValue(node.translateXProperty(), 0)),
        new KeyFrame(Duration.seconds(1), new KeyValue(node.translateXProperty(), 300))
);

timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
Run Code Online (Sandbox Code Playgroud)

Timeline timeline = new Timeline(
        new KeyFrame(Duration.ZERO, new KeyValue(node.translateXProperty(), 0)),
        new KeyFrame(Duration.seconds(1), evt -> System.out.println("finished"), new KeyValue(node.translateXProperty(), 300))
);

...
Run Code Online (Sandbox Code Playgroud)

"finished"在每个周期后打印。