使用plist文件,結合cocos2dx裏面的動畫類CCAnimation來實現,這種方式比較推薦
也有兩種方式:
轉:http://blog.csdn.net/kkk0526/article/details/9145393
代碼如下:
////---------------手動添加序列幀實現動畫
// CCSprite* sp = CCSprite::create("crop1.png");
// sp->setPosition(ccp(170,200));
// addChild(sp);
//
// CCAnimation* animation = CCAnimation::create();
// animation->addSpriteFrameWithFileName("crop1.png");
// animation->addSpriteFrameWithFileName("crop2.png");
// animation->addSpriteFrameWithFileName("crop3.png");
// animation->addSpriteFrameWithFileName("crop4.png");
// animation->setDelayPerUnit(2.8f / 14.0f);//必須設置否則不會動態播放
// animation->setRestoreOriginalFrame(true);//是否回到第一幀
// animation->setLoops(-1);//重複次數 (-1:無限循環)
// CCFiniteTimeAction * animate = CCAnimate::create(animation);
// sp->runAction(animate);
////---------------通過資源文件創建動畫
CCTexture2D::PVRImagesHavePremultipliedAlpha(true);
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("crop.plist");
//利用幀緩存創建精靈
CCSprite* sp = CCSprite::createWithSpriteFrameName("crop1.png");
sp->setPosition(ccp(170,200));
addChild(sp);
CCArray* animFrames = CCArray::createWithCapacity(4);
char str[100] = {0};
for(int i = 1; i < 5; i++)
{
sprintf(str, "crop%i.png", i);
CCSpriteFrame *frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);
animFrames->addObject(frame);
}
CCAnimation *animation = CCAnimation::createWithSpriteFrames(animFrames, 0.3f);
animation->setLoops(-1);
sp->runAction(CCAnimate::create(animation));
CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFrameByName("crop.plist")