1 创建c++文件 MyClass.cpp MyClass.h 于 frameworks/runtime-src/Classes/tolua目录下
MyClass.cpp
#include "MyClass.h"
int MyClass::foo(int i)
{
return i + 100;
}
MyClass.h
#include "cocos2d.h"
using namespace cocos2d;
class MyClass : public Ref
{
public:
MyClass() {};
~MyClass() {};
bool init() { return true; };
CREATE_FUNC(MyClass);
int foo(int i);
};
2 编写.ini文件。在frameworks/cocos2d-x/tools/tolua/目录下能看到genbindings.py脚本和一大堆.ini文件,这些就是bindings-generator的实际执行环境了。随便找一个内容比较少的.ini文件,复制一份,重新命名为MyClass.ini。大部分内容都可以凑合不需要改,这里仅列出必须要改的重要部分:
[MyClass]
prefix = MyClass
target_namespace = my
headers = %(cocosdir)s/../runtime-src/Classes/tolua/MyClass.h
classes = MyClass
3 修改genbindings.py文件 129行附近,将MyClass.ini文件加进去:
frameworks/cocos2d-x/tools/tolua/genbindings.py
cmd_args = {'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'), \
'MyClass.ini' : ('MyClass', 'lua_MyClass_auto'), \
...
4 在控制台进入frameworks/cocos2d-x/tools/tolua/ 目录 ,运行genbindings.py
会在framework/cocos2d-x/cocos/scripting\lua-bindings\auto 目录下生成lua_MyClass_auto.cpp和lua_MyClass_auto.hpp两个文件将其复制到Classes/tolua目录下
5 修改AppDelegate.cpp
#include "../tolua/lua_MyClass_auto.hpp"
applicationDidFinishLaunching()函数中添加
LuaStack* stack1 = engine->getLuaStack();
register_all_MyClass(stack1->getLuaState());
6测试 在main.lua文件中
local test = my.MyClass:create()
print("lua bind: " .. test:foo(99)
已解决出现的问题
1.python缺少yaml库Cheetah库 安装easy_install 安装相应的库
2.python :ImportError …MAXREPEAT 提示
修改Python27\Lib下src_constants.py如下
MAGIC = 20031017
try:
from _sre import MAXREPEAT
except ImportError:
import _sre
_sre.MAXREPEAT = 65535
# SRE standard exception (access as sre.error)
# should this really be here?
class error(Exception):
pass
这样使用vs2012可以启动win程序但是如果使用Cocos Code Ide 的话要修改Android.mk文件将MyClass.cpp、lua_MyClass_auto.cpp添加到LOCAL_SRC_FILES :下
温馨提示:答案为网友推荐,仅供参考