日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos2D-x(3)——动作类备忘

發布時間:2024/4/14 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)——动作类备忘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。