Cocos2D-x(3)——动作类备忘
1. CCAction是cocos2d-x中的動作類,繼承自CCObject,動作類必須依托與CCNode及其子類對象來發回作用。CCAction的子類包括有限時間動作CCFiniteTimeAction、跟隨CCFollow、移動速度CCSpeed,其中CCFiniteTimeAction包括瞬時動作CCActionInstant和延時動作CCActionInterval。
2. CCAction的子類CCActionInstant是瞬時動作類,表示直接調用結果的動作,中間不產生動畫效果;而CCActionInterval的動作過程會形成動畫效果。
2. 1 CCNode實例產生移動動作的步驟:
(1) 通過CCActionInterval的子類的create函數,傳入相應參數,創建相應的動作實例。
(2) 調用CCNode類的runAction(action)函數,將action實例傳入,執行相應動作。
2.2 CCActionInterval的子類中很多都是XXXTo和XXXBy的類,通常XXXBy是XXXTo的子類,其中XXXTo是動作的絕對執行,而XXXBy是動作相對執行。
如CCActionInterval* moveto = CCMoveTo::create(2, ccp(10,10));
CCActionInterval* moveby = CCMoveBy::create(2, cpp(10,10));
CCNode類實例執行moveto動作時,不論當前所在位置,是直接移動到點(10,10)處,而執行moveby動作時,是在當前位置的基礎上,在x和y軸都移動10個單位。如果原本所在點為(50,50),則執行moveto后位置為(10,10),而執行moveby后位置為(60,60).
2.3 通常XXXTo的reverse()方法為空,而XXXBy的reverse()方法獲得一個逆動作。
3. 組合動作類包括CCSequence、CCSpawn、CCRepeat和CCRepeatForever
3.1 CCSequence表示一個動作執行序列,定義動作序列,使用CCArray數組或者傳入所有動作,最后結尾參數設置為NULL,可以執行多個動作
CCFiniteTimeAction* seq = CCSequence::create(action1, action2, NULL);
sprite->runAction(seq);
3.2 CCSpawn表示被合成的動作同時進行,定義方法與CCSequence類似。
CCAction* spawn? = CCSpawn::create(CCJumpBy::create(2, ccp(300,0), 50, 4), CCRotateBy::create(2, 720), NULL);
sprite->runAction(spawn);
3.3 CCRepeat 和CCRepeatForever使動作重復進行,CCRepeat類可以指定重復次數,CCRepeatForever則是一直重復。
CCActionInterval* repeat = CCRepeat::create((CCFiniteTimeAction*)seq->copy()->autorelease(), 10);
sprite->runAction(repeat);
4. 跟隨動作CCFollow
CCFollow是一個節點跟隨另一個節點的動作。
sprite->runAction(firstAction);
this->runAction(CCFollow::create(sprite, CCRectMake(0, 0, 100,100)));
第一個參數是跟隨的節點,第二個參數是運動的邊界。
5. 可調整速度動作CCSpeed類
CCSpeed類不是一個獨立的動作,它是對目前動作的一個包裝,可以實現慢動作和快進效果。
6. 動作延時類CCDelayTime
CCDelayTime就是使動作咽喉一段固定時間。
CCActionInterval* delay = CCSequence::create(moveto, CCDelayTime::create(2), moveto), NULL);
sprite->runAction(delay);
create函數傳入的參數即延后的秒數。
7. 改變動作執行對象CCTargetedAction
通常默認的動作執行對象是調用runAction的對象,而CCTargetedAction可以改變動作執行對象。
CCTargetedAction* t = CCTargetedAction::create(sprite2, moveto);
sprite->runAction(CCSequence::create(moveto, t, moveto, NULL));
sprite先moveto,然后sprite2執行moveto,最后sprite執行moveto。
8. 函數回調動作CCCallFunc
動作完成后需要做的一些數據處理可以通過CCCallFunc及其子類實現。
CCCallFunc其回調函數不含參數,CCCallFuncN以CCNode指針為參數,CCCallFuncND則是以CCNode指針和一個數據指針做參數。
?
?
轉載于:https://www.cnblogs.com/litterrondo/archive/2013/05/22/3093677.html
總結
以上是生活随笔為你收集整理的Cocos2D-x(3)——动作类备忘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程返回linux系统编程之管道(二):
- 下一篇: 检索COM类工厂中CLSID为{0002