cocos2d x學習筆記10 動作3 補間動作

2021-06-08 23:06:23 字數 1575 閱讀 7811

第一部分:ccactionease家族(補間動作)

補間動作也是乙個包裝器(之前叫補間動畫,從字面上講,叫動作更合適一些。)。你也可以叫他緩釋動作。

1.含義

補間動作改變的是,內部動作的執行速率(注意,並沒有改變執行的最終效果,和執行的時間。)

關於這個含義,我們用圖表表示,橫軸表示時間,縱軸表示位移。

假設我們有乙個動作,4秒內按(100,100)的增量進行移動

ccmoveby::actionwithduration(4.0f, ccp(100,100)); 

假設我們的機器比較操蛋,一秒一幀(用綠線切割)。假設初始節點在(0,0)點,那麼這四秒移動的點位置分別是(25,25)(50,50)(75,75)(100,100)。

他的位移時間關係就是圖上的藍線,從圖上可以清晰看出,移動是按照勻速速率進行的。

現在我們使用cceasesineinout做包裝器,包裝這個動作:

cceasesineout::actionwithaction(ccmoveby::actionwithduration(4.0f, ccp(100,100))); 

他的位移時間關係變成圖上的紅線,

從圖上可以清晰看出,移動是非勻速速率進行的,先慢後快。那麼被綠線擷取的位移點的位置,也會發生變化。

從這個圖可以看出,使用補間動作,並沒有改變位移和時間,但是改變了動作的執行速率,從勻速執行變為非勻速執行。

2.原理

通過包裝器,每乙個補間動畫,都改變了內部動作的執行速率,

這是通過封裝**update函式完成的,

例如前面的

cceasesineout。

void cceasesineout::update(cctime time) 

3.字尾解釋

補間動作有三種字尾:

in:表示動作執行先快後慢

out:表示動作執行先慢後快

inout:

表示動作執行快-慢-快

第二部分:使用補間動作

不同的補間動畫有不同的st圖。可以在這裡檢視和執行效果

你可能覺得這種執行方式很奇怪。但這樣可以做出很不錯的效果,比你自己手動調整要快的多,因為這些曲線都是來自於數學計算,而這些數學公式,都是從實際的物體執行中總結出來的。

使用舉例:比如你要做乙個皮球落地的動作,就可以用cceasebounceout。具體效果你可以用上面的位址執行一下。

第三部分:ccspeed

ccspeed也是乙個包裝器,區別於補間動作,他是真正可以改變內部動作執行時間(

duration

)的。

ccactioninterval *move = ccmoveby::actionwithduration(3,ccp(350,0)); 

ccspeed *speed= ccspeed::actionwithaction(move,2.0f);   // 調整為2倍速執行

使用舉例:這個動作經常用來做慢鏡頭和快進。

參考文獻:

cocos2d x學習筆記10 動作3 補間動作

cocos2d x學習筆記10 動作3 補間動作 第一部分 ccactionease家族 補間動作 補間動作也是乙個包裝器 之前叫補間動畫,從字面上講,叫動作更合適一些。你也可以叫他緩釋動作。1.含義 補間動作改變的是,內部動作的執行速率 注意,並沒有改變執行的最終效果,和執行的時間。關於這個含義,...

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,這個類...