当前位置:编程学习 > wap >>

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(); 


 

补充:移动开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,