你說得對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幀);