1

我的 cocos2d iPhone 游戏中有一些动画精灵。动画精灵是指运行 CCRepeatForever 动作的 CCSprite。重复动作循环通过来自 png spritesheet 和相关 plist 坐标文件的动画帧。

虽然我只有几个独特的动画,但我有许多具有相同动画的动画精灵。例如,我可能有 30 个动画足球运动员在屏幕上跑来跑去,他们都在运行 CCRepeatForever 动作。在这种情况下,预加载和重用动画的有效方法是什么?

我目前的方法是在游戏启动时创建重复动作。然后,当我想创建一个新的动画精灵时,我会在精灵上运行预加载的重复动作的副本。我质疑这是否非常有效,因为动画有时会在启动时结结巴巴。非常感谢所有反馈!我对几乎任何架构/设置都持开放态度。

编辑 - 更多信息:我想知道“预复制”这些操作是否可行?当游戏加载时,我会用重复动作的副本填充队列。然后我会根据需要将它们弹出。当队列的大小低于某个阈值时,我会在后台线程上重新填充它。

4

2 回答 2

2

确保您使用的是纹理图集,并预加载所有带有动画的纹理。理想情况下,您会希望使用 .pvr.ccz 格式,因为它的加载速度比 PNG 快得多。

您所做的其他一切可能对帧率几乎没有影响。卡顿很可能是由按需加载纹理引起的,或者与音频缓冲区有关(即在没有预加载的情况下播放音频)。

不要担心使用 CCAnimate 和您正在使用的任何其他东西优化 CCRepeatForever 的(频繁)创建,除非您已经运行分析器来测量并确认这正是您遇到的问题。我有 99.9% 的信心认为口吃问题与创建和运行操作无关。

加载资源是迄今为止您可以在游戏过程中运行的最耗时的任务,因此预加载所有资源文件至关重要。在您的情况下,您实际上只需要确保纹理在内存中。

于 2012-12-16T19:04:46.083 回答
1

对于逐帧动画,使用 CCAnimation 和 CCAnimationCache。

于 2012-12-16T19:02:08.980 回答