2011-11-27 16 views
2

我有一个重复的动画,我需要与其他一些瞬态动画同步。重复动画是在屏幕上移动4秒的扫描线。当它传递到下面的图像时,这些图像需要“昙花一现”。同步CAAnimations

自变形的图像可以来去和移动在用户的奇想。它们也不是同一层的一部分。

我不知道如何保持扫描线和图像动画同步。我会考虑将它们全部添加到CAAnimationGroup中,但“动画”属性是只读NSArray,因此每次添加,移除或移动其中一个自动绘制动画时,似乎都必须重新创建该组,这将是相当经常的。我也猜测创建一个新组意味着扫描线动画需要重新启动,导致它不稳定。

根据这个帖子:

=“> CAAnimation调用周期性动画进度的时间间隔的方法

的Core Animation是什么?‘基于时间的,’但我不知道我完全理解这对重复动画意味着什么以及它有多可靠(我在任何在线文档中都找不到这个)。这是否意味着如果我在时间x开始重复动画的扫描线,它将以4秒的间隔重复它开始后?该应用程序去背景和返回或类似的?

谢谢你的 你的帮助!

瑞安

回答

2

与此摆弄了一会儿后,我发现我可以确保他们的beginTimes一字排开同步我的动画。我开始通过设置扫描线动画的BEGINTIME:

scanAnimation.beginTime = CACurrentMediaTime(); 

从那里,我只是计算的4S窗口中的偏移量(称为dt)和其他动画beginTimes设置为:

blipAnimation.beginTime = scanAnimation.beginTime + dt; 

即使beginTime是过去的,它也可以很好地工作。动画引擎实际上是向前外插的,并且在扫描动画循环回来后动画下一个blip dt秒。

不利的一面是,我现在已经完全击败了帧速率。我试图找到有关Core Animation性能的有用信息,但目前为止无济于事。我已经采取了非常简单的方法来布置我的所有图像和动画,并且我准备重写很多代码来优化它,但是我不想在没有做好准备的情况下重写。任何关于核心动画如何工作的深入讨论的指针都会非常方便。