Здравствуйте, я делаю боковой скроллер cocos2d. Мне нужно использовать лист спрайтов для моей игры, и когда я его использую, он выдает ошибку SIGABRT. Я использовал точку останова исключения, чтобы увидеть точную строку кода, вызывающую проблему, и получил эту строку:
NSAssert(spriteFrame!=nil, @"Invalid spriteFrame for sprite");
Результат:
2013-08-24 15: 51: 28.410 Приложение [2171: a0b] имя таблицы спрайтов - characterssheet_poses 24.08.2013 15: 51: 28.419 Приложение [2171: a0b] bruisedImage = (null) 24.08.2013 15:51 : 28.420 Приложение [2171: a0b] cocos2d: CCSpriteFrameCache: Frame '(null)' не найден 24.08.2013 15: 51: 28.420 Приложение [2171: a0b] bruisedPose = (null) 24.08.2013 15:51: 28.421 Приложение [2171: a0b] defaultImage = (null) 2013-08-24 15: 51: 28.421 Приложение [2171: a0b] cocos2d: CCSpriteFrameCache: Frame '(null)' не найден 2013-08-24 15: 51: 28.422 Приложение [2171: a0b] defaultPose = (null) 2013-08-24 15: 51: 28.422 Приложение [2171: a0b] *** Ошибка утверждения в - [CCSprite initWithSpriteFrame:],
Вот код, который вызывает проблему и отображает этот вывод:
NSString* spriteSheetName = [theDictionary objectForKey:@"SpriteSheet"];
CCLOG(@"sprite sheet name is %@", spriteSheetName);
NSString* plistName = [NSString stringWithFormat:@"%@.plist", spriteSheetName ];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:plistName ];
NSString* bruisedImage = [theDictionary objectForKey:@"BruisedPose"];
CCLOG(@"bruisedImage = %@",bruisedImage);
bruisedPose = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:bruisedImage];
CCLOG(@"bruisedPose = %@",bruisedPose);
NSString* defaultImage = [theDictionary objectForKey:@"BasePose"];
CCLOG(@"defaultImage = %@",defaultImage);
defaultPose = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:defaultImage];
CCLOG(@"defaultPose = %@",defaultPose);
Я использую листы спрайтов и файл .plist для создания своей игры. Файл .plist листа спрайтов выглядит так:
Файл .plist, который я использую для данных игры, выглядит так: