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 是定時器更新函式,如果定...