基于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++情何以堪啊!