如何在Cocos2d-x3.x中创建没有lambda函数的自定义事件侦听器?

如何在Cocos2d-x3.x中创建没有lambda函数的自定义事件侦听器?,cocos2d-x,cocos2d-x-3.0,Cocos2d X,Cocos2d X 3.0,Cocos2d-x3.x中的新事件调度器有几个测试示例显示lambda用于同一类中的回调。我有一个基类需要注册一个事件,然后有一个overidden子类方法响应该事件。我将如何做到这一点 在我的基础课上: EventListenerCustom* listener = EventListenerCustom::create("my_event", myVirtualEventMethod); 根据Kazuki的回答更新: class BaseScene : public cocos2d::La

Cocos2d-x3.x中的新事件调度器有几个测试示例显示lambda用于同一类中的回调。我有一个基类需要注册一个事件,然后有一个overidden子类方法响应该事件。我将如何做到这一点

在我的基础课上:

EventListenerCustom* listener = EventListenerCustom::create("my_event", myVirtualEventMethod);
根据Kazuki的回答更新:

class BaseScene : public cocos2d::Layer
{
    public:
    virtual void myVirtualEventMethod();
};
我的方法:

EventListenerCustom* listener = EventListenerCustom::create("my_event", CC_CALLBACK_1(BaseScene::myVirtualEventMethod, this));

请参阅下面注释中的错误。

EventListenerCustom::create()接受std::函数

cocos2d-x中有一个宏

EventListenerCustom* listener = EventListenerCustom::create("my_event",
    CC_CALLBACK_1(YourSubclass::myVirtualEventMethod, this));
已编辑

No viable conversion from '__bind<void (BaseScene::*)(), BaseScene ,
    std::__1::placeholders::__ph<1>&>' to 'const std::function<void(Eventcustom)>'


谢谢你的详细回答。然而,当我尝试您提供的代码时,我得到了这个错误:没有从“\uuu bind”到“const std::function”的可行转换,我将在上面进行编辑以显示更多的代码现在我了解发生了什么。非常感谢Kazuki的帮助!从“\uuu bind”到“const std::function”没有可行的转换
EventListenerCustom* listener = EventListenerCustom::create("my_event",
    CC_CALLBACK_1(YourSubclass::myVirtualEventMethod, this));
No viable conversion from '__bind<void (BaseScene::*)(), BaseScene ,
    std::__1::placeholders::__ph<1>&>' to 'const std::function<void(Eventcustom)>'
virtual void myVirtualEventMethod(EventCustom*);
EventListenerCustom* listener = EventListenerCustom::create("my_event",
    CC_CALLBACK_0(YourSubclass::myVirtualEventMethod, this));