在C++中写的方法,如果需要传递函数,当绑定到lua时,genbinding.py生成的绑定类会直接return 0,是的lua无法设置回调函数,但是widget子类,如button,sprite确能设置点击事件,触摸事件,所以我看了下cocos2dx自己的绑定方式,发现用的是ScriptHandlerMgr::getInstance()->addCustomHandler方法实现,如此,我们就直接拿来用吧
核心代码只有几行
1 hpp,cpp
#ifndef SDKManager_h
#define SDKManager_h
#include"cocos2d.h"
typedef std::function<void(int ,std::string)> sdkCallFunc;
class SDKManager {
SDKManager(){};
~SDKManager(){};
private:
sdkCallFunc sdkCallfunc;
public:
static SDKManager* getInstance();
int test(int number);
void setCallback(const sdkCallFunc& callfunc);
};
#endif /* SDKManager_h */
#include "SDKManager.hpp"
#include "scripting/lua-bindings/manual/CCLuaEngine.h"
SDKManager* g_instance = nullptr;
SDKManager* SDKManager::getInstanc