Cocos2d-x教程 Lua腳本(4) Lua複雜表結構的訪問,將table中元素存放到CCDictionary

歡迎加入 Cocos2d-x 交流羣: 193411763

轉載時請註明原文地址:http://blog.csdn.net/u012945598/article/details/18224001

源碼下載地址:http://download.csdn.net/detail/u012945598/6844137

 Lua API參考手冊:http://www.codingnow.com/2000/download/lua_manual.html

以下API是此項目中需要用到的:

lua_getglobal (lua_State *L, const char *name):把全局變量 name 裏的值壓入堆棧。

lua_gettable (lua_State *L, int index):把 t[k] 值壓入堆棧, 這裏的 t 是指有效索引 index 指向的值, 而 k 則是棧頂放的值。

lua_isstring (lua_State *L, int index):當給定索引的值是一個字符串或是一個數字(數字總能轉換成字符串)時,返回 1 ,否則返回 0 。

lua_next (lua_State *L, int index):從棧上彈出一個 key(鍵), 然後把索引指定的表中 key-value(健值)對壓入堆棧 (指定 key 後面的下一 (next) 對)。

lua_pushstring (lua_State *L, const char *s):把指針 s 指向的以零結尾的字符串壓棧。

lua_pushnil (lua_State *L):把一個 nil 壓棧。

lua_pop (lua_State *L, int n):從堆棧中彈出 n 個元素。

lua_tolstring (lua_State *L, int index):將索引index指向的值轉換爲string類型。


筆者的IDE Xcode 5.0+Cocos2d-x-2.2.2

下面我們將要做的是,將一個.lua文件中的table變量中的所有元素存放到Cocos2d-x 中的CCDictionary對象中,.lua文件中內容如下:

luaTable={age = 3,name="Reventon",sex="",skill={"Lua","c++","oc"},type={type1="master",type2="monster"},state={"happy","angry"}}


存放到CCDictionary之後,詞典中的skill鍵與state鍵對應的value均爲CCArray類型,type鍵所對應value爲CCDictionary類型


新建一個基於Lua的項目,命名爲Reventon,(項目創建方法請參考:http://blog.csdn.net/u012945598/article/details/17115875)

新建一個cpp文件,命名爲LTData。

首先我們需要引入訪問Lua所需要的頭文件,並在LTData.h文件中添加如下代碼:


LTData.cpp文件代碼:




下面我們在AppDelegate.cpp中引入LTData.h頭文件,然後在applicationDidFinishLaunching()中加入如下代碼測試:

我們將詞典中的所有內容全部導了出來並進行輸出,最終控制檯結果如下:


與myLua.lua文件中內容一致:



發佈了59 篇原創文章 · 獲贊 296 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章