cocos2dx動作框架分析

2021-06-23 01:48:49 字數 1359 閱讀 2966

cocos2dx提供了豐富的動作實現的類。其中最主要的兩個類是

ccaction和

ccactionmanager,ccaction是所有動作的基類,類中有幾個很重要的方法:

virtual

void startwithtarget(ccnode *ptarget); //設定動作的目標

virtual

void stop(void); //停止動作

virtual

void step(float dt); //心跳,每一幀都會掉到,後面會介紹是怎麼呼叫這個方法的virtual

void update(float time); //更新動作,由step()呼叫

類ccactionmanager管理所有的動作;主要方法有:

void addaction(ccaction *paction, ccnode *ptarget, bool paused);

這個方法會把乙個ccaction物件交給ccactionmanager管理,裡面具體是用乙個hashmap存起來的,
而ccactionmanager在ccdirector中會被當做乙個singleton使用,

// ccdirector action manager

m_pactionmanager = new

ccactionmanager();

m_pscheduler->scheduleupdatefortarget(m_pactionmanager, kccprioritysystem, false);

每一幀都會去update;
簡單來做,就是ccdirector::drawscene() -> ccschedule::update() -> ccactionmanager::update() ->
ccaction::step() -> ccaction::update();
下面介紹ccaction的分類架構:
(1)ccfinitetimeaction : public

ccaction: 表示這是乙個線性的動畫,新加了setduration()//間隔和reverse()方法;

(2)ccactioninterval : public ccfinitetimeaction:這是乙個延時動畫,主要重寫了step()方法;
(3)ccactioninstant : public ccfinitetimeaction : 這是乙個即時動畫,主要重寫tep()和update()方法;
(4)ccshow........一系列具體動作實現類,主要重寫update後,在這個方法中進行具體操作。

cocos2d x 跟隨動作

ccfollow 乙個節點跟隨另外乙個節點的動作。定義第乙個引數是要跟隨的節點,第二個引數是運動的邊界。如果沒有傳入邊界,則視為沒有邊界。bool helloworld init ccsprite spr ccsprite create icon.png spr setposition ccp 10...

Cocos2d x動作學習筆記

action類如其名,它可以改變node物件的屬性,action物件是隨著時間改變node的屬性。任何乙個以node為基類的物件都有可執行的動作物件。例如,你可以在乙個時間段內將sprite精靈從乙個位置移動到另乙個位置。每個動作都有by和to兩個狀態。為什麼呢?因為它們所執行的結果是不同的。by相...

Cocos2dx 《基礎》 特殊的動作

物件做變速運動 a.easesinein 物體先慢後快 b.easesineout 物體先快後慢 c.easesineinout 物體執行sine運動 auto spriteframe spriteframe create mp.png rect 0,81.25 2,81.25,81.25 auto...