gpt4 book ai didi

animation - 使用Core Animation,是否可以为多个CALayer组合动画?

转载 作者:行者123 更新时间:2023-12-04 18:17:35 46 4
gpt4 key购买 nike

我遇到的情况是,我有许多CALayer以“基于回合”的方式进行动画处理。我为每个CALayer上的位置设置了动画,但是它们具有完全相同的持续时间。一旦所有这些CALayer动画完成,就会启动一个新的“转弯”,并再次为变化的位置设置动画。

整个想法是,通过在位置之间以恒定速度进行线性插值,状态与状态之间基于转弯的过渡看起来就像是实时动画。但是,使用许多不同的CALayer很难做到这一点。

CAAnimationGroup用于将单个CALayer上的动画组合在一起。但是我想知道,是否有一种简单的解决方案来对多个CALayer上的动画进行分组?

编辑后包含对凯文·巴拉德(Kevin Ballard)问题的答复

我的问题就在于此。我正在为每个CALayers创建动画,然后将
NSArray中的那些。一旦获得单个动画已结束的回调,便将其从NSArray中删除。一旦为空,我将再次为它们全部创建动画。

在超过几层的情况下,所有动画的完成与新动画的开始之间存在明显的延迟。

我想像一下,如果我可以将所有这些动画分组到一个动画中,那么可以在不延迟动画的情况下对更多的层进行动画处理。从而不会破坏连续动画的错觉。

最佳答案

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

我一次最多可以动画60个CALayers,并且在动画阶段之间没有任何延迟,但是我没有将动画缓存在任何类型的数组中,我不确定那里的开销是多少。

我的动画相对简单,并且可以动态创建并附加到每个CALayer。我的 Sprite 为60像素见方,并使用了几十个可能的图像来表示其内容。

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

关于animation - 使用Core Animation,是否可以为多个CALayer组合动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/418419/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com