Animation 使用核心动画,是否有一种方法可以将多个Calayer的动画分组?

Animation 使用核心动画,是否有一种方法可以将多个Calayer的动画分组?,animation,core-animation,Animation,Core Animation,我有一个情况,我有许多Calayer动画在一个“回合为基础”的时尚。我在每个Calayer上设置了位置动画,但它们的持续时间完全相同。一旦所有这些Calayer都完成了动画制作,一个新的“回合”就开始了,它们会再次对改变的位置进行动画制作 整个想法是,通过位置之间的线性插值,在恒定速度下,状态到状态之间基于转向的转换看起来就像实时动画。然而,许多不同的炉匠很难做到这一点 CAAnimationGroup用于将单个CALayer上的动画组合在一起。但我想知道,有没有一个简单的解决方案,可以在多个C

我有一个情况,我有许多Calayer动画在一个“回合为基础”的时尚。我在每个Calayer上设置了位置动画,但它们的持续时间完全相同。一旦所有这些Calayer都完成了动画制作,一个新的“回合”就开始了,它们会再次对改变的位置进行动画制作

整个想法是,通过位置之间的线性插值,在恒定速度下,状态到状态之间基于转向的转换看起来就像实时动画。然而,许多不同的炉匠很难做到这一点

CAAnimationGroup用于将单个CALayer上的动画组合在一起。但我想知道,有没有一个简单的解决方案,可以在多个Calayer上组合动画,它们应该有相同的持续时间

编辑内容包括对凯文·巴拉德问题的回复

我的问题就在于此。我正在为我的每个Calayer创建动画,然后 那些在安检室的人。一旦得到单个动画已结束的回调,我将其从NSArray中移除。一旦它是空的,我再次为它们创建动画

对于多个层,在所有动画完成和新动画开始之间有明显的延迟


我想象,如果我能将所有这些动画组合成一个动画,那么在动画之间可以毫不延迟地为更多的层设置动画。因此不会破坏连续动画的幻觉。

如果您同时将3个动画添加到3个不同的层,并且它们具有相同的持续时间,我希望它们都可以一起制作动画。您看到的是什么行为?

如果在一个方法中将动画附加到多个Calayer,它们将(有效地)同时开始。我在一个丢球的益智游戏中使用这种方法,在动画结束时,我将动画的下一阶段附加到任何需要进一步动画的球上

我一次最多制作60个Calayer的动画,并且在动画的各个阶段之间没有遇到任何延迟,但是我不会将动画缓存在任何类型的数组中,我不确定您在那里的开销

我的动画相对简单,在飞行中创建并附加到每个CALayer。我的精灵是60像素见方的,使用几十个可能的图像来表示它们的内容


在某些情况下,我可以使用不同的开始时间(使用beginTime)创建多个动画,我将它们与CAAnimationGroup捆绑在一起,但您可能无法预先计算后续动画。

如果将动画包装在CATTransaction中,CG将确保它们都在主循环的相同迭代中运行

[交易开始]; //你所有的动画
[CATransaction-commit]

cp21yos:你能详细说明一下你的方法吗?我正在尝试做一些类似的事情,包括一次制作多个层的动画,不止一次。你说:“在动画结束时,我附加动画的下一个阶段”。你能解释一下吗?当我尝试在animationDidStop事件中执行附加动画的逻辑时,只有最后一个动画发生,而不是整个动画序列

我在主要问题中编辑了对您的问题的回复,因为它不适合这里。