0

我正在构建一个动画来表示数组操作。到目前为止,我已经在一个表示为已删除的绘制矩形(索引)的对象上构建了一个动画,并且右侧的其余索引左移以占据正确的索引。对于每个要移动的矩形索引,我为该特定对象创建一个动画。

我希望能够在第一个索引完成后立即开始移动下一个索引的动画。我尝试了一个while循环来检查动画是否仍在运行,但这实际上阻止了当前动画的显示,因为等待循环很忙。在查看了 API 中的 Animator 类之后,我找到了一个相关的方法:

void await() 导致当前线程等待直到动画完成,无论是它自己还是由于调用 stop() 或 cancel(),除非线程被中断。

在这种情况下,当前线程是什么?我知道 Timing-Framework 运行自己的计时线程,这就是它所指的吗?

我应该如何编写另一个代码块,处理使用这个动画方法构建下一个索引动画等待第一个?

谢谢。

4

2 回答 2

2

由于这是一个 Swing GUI,我认为通过使用 Swing Timer 为您的动画提供更好的服务,因为所有动画都将在 Swing 事件线程上完成,而不会束缚和冻结这个重要的线程。您可以通过侦听器附加某种通知以查看动画何时完成,可能通过为您的动画代码添加 ChangeListener 或 PropertyChangeListener 支持。

于 2012-11-17T18:23:01.637 回答
0

如果您使用的是Timing Framework,则版本 1 有一个TimingTarget可以附加到Animator实例的接口。

这将提供有关Animator.

除了提供“tick”回调之外,它还提供beginend.

您可以将一串Animators 放在一起,在调用时开始下一个end

不幸的是,我没有时间更新我的库以使用较新的版本,因此实际的接口和方法可能已经改变。

于 2012-11-18T01:46:02.807 回答