quick lua-binding使用详解

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 :下

参考:http://segmentfault.com/blog/hongliang/1190000000631630

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值