Cocos2d-x初学指南(4): 生成animation 帧动画的2种方法
方法一是用多套名字按一定规律的不同的单图png,
[cpp]
//创建cache
CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();
char strPlist[64] = {0};
char strPng[64] = {0};
sprintf(strPlist,"fei.plist");
//sprintf(strPng,"fei.pvr.ccz");
sprintf(strPng,"fei.png");
cache->addSpriteFramesWithFile(strPlist, strPng);
//创建动画每一帧,从cache里面读取
CCMutableArray<CCSpriteFrame*>* animFrames = new CCMutableArray<CCSpriteFrame*>(6);
char str[64] = {0};
for(int i = 1; i <= 6; i++)
{
sprintf(str, "飞%04d.png", i);
CCSpriteFrame* frame = cache->spriteFrameByName( str );
animFrames->addObject(frame);
}
CCAnimation* animation = CCAnimation::animationWithFrames(animFrames,0.04f);
CCRepeatForever* mFly=CCRepeatForever::actionWithAction( CCAnimate::actionWithAnimation(animation, false));
animFrames->release();
cache->removeSpriteFramesFromFile(strPlist);
这个代码是网上随便百度的。http://blog.csdn.net/yanghuiliu/article/details/6933421
还有一种方法是多个图在一张合图上,这种更节约磁盘空间,我感觉哈。
[cpp]
//组合图
CCTexture2D *birdTexture=CCTextureCache::sharedTextureCache()->addImage("bird2.png");
CCMutableArray<CCSpriteFrame*>* myArray=new CCMutableArray<CCSpriteFrame*>(3);
CCSpriteFrame *myframe1=CCSpriteFrame::frameWithTexture(birdTexture,CCRect(1,379,31,30));
CCSpriteFrame *myframe2=CCSpriteFrame::frameWithTexture(birdTexture,CCRect(1,411,31,30));
CCSpriteFrame *myframe3=CCSpriteFrame::frameWithTexture(birdTexture,CCRect(1,508,30,28));
CCSpriteFrame *myframe4=CCSpriteFrame::frameWithTexture(birdTexture,CCRect(1,538,30,29));
myArray->addObject(myframe1); www.zzzyk.com
myArray->addObject(myframe2);
myArray->addObject(myframe3);
myArray->addObject(myframe4);
CCAnimation *animation=CCAnimation::animationWithFrames(myArray,1.0f);
CCRepeatForever *myaction=CCRepeatForever::actionWithAction(CCAnimate::actionWithAnimation(animation,false));
CCSprite *mybird=CCSprite::spriteWithSpriteFrame(myframe1);
this->addChild(mybird);
mybird->setPosition(ccp(200,300));
mybird->runAction(myaction);
myArray->release();
补充:移动开发 , 其他 ,