Cocos2d學(xué)習(xí)筆記之動作Action
Cocos2d學(xué)習(xí)筆記中的動作Action是本文要介紹的內(nèi)容,感謝知易的cocos2d教程,在拜讀他的教程時將一些要點記錄下來,以便隨時查閱。來看文章詳解了動作Action相關(guān)內(nèi)容。
1.基本動作
Cocos2d提供的基本動作:瞬時動作、延時動作、運(yùn)作速度。
瞬時動作:就是不需要時間,馬上就完成的動作。瞬時動作的共同基類是 InstantAction。
Cocos2d提供以下瞬時動作:
放置 – Place
效果類似于 node.Position = ccp(x, y)。之所以作為一個動作來實現(xiàn)是為了可以與其他動作形成一個連續(xù)動作。
隱藏 – Hide
效果類似于 [node setVisible:NO]. 之所以作為一個勱作來實現(xiàn)是為了可以與其他動作形成一個連續(xù)動作。
顯示 – Show
效果類似于 [node setVisible:YES]. 之所以作為一個動作來實現(xiàn)是為了可以與其他動作形成一個連續(xù)動作。
可見切換 – ToggleVisibility
2.延時動作
延時動作就是指動作的完成需要一定時間。因此actionWithDuration 是延時動作執(zhí)行時的***個參數(shù),延時動作的共同基類是 CCIntervalAction(包含了組合動作類)。
Cocos2d提供以下瞬時動作(函數(shù)命名規(guī)則是:XxxxTo: 意味著運(yùn)動到指定的位置, XxxxBy:意味著運(yùn)動到按照指定的 x、y 增量的位置。[x、y 可以是負(fù)值]):
- 移動到 – CCMoveTo
- 移動– CCMoveBy
- 跳躍到 – CCJumpTo 設(shè)置終點位置和跳躍的高度和次數(shù)。
- 跳躍 – CCJumpBy 設(shè)置終點位置和跳躍的高度和次數(shù)。
- 貝塞爾 – CCBezierBy 支持 3 次貝塞爾曲線:P0-起點,P1-起點切線方向,P2-終點切線方向,P3-終點。
- 放大到 – CCScaleTo 設(shè)置放大倍數(shù),是浮點型。
- 放大 – CCScaleBy
- 旋轉(zhuǎn)到 – CCRotateTo
- 旋轉(zhuǎn) – CCRotateBy
- 閃爍 – CCBlink 設(shè)定閃爍次數(shù)
- 色調(diào)變化到 – CCTintTo
- 色調(diào)變換 – CCTintBy
- 變暗到 – CCFadeTo
- 由無變亮 – CCFadeIn
- 由亮變無 – CCFadeOut
3.組合動作
按照一定的次序?qū)⑸鲜龌緞幼鹘M合起來,形成連貫的一套組合動作。組合動作包括以下幾類:
序列 – CCSequence
Sequence 的使用非常簡單,該類也從 CCIntervalAction 派生,本身就可以被 CocosNode 對象執(zhí)行。該類的作用就是線序排列若干個動作,然后按先后次序逐個執(zhí)行。
同步 – Spawn
Spawn 的使用非常簡單,該類也從 IntervalAction 派生,本身就可以被CocosNode 對象執(zhí)行。該類的作用就是同時并列執(zhí)行若干個動作,但要求動作都必須是可以同時執(zhí)行的。比如:移動式翻轉(zhuǎn)、變色、變大小等。
需要特別注意的是,同步執(zhí)行***的完成時間由基本動作中用時***者決定。
重復(fù)有線次數(shù) – Repeate
重復(fù)有限次數(shù)的動作,該類也從 IntervalAction 派生,可以被 CocosNode 對象執(zhí)行。
反動作 – Reverse
反動作就是反向(逆向)執(zhí)行某個動作,支持針對動作序列的反動作序列。反動作不是一個專門的類,而是 CCFiniteAction 引入的一個接口。不是所有的類都支持反動作,XxxxTo 類通常不支持反動作,XxxxBy 類通常支持。
動畫 – Animation
動畫就是讓精靈自身連續(xù)執(zhí)行一段影像,形成模擬運(yùn)動的效果:行走時的精靈狀態(tài)、打斗時的狀態(tài)等。
無限重復(fù) – RepeatForever
RepeatForever 是從 Action 類直接派生的,因此無法參與序列和同步;自身也無法反向執(zhí)行。該類的作用就是無限期執(zhí)行某個動作或動作序列,直到被停止。
4.速度變化
基本動作和組合動作實現(xiàn)了針對精靈的各種運(yùn)動、動畫效果的改變,但這樣的改變的速度是不變的,通過 CCEaseAction 為基類的類系和 CCSpped 類我們可以很方便的修改精靈執(zhí)行勱作的速度:由快至慢還是由慢至快。
- EaseIn 由慢至快。
- EaseOut 由快至慢
- EaseInOut 由慢至快再由快至慢。
- EaseSineIn
- 由慢至快。
- EaseSineOut 由快至慢
- EaseSineInOut 由慢至快再由快至慢。
- EaseExponentialIn 由慢至極快。
- EaseExponentialOut 由極快至慢。
- EaseExponentialInOut 由慢至極快再由極快至慢。
- Speed 人工設(shè)定速度,還可通過 SetSpeed 不斷調(diào)整。
5.擴(kuò)展動作
延時動作 – Delay ,比如在動作序列中增加一個時間間歇
函數(shù)調(diào)用
函數(shù)
在動作序列中間或者結(jié)束調(diào)用某個函數(shù),執(zhí)行任何需要執(zhí)行的任務(wù):動作、狀態(tài)修改等。
- id acf = [CCCallFunc actionWithTarget:self selector:@selector(CallBack1)];
對應(yīng)的函數(shù)為:
- - (void) CallBack1 {
- [sprite runAction:[CCTintBy actionWithDuration:0.5 red:255 green:0 blue:255]]; }
帶對象參數(shù)--調(diào)用自定義函數(shù)時,傳遞當(dāng)前對象。
- id acf = [CallFuncN actionWithTarget:self selector:@selector(CallBack2:)];
對應(yīng)的自定義函數(shù):(這里,我們直接使用了該對象)
- - (void) CallBack2:(id)sender {
- [sender runAction:[CCTintBy actionWithDuration:1 red:255 green:0 blue:255]];
- }
帶對象、數(shù)據(jù)參數(shù)--用自定義函數(shù)時,傳遞當(dāng)前對象和一個常量(也可以是指針)。
- id acf = [CCCallFuncND actionWithTarget:self selector:@selector(CallBack3:data:) data:(void*)2];
對應(yīng)的自定義函數(shù),我們使用了傳遞的對象和數(shù)據(jù):
- -(void) CallBack3:(id)sender data:(void*)data {
- [sender runAction:[CCTintBy actionWithDuration:(NSInteger)data red:255 green:0 blue:255]];
- }
小結(jié):Cocos2d學(xué)習(xí)筆記之動作Action的內(nèi)容介紹完了,希望本文對你有所幫助!