你说得对CCSpriteBatchNode。 CCSpriteBatchNode就像一个批处理节点:如果它包含子节点,它将在单个OpenGL调用中绘制它们(通常称为“批处理绘制”),如果没有CCSpriteBatchNode(在这种情况下),将调用所有的“批处理绘制”尽可能多的孩子数量(精灵)。
CCSpriteBatchNode可以引用一个且只有一个纹理(一个图像文件,一个纹理图集),即由zwoptex创建的精灵图纸。只有包含在该纹理中的CCSprites可以添加到CCSpriteBatchNode中。所有添加到CCSpriteBatchNode的CCSprites都在一个OpenGL ES绘图调用中绘制。如果CCSprites没有添加到CCSpriteBatchNode中,那么每个CCSprites都需要一个OpenGL ES绘图调用,效率较低。
根据您的场景,您不必使用CCSpriteBatchNode,因为在任何给定时间只有一个纹理呈现。
所以我想知道:我应该动画的帧(没有巨大的纹理)的精灵帧?或者有可能以不同的方式使用那种巨大的纹理?
没关系。无论如何,你将会加载2048 x 2048的纹理。需要思考的问题是为什么只有一个2048 x 2048纹理会给您提供2级警告?你加载了多少这样的纹理。 BTW 2048 x 2048仅支持上面的iPod3G/iPhone3GS(这很好)。
如果你正在加载很多纹理(这对我来说似乎是真的)。您需要编写一些逻辑,以便在不需要时可以卸载纹理。 请看看下面的方法:
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:fileName];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];
[[CCTextureCache sharedTextureCache] removeUnusedTextures];
至于动画而言,您可以创建CCAnimation并使用或(根据您的情况),您可以使用setDisplayFrame(CCSpriteFrame帧);