通過編寫呼吸燈的需求,聯想總結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:按比列改變目標動作的速度,可以實現由快到慢,速度隨時間改變的變速運動

 

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