在cocos2dx3.0 lua教程 自己写的类连接lua 使lua能调用自己类的函数
来源:互联网 发布:丰田雅力士怎么样知乎 编辑:程序博客网 时间:2024/05/03 17:13
我们可以在lua上面编写cocos2dx 用lua调用到cocos2dx的api 是因为在
lua_cocos2dx_auto这类函数里面建立的连接,大家可以参考然后自己写做连接。
如我一下建立一个类 如building
class Building : public Node{public: Building(const std::string &fileName); static Building* create(const std::string &fileName); void setSelected(bool selected); void setPosition(float x, float y);
我自己再仿照lua_cocos2dx_auto建立连接,如下
在
TOLUA_API int register_all_classes(lua_State* tolua_S)函数里面写
lua_register_Building(tolua_S);这里是实现
int lua_register_Building(lua_State* tolua_S){ tolua_usertype(tolua_S,"Building"); tolua_cclass(tolua_S,"Building","Building","cc.Sprite",NULL); tolua_beginmodule(tolua_S,"Building"); tolua_function(tolua_S,"create", lua_Building_create);这里是实现 lua_Building_create 等各个函数
int lua_Building_create(lua_State* tolua_S){ int argc = lua_gettop(tolua_S)-1; if (argc != 1) { CCLOG("%s, %d+++++++++++argc error :%d", __FUNCTION__, __LINE__, argc); return 0; } std::string arg0; if (luaval_to_std_string(tolua_S, 2, &arg0) == false) //栈里总共两个元素,第2个和第-1个都是一样的 { CCLOG("%s, %d+++++++++++get argc error", __FUNCTION__, __LINE__); return 0; } Building* ret = Building::create(arg0); if (NULL != ret) { std::string className = "BayuArmature"; cocos2d::Object *dynObject = dynamic_cast<cocos2d::Object *>((Building*)ret); if (NULL != dynObject) { int ID = ret ? (int)(dynObject->_ID) : -1; int* luaID = ret ? &(dynObject->_luaID) : NULL; toluafix_pushusertype_ccobject(tolua_S,ID, luaID, (void*)ret, className.c_str()); } else { tolua_pushusertype(tolua_S, (void*)ret, className.c_str()); } } else { lua_pushnil(tolua_S); } return 1;}最后在AppDelegate函数钟调用 register_all_classes 的函数然后就算是注册成功了。
如下代码
// register lua engine auto engine = LuaEngine::getInstance(); ScriptEngineManager::getInstance()->setScriptEngine(engine); register_all_classes(engine->getLuaStack()->getLuaState());
然后就可以在lua调用building类了
0 0
- 在cocos2dx3.0 lua教程 自己写的类连接lua 使lua能调用自己类的函数
- 自己写的lua测试
- 在Lua中使用自己的C函数
- Lua学习笔记二--在Lua中使用自己的C函数
- Lua学习笔记二--在Lua中使用自己的C函数收藏
- lua的函数调用
- Lua教程(四):在Lua中调用C语言、C++的函数
- Rspamd_rule_Html.lua自己的理解
- Rspamd_rule_Forwarding.lua自己的理解
- Rspamd_rule_subject_checks.lua自己的理解
- Rspamd_rule_compromised_hosts.lua自己的理解
- 在c++中调用lua的函数
- Lua:如何将自己写的模块加入环境中
- lua学习实例,都是自己写的,慢慢摸索,涵盖了lua常用的方法
- C++调用Lua的函数
- Lua调用C++的函数
- Lua调用C++的函数
- Lua函数的尾调用
- 几种光纤接口(ST,SC,LC,FC)
- 无论你在哪里我都是守护你的翅膀
- 中国经济的长周期走势
- 女儿,你好历害!
- 终于看了传说中的<娲居>
- 在cocos2dx3.0 lua教程 自己写的类连接lua 使lua能调用自己类的函数
- 【jquery】jquery中开发插件的两个方法jquery.fn.extend与jquery.extend(推荐)
- 2009,即将成为过去!
- 中国军力“被”强大误国误民!
- [转贴]右键→打开方式→选择程序,无法使用的解决方法
- [转贴]修复打开方式菜单项丢失问题
- 驾照ABC:准驾车型及代号
- [转]公司网管员未来职业规划
- [转]20岁到40岁的简单人生规划