tolua++绑定自定义类(高级版)

有时候有没有有觉得使用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改过来的,内容如下:

$#include "cocos2d.h"
$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这个文件名为主,真是奇葩

你可能感兴趣的:(Cocos2d-X)