【步兵 cocos2dx】lua绑定
2017-05-30 00:14
323 查看
【步兵 cocos2dx】lua绑定 By EOS.
最近想搞一搞自动化测试,涉及到luabinding,简单的写一篇教程。不过并不打算写很仔细,因为这种东西网上太多一搜一大片。
刚刚实现了模拟点击,绑定到lua上了,再读取个文件模拟各种点击行为,
配合脚本每个配置文件重启运行、遍历log文件,发现error就把log文件cp过来,统计报错。
感觉大有搞头,想想都美滋滋,趁着心情好写一篇刚刚用的luabinding。
需要的东西
1、项目下两个必备的目录,从cocos官方目录下考过来 cocos2d\tools\bindings-generator cocos2d\tools\tolua 2、必备的运行luabinding的python工具需要安装的东西 cocos2d\tools\tolua\README.mdown中都有写 [python-2.7.3.msi, PyYAML-3.11.win32-py2.7.exe, Cheetah.zip] 3、c++文件,也就是需要绑定的文件 4、复制一份 ini文件重命名(es.ini) [es] prefix = es target_namespace = es headers = %(cocosdir)s/../Classes/CppTools.h classes = CppTools classes_have_no_parents = CppTools #除了以上修改,其他信息均默认即可 5、复制一份genbindings.py重命名(es_genbindings.py) output_dir = '%s/../Classes/bindings' % project_root cmd_args = {'es.ini' : ('es', 'lua_es_auto')} #其他均默认,一个py对应N个ini、所以后续只需添加ini即可
生成和注册
生成:运行
python es_genbindings.py就可以看到在Classes/bindings下生成的对应的文件。
注册:
//[lua_module_register_mine.h] #ifndef __MINE_LUA_MODULE_REGISTER_H__ #define __MINE_LUA_MODULE_REGISTER_H__ #include "lua.h" #include "scripting/lua-bindings/manual/Lua-BindingsExport.h" CC_LUA_DLL int lua_module_register_mine(lua_State* L); #endif //[lua_module_register_mine.cpp] #include "lua_module_register_mine.h" #include "bindings/lua_es_auto.hpp" int lua_module_register_mine(lua_State* L) { register_all_es(L); return 1; } //[AppDelegate.cpp] #include "lua_module_register_mine.h" //..... LuaStack* stack = engine->getLuaStack(); lua_State* L = stack->getLuaState(); lua_module_register(L);//cocos自带,写在一起就对了 lua_module_register_mine(L);
注:有一点不足,到处的cpp文件有一个路径是不对的,需要手动改一下。
不过不改编译会出错,不会遗漏的=、=
打包mk文件修改
[Android.mk] #我这里是proj.android-studio, #proj.andorid 应该是$(LOCAL_PATH)/../../Classes/*.cpp MY_CPP_LIST := hellocpp/main.cpp MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/*.cpp) MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/../../../Classes/bindings/*.cpp) LOCAL_SRC_FILES := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)
网上也有递归自动搜索路径的,不过我是lua开发,这样够用了,而且就算路径变多,
写个脚本输出一下也是分分钟的事情,懒得折腾了,ruby: required ‘find’ 是个好东西。
齐活,生存在开发路径下的luabinding就完成了。
最后是lua的调用,就再简单不过了
ctl = es.CppTools ctl.moniClick(130, 221, 1)--[x, y, delay]
总结
除非必须我是不建议,把自己的代码混在底层代码里的。因为这样如果cocos修复了某些bug进行,版本升级或者代码合并的时候会给自己添加很多不必要的麻烦。
lua更是如此,cocos自带的lua代码,理都不要理它,看着不爽require一个覆盖掉,
[bushuangCocos.lua] cc.p = function(x, y) local pos = {x=x, y=y} function pos:add(a_x, a_y) _ = a_x and self.x = self.x + a_x _ = a_y and self.y = self.y + a_y end return pos end require "cocos/init" require "bushuangCocos"
就写这么多,晚安~
See Again~
之前
真爱无价,欢迎打赏~
相关文章推荐
- cocos2dx lua 绑定之一:自动绑定自定义类中的函数
- 【Cocos2dx】之绑定lua---的坑
- cocos2dx 关于lua 绑定的环境配置官方文档翻译与 将自定义c++方法绑定到lua的的方法
- sublime_text 2.0.2 绑定cocos2dx lua 开发游戏
- cocos2dx的lua绑定
- Cocos2dx(3.3)绑定lua
- cocos2dx v3.x lua绑定分析
- cocos2dx v3.x C++绑定lua
- Cocos2dx-- Lua与C++绑定
- cocos2dx 3.x引擎升级,lua绑定genbindings.py运行错误问题
- cocos2dx 3.2 lua绑定
- cocos2dx之lua绑定简析
- cocos2dx3.1 lua绑定C++类
- cocos2dx3.x lua绑定
- cocos2dx 自定义绑定lua
- cocos2dx 3.0 开荒笔记 ---- 3.0的lua绑定
- cocos2dx原生lua绑定工具的总结
- 关于cocos2dx如何绑定c++的静态方法和类给lua调用
- Cocos2dx-- Lua与C++绑定
- cocos2dx-lua绑定之代码编辑器