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

















