cocos2d-x帧动画实现(续)

猴子原创, 欢迎转载,转载请在明显处注明! 谢谢。

原文地址http://blog.csdn.net/yanghuiliu/article/details/6933421

之前我介绍过cocos2d-x的帧动画实现,今天我把帧动画详细写一下。

帧动画就是很多张png的序列图实现轮流播放产生动画效果。

那么首先我们要一套动画的序列图,没有图的可以看引擎例子里面的图。很多张图我们可以采用TP工具将它们压缩到一张png里面去,这样程序只需要读取一次就行了,提高效率。


比如我将这里的6张图压成了一个png,TP会产生一个所有图的png和一个plist描述文件,plist很像xml,它描述了每一张图的位置,大小等信息。程序就是通过plist文件在合成的大png里面找到每一张图的。

合成的大图叫fei.png,对应的fei.plist。

里面的小图。叫 飞0001.png、飞0002.png、.........飞0006.png

下面开始程序的创建

  1.         //创建cache  
  2. CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();  
  3. char strPlist[64] = {0};  
  4. char strPng[64] = {0};  
  5. sprintf(strPlist,"fei.plist");  
  6. //sprintf(strPng,"fei.pvr.ccz");   
  7. sprintf(strPng,"fei.png");  
  8. cache->addSpriteFramesWithFile(strPlist, strPng);  
  9.   
  10. //创建动画每一帧,从cache里面读取  
  11. CCMutableArray<CCSpriteFrame*>* animFrames = new CCMutableArray<CCSpriteFrame*>(6);  
  12.   
  13. char str[64] = {0};  
  14. for(int i = 1; i <= 6; i++)   
  15. {  
  16.     sprintf(str, "飞%04d.png", i);  
  17.     CCSpriteFrame* frame = cache->spriteFrameByName( str );  
  18.     animFrames->addObject(frame);  
  19. }  
  20.   
  21. CCAnimation* animation = CCAnimation::animationWithFrames(animFrames,0.04f);  
  22.   
  23. CCRepeatForever* mFly=CCRepeatForever::actionWithAction( CCAnimate::actionWithAnimation(animation, false));  
  24. animFrames->release();  
  25. cache->removeSpriteFramesFromFile(strPlist);  

这里的mFly就是一个创建好的action。当然它是可以重复播放的。 你要是只想播放一次。

那么替换成

CCActionInterval* mFly=CCAnimate::actionWithAnimation(animation,true);

你可能看到了我里面注释了一行代码,就是我不是压缩成了png,而是压缩成了pvr.ccz。这种格式效率更高。

pvr是苹果自己支持的图片格式,但是比较占内存,压缩成ccz后就很小了。用法一样。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos2d-x实现流光效果可以使用shader来进行渲染。首先,我们需要创建一个自定义的shader,并将其应用于需要实现流光效果的节点上。 在使用Cocos2d-x的过程中,我们可以使用GLSL语言编写shader代码。在实现流光效果的shader中,我们可以通过改变像素的颜色和透明度来创建流动的效果。 首先,我们定义一个uniform变量time,用于控制流光的移动速度。然后,在片段着色器中,通过改变颜色和透明度的计算公式来实现流动的效果。我们可以使用sin函数或者其他数学函数来计算出每个像素点的颜色和透明度,然后将其应用到节点上。 在节点的渲染流程中,我们将这个自定义的shader应用到节点上,然后传入时间参数,即更新uniform变量time的值。随着时间的增加,我们就可以看到节点上的流光效果在不断地移动。 为了实现更加逼真的流光效果,我们可以尝试给流光添加一些额外的效果,比如模糊、叠加等。通过调整shader代码中的计算公式和传入的参数,我们可以根据自己的需求来调整流光效果的强度和样式。 总结起来,在Cocos2d-x实现流光效果需要创建一个自定义的shader,并将其应用于需要实现效果的节点上。通过改变颜色和透明度的计算公式、传入时间参数等,我们可以实现一个流光效果,使节点看起来具有流动的动画效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值