首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

Cocos2d-x初学指南(四): 生成animation 帧动画的2种方法

2012-09-10 
Cocos2d-x初学指南(4): 生成animation 帧动画的2种方法方法一是用多套名字按一定规律的不同的单图png,//创

Cocos2d-x初学指南(4): 生成animation 帧动画的2种方法

方法一是用多套名字按一定规律的不同的单图png,

            //创建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

还有一种方法是多个图在一张合图上,这种更节约磁盘空间,我感觉哈。

 

//组合图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);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();



 

热点排行