如何在cocos2d中对同一个sprite实现两个不同的动画

时间:2011-04-12 10:18:33

标签: iphone ipad animation cocos2d-iphone sprite

我很困惑在cocos2d中使用动画......我有一个精灵,它有3种类型的动画,就像笑脸笑,哭泣和眨眼......而且我为每一个都有单独的精灵表动画......我怎样才能在同一个精灵上使用这些动画......有人可以帮我吗???

此致

苏拉杰

1 个答案:

答案 0 :(得分:0)

将所有动画放在同一个精灵表上要容易得多,因为如果你的精灵使用CCBatchnode来做它的绘制方法,你就可以从一张纸上删除它,然后读取它到另一个。

在CCSprite子类中,将一些CCAction设置为实例变量。

在初始化方法中,编写这些操作并将它们存储到实例变量中。

然后当你想使用动画时,告诉你的精灵运行它。

E.g。

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,因为您可能希望在完成后恢复为空闲动画。

当精灵被取消分配时,不要忘记释放任何保留的动作。