CCFiniteTimeAction:有限次動作執行類,就是按時間順序執行一系列動作,執行完後動作結束;這裏我們就是學習這個類
從圖中,我們可以看出動作主要分爲兩大類:CCActionInstanse(瞬時動作的基類)和CCActionInterval(延時動作的基類)
CCActionInstanse(瞬時動作的基類):
CCCallFunc :執行函數 CCFlipX/Y: X/Y翻轉 CCHide :隱藏
CCPlace : 設置位置 CCReuseGrid :重用網格 CCShow :顯示
CCStopGrid :停止網格 CCToggleVisibility : 可見切換
CCActionInterval(延時動作的基類)我們用的最多的就是延時動作。CCActionInterval的子類有很多,可以通過cocos2d-x自帶的tests例子來學習。
主要有這些動作:
CCMoveTo/CCMoveBy :移動 CCScaleTo/CCScaleBy:縮放 CCRotateTO/CCRotateBy:旋轉
CCSkewTo/CCSkewBy :扭曲 CCJumpTo/CCJumpBy :跳躍 CCBezierTo/CCBezierBy :貝塞爾曲線
CCBink :閃爍 CCFadeIn/CCFadeOut :淡入淡出 CCTintTo/CCTintBy :染色
CCSpawn :同步 CCRepeat/CCRepeatForever :有/無限次重複
CCDelayTime:延遲
下面是一個例子:grossini是一個精靈
CCActionInterval actionBy = CCJumpBy.actionWithDuration(2, new CCPoint(100, 100), 50, 4); CCFiniteTimeAction actionByBack = actionBy.reverse(); grossini.runAction(CCSequence.actions(actionBy, actionByBack));
而一般我們都可以這樣寫,將幾個動作一起組合在一起來實現精靈的動作。
CCAction action = CCSequence.actions( CCSpawn.actions(CCAnimate.actionWithAnimation(animation, false), CCMoveBy.actionWithDuration(0.28f, position), CCCallFuncND.actionWithTarget(this, onWalkDone, tag)) ); grossini.runAction(action);
CCSequence 是動作序列,把若干個動作按順序組合在一起,然後依次執行。
CCSpawn 是將若干個動作組合在一起,同時執行它們(並行執行),執行時間以最長的那個動作爲準。
參數是CCFiniteTimeAction[] actions一個動作數組,比如說CCMoveBy、CCSkewBy、CCScaleBy等動作數組。一般在CCSpawn的最後一個動作放一個CCCallFunc,放一個回調函數(這裏是onWalkDone)作爲動作執行完後的處理(比如說:顯示信息、人物面向等)。