作为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,但由于我使用了隐式动画,我不确定在这种情况下如何进行优化。
如果有人能提出如何以更合理的速度进行此项运动的建议,我将非常感激。在此先感谢您
答案 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