我在iPhone上设置了一个非常简单的“游戏”。事物四处移动,旋转,可以与它们交互等等。在模拟器中,它运行良好,但在设备上它的速度大约为0.25 FPS,而且速度很慢,显然没有时间识别触摸。如何在iPhone上手动设置动画效果?
这最初只是使用UIView和Item
的数组,每个数组都有一个Tick和一个Draw函数。在应用程序开始时,我开始了一个定时器,它以60 FPS拍摄,它叫Tick,在Tick结束时,它调用[self setNeedsDisplay];
它的工作速度非常慢,所以我将Item
类转换为CALayer
类的子类,移动图层而不是重绘项目。但是,我正在手动,逐帧地移动CALayer
,而这显然不是好的。它仍然太慢。所以我告诉它移动到它的最终目的地,并给它一个等于它到达那里所需的滴答数量的长度。
工作正常,但有些情况下,如果您与某些东西交互,应该停止移动,并改为执行其他操作。所以我回到移动每个订单,而不是设置新的头寸,而是将其包装在CATransaction中,并为交易赋予与tick相同的长度。
工程确定,但新的问题出现了:如果我想动画的东西,我仍然要使用[自setNeedsDisplay]每一个刻度,它调用drawInContext:
,这似乎是一个主要放缓的问题。
是不是只有一种方法来手动绘制像我之前做的一切?我只是在进行CGContext *调用,并且它在模拟器中工作正常!如果我在J2ME或嵌入式C++中实现类似的东西,它会工作的很好。我错过了什么?我真的需要学习OpenGL来做任何有趣的手动动画吗?