как реализовать две разные анимации на одном и том же спрайте в cocos2d - PullRequest
0 голосов
/ 12 апреля 2011

Я запутался в использовании анимации в cocos2d ... У меня есть спрайт, который имеет 3 типа анимации, например, смайлик, который смеется, плачет и подмигивает глазами ... И у меня есть отдельные листы спрайтов для каждого из ниханимации ... как я смогу использовать эти анимации на одном спрайте ... Кто-нибудь может мне помочь, пожалуйста ???

С уважением,

Сурадж

1 Ответ

0 голосов
/ 12 апреля 2011

Было бы намного проще разместить все анимации на одном листе спрайта, так как, если ваш спрайт использует CCBatchnode для выполнения этого метода рисования, вы бы удалили его как дочерний с 1 листа и прочитали егок другому.

В своем подклассе CCSprite установите некоторые CCAction в качестве переменных экземпляра.

В методе инициализации запишите эти действия и сохраните их в переменных экземпляра.

Затемкогда вы хотите использовать анимацию, скажите своему спрайту, чтобы она запускалась.

Например,

NSMutableArray *smileFrames = [NSMutableArray array];
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile.png"]];
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile2.png"]];
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile3.png"]];


CCAnimation *smileAnim = [CCAnimation 
                         animationWithFrames:smileFrames delay:0.2f];

self.smileAction = [CCSequence actions:
                   [CCAnimate actionWithAnimation:smileAnim restoreOriginalFrame:NO],
                   [CCCallFunc actionWithTarget:self selector:@selector(smileFinished)],
                   nil];

Тогда вы просто используете ..

[sprite runAction:smileAction];

Я добавилCCCallFunc до конца анимации, так как вы можете захотеть вернуться к неактивной анимации после ее завершения.

Не забудьте отменить любые сохраненные действия, когда спрайт освобожден.

...