通过编写呼吸灯的需求,联想总结Cocos2d-x(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:按比列改变目标动作的速度,可以实现由快到慢,速度随时间改变的变速运动

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章