lua用法:
//lua_cocos2dx_extension_manual.cpp中加入extendCCNode(tolua_S);
int register_all_cocos2dx_extension_manual(lua_State* tolua_S)
{
extendControl(tolua_S);
extendAssetsManager(tolua_S);
extendScrollView(tolua_S);
extendTableView(tolua_S);
extendManifest(tolua_S);
extendEventListenerAssetsManagerEx(tolua_S);
extendParticleSystem3D(tolua_S);
extendParticlePool(tolua_S);
extendCCNode(tolua_S);
return 0;
}
//定义extendCCNode方法
static void extendCCNode(lua_State* tolua_S)
{
lua_pushstring(tolua_S, “cc.Node”);
lua_rawget(tolua_S, LUA_REGISTRYINDEX);
if (lua_istable(tolua_S, -1))
{
tolua_function(tolua_S, “getCustomProperty”, lua_cocos2dx_extension_Node_getCustomProperty);
}
lua_pop(tolua_S, 1);
}
int lua_cocos2dx_extension_Node_getCustomProperty(lua_State* tolua_S)
{
int argc = 0;
cocos2d::Node* 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.Node”, 0, &tolua_err)) goto tolua_lerror;
#endif
cobj = (cocos2d::Node*)tolua_tousertype(tolua_S, 1, 0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S, “invalid ‘cobj’ in function ‘lua_cocos2dx_extension_Node_getCustomProperty’”, nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S) - 1;
if (argc == 0)
{
if (!ok)
{
tolua_error(tolua_S, "invalid arguments in function 'lua_cocos2dx_extension_Node_getCustomProperty'", nullptr);
return 0;
}
std::string ret = ((cocostudio::ObjectExtensionData*) cobj->getUserObject())->getCustomProperty();
tolua_pushcppstring(tolua_S, ret);
return 1;
}
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.Node:getCustomProperty", argc, 0);
return 0;
#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S, “#ferror in function ‘lua_cocos2dx_extension_Node_getCustomProperty’.”, &tolua_err);
#endif
return 0;
}
//最后,不要忘记include
#include “CCObjectExtensionData.h”
以上都是在lua_cocos2dx_extension_manual.cpp文件修改就可以了,编译完c后,lua只要是node的类型,调用"cc.Node:getCustomProperty"方法就能获取用户数据
不要谢我,我是雷锋