第一部分: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,這個類...