[cocos2dx笔记008]cocos2d 用luabridge手动绑定类

基于cocos2dx 2.2.2版本号。这几天使用了cocostudio实现了,动画。骨骼动画。UI编辑。粒子效果,尽管有些不足,但已经算是很好了。今天尝试用lua。这个很easy。创建的时候。设置语言为lua。那就能够创建luaproject。
在cocos2d-x-2.2.2 oolsproject-creator下执行:
python create_project.py -project test_lua -package com.android.zdhsoft -language lua
xcopy ....cocos2dxplatformandroidjavasrc* ....projects est_luaproj.androidsrc /E
就能够创建test_lua,就能够顺利跑起来。
可是我有些代码是C++的,想到在lua下用,感认为用cocos2dx自带的tolua++。会影响现有的Cocos2dx框架。也可能带来潜在的风险。(除了,bug,我一般不乐意改动框架的东西)。并且须要手动绑定的也不多。于是找了几个开源的绑定框架。有luabind,luatinker,ELuna,luabridge,等。luabind须要boost库,这个太头痛了,luatinker,eluna在试用过程都有些问题(有一个不支持派生类和模板)。尽管这两个是最简单的,可是功能也弱了些。最后,用luabridge顺利解决,使用起来也很easy。
以下是下载地址:https://github.com/vinniefalco/LuaBridge
个版本号已经支持lua 5.1.5,只是不支持C++0x11,样例非常丰富。这里有非常多样例,http://vinniefalco.com/LuaBridge/Manual.html
载后,直接解压。把LuaBridge.h,RefCountedObject.h。RefCountedPtr.h和detail下的所有头文件。所有拷贝到classes文件夹。然后在AppDelegate包括luabrigde.h就能够了。
以下是一个用于測试的类
class testA
{
public:
    testA()
    {

    }
    int getValue()
    {
        return 100;
    }
};
以下是绑定代码
    luabridge::getGlobalNamespace(pEngine->getLuaStack()->getLuaState())
        .beginClass<testA>("testA")
        .addConstructor<void(*) ()>()
        .addFunction("getValue", &testA::getValue)
        .endClass();
然后,就能够在你的lua代码使用这个类了。
    local testa = testA ()
    cclog("testa=%d", testa:getValue()) 
如今cocos2dx上面,如今出现了两个重要的lua分支, 一个是quickx,一个cocos-code-ide。quickx提供了一个很强大的lua框架,让你写lua省心省力。

而cocos ide则基于eclipse提供了一个x-man的编辑器,支持lua和js调试。

这让C++情何以堪啊!

原文地址:https://www.cnblogs.com/bhlsheji/p/5074885.html