cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder

简介:

      

      cocos2dx-LuaProxy 的作用主要是让cocos2dx引擎的扩展包(extensions)binding到Lua,便于做cocos2dx-lua项目开发者们。


一、环境搭建:


1.软件准备:


cocos2d-x 2.1.4 

cocos2dx-LuaProxy

Cocosbuilder 3.0 a


2.搭建环境


      有关cocos2d-x 2.1.4 环境搭建,我这里不详细描述了。网上有很多教程。重点还是cocos2dx-LuaProxy环境搭建:

      下载 cocos2dx-LuaProxy 解压后如下图:




      接下来介绍如何使用cocos2dx-luaProxy


      第一步:将我们解压后的cocos2dx-luaProxy文件下的LuaProxy放入我们项目的class文件,如图:




      第二步:把LuaProxy文件下的luaEventHandler.cpp、luaEventHandler.hpp、luaProxy.hpp、LuaTable.hpp、tolua文件与ui文件加入我们项目中。

加入后,如果你立即使用Xcode进行build编译,会发现报错。(windows下应该不会),错误如下图:





      通过错误信息可以清晰的看到是我们刚导入的 cocos2dx-LuaProxy框架下的luaEventHandler类的问题, 如图




      enum class 是C++ 元件扩充功能,可能xcode不支持吧。(window 下应该不会吧。)


      那么简单处理下:

      把 enum class 直接更改这样。




      同时,记得把引用它的成员的Events变量名去掉,如:Events::KeyBack 直接改成keyBack即可。


      按官方搭建cocos2dx-LuaProxy (cocos2d-x 2.1.4),还有一个要求:




      呵呵,就直接把lib/cocos2d/lua/cocos2dx_support(4 files):CCBProxy.h, CCBProxy.cpp, Lua_extensions_CCB.h, Lua_extensions_CCB.cpp 去掉。


      编译成功后(cocos2dx-lua工程),如图




二、lua绑定ccbi


打开CCAppDelegate.cpp,添加头文件 "#include "luaopen_LuaProxy.h" , 在applicationDidFinishLaunching()添加如下代码:

[cpp]  view plain copy
  1. // register lua engine  
  2. CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();  
  3. CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);  
  4.   
  5. CCLuaStack *pStack = pEngine->getLuaStack();  
  6. lua_State* L = pStack->getLuaState();  
  7. luaopen_LuaProxy(L);  

      下载cocosbuilder 3.0 a 后,在本项目中Resources文件夹中创建两个文件,如图:



      一个是负责处理cocsuilder工程,一个是负责处理cocosbuilder publish生成文件。


      有关cocosbuilder 3.0 a  使用方法,可参考下:http://blog.csdn.net/bill_man/article/details/7981427


      我直接用默认创建文件MainScene.ccbi做例子。这是publish后生成的文件,如图




直接拖到项目中,接着编写绑定cbbi文件,代码:

[cpp]  view plain copy
  1. -- for CCLuaEngine traceback  
  2. function __G__TRACKBACK__(msg)  
  3.     print("----------------------------------------")  
  4.     print("LUA ERROR: " .. tostring(msg) .. "\n")  
  5.     print(debug.traceback())  
  6.     print("----------------------------------------")  
  7. end  
  8.   
  9. local function main()  
  10.     -- avoid memory leak  
  11.     collectgarbage("setpause", 100)  
  12.     collectgarbage("setstepmul", 5000)  
  13.   
  14. local cclog = function(...)  
  15.     print(string.format(...))  
  16. end  
  17.   
  18.   
  19. ---------------  
  20.   
  21. local function createTest()  
  22.     local TestLayer = CCLayer:create()  
  23.   
  24.     local proxy = LuaProxy:create()  
  25.     local n = proxy:readCCBFromFile("MainScene.ccbi") -- Got a CCNode  
  26.     local l = tolua.cast(n, "CCLayer") -- Cast the node into CCLayer  
  27.     TestLayer:addChild(l)  
  28.   
  29.     return TestLayer  
  30. end  
  31.   
  32.   
  33. -- run  
  34. local sceneGame = CCScene:create()  
  35.     sceneGame:addChild(createTest())  
  36.     CCDirector:sharedDirector():runWithScene(sceneGame)  
  37. end  
  38.   
  39. xpcall(main, __G__TRACKBACK__)  

三、效果图



如有错误之处,希望大家多多纠正!

转载请注明出处:http://blog.csdn.net/rexuefengye/article/details/16336351

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值