cocos2dx 播放动画

转自:

http://zhuangshuo.iteye.com/blog/1872953


实现游戏里面可以播放动画的效果 

可以实现播放一次和循环播放,对于规定播放次数,我没找到相关方法,有知道的朋友告诉下 

1.创建CCTexture2D,并在这张纹理上划分出多个CCSpriteFrame: 
  可以在一张图片上面截取一部分播放,例如: 

C++代码   收藏代码
  1. CCTexture2D *texture=CCTextureCache::sharedTextureCache()->addImage("girl.png");   
  2.   
  3. CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*0, 48*0, 32, 48));   
  4. CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*1, 48*0, 32, 48));   
  5. CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*2, 48*0, 32, 48));   
  6. CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*3, 48*0, 32, 48));   


    也可以加载几张图片进行播放: 
C++代码   收藏代码
  1. CCSpriteFrame *frame0=CCSpriteFrame::create("bajie.png",CCRectMake(0, 0, 23, 23));  
  2. CCSpriteFrame *frame1=CCSpriteFrame::create("linjin.png",CCRectMake(0, 0, 23, 23));  
  3. CCSpriteFrame *frame2=CCSpriteFrame::create("plane.png",CCRectMake(0, 0, 23, 23));  
  4. CCSpriteFrame *frame3=CCSpriteFrame::create("shuai.png",CCRectMake(0, 0, 23, 23));  



2.创建数组,放入创建出一个CCAnimation 
C++代码   收藏代码
  1. CCArray *animFrames = new CCArray(4);   
  2. animFrames->addObject(frame0);   
  3. animFrames->addObject(frame1);   
  4. animFrames->addObject(frame2);   
  5. animFrames->addObject(frame3);   
  6.    
  7. CCAnimation *animation = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);  
  8. animFrames->release();    


3.CCAnimation不是一个可以用来显示的类型,它只负责记录动画帧、帧间隔等数据,要让它动起来,需要借助CCAnimate,它是一种Action。 
C++代码   收藏代码
  1. //使用animation生成一个动画动作animate   
  2. CCAnimate *animate = CCAnimate::actionWithAnimation(animation);  


4.创建一个CCSprite实例,然后让它循环播放上面的CCAnimate动作。注意,必须用CCRepeatForever::actionWithAction来包装animate,否则动画只播放一次就停下了。 
C++代码   收藏代码
  1. CCSprite *sprite = CCSprite::spriteWithSpriteFrame(frame0);//设置一个初始frame   
  2. sprite->setPosition( ccp( s.width/2, s.height/2) );   
  3. addChild(sprite);   
  4.   
  5. sprite->runAction(CCRepeatForever::actionWithAction( animate));//重复播放 //sprite->runAction(animate);播放一次   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值