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