gpt4 book ai didi

JavaFX - 我是否误解了如何使用 KeyValues?

转载 作者:行者123 更新时间:2023-11-30 02:52:13 24 4
gpt4 key购买 nike

KeyValue start = new KeyValue(enemy.translateXProperty(), 0);
KeyValue end = new KeyValue(enemy.translateXProperty(), 600);
KeyValue back = new KeyValue(enemy.translateXProperty(), 0);

KeyFrame startFrame = new KeyFrame(Duration.ZERO, start);
KeyFrame endFrame = new KeyFrame(Duration.seconds(5), end);
KeyFrame backFrame = new KeyFrame(Duration.seconds(5), back);

Timeline timeline = new Timeline(startFrame, endFrame, backFrame);
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();

这只是我在读的 javafx 书的动画部分中玩弄的一些片段,但我想知道为什么它不起作用。基本上,这只是让一个圆圈反复向右和向左移动。 KeyValue“返回”应该将其带回到开头,但事实并非如此,圆圈转到最右边,然后立即返回到开始的位置。

我是否误解了 KeyValues 的某些内容,或者是什么?这里有什么问题吗?

最佳答案

Duration time parameter KeyFrame constructor的花费的时间相对于动画的开始,而不是相对于最后一个KeyFrame

如果您想在动画的前 5 秒内将 enemy.translateXProperty() 属性从 0 动画化到 600,并在接下来的 5 秒内将其动画化回 0,则需要使用Duration.seconds(10) 作为 back KeyFrame 构造函数的参数。

KeyFrame backFrame = new KeyFrame(Duration.seconds(10), back);

请注意,为了简单地添加反转动画,您还可以将 autoReverse 设置为 true:

KeyValue start = new KeyValue(enemy.translateXProperty(), 0);
KeyValue end = new KeyValue(enemy.translateXProperty(), 600);

KeyFrame startFrame = new KeyFrame(Duration.ZERO, start);
KeyFrame endFrame = new KeyFrame(Duration.seconds(5), end);

Timeline timeline = new Timeline(startFrame, endFrame);
timeline.setAutoReverse(true);
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();

关于JavaFX - 我是否误解了如何使用 KeyValues?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com