我正在构建一个动画来表示数组操作。到目前为止,我已经在一个被表示为绘制的矩形(索引)的对象上构建了一个动画,该对象被删除,右边的其余索引被左移以占据正确的索引。对于要移动的每个矩形索引,我为该特定对象创建动画。
我希望能够在第一个完成后立即启动动画,以便移动下一个索引。我尝试了一个while循环来检查动画是否仍在运行但这实际上阻止了由于繁忙的等待循环而显示的当前动画。在查看了API中的Animator类之后,我找到了一个相关的方法:
void await() 导致当前线程等待动画完成,无论是单独还是由于调用stop()或cancel(),除非线程被中断。
在这种情况下,当前线程是什么?我知道Timing-Framework运行自己的时序线程,所以它指的是什么?
我应该如何编写另一段代码,用于构建下一个使用此动画方法的第一个索引动画等待?
感谢。
答案 0 :(得分:2)
由于这是一个Swing GUI,我认为通过这种方式使用Swing Timer为您的动画提供更好的服务,所有动画都将在Swing事件线程上完成,而不会束缚并冻结这个重要的线。您可以通过监听器附加某种通知,以查看动画何时完成,可能是通过为动画代码添加ChangeListener或PropertyChangeListener支持。
答案 1 :(得分:0)
如果您使用的是Timing Framework,则版本1会有一个TimingTarget
接口,可以附加到Animator
个实例。
这将提供有关Animator
的状态的事件通知。
除了提供“tick”回拨外,它还提供begin
和end
。
您可以将一个Animator
链放在一起,在调用end
时开始下一个。
不幸的是,我没有时间更新我的库以使用更新版本,因此实际的接口和方法可能已经改变。