setLastFrameCallFunc接口不能使用解决方案

来源:互联网 发布:菲律宾网络诈骗 编辑:程序博客网 时间:2024/06/10 17:34

原因:c++的接口已经实现了 但是未完成lua接口的导出

解决方案

1.打开lua_cocos2dx_coco_studio_manual.cpp文件

2.找到setFrameEventCallFunc函数的实现方法

3.仿照该方法实现setLastFrameCallFunc

具体如下:

1.在staticvoid extendActionTimeline(lua_State* L) 下增加一行代码

tolua_function(L, "setFrameEventCallFunc",lua_cocos2dx_ActionTimeline_setFrameEventCallFunc);

tolua_function(L, "setLastFrameCallFunc",lua_cocos2dx_studio_ActionTimeline_setLastFrameCallFunc);


2.增加实现

static int lua_cocos2dx_studio_ActionTimeline_setLastFrameCallFunc(lua_State* tolua_S){    int argc = 0;    cocostudio::timeline::ActionTimeline* cobj =nullptr;    // bool ok  = true;    #if COCOS2D_DEBUG >= 1    tolua_Error tolua_err;#endif        #if COCOS2D_DEBUG >= 1    if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimeline",0,&tolua_err))goto tolua_lerror;#endif        cobj = (cocostudio::timeline::ActionTimeline*)tolua_tousertype(tolua_S,1,0);    #if COCOS2D_DEBUG >= 1    if (!cobj)    {        tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimeline_setLastFrameCallFunc'",nullptr);        return 0;    }#endif            argc = lua_gettop(tolua_S) - 1;        if (1 == argc)    {#if COCOS2D_DEBUG >= 1        if (!toluafix_isfunction(tolua_S,2,"LUA_FUNCTION",0,&tolua_err) )        {            goto tolua_lerror;        }#endif                LUA_FUNCTION handler = (  toluafix_ref_function(tolua_S,2,0));                cobj->setLastFrameCallFunc([=](){            LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler,0);        });                return 0;    }            luaL_error(tolua_S,"'setFrameEventCallFunc' function of ActionTimeline has wrong number of arguments: %d, was expecting %d\n", argc,1);    #if COCOS2D_DEBUG >= 1tolua_lerror:    tolua_error(tolua_S,"#ferror in function 'setFrameEventCallFunc'.",&tolua_err);#endif    return 0;}


1 0