1

アニメーションループで使用されるコールバック関数を持つlua「アニメーション変数」があります。

local av = AnimationVariable(ticker.Position.Y)
...
av:addCallback( ** animation function goes here **)

詳細をスキップして、このaddCallback関数はC++で次のように定義されています。

void LuaUIAnimationVariable::addCallback(luabind::object callback);

アニメーション変数が更新されると、コールバックはそのように実行されます(1つの引数で関数を呼び出します)。

luabind::call_function<void>(boost::ref(callback), newValue);

私の質問は次のとおりです。addCallbackでメンバー関数を使用するにはどうすればよいですか?関数があるとするとTicker:animate(ypos)、TickerインスタンスでaddCallbackを使用addCallBack(ticker:animate)してもコンパイルされず、機能addCallBack(ticker.animate)しません。luaのメンバー関数には暗黙の「自己」最初のパラメーターがあることを理解しています。

解決策はありますか、それともグローバル関数を使用する必要がありますか?

4

1 に答える 1

4

私があなたの質問を理解しているかどうかはわかりませんが、Luaメンバー関数を意味する場合は、クロージャを使用できます。

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