我的cocos2d iPhone游戏中有一些动画精灵。动画精灵我指的是一个CCSprite,它上面有一个CCRepeatForever动作。重复动作循环通过来自png spritesheet和相关plist坐标文件的动画帧。
虽然我只有一些独特的动画,但我有许多动画精灵,动画相同。例如,我可能有30个在屏幕上运行的动画足球运动员都在运行CCRepeatForever动作。 在这种情况下,预加载和重复使用动画的有效方法是什么?
我目前的做法是在游戏启动时创建重复动作。然后当我想创建一个新的动画精灵时,我在精灵上运行预先加载的重复动作的副本。我怀疑这是否非常有效,因为动画有时会在开始时断断续续。所有反馈都非常感谢!我对任何架构/设置都很开放。
编辑 - 更多信息:我想知道“预先复制”这些操作是否有效?当游戏加载时,我会用重复动作的副本填充队列。然后我会根据需要弹出它们。当队列的大小低于某个阈值时,我会在后台线程上重新填充它。
答案 0 :(得分:2)
确保使用纹理图集,并使用动画预加载所有纹理。理想情况下,您希望使用.pvr.ccz格式,因为它的加载速度比PNG快得多。
你做的其他事情可能对帧率几乎没有影响。口吃很可能是由于按需加载纹理造成的,或者与音频缓冲区相同(即在没有预加载的情况下播放音频)。
不要担心使用CCAnimate优化(频繁)创建CCRepeatForever以及您正在使用的其他任何内容,除非您运行探查器来测量并确认这确实是您遇到的问题有。我99.9%有信心这个口吃问题与创造和创造无关。正在行动。
加载资源是目前游戏过程中最耗时的任务,因此预加载所有资源文件至关重要。在你的情况下,你真的只需要确保纹理在内存中。
答案 1 :(得分:1)
对于逐帧动画,使用CCAnimation和CCAnimationCache。