cocos2d-x 2.x
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("<span style="font-family: Arial, Helvetica, sans-serif;">Splash</span><span style="font-family: Arial, Helvetica, sans-serif;">.plist");</span>
CCArray* splashFrames = CCArray::create();
for (int i=1; i<=23; i++) {
const char* str = CCString::createWithFormat("Splash_%04d.png",i)->getCString();
CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);
splashFrames->addObject(frame);
}
CCAnimation *splashAnim = CCAnimation::create();
splashAnim = CCAnimation::createWithSpriteFrames(splashFrames, 0.02f);
CCAnimation *splashAnim = CCAnimation::createWithSpriteFrames(splashFrames, 0.2);
splashAnim->setLoops(1);
CCAnimate *animate = CCAnimate::create(splashAnim);
CCSprite* animSprite = CCSprite::createWithSpriteFrameName("<span style="font-family: Arial, Helvetica, sans-serif;">Splash_</span><span style="font-family: Arial, Helvetica, sans-serif;">0000.png");</span>
animSprite->runAction(animate);
或者:
CCAnimationCache* animationCache = CCAnimationCache::sharedAnimationCache();
animationCache->addAnimationsWithFile("dealer_smile_ani.plist");
CCAnimation* animation = animationCache->animationByName("dealer_smile_ani");
nimSprite->runAction(CCRepeatForever::create(CCSequence::createWithTwoActions(CCAnimate::create(animation), CCDelayTime::create(2.5f))));
Cocos2d-x 3.x
Vector<SpriteFrame*> splashFrames;
for (int i=1; i<=23; i++) {
const char* str = CCString::createWithFormat("Splash_%04d.png",i)->getCString();
SpriteFrame* frame = cache->getSpriteFrameByName(str);
splashFrames.pushBack(frame);
}
Animation *splashAnim = Animation::create();
splashAnim = Animation::createWithSpriteFrames(splashFrames, 0.02f);
很明显,2.x与3.x的实现方式,最大的区别在于3.x用不定长的Vector来组织帧序列,相对更加灵活.
2.x的两种方式更加plist的不同类型区分:frame和animal类型。