通过编写呼吸灯的需求,联想总结Cocos2dx(2.1.5版本)的动作类CCAction

       在谈游戏动作类之前,先谈谈游戏引擎,很久以前没有现在这些这么好用的游戏引擎,那时候的游戏开发者,每次开发一款游戏,都需要从底层用C++开始写,这必然费时费力,而且C++也不是那么好学的.因为这个迫切的需求,所以后面就有了游戏引擎来避免每次"重新发明轮子",让开发者集中主要的精力用于业务逻辑开发,好用的脚本的语言,如lua,js,自然必不可少.游戏引擎负责和CPU,GPU交互,那谁来和游戏引擎交互,lua虚拟机或者javaScript虚拟机.

      通俗的讲,就是我们在做业务逻辑开发的过程中,调用lua虚拟机提供的接口,间接调用引擎的API,实现我们想要的效果.

      回归正题,首先看看策划给我提的呼吸灯需求

     那我实现的效果是怎么样的呢

      http://m.youku.com/v_show/id_XNDU5OTI2ODMyMA==.html?pgcpgcid=UNTIyMDE3NjE1Ng%3D%3D&sharekey=536fb8941fa3fcd82513417901867d2e8

    通过视频我们可以看到那个加号的表现是淡进淡出,原理就是在改变透明度和颜色

    那代码是如何实现的呢

 首先声明一个动态数组arr,然后加入两个动作元素,一个是淡出,一个是淡入,声明一个重复执行的CCRepeatForever方法,用runAction来执行,就可以制作出呼吸灯的效果了

我刚开始是用CCFadeOut和CCFadeIn来弄的,但是没有成功,自己百度是找不到dbUIFadeOut和dbUIFadeIn的,因为这两个是当前游戏的lua虚拟机封装的接口,CCFadeOut和CCFadeIn是引擎提供的API,这两者不一定是完全统一,具体的项目要具体看.

对于CCArray有几点要注意:

a.我们创建一个CCArray后如果不是立刻使用的话一定要调用retain,增加引用计数,不然会被自动释放!

      这里就涉及到了C++中Cocos2d-x内存管理技术,我们买手机的时候,肯定会发现4g,6g,8g内存的手机价位是不一样的,所以的手机的内存是很珍贵的,作为开发者,我们要谨慎利用内存,并且去避免内存泄漏.

      Cocos2d-x有两种管理内存的技术:

      一种是引用计数,通过给每个对象维护一个引用计数器,调用一次对对象,就加1,失去一次就减1,当引用计数为0时,自动触发对象的回收释放.

      另一种是autorelease,就是把对象加入自动回收池(CCAutore-leasePool),每一帧结束释放一次回收池,每帧开始前创建一个新的回收池.

b.删除CCArray中的元素时内部调用一次release,不然可能会内存泄露!

那我们继续总结一下游戏中使用的那些动作(Action)

1.CCFlace:将节点放置到某个指定位置,相当于setPosition()

2.CCFlipX和CCFlipY:把精灵沿X轴或者Y轴反向显示,与设置精灵的FlipX和FlipY属性相同

3.CCShow和CCHide:用于显示和隐藏节点,与设置节点的Visible属性一样

 

 4.CCCallFunc系列:回调

 

    CCCallFunc创建一个回调动作(调用不带参数的回调方法)

    CCCallFuncN创建一个回调动作(调用 带一个参数的回调方法)

    CCCallFuncND创建一个回调动作(调用 带两个参数的回调方法)

5.CCMoveTo和CCMoveBy:节点直线运动

6.CCJumpTo和CCJumpBy:使节点以一定轨迹跳跃到指定位置

7.CCBezierTo和CCBezierBy:使做曲线运动

8.CCScaleTo和CCScaleBy:产生所发效果,使节点缩放系数随时间线性变化

9.CCRotateTo和CCRotateBy:产生旋转效果,正方向为顺时针

10.CCFadeIn和CCFadeOut:产生淡入淡出的效果

11.CCFadeTo:设置一段时间内透明度的变化效果

12.CCTintTo和CCTintBy:设置色调变化

13.CCBlink:使目标节点闪烁

14.CCAnimation:播放帧动画

15.CCRepeat/CCRepeatForever:重复

16.CCSpawn:并列,动作同时执行

17.CCSequence:序列,一系列动作按顺序执行

18.CCDelayTime:延时

19.CCSpeed:线性改变某个动作的速度,可以实现成倍地快放和慢放功能

20.CCActionEase:按比列改变目标动作的速度,可以实现由快到慢,速度随时间改变的变速运动

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoduangg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值