我的Cocos2d x學習筆記(十六)動作

2021-07-03 01:19:47 字數 3052 閱讀 8010

一、簡介:

繼續引用高階開發教程:

ccaction 作為乙個基類,其實質是乙個介面(即抽象類),由它派生的實現類(如運動和轉動等)才是我們實際使用的動作。ccaction 的絕大多數實現類都派生自ccfinitetimeaction,這個類定義了在有限時間內可以完成的動作。由ccfinitetimeaction 派生出的兩個主要類分別是瞬時動作(ccactioninstant)和持續性動作(ccactioninterval)。

動作作用於ccnode,任何乙個動作都需要由ccnode物件執行。

乙個ccaction只能使用一次,對於需要反覆使用的動作物件,可以通過copy方法複製使用。

ccfinitetimeaction定義了reverse方法,通過這個方法可以獲得乙個與原動作相反的動作。

設定屬性為常量的動作不存在逆動作,設定屬性為相對值的動作存在逆動作。

二、瞬時動作

瞬時動作指立刻完成的動作,是ccfinitetimeaction 中持續時間為0的特例。

瞬時動作在下一幀會立刻執行並完成,為了方便與其他動作類組合為複雜動作。

1、ccplace

該動作作用於將節點放置到某個指定位置,其作用與修改節點的position屬性相同。

例項:

ccplace* place = ccplace::create(ccp(100, 100));

ccsprite* spr = ccsprite::create("p_2_01.png");

spr->setposition(ccp(240,160));

spr->runaction(place);

addchild(spr);

2、ccflipx和ccflipy這兩個動作分別用於將精靈沿x和y軸反向顯示,其作用與設定精靈的flipx和flipy屬性相同。

3、ccshow和cchide

這兩個動作分別用於顯示和隱藏節點,其作用與設定節點的visible屬性的作用一樣。

4、cccallfunc

cccallfunc系列動作包括:cccallfunc、cccallfuncn、cccallfun***、cccallfunco。

用來在動作中進行方法呼叫。

cccallfunc:呼叫的方法不包含引數,callfunc_selector。

cccallfuncn:包含乙個ccnode* 型別的引數,callfuncn_selector。

cccallfun***:包含乙個ccnode*型別的引數,和乙個void*引數(自定義型別),callfun***_selector。

cccallfunco:包含乙個ccobject*型別的引數,callfunco_selector。

二、持續性動作

持續性動作是在持續一段時間裡逐漸完成的動作。

每一種持續性動作通常存在兩個不同的變種動作,to字尾的動作描述了節點屬性的絕對變化,by字尾的動作描述了屬性值的相對變化。

持續性動作根據效果可以分為4類:位置變化動作、屬性變化動作、視覺特效動作、控制動作。

(一)位置變化動作(3種)

1、ccmoveto和ccmoveby:

用於節點做直線運動。設定了動作時間和終點位置後,節點就會在規定時間內,從當前位置直線移動到設定的終點位置。

2、ccjumpto和ccjumpby

使節點以一定的軌跡跳躍到指定位置。

3、ccbezierto和ccbezierby

使節點進行曲線運動,運動的軌跡由貝塞爾曲線描述。

(二)屬性變化動作

特點是通過屬性值的逐漸變化實現動畫效果。

1、ccscaleto和ccscaleby:

產生縮放效果。

2、ccrotateto和ccrotateby:

產生旋轉效果。

3、ccfadein和ccfadeout:

產生淡入淡出效果。

4、ccfadeto:

一段時間內透明度的變化效果。

5、cctintto和cctintby:

設定色調製化。

(三)視覺特效動作

1、ccblink:

使目標節點閃爍。

2、ccanimation:

(四)控制動作

用於對一些動作進行精細控制。

ccdelaytime:將動作延時一定時間。

ccrepeat:把現有動作重複一定次數。

ccrepeatforever:使乙個動作不斷重複。

三、復合動作

作為容器,把許多動作組合成乙個複雜的動作。

1、ccrepeat和ccrepeatforver:

ccrepeat:把現有動作重複一定次數。

ccrepeatforever:使乙個動作不斷重複。

2、ccspawn:使一批動作同時執行。

3、ccsequence:

讓動作順序執行。

3、ccdelaytime:

占用一段時間,使動作延時。

四、變速動作

它可以把任何動作按照改變後的速度執行。

1、ccspeed:

用於線性地改變某個動作的速度。

2、ccactionease:

自定義速度變化。

3、ccfollow

跟隨。

Cocos2d x學習筆記1

1.建立新的cocos2d x 3.0 專案 在命令列中輸入 cocos new helloworld 專案名稱 p com.ss.pku 包名字 l cpp 專案型別 d d cocos workspace 專案存放路徑 2.資料夾分析 resource 資料夾 存放資源檔案 include和so...

Cocos2d x學習筆記(7)

1 動作基本概念 ccactiong是動作類的基類,動作作用於ccnode,因此,任何乙個動作都需要ccnode物件來執行。ccaction作為乙個基類,其實質是乙個介面 抽象類 由它派生的實現類才是實際使用的動作。ccaction的絕大多數實現類都派生自ccfinitetimeaction,這個類...

Cocos2d x動作學習筆記

action類如其名,它可以改變node物件的屬性,action物件是隨著時間改變node的屬性。任何乙個以node為基類的物件都有可執行的動作物件。例如,你可以在乙個時間段內將sprite精靈從乙個位置移動到另乙個位置。每個動作都有by和to兩個狀態。為什麼呢?因為它們所執行的結果是不同的。by相...