我正在开发一个iPhone游戏,它只涉及一个物体的二维平移动画。此对象是从UIView派生的子类,并使用Quartz-2D绘制。转换当前由NSTimer实施,它勾选每一帧并告诉UIView更改其位置。
然而,在决定UIView在下一帧中应该移动到哪里之后,有一些相当复杂的数学问题。在iOS模拟器上测试游戏效果很好,但在iPhone上测试时,它肯定会跳过帧。
我的问题是:我的逐帧转换视图帧的方法是不是一个糟糕的方法?我知道OpenGL更多地用于游戏,但为如此简单的动画设置OpenGL似乎是一种遗憾。尽管如此,值得这么麻烦吗?
发布于 2011-07-30 18:17:10
在不知道计算翻译的复杂数学方法的情况下,很难说。只有当图形处理器真的是瓶颈时,使用OpenGL才有意义。我怀疑情况并非如此,但您必须测试哪些部分导致跳过的帧。
通常,UIView和CALayer都是在OpenGL之上实现的,因此对UIView的平移进行动画处理已经使用了图形处理器。
另外,对于游戏循环,使用CADisplayLink而不是NSTimer可能会更好。
发布于 2011-07-30 18:07:49
iPhone模拟器的问题在于,它可以访问与您的mac相同的资源。我建议做的是打开iPhone SDK附带的instruments.app,并使用CoreAnimation模板来查看您的资源是如何管理的。您还可以查看分配情况,看看它是否占用了ram。CPU也能帮上忙。
tl;dr iPhone sim使用你的macs ram和gfx卡。尝试查看Instruments中的序列,看看是否有一些滞后。
https://stackoverflow.com/questions/6881340
复制相似问题