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