Animation : 一個給精靈對象執行的幀動畫對象。
Animate:是將動畫包裝成動做的類。
AnimationCache:管理動畫的單例。php
Animation幀動畫對象包含動畫幀對象,和幀間時長等等。css
1 精靈幀(SpriteFrame)
每個Animation對象,是由多個SpriteFrame組成。c++
2 幀間隔時間(delayPerUnit)
動畫中的每兩幀的間隔時間。sql
3 播放次數(loops)緩存
可是Animation只是包含了建立真正「動做」的必要信息,要想成爲一個動做,須要使用一個Animate來包裝一個Animation對象。Animate動做只能由Sprite對象執行。bash
建立好的Animation,能夠加到緩存中,方便之後使用。它用於緩存的動畫。若是你想在緩存中保存你的動畫,你應該使用這個類。oop
createWithSpriteFrames(Vector<SpriteFrame *> frameVec);
void addSpriteFrame (SpriteFrame *frame);
須要先將紋理打包文件.plist,經過SpriteFrameCache加載到緩存,而後得到精靈幀SpriteFrame。
例如:動畫
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("test.plist"); SpriteFrame * frame = SpriteFrameCache::getInstance()->getSpriteFrameByName("test1.png"); Animation * aniMation = Animation::create(); aniMation->addSpriteFrame(frame);
void addSpriteFrameWithFile (const std::string &filename);
void setDelayPerUnit (float delayPerUnit);
void setLoops (unsigned int loops);//0表示動畫不執行,1表示動畫執行一次,-1表示動畫循環執行。
Animation * clone ();
void setRestoreOriginalFrame (bool restoreOriginalFrame);
static Animate * create(Animation *animation);
void setAnimation(Animation *animation);
virtual Animate * reverse();
Animation * getAnimation();
void addAnimation(Animation *animation, const std::string &name);
void removeAnimation(const std::string &name);
Animation * getAnimation(const std::string &name); //返回一個以前添加的動畫。 若是沒有找到它將返回空。 若是你要使用它,你應該retain返回的這個拷貝
SpriteFrame * frame = nullptr; Vector<SpriteFrame *> frameVec; for (int i = 1; i < frameNum; i++) { frame = SpriteFrame::create(StringUtils::format("run%d.png", i), Rect(0, 0, 130, 130)); frameVec.pushBack(frame); } Animation * ani = Animation::createWithSpriteFrames(frameVec); ani->setLoops(-1); ani->setDelayPerUnit(0.1f); Animate * ac = Animate::create(ani);