跪求cocos2dx3.0使用ScriptHandlerMgr调用lua函数的方法!!!

如何使用ScriptHandlerMgr回调lua函数

在cocos2d-x V2.x中,c++对象回调lua函数需要在相应类内增加成员变量以及一些成员函数,这些代码大大增加了lua脚本引擎和c++引擎的耦合度。因此,cocos2d-x V3.0对此机制进行了优化,对于从Ref类派生出来的类,通过建立c++对象、HandlerType和lua函数索引的映射关系,应用ScriptHandlerMgr进行统一管理。
假设现在有一个类TestCallback,基于该类分别用V2.x和V3.0的机制实现对lua函数的回调,从而详解使用V3.0ScriptHanderMgr回调lua函数的好处。

http://www.cocos2d-x.org/docs/manual/framework/native/scripting/lua/lua-use-scripthandlermgr/zh#cocos2d-x-v2x
上述代码为TestCallback类新增了一个lua函数回调机制。在lua脚本中,我们可以这样使用:
local
function callback()

do something end testCallbackObj
:registerScriptHandler(callback)

cocos2d-x 3.0:
/*C++ begin –///TestCallback.h//1.继承自cocos2d::Ref
class TestCallback : public cocos2d::Ref{ …}//LuaScriptHanlderMgr.h
enum
class HandlerType: int{ … //2.增加一个HandlerType EVENT_TESTCALLBACK,};//TestCallback.cppvoid TestCallback::onEvent(){ … //3.事件触发对lua函数的回调#if CC_ENABLE_SCRIPT_BINDING
if ( kScriptTypeNone != _scriptType) { ScriptEngineManager::getInstance()->getScriptEngine()->sendEvent(event); }#endif // #if CC_ENABLE_SCRIPT_BINDING …}/*C++ end –
//Lua begin*///cocos
/scripting
/lua-bindings
/script
/Cocos2dConstants.lua…cc.Handler.EVENT_PHYSICS_CONTACT_SEPERATE = 56…cc.Hadnler.EVENT_TESTCALLBACK = numValues…/Lua end*/
上述代码为TestCallback类新增了一个lua函数回调机制。在lua脚本中,我们可以这样使用:
local
function callback()

do something end ScriptHandlerMgr
:getInstance()
:registerScriptHandler(testCallbackObj,callback,EVENT_TESTCALLBACK)
这里有几点需要注意:
一个对象可以对应多个不同HandlerType当前版本只支持对类Ref派生出的类对象进行统一管理,因为在Ref的析构函数中会自动调用removeObjectAllHandlers,所以对于所有从Ref派生出来的类无需在析构中添加removeObjectAllHandlers的调用,能进一步降低lua脚本引擎和c++引擎的耦合度。

结论
cocos2d-x 3.0使用ScriptHandlerMgr管理c++对象回调lua函数,实现了统一管理,减化了实现步骤,大大降低的脚本引擎和c++引擎的耦合度。

http://www.cocos2d-x.org/docs/manual/framework/native/scripting/lua/lua-use-scripthandlermgr/zh

使用这个完全没成功,已经快死了,跪求版主救救我!!!!!!