我正在构建一个cocos2d连续运行的ios游戏,其中一个角色被动画化以贯穿场景。背景,角色脚下的地面和跑步角色后面的栅栏向相反方向移动以模拟向前运动。角色本身是动画的,可以在适当的位置运行。偶尔会有额外的精灵在场景中移动。
我的所有动作(角色的现场动画除外)都发生在更新方法中。
我注意到当额外的精灵移过场景时,所有运动部件都会断断续续。当没有额外的精灵时,口吃就会消失。
我还注意到ipad 3(ios 6.0.1)中的口吃几乎察觉不到,而在iPhone 3gs(ios 6.0.1)和ipad 1(ios 5.1.1)中最为明显,而且适度在iphone 4上很明显(ios 6.0.1)。
我不知道从哪里开始解决这个问题 - 我尝试删除了额外精灵的实际渲染,我也尝试删除角色背后的栅栏 - 但这两种变化都没有对口吃产生任何影响。
有什么建议吗?
更新:通过运行时间分析器修复它,如下面建议的@Fogmeister。结果我在每次更新时都在进行磁盘i / o以查找一些状态变量。我把它优化了,所有设备上的口吃都消失了。谢谢!
答案 0 :(得分:2)
您需要确定代码中占用时间的内容并导致口吃。
这似乎只是一个优化问题,因为你可以看到更老的,更慢的设备上更多的口吃,而更少的新功能更强大的设备。
使用Time Profiler仪器分析应用程序。这将告诉您花费的时间,并将您几乎立即指向花费时间的功能(如果不是线路)。
一旦你发现你可以开始优化。
答案 1 :(得分:1)
精灵的移动代码是什么?如果您使用-(void) update:(ccTime) delta {}
方法手动更新头寸,请确保将每次移动乘以delta
以计算任何分钟的帧速率波动。