参考链接:http://my.oschina.net/kkkkkkkkkkkkk/blog/521496

本文是上一篇的续集,继续整理 C++ 调用 Lua 函数的两种写法。其中 handler 是通过手动修改 tolua 生成的 cpp 文件得到的。

两种调用方式的代码示例

下面的 callLuaFunc 同时列出了两种做法:方法 1(通过向 Lua 发送事件的方式调用)写在注释中作为对照,方法 2(直接操作 LuaStack 执行 handler)是当前实际启用的实现。

..
其中handler 通过手动改 tolua 生成的 cpp文件获取
..
void toLuaFunc::callLuaFunc(const char*ARG)
{

	CC_ASSERT(handler > 0, "call lua func 's handle must bigger than 0");
/*
方法1   发送事件到lua
	cocos2d::CommonScriptData data(handler, ARG);
	cocos2d::ScriptEvent scriptEvent(cocos2d::kCommonEvent, &data);
	cocos2d::LuaEngine::getInstance()->sendEvent(&scriptEvent);
*/


// 方法2  
	cocos2d::LuaEngine::getInstance()->getLuaStack()->clean();

	cocos2d::LuaEngine::getInstance()->getLuaStack()->pushString(ARG);
	cocos2d::LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 1);

	cocos2d::LuaEngine::getInstance()->getLuaStack()->clean();



}