本站文章均為 李華明Himi 原創,轉載務必在明顯處註明:(作者新浪微博: @李華明Himi )
轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/lua1/1343.html
☞ 點擊訂閱 ☜ 本部落格最新動向!及時將最新博文通知您!
在使用Cocos2d-x 時候,難免需要C/C++調用Lua函數、資料或Lua調用C/C++函數,那麼本篇講詳細介紹C/C++與Lua之間的資料、函數互動。
首先讓我們來簡單瞭解幾個Lua API函數:
int luaL_dofile (lua_State *L, const char *filename) :
載入並運行指定檔案,沒有錯誤返回0
void lua_settop (lua_State *L, int index):
參數允許傳入任何可接受的索引以及 0 。 它將把堆棧的棧頂設為這個索引。 如果新的棧頂比原來的大,超出部分的新元素將被填為 nil 。 如果 index 為 0 ,把棧上所有元素移除。
void lua_getglobal (lua_State *L, const char *name):
把全域變數 name 裡的值壓入堆棧。
void lua_pop (lua_State *L, int n):
從堆棧中彈出 n 個元素。相當於清除!
void lua_pushstring (lua_State *L, const char *s):
把指標 s 指向的以零結尾的字串壓棧。 Lua 對這個字串做一次記憶體拷貝(或是複用一個拷貝), 因此 s 處的記憶體在函數返回後,可以釋放掉或是重用於其它用途。 字串中不能包含有零字元;第一個碰到的零字元會認為是字串的結束。
更多的API請參考:http://www.codingnow.com/2000/download/lua_manual.html
瞭解了以上幾個函數,為了方便童鞋們使用,Himi直接貼出封裝好的類 HclcData,其中主要包括如下幾個功能:
1. C/C++ 調用 Lua 全域變數
2. C/C++ 調用 Lua 全域Table 某元素
3. C/C++ 調用 Lua 全域Table
4. C/C++ 調用 Lua 函數
5. Lua 調用C/C++ 函數
下面直接貼出代碼:HclcData.h
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |