专职C++

不能停止的脚步

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用链接

留言簿(28)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

基于cocos2dx 2.2.2版本。这几天使用了cocostudio实现了,动画,骨骼动画,UI编辑,粒子效果,虽然有些不足,但已经算是非常好了。今天尝试用lua,这个非常简单,创建的时候,设置语言为lua,那就可以创建lua工程。
在cocos2d-x-2.2.2\tools\project-creator下运行:
python create_project.py -project test_lua -package com.android.zdhsoft -language lua
xcopy ..\..\cocos2dx\platform\android\java\src\* ..\..\projects\test_lua\proj.android\src /E
就可以创建test_lua,就可以顺利跑起来。
但是我有些代码是C++的,想到在lua下用,感觉得用cocos2dx自带的tolua++,会影响现有的Cocos2dx框架,也可能带来潜在的风险。(除了,bug,我一般不乐意修改框架的东西)。而且需要手动绑定的也不多。于是找了几个开源的绑定框架。有luabind,luatinker,ELuna,luabridge,等。luabind需要boost库,这个太头痛了,luatinker,eluna在试用过程都有些问题(有一个不支持派生类和模板),虽然这两个是最简单的,但是功能也弱了些。最后,用luabridge顺利解决,使用起来也非常简单。
下面是下载地址: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++情何以堪啊!
posted on 2014-07-09 20:06 冬瓜 阅读(1851) 评论(0)  编辑 收藏 引用 所属分类: 原创cocos2dx

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理