У меня возникли проблемы с анимацией моего листа спрайтов. Я получил этот код раньше, и он сработал. У меня было 2 кадра, и моей переменной в моем цикле было разрешено достигать значений 0 и 1, так как имена фреймов были stickman0-568.png и stickman1-568.png. Мои рамки были не так хороши, поэтому я создал новый лист спрайтов с 3 кадрами в нем, stickman0-568.png, stickman1-568.png и stickman2-568.png. Мой файл .list называется sickman-568.plist, а лист спрайтов .png - stickman-568.png. Я изменил цикл, чтобы достичь значения 2 (0,1,2). Когда я запускаю его сейчас, он падает, несмотря на то, что он работает раньше, когда у меня было только 2 кадра. Может кто-нибудь, пожалуйста, дайте мне советы относительно того, что могло пойти не так? Вот мой код, так что вы можете увидеть, что я сделал:Анимированные спрайты в Cocos2d
-(id) init
{
if((self=[super init]))
{
backGroundDesert = [CCSprite spriteWithFile:@"DesertMap.png"];
backGroundDesert.position = ccp(backGroundDesert.textureRect.size.width/2, backGroundDesert.textureRect.size.height/2);
[self addChild:backGroundDesert];
[backGroundDesert runAction:[CCMoveBy actionWithDuration:100 position:ccp(-1400,0)]];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"stickman-568.plist"];
CCSprite *mainGuy = [CCSprite spriteWithSpriteFrameName:@"stickman0-568.png"];
mainGuy.position = ccp(40,backGroundDesert.textureRect.size.height/2);
CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"stickman-568.png"];
[batchNode addChild:mainGuy];
[self addChild:batchNode];
NSMutableArray *animFrames = [NSMutableArray array];
for(int i = 0; i < 3; i++)
{
CCSpriteFrame *frames = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"stickman%02d-568.png", i]];
[animFrames addObject:frames];
}
CCAnimation *cape = [CCAnimation animationWithSpriteFrames:animFrames delay:0.2f];
[mainGuy runAction:[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:cape restoreOriginalFrame:NO]]];
}
return self;
}
-(void)dealloc
{
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];
[super dealloc];
}
Спасибо за предложение, но это не было проблемой. Я понял, что my textureFileName в разделе метаданных моего файла .plist не соответствует моему коду. Спасибо хоть. – FreeFire