cocos2dx學習筆記之回調函數:定時器schedule,普通回調callfunc,菜單回調menu_selector

函數定義:

typedef void (CCObject::*SEL_SCHEDULE)(float);
typedef void (CCObject::*SEL_CallFunc)();
typedef void (CCObject::*SEL_CallFuncN)(CCNode*);
typedef void (CCObject::*SEL_CallFuncND)(CCNode*, void*);
typedef void (CCObject::*SEL_CallFuncO)(CCObject*);
typedef void (CCObject::*SEL_MenuHandler)(CCObject*);
typedef void (CCObject::*SEL_EventHandler)(CCEvent*);
typedef int (CCObject::*SEL_Compare)(CCObject*);

#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR)
#define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR)
#define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR)
#define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR)
#define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)
#define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR)
#define event_selector(_SELECTOR) (SEL_EventHandler)(&_SELECTOR)
#define compare_selector(_SELECTOR) (SEL_Compare)(&_SELECTOR)

我在運行項目實例的時候就碰到這樣的錯誤:
error c2440:“類型轉換”無法從“void(_ thiscall xx::*)(void)”轉換爲“cocos2d:SEL_CallFuncN”
結合上面的定義,我發現就是函數參數缺失,對於schedule_selector回調的函數,schedule_selector(Game::callback)
void callback(flaot st)
{ }
在定義callback 時,要注意這個對應類型的參數。
menu_selector:對應參數爲CCobject *
callfuncN_selector:對應參數爲CCNode *
不過有的地方不寫參數也可以編譯通過,這點還是沒搞明白。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章