大坑,大坑
需要手动修改源码
目录:cocos\scripting\lua-bindings\manual\ui
文件:lua_cocos2dx_ui_manual.cpp
添加:
#include "cocostudio/ActionTimeline/CSLoader.h"
#include "cocostudio/ActionTimeline/CCActionTimeline.h"
static int lua_cocos2dx_ActionTimeline_setLastFrameCallFunc(lua_State* L) { if (nullptr == L) return 0; int argc = 0; cocostudio::timeline::ActionTimeline* self = nullptr; #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; if (!tolua_isusertype(L,1,"ccs.ActionTimeline",&tolua_err)) goto tolua_lerror; #endif self = static_cast<cocostudio::timeline::ActionTimeline*>(tolua_tousertype(L,0)); #if COCOS2D_DEBUG >= 1 if (nullptr == self) { tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_ActionTimeline_setLastFrameCallFunc'\n",NULL); return 0; } #endif argc = lua_gettop(L) - 1; if (1 == argc) { #if COCOS2D_DEBUG >= 1 if (!toluafix_isfunction(L,2,"LUA_FUNCTION",&tolua_err)) { goto tolua_lerror; } #endif LUA_FUNCTION handler = (toluafix_ref_function(L,0)); self->setLastFrameCallFunc([=](){ LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler,0); }); return 0; } luaL_error(L,"'setLastFrameCallFunc' function of ActionTimeline has wrong number of arguments: %d,was expecting %d\n",argc,1); #if COCOS2D_DEBUG >= 1 tolua_lerror: tolua_error(L,"#ferror in function 'setLastFrameCallFunc'.",&tolua_err); #endif return 0; } static void extendActionTimeline(lua_State* L) { lua_pushstring(L,"ccs.ActionTimeline"); lua_rawget(L,LUA_REGISTRYINDEX); if (lua_istable(L,-1)) { //tolua_function(L,"setFrameEventCallFunc",lua_cocos2dx_ActionTimeline_setFrameEventCallFunc); tolua_function(L,"setLastFrameCallFunc",lua_cocos2dx_ActionTimeline_setLastFrameCallFunc); } lua_pop(L,1); }
然后在:register_all_cocos2dx_ui_manual 函数中添加:
extendActionTimeline(L);
最后启动模拟器:即可调用到setLastFrameCallFunc
不要谢我, 我叫雷锋!!
原文链接:https://www.f2er.com/cocos2dx/339086.html