分组动画以顺序执行

问题描述

我建议您看一下一些现有动画引擎的设计,例如:

通常,这些引擎倾向于做一个中央“时钟”,该时钟以固定的间隔计时。然后,它们提供回调功能,以通知相关方“滴答声”已发生。

然后,他们在此概念的基础上提供了一系列层,以使其更易于交互,例如提供动画的时间范围,以时间百分比表示(而不是物理时间度量),可用于计算变化的一部分。

还提供插值功能,使您可以在整个时间周期内影响动画的速度(例如慢进,快出效果)。

这种方法减少了必须Timer运行多个s 的开销,这可能会随着时间的流逝而降低性能,同时提供分离模型,因此每个“动画”都是它自己的实体。

就我个人而言,我会评估每个人,然后看看哪个最能满足您的需求并与之一起运行,但是如果您真的想自己做,则它们为构思和设计提供了一个很好的起点。

解决方法

我有一个Swing程序,该程序使用Swing计时器执行2D动画。每次单击按钮时,都会创建几个计时器来为几个不同的组件制作动画-
其中一些移出屏幕,另一些移开。(我不提前知道每次单击按钮需要执行哪些动画,但是在运行时区分两种“类型的”动画不是问题-
它们是从不同的方法启动的,因此很容易想象将它们添加到两个不同的“队列”中-传出项目的队列和传入项目的队列。这样做之后,我便可以实现调用a的基本策略

话虽如此-所有人都只能凭直觉,启发式地理解我-
我还没有弄清楚如何在实践中实现它。这些“队列”实际上是什么,将容纳什么类并在以后执行它们?大概是一个实现了Runnable的线程,它创建了第二个线程来执行动画,并对动画的进行方式进行更严格的控制?还是事件分配线程在这里给了我足够的控制权:有没有办法使用
SwingUtilities.invokeAndWait()(或类似的东西)收集要执行的所有动画,同时将优先级分配给某个类的动画或标记为某种方式?