64,642
社区成员
发帖
与我相关
我的任务
分享
//cocos2d::extension::SEL_CCControlHandler是这样声明的
typedef void (CCObject::*SEL_CCControlHandler)(CCObject*, CCControlEvent);
cocos2d::extension::SEL_CCControlHandler LoginUiLoaderLayer::onResolveCCBCCControlSelector( CCObject * pTarget, const char* pSelectorName )
{
CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "loginPressed", LoginUiLoaderLayer::loginPressed);
//上面这个宏相当于 return (SEL_CCControlHandler)(&LoginUiLoaderLayer::loginPressed)
//这里用(SEL_CCControlHandler)(&LoginUiLoaderLayer::loginPressed)输出可以看到是有效指针
return NULL;
}
//这个是要传递的成员函数
void LoginUiLoaderLayer::loginPressed( cocos2d::CCObject * pSender, cocos2d::extension::CCControlEvent pCCControlEvent )
{
//函数实现省略
}
//这是接收函数返回值的地方,输出 selCCControlHandler 可以看到变成了0x1,用成员指针的方式调用会报错
SEL_CCControlHandler selCCControlHandler = 0;
selCCControlHandler = targetAsCCBSelectorResolver->onResolveCCBCCControlSelector(target, selectorName.c_str());