Кто-то спрашивал подобное раньше.
Нельзя сделать спрайты дочерними для одного и того же CCSpriteBatchNode, если они не из одной и той же таблицы спрайтов.
Вам необходимо создать новый CCSpriteBatchNode для каждой используемой вами таблицы спрайтов (под таблицей спрайтов я имею в виду объединенный файл изображения и файл .plist)
CCSpriteFrameCache - это один кеш, общий для всех ваших сцен и классов. Когда вы вызываете этот метод:
[CCSpriteFrameCache sharedSpriteFrameCache]
Вы не создаете новый объект CCSpriteFrameCache каждый раз, есть только ОДИН экземпляр. Вы храните все загруженные спрайт-листы в этом единственном кэше. Таким образом, вы можете загрузить 2 спрайт-листа в кеш следующим образом:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: @ "sheet1.plist"]; [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: @ "sheet2.plist"];
Затем вам нужно создать CCSpriteBatchNode для КАЖДОЙ spritesheet, вы не можете иметь более одного листа в узле пакета:
CCSpriteBatchNode * spriteSheet1 = [CCSpriteBatchNode batchNodeWithFile: @ "sheet1.pvr.ccz"];
CCSpriteBatchNode * spriteSheet2 = [CCSpriteBatchNode batchNodeWithFile: @ "sheet2.pvr.ccz"];
Затем вы можете добавить оба этих пакетных узла в слой, если хотите. Спрайты, добавленные в узлы пакета, должны быть из той таблицы, которую использует узел пакета.