JavaFX时间线监听器

时间:2014-02-27 12:48:10

标签: java slider javafx timeline

问题描述:

我有一个在两个类之间共享的时间轴,并且带有一个滑块。 在每个课程中,我都会有时间线的监听者。

在一个监听器中,我在某个时间点用一些对象操纵一个数组+滑块的一些变化可能会出现=>改变时间表。

在另一个听众中,我得到当前时间并用它做一些事情。 但是现在我正在尝试向此侦听器添加功能,并检查我从滑块(maxValue)的时间何时到达结束以及通过绑定时间线的“结束”时间。发生这种情况时,我想重新绘制滑块并更改时间轴以适应新的滑块更改。

举个例子:

我有一个0到10分钟的滑块和一个绑定的时间轴。所以,我希望当时间线/滑块达到10分钟然后重新绘制滑块+调整时间线时,如下所示:0到20分钟,当前时间为10分钟。

LE:我尝试做某事我得到了这个错误(可能有帮助)

java.lang.NullPointerException
at com.sun.scenario.animation.shared.SimpleClipInterpolator.interpolate(SimpleClipInterpolator.java:132)
at com.sun.scenario.animation.shared.TimelineClipCore.playTo(TimelineClipCore.java:188)
at javafx.animation.Timeline.impl_playTo(Timeline.java:182)
at com.sun.scenario.animation.shared.InfiniteClipEnvelope.timePulse(InfiniteClipEnvelope.java:131)
at javafx.animation.Animation.impl_timePulse(Animation.java:953)
at com.sun.scenario.animation.shared.AnimationPulseReceiver$1.run(AnimationPulseReceiver.java:133)
at com.sun.scenario.animation.shared.AnimationPulseReceiver$1.run(AnimationPulseReceiver.java:131)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.scenario.animation.shared.AnimationPulseReceiver.timePulse(AnimationPulseReceiver.java:131)
at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:365)
at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:288)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:459)
at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(QuantumToolkit.java:332)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
at java.lang.Thread.run(Thread.java:744)

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,现在有效!问题是:问题在于我试图从时间轴的 currentProperty()的changelistener中操作keyFrames。

我的问题的解决方案实际上是为 slider.maxProperty()创建另一个changelistener,我在其中添加了我想要的keyFrame。