在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);
添加进去了,但是还是不行。*