0、序列帧动画,就是把一张一张的图片,连续播放而形成的动画。
1、在cocos中,类Animate是用来实现序列帧动画的。该类继承自ActionInterval,所以可以用作runAction的参数。
Animate的创建和使用很简单:
Animate * anim = Animate::create(animation);
sprite->runAction(anim);
Animation继承自Ref、Clonable。用来添加每一帧的图片。
Animation有三种创建方式:
(1)直接使用Animation::create(void)。
创建之后,用Animation::addSpriteFrame(SpriteFrame* spriteFrame)添加图片。
setLoops(unsigned int loops) 设置循环次数。
setDelayPerUnit(float delayPerUnit) 设置每帧之间的时间间隔。
(2)使用SpriteFrame*数组创建:
Animation::createWithSpriteFrames(const Vector<SpriteFrame*>& frames, float delay, unsigned int loops)
(3)使用AnimationFrame*数组创建:
Animation::create(const Vector<AnimationFrame*>& arrayOfAnimationFrameNames,
float delayPerUnit, unsigned int loops)
3、类AnimationFrame继承自Ref、Clonable。
创建时需要用到SpriteFrame:
AnimationFrame* create(SpriteFrame* spriteFrame, float delayUnits, const ValueMap& userInfo)
使用AnimationFrame可以使每帧图片的延迟时间不同,形成变速的动画。
4、类AnimationCache继承自Ref,用来缓存Animation,是一个单体实例。
AnimationCache::getInstance()->addAnimation(Animation *animation, const std::string& name);
保存起来的Animation,使用getAnimation(const std::string& name)取出。
此外也可以用plist文件缓存Animation:
addAnimationsWithFile(const std::string& plist);
使用plist文件可以一次加载多个动画。