Cocos 2 dLua 3.17.2集積FairyGUIのluaバインドsetHook()コールバック問題(四)
7115 ワード
fairyGUIを使用していると、setHook()を使用してコールバックを設定している間に効果がないことに気づき、またソースコードをめくってみました.Lambda binding for lua is not supported.は機能をエクスポートできませんでした.手動で修正するしかありません
lua_が見つかりましたcocos2dx_fairygui_Auto.cppファイル、lua_を見つけますcocos2dx_fairygui_Transition_setHook関数は、中にエクスポートできないwhileループを注釈します.
関数を書き込み、関数全体を次のように変更します.
LuaStack* stack = LuaEngine::getInstance()->getLuaStack(); stack->executeFunctionByHandler(handler, 0); stack->clean();
コンパイル実行、コールバックが有効になりました
lua_が見つかりましたcocos2dx_fairygui_Auto.cppファイル、lua_を見つけますcocos2dx_fairygui_Transition_setHook関数は、中にエクスポートできないwhileループを注釈します.
// do {
// // Lambda binding for lua is not supported.
// assert(false);
//} while(0)
//;
関数を書き込み、関数全体を次のように変更します.
int lua_cocos2dx_fairygui_Transition_setHook(lua_State* tolua_S)
{
int argc = 0;
fairygui::Transition* cobj = nullptr;
bool ok = true;
#if COCOS2D_DEBUG >= 1
tolua_Error tolua_err;
#endif
#if COCOS2D_DEBUG >= 1
if (!tolua_isusertype(tolua_S,1,"fgui.Transition",0,&tolua_err)) goto tolua_lerror;
#endif
cobj = (fairygui::Transition*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_fairygui_Transition_setHook'", nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 2)
{
std::string arg0;
std::function<void ()> arg1;
ok &= luaval_to_std_string(tolua_S, 2,&arg0, "fgui.Transition:setHook");
// do {
// // Lambda binding for lua is not supported.
// assert(false);
//} while(0)
//;
LUA_FUNCTION handler = (toluafix_ref_function(tolua_S, 3, 0));
cobj->setHook(arg0, [=]() {
LuaStack* stack = LuaEngine::getInstance()->getLuaStack(); stack->executeFunctionByHandler(handler, 0); stack->clean();
});
if(!ok)
{
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_fairygui_Transition_setHook'", nullptr);
return 0;
}
//cobj->setHook(arg0, arg1);
lua_settop(tolua_S, 1);
return 1;
}
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d
", "fgui.Transition:setHook",argc, 2);
return 0;
#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_fairygui_Transition_setHook'.",&tolua_err);
#endif
return 0;
}
コンパイル実行、コールバックが有効になりました