我有一个lua“动画变量”,它有一个动画循环中使用的回调函数。
local av = AnimationVariable(ticker.Position.Y)
...
av:addCallback( ** animation function goes here **)
跳过细节,这个addCallback函数在C ++中定义如下:
void LuaUIAnimationVariable::addCallback(luabind::object callback);
当动画变量更新时,回调就这样执行(我们用一个参数调用该函数):
luabind::call_function<void>(boost::ref(callback), newValue);
我的问题如下:如何在addCallback中使用成员函数?假设我有一个Ticker:animate(ypos)
函数,在Ticker实例addCallBack(ticker:animate)
上使用addCallback不会编译,addCallBack(ticker.animate)
不起作用。我理解lua中的成员函数有一个隐含的“自我”第一个参数。
任何解决方案还是我被迫使用全局函数?
答案 0 :(得分:4)
不确定我是否理解您的问题,但如果您的意思是Lua成员函数,则可以使用闭包:
av:addCallback(function(yval) ticker:animate(yval) end)