【发布时间】:2014-05-03 06:17:02
【问题描述】:
我正在尝试为实际上是图像的气球制作动画。为此,我创建了 CALayer 的子类,它在其内容中显示图像,最后该子类的多个对象将添加到 viewcontroller 的视图中。
一旦我在这个子类的每个对象上调用一个函数“反弹”。所有这些层(气球)的位置开始以这样的方式动画,它会在视图边界周围产生反弹效果。它不断改变层的位置,直到通过调用方法“stopBouncing”停止它。
现在的问题是,如果气球的数量很高,层中有一些闪烁,性能也不好。
如果有人可以帮助我有效地实施此类要求,我将不胜感激。
注意:这是针对 iPhone 的。
一段完整的代码:
-(void)bounce
{
self.position=CGPointMake(self.position.x+self.moveOffset.x,self.position.y+self.moveOffset.y);
if(self.position.x>self.maxBoundary.x || self.position.x<self.minBoundary.x)
{
self.moveOffset.x=-self.moveOffset.x;
}
if(self.position.y>self.maxBoundary.y || self.position.y<self.minBoundary.y)
{
self.moveOffset.y=-self.moveOffset.y;
}
}
这里,moveOffset 是一个时间间隔内层在 x 轴和 y 轴上移动的距离。
【问题讨论】:
-
使用组动画。看到这个帖子stackoverflow.com/questions/10938223/…
-
感谢您的回复。据我了解,组动画用于在一个图层上应用多个动画。但我的要求是同时为多个图层设置动画,并且图层数取决于记录数(意味着它的变量)。动画种类是单一的,但它是无限的,它会不断移动图层的位置。
-
No No. 组动画可以同时播放多层动画,也可以连续播放。它基于动画开始和结束时间的计算。
-
是的,CAAnimationGroup 可以定时动画,也可以连续动画。但它不是多层的,请看stackoverflow.com/questions/17764375/…
标签: ios iphone objective-c ipad