您可能已经知道这一点,但让我尝试回答您的问题:
Scene2d 有一个非常方便的动作系统,它基本上允许以下操作:
- 执行任何提供的操作
- 使用许多提供的插值对它们进行微调
- 使用Actions.run()进行新操作
- 链现有动作形成序列
像这样:
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.Action;
Action a1 = Actions.sequence(Actions.fadeOut(0), Actions.fadeIn(3, Interpolation.bounce));
Action a2 = Actions.moveTo(100, 200, 3, Interpolation.pow2Out);
Runnable r = new Runnable() {
@Override
public void run() {
setColor(1, 0, 0, 1);
System.out.println("now I'm a red actor");
}
};
然后再组合,例如这样:
addAction(Actions.sequence(Actions.parallel(a1, a2), Actions.run(r)));
这使您可以从scene2d 的内置音序器中获利,至少可以为您节省一半的工作量。所以,回答你的问题,我认为使用这个系统很可能很容易地实现固定以及反应/随机动画。它还允许您轻松地将更简单的操作封装成更复杂的操作,并具有以下优点:
- 非常可读和可维护的代码
- 权衡 CPU/Mem:比存储普通序列甚至视频更节省内存
- 反应性:通过这种方式,您可以将动画编程为每次都略有不同
另一方面,如果你经常想要“发现”的东西,这个开发系统可能会变得非常耗时,如下所示:
- 自己实施非内置的基于时间的操作(如相机旅行)
- 如果内置的插值不符合您的目标,请制作您自己的插值
- 使用许多小颗粒元素(为此我会使用ParticleEditor)。
我不认为这是你的情况。最后,您应该看一下脊椎动画引擎。我自己不使用它,但可能对您的想法有用。