在TMXLayer里面没找着这个方法啊。。。求解。。。
哈哈哈。所以我等3.3了同学。
可以直接把这个文件 cp 过去吗?
你不需要直接cp过去啊,简单的看下代码吧,需要复制的代码部分是非常清楚的,看得懂C代码的都能知道要哪部分的
static void extendFunctions(lua_State* tolua_S) { tolua_module(tolua_S,"cc",0); tolua_beginmodule(tolua_S,"cc"); tolua_function(tolua_S,"LuaLoadChunksFromZIP",LuaStack::lua_loadChunksFromZIP); tolua_function(tolua_S,"cocos2dVersion",lua_cocos2dx_cocos2dVersion); tolua_endmodule(tolua_S); } int lua_cocos2dx_TMXLayer_getTileGIDAt(lua_State* tolua_S) { int argc = 0; cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif #if COCOS2D_DEBUG >= 1 if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_getTileGIDAt'", nullptr); return 0; } #endif argc = lua_gettop(tolua_S)-1; if (argc == 1) { cocos2d::Vec2 arg0; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXLayer:getTileGIDAt"); if(!ok) return 0; unsigned int ret = cobj->getTileGIDAt(arg0); tolua_pushnumber(tolua_S,(lua_Number)ret); tolua_pushnumber(tolua_S,(lua_Number)0); return 2; } if (argc == 2) { cocos2d::Vec2 arg0; int arg1; ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXLayer:getTileGIDAt"); ok &= luaval_to_int32(tolua_S, 3, &arg1, "cc.TMXLayer:getTileGIDAt"); if(!ok) return 0; unsigned int ret = cobj->getTileGIDAt(arg0, (cocos2d::TMXTileFlags*)&arg1); tolua_pushnumber(tolua_S,(lua_Number)ret); tolua_pushnumber(tolua_S,(lua_Number)arg1); return 2; } CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getTileGIDAt",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_getTileGIDAt'.",&tolua_err); #endif return 0; } int lua_cocos2dx_TMXLayer_setTiles(lua_State* tolua_S) { int argc = 0; cocos2d::TMXLayer* cobj = nullptr; #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif #if COCOS2D_DEBUG >= 1 if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_setTiles'", nullptr); return 0; } #endif argc = lua_gettop(tolua_S)-1; if (argc == 1) { uint32_t* arg0 = nullptr; #if COCOS2D_DEBUG >= 1 if (!tolua_istable(tolua_S, 2, 0, &tolua_err)) goto tolua_lerror; #endif size_t len = lua_objlen(tolua_S, 2); if (len == 0 ) { CCLOG("Table's len equal 0"); return 0; } arg0 = new uint32_t; if (nullptr == arg0) { CCLOG("Allocate uint32_t array in the lua_cocos2dx_TMXLayer_setTiles failed!"); return 0; } for (int i = 1 ; i <= len; i++) { arg0* = (uint32_t)tolua_tofieldnumber(tolua_S, 2, i, 0); } cobj->setTiles(arg0); CC_SAFE_DELETE_ARRAY(arg0); return 0; } CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setTiles",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_setTiles'.",&tolua_err); #endif return 0; } static void extendTMXLayer(lua_State* tolua_S) { lua_pushstring(tolua_S, "cc.TMXLayer"); lua_rawget(tolua_S, LUA_REGISTRYINDEX); if (lua_istable(tolua_S,-1)) { tolua_function(tolua_S,"getTileGIDAt", lua_cocos2dx_TMXLayer_getTileGIDAt); tolua_function(tolua_S, "setTiles", lua_cocos2dx_TMXLayer_setTiles); } lua_pop(tolua_S, 1); } ``` 并将 extendTMXLayer(tolua_S); 添加进去了,但是还是不行。*