cocos2dx 2 x定時器分析(2)

2021-06-29 09:51:24 字數 1597 閱讀 2441

1、分析下update型別,即每幀都呼叫的定時器,如何實現:

//ccscheduler中的成員變數

struct _listentry *m_pupdates0list; // list priority == 0

-->>存放update型別定時器的結構

// a list double-linked list used for "updates with priority"

typedef struct _listentry

tlistentry;

2、新增update型別的定時器

/** schedules the 'update' selector for a given target with a given priority.

the 'update' selector will be called every frame.

the lower the priority, the earlier it is called.

@since v0.99.3

@lua na

*/void scheduleupdatefortarget(ccobject *ptarget, int npriority, bool bpaused);

-->>

void ccscheduler::scheduleupdatefortarget(ccobject *ptarget, int npriority, bool bpaused)

//根據優先順序加入到不同的鍊錶中

// most of the updates are going to be 0, that's way there

// is an special list for updates with priority 0

if (npriority == 0)

else if (npriority < 0)

else

}加入了優先順序的概念,需要根據優先順序確定插入位置,但是都為加入到快速查詢雜湊鍊錶中,

而且同樣會retain。

3、移除update型別的定時器

/** unschedules the update selector for a given target

@since v0.99.3

@lua na

*/void unscheduleupdatefortarget(const ccobject *ptarget);

-->>

void ccscheduler::unscheduleupdatefortarget(const ccobject *ptarget)

//如果雜湊表中有

thashupdateentry *pelement = null;

hash_find_int(m_phashforupdates, &ptarget, pelement);

if (pelement)

else

}}-->>

void ccscheduler::removeupdatefromhash(struct _listentry *entry)

}

cocos2d x 關於定時器

定時器的作用就是每隔一段時間,就執行一段自定義的動作,比如飛機向前方移動,子彈的移動等等。該函式定義在ccnode標頭檔案中,基本上cocos2dx中所有的東西都能夠使用定時器。第一種 scheduleupdate 預設定時器 該定時器開啟函式與update 函式配套使用,update方法是每一幀執...

cocos2dx定時器事件

update定時器 schedule定時器 其他事件 除了定時器會不斷地提供觸發事件外,cocos2d x還為我們提供了一些其他與流程控制相關的事件 方法名稱 描述 onenter 當此節點所在場景即將呈現時,會呼叫此方法 onentertransitiondidfinish 當此節點所在場景的入場...

Cocos2d x之定時器

每乙個遊戲程式都有乙個迴圈在不斷執行,它是由導演物件來管理與維護。如果需要場景中的精靈運動起來,可以在遊戲迴圈中使用定時器對精靈等物件進行操作。因為node類封裝了scheduler類,所以也可以直接使用node中呼叫函式。定時器的兩種實現方式 scheduleupdate 是定時器更新函式,如果定...