Quick-Cocos2d-x 3.3绑定自定义类至Lua(三)动手绑定自定义类至Lua
2015-07-14 14:38
393 查看
看【绑定自定义类至Lua】(二)新建项目中配制环境新建项目中配制环境,我们完美的在新建项目中完成了绑定需要的环境,接下来才是最关健的一步。绑定自定义C++类至Lua。
事实上引擎为了方便我们应对不同平台,已经帮我们创建了不同平台的工程项目。为了编辑代码方便,我使用VS2013打开了"runtime-src"文件夹下的"proj.win32"工程。 前往项目录径“F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”,我将在这里创建一个自定义类"Pet",代码如下。
只是一个很简单的Pet类。
1.继承于引擎定义的精灵类Sprite;
2.通过引擎定义的宏CREATE_FUNC(Pet)定义一个静态方法create();
3.两个成员函数init()、setPet();
4.具有一个数据成员name。
非常的简单,我们正是要一切从简单开始!不过需要再次提醒的是,我们是在“F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”创建了Pet类,一会我们将用到这个路径。
准备好定义C++类之后,我们再回顾一下上一小节的内容,我们在环境测试中,通过执行“genbindings.py"脚本将Cocos2d-x引擎中所有的C++类文件绑定至Lua。(虽然测试环境时,我并没有说明这点。但是实事上在最后的结果中能看到"Generating lua bindings succeeds"这样的提示,聪明的读者一定猜到了它所完成的工作就是绑定C++类至Lua)。
接下来,打开 "genbindings.py,如果你对Python语言并不熟悉。哪请忽略其它的代码,只需要把你的视线焦点集中在 133 行至 151 行。
了解"genbindings.py"之后,在它的同级目录你可以找到"cocos2dx.ini",这是与之息息相关的配制文件。打开它,我们稍做了解。
请关注于 第 1、4、8、25 行。
还记得上面我们提到的数组吗?
第 1 行就是第二个参数指定的字符内容
第 4 行是一些条件编译 ifndef 及 生成的注册自定义类接口取名所用的前缀,前面我们已经提到过。
第 8 行是指定该绑定类的命名空间
第 25 行指定需要绑定的自定义类头文件路径
第 29 行指定绑定的C++自定义类导出后的Lua类文件名
了解这些之后,我们将对这两个文件进行一些修改,用于完成我们的类至Lua的绑定。
首先我们拷贝一份'cocos2dx.ini',将其命名为 'custom_pet.ini'。拷贝一份'genbindings.py',将其命名为 'custom_pet_genbindings.py'。
改动'custom_pet.ini'第 1、4、8、25 行。如下:
因为我们没有指定名字空间,所以第 8 行'target_namespace'将其赋空。
而'headers'当中只是相对路径的给定。还记得"Pet"类我们是创建于哪里吗?
正是在F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”。
OK!接下来我们改动'custom_pet_genbindings.py'。关注于第 133 至 138 行,我们将在这里做一些修改。如下:
在cmd_args参数表中,我们指定该Python绑定脚本的配制文件为我们修改好的'custom_pet.ini'。一些可能会用到的命名前缀为'custom_pet'。指定导出的桥接文件名为'lua_pet_auto'。
最后,我们执行'custom_pet_genbindings.py'。
"Generating lua bindings succeeds"!
见到它,你该欢呼了:)。你已经完成了C++自定义类至Lua的绑定。
在下一小节中,我们来探索下,怎么样在你的项目中使用Lua调用Pet类。
事实上引擎为了方便我们应对不同平台,已经帮我们创建了不同平台的工程项目。为了编辑代码方便,我使用VS2013打开了"runtime-src"文件夹下的"proj.win32"工程。 前往项目录径“F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”,我将在这里创建一个自定义类"Pet",代码如下。
只是一个很简单的Pet类。
1.继承于引擎定义的精灵类Sprite;
2.通过引擎定义的宏CREATE_FUNC(Pet)定义一个静态方法create();
3.两个成员函数init()、setPet();
4.具有一个数据成员name。
非常的简单,我们正是要一切从简单开始!不过需要再次提醒的是,我们是在“F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”创建了Pet类,一会我们将用到这个路径。
准备好定义C++类之后,我们再回顾一下上一小节的内容,我们在环境测试中,通过执行“genbindings.py"脚本将Cocos2d-x引擎中所有的C++类文件绑定至Lua。(虽然测试环境时,我并没有说明这点。但是实事上在最后的结果中能看到"Generating lua bindings succeeds"这样的提示,聪明的读者一定猜到了它所完成的工作就是绑定C++类至Lua)。
接下来,打开 "genbindings.py,如果你对Python语言并不熟悉。哪请忽略其它的代码,只需要把你的视线焦点集中在 133 行至 151 行。
了解"genbindings.py"之后,在它的同级目录你可以找到"cocos2dx.ini",这是与之息息相关的配制文件。打开它,我们稍做了解。
请关注于 第 1、4、8、25 行。
还记得上面我们提到的数组吗?
第 4 行是一些条件编译 ifndef 及 生成的注册自定义类接口取名所用的前缀,前面我们已经提到过。
第 8 行是指定该绑定类的命名空间
第 25 行指定需要绑定的自定义类头文件路径
第 29 行指定绑定的C++自定义类导出后的Lua类文件名
了解这些之后,我们将对这两个文件进行一些修改,用于完成我们的类至Lua的绑定。
首先我们拷贝一份'cocos2dx.ini',将其命名为 'custom_pet.ini'。拷贝一份'genbindings.py',将其命名为 'custom_pet_genbindings.py'。
改动'custom_pet.ini'第 1、4、8、25 行。如下:
因为我们没有指定名字空间,所以第 8 行'target_namespace'将其赋空。
而'headers'当中只是相对路径的给定。还记得"Pet"类我们是创建于哪里吗?
正是在F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”。
OK!接下来我们改动'custom_pet_genbindings.py'。关注于第 133 至 138 行,我们将在这里做一些修改。如下:
在cmd_args参数表中,我们指定该Python绑定脚本的配制文件为我们修改好的'custom_pet.ini'。一些可能会用到的命名前缀为'custom_pet'。指定导出的桥接文件名为'lua_pet_auto'。
最后,我们执行'custom_pet_genbindings.py'。
"Generating lua bindings succeeds"!
见到它,你该欢呼了:)。你已经完成了C++自定义类至Lua的绑定。
在下一小节中,我们来探索下,怎么样在你的项目中使用Lua调用Pet类。
相关文章推荐
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(二)新建项目中配制环境
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(一)环境搭建
- 【cocos2d-x 028】 AssetsManager热更失败 "there is not new version"
- cocos2dx在iOS上使用opencv遇到的问题
- 解决cocos2dx中直接输入中文乱码的问题
- cocos2dx 3.x 物理引擎接触检测掩码、碰撞掩码和类别掩码问题解析
- cocos2d-js v3.5 使用cocos studio V2.3.0.1创建的资源并添加鼠标消息
- Cocos2dx常用宏必须知道
- cocos2d-x 3.2 win7环境配置(一)
- 大海教你学手游2015CocosLua第一季_02场景跳转和用户触摸
- cocos2d-x-Tiled 地图坐标 转换
- cocos2d-x 创建项目过程 -----1
- 【cocos2d-x 报错异常集】中断!0xC0000005: 读取位置 0x000001E8 时发生访问冲突。
- cocos2d.x单点触摸事件
- Cocos2d-x vector使用遇到问题。
- cocos2d-x 3.4 + android studio 1.1.0 + VS2012 开发环境搭建
- 【独立开发者er Cocos2d-x实战 007】使用Cocos2dx UserDefault.xml
- 【cocos2d-x 3.X自学笔记】[转]Eclipse配置安卓开发环境(解决SDK manager下载慢问题)
- 5、cocos2d-Lua的demo--虫子和虫子精灵
- 4、cocos2d-Lua的demo--游戏逻辑GameView