【发布时间】:2017-02-12 14:34:06
【问题描述】:
我想在Timeline 运行时修改它,例如响应鼠标单击我想更改动画的目标值。我尝试了几种方法来做到这一点,包括(在鼠标单击的处理程序中):
- 通过在
Timeline上调用pause()来暂停动画,清除KeyFramesObservableList,添加一个新的KeyFrame并在Timeline上调用play()。 - 使用 Cue-name 创建一个新的 KeyFrame,将新帧添加到 Observable 列表中并在
Timeline上调用jumpTo(cueName)。
一些示例代码是:
String cueName = String.valueOf(System.currentTimeMillis());
KeyValue kv = new KeyValue(myObject.rotateProperty(), -90 + 180.0 * Math.random(), new CustomInterpolator());
KeyFrame kf = new KeyFrame(Duration.seconds(10), cueName, kv);
startupTimeline.getKeyFrames().add(kf);
startupTimeline.jumpTo(cueName);
startupTimeline.play();
这些似乎都不起作用,动画只是停止了。
如果我想在动画执行时更改动画,我应该能够修改现有时间轴的 KeyFrame 列表还是需要创建新的时间轴?
【问题讨论】:
-
好建议,James_D。我不知道有这样的班级。我实际上是在尝试以某种方式“弯曲”
Timeline,以使我的自定义插值器计算的位置与传递给它的小数值无关。尝试让某些东西做它不打算做的事情从来都不是一件好事,而 AnimationTimer 可能更适合。请将您的评论作为答案,我将标记为正确。