CCAnimate和CCAnimation有什么不同?

时间:2012-05-09 03:21:55

标签: iphone ios cocos2d-iphone

我用cocos2d创建了一个新项目,然后创建了一个图层和一个精灵。 我正在尝试将动画应用到我的精灵中,我发现了一些关于它的示例。但我不明白CCAnimationCCAnimate之间的区别,所以我还没有为我的精灵应用任何动画。

这两者之间的区别是什么?它们的真正含义是什么?如何使用它们?

任何人都可以向我解释一下吗?请帮帮我。

1 个答案:

答案 0 :(得分:5)

以下是"Working with Sprites, and Sprite batch nodes"cocos2d-iphone Programming Guide的代码:

......

NSMutableArray *animFrames = [NSMutableArray array];
for(int i = 1; i < 15; i++) {
    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"grossini_dance_%02d.png",i]];
    [animFrames addObject:frame];
}
CCAnimation *animation = [CCAnimation animationWithName:@"dance" delay:0.2f frames:animFrames];
[sprite runAction:[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]];

如您所见,您需要同时使用CCAnimateCCAnimation在精灵上运行基于CCSpriteFrame的动画。每个CCAnimation的说明:

  

CCAnimation对象包含CCSpriteFrame个对象,以及帧之间可能存在的延迟。您可以使用CCAnimation操作为CCAnimate对象设置动画。例如:

[sprite runAction:[CCAnimate actionWithAnimation:animation]]; 

一般来说,CCAnimation是框架容器的包装器。 CCAnimate是精灵需要做的动作 - 实际上它是CCAction的子类,它表示精灵可以“运行”的动作,例如移动,跳跃,旋转等。您可以使用其他子类在您的sprite上执行某些类型的动画,而无需自己创建帧。试试类似CCFadeInCCRotateBy

的内容