Cocos2d-x开发系列 交叉开发模式五 绑定C++对象到Lua
来源:互联网 发布:编程一小时网站 编辑:程序博客网 时间:2024/06/14 19:02
Quick版本是一个不错的解决方案,现在虽然从被触控收购到摒弃,到社区版本,并不是这个玩意儿不行,而是时代在发展。它就大量给我们提供了大量的集成和封装,我们可以更关注于逻辑层的开发。对于很多小开发团队来讲,是利好。接着之前讲的,我们今天的主题是讲C++对象绑定接口到Lua。使用tolua++。
C++对象怎么在Lua调用?
需 通过lua库提供的接口,通过C将C++和Lua交互,通过一个虚拟栈。那么我们在Lua中相当于有根C++的这个对象有绑定关系了。
要绑定的C++对象语法上有什么需要注意的?
Lua跟C++交互是通过C来实现的,Lua不是直接跟C++交互,而是C语言。因为Lua本身是用标准C开发的,所以这也是Lua跟C++、Java等交互的原因。所以C++的内容不一定支持。不过Lua bindings给我们提供了很好的支持,会给我们提供错误信息。所以有的时候我们需要自己去写函数注册,
引擎目录 lua-bindings文件夹下会有auto和manual两个文件夹,分别放着自动和手动的绑定。目前来看C++11的语法部分需要手动绑定。我们照着引擎的类去写就可以了,至少保证不会出问题。
步骤:
一、写好C++对象
#ifndef __WW_DDZ_PLUS__LuaToast__#define __WW_DDZ_PLUS__LuaToast__#include "cocos2d.h"class LuaToast{public: static void showToast(const std::string& msg, float duration);};#endif /* defined(__WW_DDZ_PLUS__LuaToast__) */
#include "LuaToast.h"#include "DDZ/Data/GameData/ToastDef.h"#include "DDZ/Data/GameData/CustomEventConstant.h"void LuaToast::showToast(const std::string& msg, float duration){ ToastDef *def = ToastDef::create(msg, duration); cocos2d::Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(EVENT_SHOW_TOAST, def);}
二、在配置文件中配置好
Copy一个ini文件,然后改名叫ww_gui.ini 专门用来绑定GUI相关的对象。当然我门也可以分类别建ini文件,防止绑定污染。
1、修改python文件
2、设置绑定的ini文件
这里将这个文件copy展示
**[ww_gui]****prefix = ww_gui****target_namespace = ww**…...cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/cocos/platform/androidcocos_flags = -DANDROIDcxxgenerator_headers =extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s**headers = %(cocosdir)s/../Classes/ToLua.h****classes = LuaToast****skip =**rename_functions =rename_classes =remove_prefix =classes_have_no_parents = Helperbase_classes_to_skip =abstract_classes =script_control_cpp = no
如上,粗体字部分,设置好模块名,命名空间,我们注意设置下即可,需要注意的是headers路径,classes设置我们的对象名。另外我们可以在skip中设置该兑现中的函数不绑定接口。可以如下设置:
类对象名::[函数一 函数二]
三、执行
执行genbindings_wawagame.py。一般情况下,我们需要根据README.mdown设置好环境。注意如果是在iOS下的时候,需要设置权限。
chmod a+x ./genbindings_wawagame.py 授权
./genbindings_wawagame.py 执行
四、iOS下设置cocos环境参数
#android sdk export ANDROID_SDK_ROOT=/Users/Columbus/Documents/environment/adt-bundle-mac-x86_64-20140624/sdk export PATH=$PATH:$ANDROID_SDK_ROOT export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools #ndk export NDK_ROOT=/Users/Columbus/Documents/environment/android-ndk-r9b export PATH=$PATH:$NDK_ROOT #ant export ANT_ROOT=/Users/Columbus/Documents/environment/apache-ant-1.9.3/bin export PATH=$PATH:$ANT_ROOT
- Cocos2d-x开发系列 交叉开发模式五 绑定C++对象到Lua
- Cocos2d-x开发系列 交叉开发模式四 C++和Lua的数据交互
- Cocos2d-x开发系列 交叉开发模式一 脚本支持
- Cocos2d-x开发系列 交叉开发模式二 初始化和重启
- Cocos2d-x开发系列 交叉开发模式三 函数注册和脚本执行
- cocos2d-x lua开发
- Cocos2d-x Lua游戏开发之Lua 面向对象编程
- Cocos2d-x开发系列 HYBrid模式四 C++和Lua的数据交互
- Cocos2d-x开发系列 lua sqlite集成 LSQLite3
- Cocos2d-x Lua 开发环境
- cocos2d-x+lua开发模式下编辑器的选择
- cocos2d-x+lua开发模式下编辑器的选择
- cocos2d-x+lua开发模式下编辑器的选择
- cocos2d-x 开发模式
- 【Cocos2d开发】 论Cocos2d-x+JS/Lua
- Cocos2d-x使用Javascript开发js绑定C++<代码示例>
- Cocos2d-X游戏开发(五)
- Cocos2d开发系列(五)
- Broken pipe 和 connection reset by peer
- Leetcode-gas-station
- PHP current() 函数
- 342. Power of Four
- 换yum源
- Cocos2d-x开发系列 交叉开发模式五 绑定C++对象到Lua
- SPI详解
- Java基础——super的几种用法并与this的区别
- 数组中的逆序对
- AngularJS学习环境配置
- 对于java学习中的date与String转换demo
- iOS的图片拉伸方法
- DBMS_REDEFINITION子程序概要
- HDOJ_A hard puzzle