当前位置:  开发笔记 > 编程语言 > 正文

使用Core Animation,有没有办法为几个CALayers分组动画?

如何解决《使用CoreAnimation,有没有办法为几个CALayers分组动画?》经验,为你挑选了1个好方法。

我有一种情况,我有许多CALayers,以"回合制"的方式动画.我为每个CALayers上的位置设置动画,但它们具有完全相同的持续时间.一旦所有这些CALayer完成动画制作,就会启动一个新的"转弯"并再次动画更改位置.

整个想法是,通过位置之间的线性插值,以及以恒定速度,状态到状态之间的基于回合的过渡看起来像实时动画.然而,使用许多不同的CALayer很难实现这一点.

CAAnimationGroup用于将动画集中在一个CALayer上.但我想知道,是否有一个简单的解决方案可以将几个CALayer上的群组动画设置为具有相同的持续时间?

编辑包括回答Kevin Ballard的问题

我的问题在于此.我正在为每个CALayers创建动画,然后将它们放入NSArray中.一旦我得到单个动画结束的回调,我就从NSArray中删除它.一旦它空了,我再次为它们创建动画.

有超过几层,所有动画完成和新动画开始之间有明显的延迟.

我想如果我可以将所有这些动画组合成一个动画,可以在动画之间没有延迟的情况下动画更多层.从而不会破坏连续动画的幻想.



1> Craig..:

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

我一次动画最多60个CALayers并且没有在动画的各阶段之间经历任何延迟,但是我没有将动画缓存在任何类型的数组中,我不确定你有那么多的开销.

我的动画相对简单,并且可以动态创建并附加到每个CALayer.我的精灵是60px方形,并使用几十个可能的图像来表示他们的内容.

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

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有