回调Lua成员函数

我有一个 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(ticker.animate) 也无法工作。我知道 Lua 中的成员函数有一个隐式的“self”第一个参数。

有什么解决办法还是我必须使用全局函数?

点赞
用户726361
用户726361

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

av:addCallback(function(yval) ticker:animate(yval) end)
2012-07-17 19:57:30