其實引擎為了方便我們應對不同平臺,已經幫我們建立了不同平臺的project專案。
為了編輯程式碼方便。我使用VS2013開啟了"runtime-src"資料夾下的"proj.win32"project。 前往項資料夾徑“F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”。我將在這裡建立一個自己定義類"Pet",程式碼例如以下。
可是實事上
在最後的結果中能看到"Generating lua bindings succeeds"這種提示,聰明的讀者一定猜到了它所完畢的工作就是繫結C++類至Lua)。// 指定tolua所在的錄徑 無需改動
tolua_root = '%s/tools/tolua' % project_root
// 指定繫結指令碼執行後,產生的繫結一系列檔案輸出儲存於何路徑
// 儘管無需改動,可是我們要記住,我們產生的繫結檔案是輸出於
// "F:\Cocos2dx-Lua\Garfield\frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto"
output_dir = '%s/cocos/scripting/lua-bindings/auto' % project_root
// 這個陣列中指定了要執行繫結指令碼的一些配製引數 ,看到第一行。'cocos2dx.ini' 是一個配製檔案,我們能夠在"genbindings.py"同級資料夾中找到它。‘cocos2d-x’實際上是在 'cocos2dx.ini' 配製檔案裡的第一行所指定的一個字元常量,主要是用於生成繫結橋接檔案時。為諸如條件編譯 ifndef 及 生成的註冊自己定義類介面取名所用。一會我將會在後面稍提這點,這裡假設不明確。請臨時忽略它。‘lua_cocos2dx_auto’是給生成的繫結橋接檔案指定的言語件名。
cmd_args = {'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'), \
... ...
}
瞭解"genbindings.py"之後,在它的同級資料夾你能夠找到”cocos2dx.ini“,這是與之息息相關的配製檔案。開啟它,我們稍做了解。
請關注於 第 1、4、8、25 、29行。
還記得上面我們提到的陣列嗎?
cmd_args = {'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'), \
... ...
}
第 1 行就是第二個引數指定的字元內容
第 4 行是一些條件編譯 ifndef 及 生成的註冊自己定義類介面取名所用的字首。前面我們已經提到過。
第 8 行是指定該繫結類的名稱空間
第 25 行指定須要繫結的自己定義類標頭檔案路徑
第29行 指定繫結的C++自己定義類匯出後的Lua類檔名稱
瞭解這些之後。我們將對這兩個檔案進行一些改動,用於完畢我們的類至Lua的繫結。
首先我們拷貝一份'cocos2dx.ini',將其命名為 'custom_pet.ini'。拷貝一份'genbindings.py',將其命名為 'custom_pet_genbindings.py'。
修改'custom_pet.ini'第 1、4、8、25 、29行。例如以下:
由於我們沒有指定名字空間。所以第 8 行'target_namespace'將其賦空。
而'headers'其中僅僅是相對路徑的給定。還記得"Pet"類我們是建立於哪裡嗎?
正是在F:\Cocos2dx-Lua\Garfield\frameworks\runtime-src\Classes”。
OK。接下來我們修改'custom_pet_genbindings.py'。關注於第 133 至 138 行,我們將在這裡做一些改動。例如以下:
在cmd_args參數列中,我們指定該Python繫結指令碼的配製檔案為我們改動好的'custom_pet.ini'。
一些可能會用到的命名字首為'custom_pet'。指定匯出的橋接檔名稱為'lua_pet_auto'。
最後。我們執行'custom_pet_genbindings.py'。
"Generating lua bindings succeeds"。
見到它,你該歡呼了:)。你已經完畢了C++自己定義類至Lua的繫結。
在下一小節中,我們來探索下,怎麼樣在你的專案中使用Lua呼叫Pet類。