Как я могу использовать более одного листа спрайтов? cocos2d/айфон

Я пытаюсь использовать более одного листа спрайтов, потому что я не могу разместить их все на одном, а наличие двух упрощает их упорядочивание (спрайты одного листа спрайтов находятся сзади и имеют более низкий zOrder). Я сейчас делаю:

spriteSheet1 = [[CCSpriteSheet spriteSheetWithFile:@"spriteSheet1.png" capacity:3] retain];
[[CCSpriteFrameCache sharedSpriteFrameCache]     addSpriteFramesWithFile:@"spriteSheet1.plist"];
[self addChild:spriteSheet1];

spriteSheet2 = [[CCSpriteSheet spriteSheetWithFile:@"spriteSheet2.png" capacity:4] retain];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spriteSheet2.plist"];
[self addChild:spriteSheet2];

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"sprite1.png"];

Последняя строка вылетает с ошибкой: Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Недопустимый spriteFrame для спрайта» SIGABRT

Мне не разрешено кэшировать более одного листа спрайтов? Если нет, есть ли другой эффективный способ справиться с этим?


person Scott Pfeil    schedule 27.07.2010    source источник


Ответы (1)


Если вы создаете спрайты с помощью Zwoptex, убедитесь, что вы используете версии Zwoptex и cocos2d, которые поддерживают друг друга. Недавно в Zwoptex произошли серьезные изменения, и если вы используете более старую версию cocos2d, это может объяснить ваш сбой.

В целом предоставленный вами код должен работать нормально, учитывая, что все файлы ресурсов были добавлены в Xcode и имеют правильные имена. Имейте в виду, что устройства iOS чувствительны к регистру, если вы попытаетесь загрузить «spriteSheet1.plist», но файл на самом деле называется «Spritesheet1.plist», это также приведет к ошибкам (вероятно, утверждению или сбою).

person LearnCocos2D    schedule 30.07.2010