天天看點

【COCOS2DX-LUA 腳本開發之九】cocos2dx-LuaProxy擴充extensions包

首先很多童鞋可能對于 cocos2dx-LuaProxy 不太熟悉,那麼Himi簡單的一句話進行叙述:

cocos2dx-LuaProxy 的作用主要是讓cocos2dx引擎的擴充包(extensions)binding到Lua,便于做cocos2dx-lua項目開發者們。

仔細的童鞋可以明顯的看出cocos2dx-LuaProxy最新一次的更新與本篇文章釋出時間是不超過兩個小時的,說這個,不是說cocos2dx-LuaProxy是Himi做的,而是想說的是:

Himi在使用cocos2dx-LuaProxy遇到了虛函數問題導緻cocos2dx-LuaProxy不能在本人i的Xcode中正常編譯, 恰巧的是剛剛跟cocos2dx-LuaProxy的作者交流過,其作者修正了一版!

廢話不說了,下面詳細介紹如何在cocos2dx-lua項目中通過cocos2dx-LuaProxy使用cocos2dx引擎擴充extensions包。

下載下傳 cocos2dx-LuaProxy 解壓後如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2013/04/[email protected]"></a>

繼續看下面的cocos2dx引擎的extensions擴充包的目錄截圖,通過對比目錄大家可以看的很清楚 cocos2dx-LuaProxy為我們做了哪些工作。

<a href="http://www.himigame.com/wp-content/uploads/2013/04/[email protected]"></a>

OK,下面詳細介紹如何使用 cocos2dx-LuaProxy:

第一步:将我們解壓後的 cocos2dx-LuaProxy檔案下的 tolua 與ui檔案夾加入我們的項目中!

加入後,如果你立即使用Xcode進行build編譯,會發現報錯。(windows下應該不會),錯誤如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2013/04/[email protected]"></a>

通過錯誤資訊可以清晰的看到是我們剛導入的 cocos2dx-LuaProxy架構中UI包下的UIEventDispatcher類的問題, 解決方式 删除此UIEventDispatcher類,UIEventDispatcher.h 和 UIEventDispatcher.cpp都删除即可。

其原因 cocos2dx-LuaProxy的README 中講的很詳細了,如下:

You may safety remove ui/UIEventDispatcher.cpp(and .h), it's just design for win32. 

是的,UIEventDispatcher 隻适用于win32,是以我們盡管删除就對啦~然後再build編譯就不會有問題了。

第二步:

首先在AppDelegate.cpp 中導入頭luaopen_LuaProxy檔案 :

#include “luaopen_LuaProxy.h”

另外繼續在AppDelegate.cppd的applicationDidFinishLaunching函數中,在擷取到CCLuaEngine執行個體後進行添加如下代碼:

CCLuaStack *pStack = pEngine-&gt;getLuaStack(); 

    lua_State* L = pStack-&gt;getLuaState(); 

    luaopen_LuaProxy(L); 

如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2013/04/[email protected]"></a>

    注意:當載入使用ccbi時需要首先建立一個CCBProxy,你需要先建立一個CCBProxy! 

local proxy = CCBProxy:create() 

下面我們書寫lua測試代碼,來測試cocos2dx-LuaProxy 的其中一個對HttpClient功能擴充:

-- Get 

        CCHttpRequest:open("https://google.com/search?q=LuaProxy&amp;safe=strict", kHttpGet):sendWithHandler( 

        function(res, hnd) 

        print(res:getResponseData(), res:getResponseCode()) 

        end) 

控制台輸出:

<a href="http://www.himigame.com/wp-content/uploads/2013/04/[email protected]"></a>

好啦,2點半多了,準備準備要睡覺了,安。 

本文轉自 xiaominghimi 51CTO部落格,原文連結:http://blog.51cto.com/xiaominghimi/1176689,如需轉載請自行聯系原作者

繼續閱讀