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 解压后如下图:


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第1张图片


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


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




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

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


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第2张图片



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


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第3张图片


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


      那么简单处理下:

      把 enum class 直接更改这样。


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第4张图片


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


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


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第5张图片


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


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



cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第6张图片


二、lua绑定ccbi


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

    // register lua engine
    CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
    CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);

    CCLuaStack *pStack = pEngine->getLuaStack();
    lua_State* L = pStack->getLuaState();
    luaopen_LuaProxy(L);

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

cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第7张图片

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


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


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


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第8张图片


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

-- for CCLuaEngine traceback
function __G__TRACKBACK__(msg)
	print("----------------------------------------")
	print("LUA ERROR: " .. tostring(msg) .. "\n")
	print(debug.traceback())
	print("----------------------------------------")
end

local function main()
	-- avoid memory leak
	collectgarbage("setpause", 100)
	collectgarbage("setstepmul", 5000)

local cclog = function(...)
	print(string.format(...))
end


---------------

local function createTest()
	local TestLayer = CCLayer:create()

	local proxy = LuaProxy:create()
	local n = proxy:readCCBFromFile("MainScene.ccbi") -- Got a CCNode
	local l = tolua.cast(n, "CCLayer") -- Cast the node into CCLayer
	TestLayer:addChild(l)

	return TestLayer
end


-- run
local sceneGame = CCScene:create()
	sceneGame:addChild(createTest())
	CCDirector:sharedDirector():runWithScene(sceneGame)
end

xpcall(main, __G__TRACKBACK__)

三、效果图


cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder_第9张图片


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

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

你可能感兴趣的:(cocos2d-x-LuaProxy学习日志(2) -- 搭建cocos2dx-LuaProxy (2.1.4) + cocosbuilder)