天天看點

了解CCMoveTo CCCallFuncN CCSequence用法

在《iPhone & iPad Cocos2D遊戲開發實戰》一書中在看第四章時候遇到陌生知識,然後在網上找到相關知識點,再此記錄;

由序列控制蜘蛛的移動方法代碼

RunSpiderMoveSequence方法的作用是跟蹤已被放下的蜘蛛數量。每次到第八個蜘蛛時,spiderMoveDuration的值就會被減少,進而提高所有蜘蛛的移動速度。%這個符号叫作“餘數運算子”(Modulus Operator),用于得到運用除法以後得到的餘數。比如,如果numSpidersMoved可以用8除盡,那麼“餘數運算子”的計算結果就應該是0。

這裡用到的動作序列隻有一個CCMoveTo動作和一個CCCallFuncN動作。你可以改進蜘蛛的行為,比如讓它往下移動一點,等個幾秒鐘,然後一直移動到底部,就像真的邪惡的蜘蛛通常會做的那樣。我将把具體的做法留給你去發揮。我選擇CCCallFuncN的目的是給spiderBelowScreen方法傳遞蜘蛛精靈作為它的sender變量。這樣的話,當某隻蜘蛛到達螢幕底部時,我就可以直接引用那個蜘蛛,不需要再去到處找了 

1.CCMoveTo  

表示移動到某一個點,還有一個與它類似的CCMoveBy表示移動相對于目前位置某個位置,相當于一個向量;

2.CCCallFuncN

CCCallFuncN 帶有一個參數,這個參數本身是一個Action,相當于他的參數就是一個BUtton;與它類似的還有

CCCallFunc 不帶參數, 執行回調函數方法,

CCCallFuncND 帶兩個參數,一個是Action動作,另一個是自定義的參數

CCCallFuncO 也是兩個參數,和CCCallFuncN參數一樣,

以下是幾個類在CCActionInstant.m檔案中的定義,通過他們的-(void)execute函數看出他們參數問題

3.CCSequence 

sequence是用來按順序執行一系列的動作,即動作按排列的順序一個接一個的執行,示例如下:

上面這段代碼的意思是,sprite(精靈對象)先移動到坐标(100,100)位置,然後在向右上方移動(80,80),然後,再向右移動80(80,0)。這一系列動作是不重疊,一個接一個的執行的。 

注意的是,在這些動作中不能有 CCRepeatForever 這種無限的動作(就是不停的一直持續的動作),必須是那種可以在有限的時間内完成的。 

另外在部落格上看到其他幾個類似的類的用法,都是cocos2d常用動作 原文連接配接 http://leeyin.iteye.com/blog/1306557

CCSpawn 

這個與上面的 CCSequence 不同的是,排列的動作是同時執行的,執行的時間以子動作中的最長的時間為準。代碼示例:

上面這段代碼的意思是,sprite 在兩秒鐘内,向右跳四次,總共跳躍距離是300,跳躍高度是50,在跳躍過程中 同時旋轉720度。 

CCRepeat 

這個是用來重複一個動作有限的次數。當然,你也可以用CCSequence來實作同樣的功能,隻是那樣看起來有點傻。示例:

上面這段代碼的意思是,先将sprite 放置在(60,60)位置,然後一秒内向右移動150的距離。這兩個動作重複3次。

CCRepeatForever 

上面的是重複有限次數,這個是無限次重複,比如,你想讓一個輪子不停的旋轉,就可以用這個實作。示例:

就像上面講的這段代碼會讓這個 sprite 一直不停的 以每秒360度的轉速永遠的旋轉下去。 

本文轉自新風作浪 51CTO部落格,原文連結:http://blog.51cto.com/duxinfeng/1208717,如需轉載請自行聯系原作者