频道栏目
首页 > 程序开发 > 移动开发 > 其他 > 正文
Cocos2d-x初学指南(4): 生成animation 帧动画的2种方法
2012-08-29 10:04:24           
收藏   我要投稿

方法一是用多套名字按一定规律的不同的单图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.2cto.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(); 


 

点击复制链接 与好友分享!回本站首页
相关TAG标签 指南 方法 动画
上一篇:Cocos2d-x初学指南(3): 扩展CCAction制作自己的运动轨迹
下一篇: Cocos2d-x初学指南(5): Tiled Map的使用(视角移动,碰撞检测)
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站