本站文章均爲 李華明Himi 原創,轉載務必在明顯處註明:(作者新浪微博: @李華明Himi )
轉載自【黑米GameDev街區】 原文鏈接: http://www.himigame.com/lua1/1322.html
☞ 點擊訂閱 ☜ 本博客最新動態!及時將最新博文通知您!
首先很多童鞋可能對於 cocos2dx-LuaProxy 不太熟悉,那麼Himi簡單的一句話進行敘述:
cocos2dx-LuaProxy 的作用主要是讓cocos2dx引擎的擴展包(extensions)binding到Lua,便於做cocos2dx-lua項目開發者們。
這裏先附上cocos2dx-LuaProxy下載地址:https://github.com/shawnclovie/cocos2dx-LuaProxy
仔細的童鞋可以明顯的看出cocos2dx-LuaProxy最新一次的更新與本篇文章發佈時間是不超過兩個小時的,說這個,不是說cocos2dx-LuaProxy是Himi做的,而是想說的是:
Himi在使用cocos2dx-LuaProxy遇到了虛函數問題導致cocos2dx-LuaProxy不能在本人i的Xcode中正常編譯, 恰巧的是剛剛跟cocos2dx-LuaProxy的作者交流過,其作者修正了一版!
廢話不說了,下面詳細介紹如何在cocos2dx-lua項目中通過cocos2dx-LuaProxy使用cocos2dx引擎擴展extensions包。
下載 cocos2dx-LuaProxy 解壓後如下圖:
繼續看下面的cocos2dx引擎的extensions擴展包的目錄截圖,通過對比目錄大家可以看的很清楚 cocos2dx-LuaProxy爲我們做了哪些工作。
OK,下面詳細介紹如何使用 cocos2dx-LuaProxy:
第一步:將我們解壓後的 cocos2dx-LuaProxy文件下的 tolua 與ui文件夾加入我們的項目中!
加入後,如果你立即使用Xcode進行build編譯,會發現報錯。(windows下應該不會),錯誤如下圖:
通過錯誤信息可以清晰的看到是我們剛導入的 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->getLuaStack();
- lua_State* L = pStack->getLuaState();
- luaopen_LuaProxy(L);
如下圖:
注意:當載入使用ccbi時需要首先創建一個CCBProxy,你需要先創建一個CCBProxy!
- local proxy = CCBProxy:create()
下面我們書寫lua測試代碼,來測試cocos2dx-LuaProxy 的其中一個對HttpClient功能擴展:
- -- Get
- CCHttpRequest:open("https://google.com/search?q=LuaProxy&safe=strict", kHttpGet):sendWithHandler(
- function(res, hnd)
- print(res:getResponseData(), res:getResponseCode())
- end)
控制檯輸出:
好啦,2點半多了,準備準備要睡覺了,安。