众位大神请指教。
用3.0绑定出了自定义类,我在自定义的C++类中写了一个要对lua函数的回调: … LuaEngine::defaultEngine()->getLuaStack()->executeFunctionByHandler(luaFunction, 1); …
如果是在2.x版本中,可以直接把要回调的函数名传进去,它到C++中就是一个int的句柄了。
但3.0版本以上,它会提示错误。我之前用2.x版本也是这样C++回调中的lua函数是可以的,但3.0就不行。提示错误,说我传的是函数不是数值类型。
再网上也有找到这个两个帖子:http://geek99.com/node/2160 , http://blog.sina.com.cn/s/blog_93add5520101lv02.html 。不知道有没有用,请各位指教一下,3.0版本以上的怎么在C++中回调lua中的函数。
补详细一点:
C++中的是这样:
void myClass::test(int luaFunction)
{
if(luaFunction)
{
LuaStack *luaStack = LuaEngine::defaultEngine()->getLuaStack();
luaStack->pushInt(17);
luaStack->executeFunctionByHandler(luaFunction, 1);
luaStack->clean();
}
}
lua中:
myClass:test( function(nTest) cclog("%d",nTest) end)
在2.x版本这样写没有问题,3.0以上就不行了。