cocos2dx lua中使用自定义类以及tolua++的使用
cocos2dx lua中使用自定义类以及tolua++的使用
??
使用cocos2dx-lua开发,免不了自己定义类,但是如何使用自定义的类的? 先了解下lua如何调用c++的: lua脚本代码->通过coocs2dx中间解析层代码->将其转换并调用cocos2dx c++的前端代码 coocs2dx中间解析层代码都在libs/lua/cocos2dx_support/LuaCocos2d.cpp 这个文件中,想了解的可以自己去看下这个文件。 也就是说,你自己定义了一个类,lua能够调用你自己定义的类,你的自定义类就必须在LuaCocos2d.cpp这个中间解析文件中申明。 看了LuaCocos2d.cpp这个文件,可能有的同学都晕了,不知道怎么在LuaCocos2d.cpp中申明自己的定义的类。不过,不用担心,cocos2dx已经提供了tolua++这个工具自动编译生成新的LuaCocos2d.cpp文件。 下面开始进入正题。 一、创建一个coocs2dx-lua 的Demo工程,然后在class中自己定义个类。 SNSprite.h [/cpp] // #ifndef __LuaDemo__SNSprite__ #include “cocos2d.h” class SNSprite : public CCSprite{ private: #endif /* defined(__LuaDemo__SNSprite__) */ [/cpp] SNSprite.cpp [cpp] // #include "SNSprite.h" SNSprite* SNSprite::create(const char* name){ void SNSprite::initData(){ [/cpp] 上面是我定义个一个类,很简单的功能。 二、使用tolua++将自定义的类添加的LuaCocos2d.cpp文件中。 tolua++工具在/tools/tolua++/目录下。 1、编写pkg文件 首先我们看下里面会发现有很多pkg文件,所以先为自定义的类编写pkg文件,文件的编写规则在README中,我简单说下编写规则: Writing .pkg files 1) enum keeps the same //枚举类型保留不变 2) remove CC_DLL for the class defines,pay attention to multi inherites //删除cc_dll的类定义,改用多继承 3) remove inline keyword for declaration and implementation //删除内联关键字声明和实现 4) remove public protect and private //删除访问限定词 5) remove the decalration of class member variable //删除成员变量 6) keep static keyword //保留静态关键词 7) remove memeber functions that declared as private or protected //非public的函数都删除 以上是pkg文件的编写规则。 下面编写自定义文件的pkg文件。纯文本,后缀改成pkg SNSprite.pkg [cpp] class SNSprite : public CCSprite{ [/cpp] 注意对比之前的头文件声明,可以进一步了解pkg文件的编写规则。将编写好的pkg文件放在tolua++中,和所有的pkg文件放在一起。 2、在Cocos2d.pkg文件中注册添加的pkg文件 3、配置build.sh编译脚本 [cpp] #!/bin/bash [/cpp] 两个地方注意修改: a、TOLUA=/APP/cocos2d-2.1rc0-x-2.1.2/tools/tolua++/tolua++ 这个是你的mac版tolua++的地址,请修改成你自己的。 b、${TOLUA} -L basic.lua -o /Users/liuyanghui/Desktop/LuaDemo/LuaDemo/libs/lua/cocos2dx_support/LuaCocos2d.cpp Cocos2d.pkg 参数-o 后面的 /Users/liuyanghui/Desktop/LuaDemo/LuaDemo/libs/lua/cocos2dx_support/LuaCocos2d.cpp 是生成新的LuaCocos2d.cpp的存放路径,请修改成你自己的。 4、执行编译脚本,生成LuaCocos2d.cpp文件 终端cd到build.sh目录。执行: ./build.sh 执行后之后,在你定义的输出目录就生成了新的LuaCocos2d.cpp文件。我们自己定义的类也添加进去了。 三、在lua中调用自定义类 在刚才新的cocos2dx-lua的Demo工程中,在hello.lua文件中添加调用自定义类的函数: [cpp] local function createSunnyLayer() local labTips = CCLabelTTF:create("这个icon图标就是使用的自定义类","Arial",18) local sp = SNSprite:create("Icon.png") return layerSunny [/cpp] 添加到scene中: [cpp] – run [/cpp] OK,xcode编译运行,就看到效果了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |