cocos2d-x创建精灵动画方式汇总

1、创建精灵框架缓存,并向其中添加相应的动画文件(plist),最后,通过动画集缓存生产动画

[cpp]  view plain copy
  1. CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();  
  2. cache->addSpriteFramesWithFile("animations/grossini.plist");  
  3. cache->addSpriteFramesWithFile("animations/grossini_gray.plist""animations/grossini_gray.png");  
  4. CCSpriteBatchNode *spritebatch = CCSpriteBatchNode::create("animations/grossini.png");//用于批量生产精灵   
  5. CCArray* animFrames = CCArray::createWithCapacity(15);//动态生成数组,类似于vector  
  6. for(int i = 1; i < 4; i++)  
  7. {  
  8.     //sprintf的作用是字符串格式化,主要功能是把格式化的数据写入某个字符串中。sprintf(str, “ani_conch_%d.png”, 1)后str的值就变成了:ani_conch_1.png  
  9.     sprintf(str, "grossini_blue_%02d.png",i);//两位数字,不够的话,用零补全  
  10.     CCSpriteFrame *frame = cache->spriteFrameByName(str);  
  11.     animFrames->addObject(frame);  
  12. }  
  13. animation = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);   //创建动画集,切换时间为0.2s  
  14. // Add an animation to the Cache  
  15. CCAnimationCache::sharedAnimationCache()->addAnimation(animation, "dance_blue"); // 把此动画集加入动画集缓存中,并命名为dance_blue  
  16. CCAnimationCache *animCache = CCAnimationCache::sharedAnimationCache();     //共享动画集缓存   
  17. CCAnimation *normal = animCache->animationByName("dance");      //获得动画集缓存  
  18. CCAnimate *animN = CCAnimate::create(normal);      //创建动画  

另外,CCString * str = CCString::createWithFormat("market_chipsLogo%d.png", idx);也可以实现替换数字的效果。


   2、直接传人多个图片文件,生成动画

[cpp]  view plain copy
  1. CCSprite *mainsprite=CCSprite::create("catBody1.png");  
  2. CCAnimation *animation=CCAnimation::create();  
  3. animation->addSpriteFrameWithFileName("catBody1.png");  
  4. animation->addSpriteFrameWithFileName("catBody2-4.png");  
  5. animation->addSpriteFrameWithFileName("catBody3.png");  
  6. animation->addSpriteFrameWithFileName("catBody2-4.png");  
  7. animation->setDelayPerUnit(0.1f);//设置动画的间隔时间  
  8. animation->setRestoreOriginalFrame(true);//是否返回第一帧  
  9. mainsprite->runAction(CCRepeatForever::create(CCAnimate::create(animation)));  

3、直接传入一张大图,包含多个小图,生成动画

[cpp]  view plain copy
  1. CCTexture2D *pTexture=CCTextureCache::sharedTextureCache()->addImage("hero.png");  
  2. CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(0,0,32,32));  
  3. CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32,0,32,32));  
  4. CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(64,0,32,32));  
  5. CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(96,0,32,32));  
  6. CCArray  *animFrames=CCArray::create();  
  7. CC_BREAK_IF(!animFrames);  
  8. animFrames->addObject(frame0);  
  9. animFrames->addObject(frame1);  
  10. animFrames->addObject(frame2);  
  11. animFrames->addObject(frame3);  
  12. CCAnimation *animation=CCAnimation::createWithSpriteFrames(animFrames,0.2f);  
  13. heroSprite0->runAction(CCRepeatForever::create(animate));  
转载自: http://blog.csdn.net/somestill/article/details/9852159
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值