从Core Animation中挤出更多性能

时间:2010-10-29 18:52:50

标签: core-animation performance

我的游戏一次移动少于10个小动画UIImageViews,最多。我正在使用运行速度为60fps的CADisplay计时器来驱动他们的动画。以下是我在更新方法中移动视图的示例:

// for each insect in insectArray
insectView.center = insect.hitCenter // I pull a position from my model object

图形为32 x 32像素,每个最多5个动画帧,如果有帮助的话。他们有透明度的alpha通道。我已经将任何游戏中的计算作为瓶颈进行了分析和排除。我还设置了opacity属性= YES,以获得非常小的加速。无论是否播放动画帧都没有区别。

除了iPhone 1G和3G等老式设备外,帧速率大都很好。在那里,我得到间歇性的口吃。

在切换到OpenGL 之前,是否有任何方式可以获得更高的性能?

3 个答案:

答案 0 :(得分:1)

我遇到了与CoreAnimation相同的瓶颈;它在系统复杂性方面非常有限,你可以显示出不错的性能。从我读过和与他人讨论的内容来看,对你(或我)没有灵丹妙药,对不起!

我的用法实际上非常接近你(虽然没有动画帧),使用OpenGL ES使它从痛苦的缓慢变为完美的活泼,所以对你有希望!

答案 1 :(得分:0)

CoreAnimation不是为逐帧动画设计的,你告诉它一些关键帧和时间,它将为你完成剩下的工作。为什么不切换到OpenGL?你不能永远支持旧设备......

答案 2 :(得分:0)

我同意FX没有灵丹妙药,但如果您提供更多代码,我们可以提出一些具体建议。以下是一些一般性的:

  • 不要在UIImageView的图层上使用-setCornerRadius来圆角。你永远不会相信这会降低多少性能

  • 如果您在视图后面使用阴影,请确保在图层上指定阴影路径。

  • 尝试在UIImageView图层上转换-shouldRasterize:[[insectView layer] setShouldRasterize:YES];

讨厌说出来,但在此之后,正如其他人所说,OpenGL是唯一的另一种选择。