核心动画缩放奇怪的慢?

时间:2010-11-08 03:23:10

标签: iphone core-animation scaling performance

作为iPhone游戏的一部分,当你按下它们时,我的按钮会有所增长,当你发布按钮时会缩回(作为一种响应用户输入的方式)。负责的代码如下所示:

-(void) magnifyButton: (CALayer *) button
{
 button.transform = CATransform3DScale(button.transform, buttonPressScale, buttonPressScale, 1.0);
}

-(void) reduceButton: (CALayer *) button
{
 button.transform = CATransform3DScale(button.transform, 1.0 / buttonPressScale, 1.0 / buttonPressScale, 1.0);
}

这很有效。但是,如果我反复按一个按钮(每个按钮都是CALayer上的一个小图像),背景中的动画(在OpenGL视图中)会减慢到10 FPS。这对我来说似乎很荒谬。我发现了一个类似的问题here,但由于我使用了隐式动画,我不确定在这种情况下如何进行优化。

如果有人能提出如何以更合理的速度进行此项运动的建议,我将非常感激。在此先感谢您

2 个答案:

答案 0 :(得分:2)

在动画开始之前,为了避免为每个帧渲染CALayer,请将其替换为自身的图像:

button.shouldRasterize = YES;

动画完成后,将属性设置回NO

答案 1 :(得分:0)

混合UIKit和OpenGL是可能的,但会损害性能。结合两者时要避免的事情是透明度和转换。可能没有一种简单的方法可以优化它,最好也是在OpenGL中执行按钮。

Gamesfromwithin.com上有一些关于UIKit和OpenGL结合的好文章。本文包含有关性能的部分(尽管没有解决方案): http://gamesfromwithin.com/using-multiple-opengl-views-and-uikit

同时查看他关于两者结合的演讲: http://gamesfromwithin.com/wp-content/uploads/2010/03/GDC10_uikit_opengl.pdf