1

我有一个 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 实例上使用 addCallbackaddCallBack(ticker:animate)不会编译,addCallBack(ticker.animate)也不起作用。我知道lua中的成员函数有一个隐含的“self”第一个参数。

任何解决方案还是我被迫使用全局函数?

4

1 回答 1

4

不确定我是否理解你的问题,但如果你的意思是 Lua 成员函数,你可以使用闭包:

av:addCallback(function(yval) ticker:animate(yval) end)
于 2012-07-17T19:57:30.167 回答