有时候有没有有觉得使用tolua如果修改了源代码会很麻烦
现在教一个高级方法,不用修改源代码,并且随便移植
这里拿我自己写的ClippingArea当示例
ClippingArea地址:D:\Cocos2d-X\cocos2d-x-2.2.1-tolua\cocos2d-x-2.2.1\projects\ClippingNode\Classes\UI\ClippingArea\
tolua地址:D:\Cocos2d-X\cocos2d-x-2.2.1-tolua\cocos2d-x-2.2.1\projects\ClippingNode\Classes\ToLua\LuaClippingArea\
我是一个类一个绑定,这个看个人需求了啦
首先你要参考tolua++文件夹中的内容来写
LuaClippingArea.h == LuaCocos2d.h
LuaClippingArea.pkg == LuaCocos2d.pkg
LuaClippingArea.h
这个先不写也行的,不过为了移植性,建议你先写了罗,内容如下:
#ifndef _LUACLIPPINGAREA_H_
#define _LUACLIPPINGAREA_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "tolua++.h"
#ifdef __cplusplus
}
#endif
TOLUA_API int tolua_LuaClippingArea_open(lua_State* tolua_S);
#endif
LuaClippingArea.pkg
这个是Cocos2d.pkg改过来的,内容如下:
$USING_NS_CC;
$#include "LuaClippingArea.h"
$#include "UI/ClippingArea/ClippingArea.h"
$pfile "ClippingArea.pkg"
上面那两个include将会写在LuaClippingArea.cpp中
但是感觉没有直接使用上
ClippingArea.pkg不会写那你就没救了
basic.lua
原本很多东西的,现在修改一下,内容如下
local CCObjectTypes = {
"ClippingArea",
}
保留自己继承CCObject的类,记得是继承或者间接继承CCObject的才写在里面啊
replace([[#ifndef __cplusplus
#include "stdlib.h"
#endif
#include "string.h"
#include "tolua++.h"]],
保留这些够了,其它删掉
TOLUA_API int tolua_LuaClippingArea_open (lua_State* tolua_S);]], [[]])
中间的Cocos2d改成这个样子就行的啦
build.bat
用于生成文件,内容如下:
tolua++ -L basic.lua -o "LuaClippingArea.cpp" LuaClippingArea.pkg
第二个地址改成当地和其名字
第二个是将Cocos2d.pkg改过来的就不用说了吧
然后把上面的那些用到的h和cpp文件拉进项目
然后在AppDelegate.cpp中添加LuaClippingArea.h的引用
然后添加使用
//裁剪模块
tolua_LuaClippingArea_open(tolua_s);
By the way:
有些人可能说不会写
LuaClippingArea.h
这个倒不是大问题
如果Cocos2d.pkg这个文件名没有改,或者basic.lua里面的TOLUA_API int tolua_LuaClippingArea_open (lua_State* tolua_S);]], [[]])和其不符合
最终生成的LuaClippingArea.cpp里面会有头文件的写法,把其剪切到那里面就行了
注意函数名不是以basic.lua里面写的为主,而是以Cocos2d.pkg这个文件名为主,真是奇葩