当前位置: 首页 > 面试题库 >

分组动画以顺序执行

王彭薄
2023-03-14
问题内容

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

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


问题答案:

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

  • 时序框架
  • 三叉戟
  • 通用补间引擎和使用补间引擎的AurelienRibon /滑动布局。

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

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

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

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

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



 类似资料:
  • 使用统一的控制脚本来初始化其他脚本 一般我都会有一个 Game.ts 的脚本作为总的控制脚本,假如我还有 Player.ts, Enemy.ts, Menu.ts 三个组件,那么他们的初始化过程是这样的: // Game.ts import { _decorator, Component, Node } from "cc"; const { ccclass, property } = _decor

  • 本文向大家介绍以下代码的执行顺序?相关面试题,主要包含被问及以下代码的执行顺序?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: //输出2,6,5,3,4,1 为什么呢?具体请参考我的文章: 从promise、process.nextTick、setTimeout出发,谈谈Event Loop中的Job queue

  • 问题内容: 我有一些这样的数据: 我想查询它看起来像这样: …这样我就可以按数字连续的方式按GROUP BY分组。 另外,循环/游标也是不可能的,因为我正在处理大量数据,谢谢。 问题答案:

  • 问题内容: 我试图理解这段代码,不确定为什么第二遍在第一遍之前执行。如果有人真的可以帮助我,那就太好了! 输出: 问题答案: 您没有任何内容可以显式同步两个goroutine的顺序。如果运行足够的时间,您将看到调用以不同的顺序进行打印。当执行goroutine时,由于它们是并发操作,因此无法保证它们将何时执行和/或完成。您需要使用各种标准库程序包或通道本身来同步并发运行的goroutine的执行。

  • 我有一个Drools决策表(见下文),其中规则2有一个条件,检查营养分数是否在某个阈值之间,并根据该条件执行操作。有一个初始规则(规则1)执行检查并执行其操作,它更新了我希望规则2在执行其条件时使用的总分。 我的期望/需要: 规则1运行,如果条件满足,则更新$model上的总体分数(通过执行其操作),然后规则2运行,并且对于它的条件,使用由规则1的操作运行更新的更新分数值。 实际发生了什么 规则1

  • 我在火花流应用程序中从kafka读取数据并执行两个操作 将dstream插入hbase表A 更新另一个hbase表B 我想确保对于dstream中的每个rdd,插入hbase表A将在对hbase表B进行更新操作之前发生(每个rdd依次发生上述两个动作) 如何在火花流应用中实现这一点