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文件中添加如下代码:

Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

LTData.cpp文件代码:

Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

下面我们在AppDelegate.cpp中引入LTData.h头文件,然后在applicationDidFinishLaunching()中加入如下代码测试:
Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

我们将词典中的所有内容全部导了出来并进行输出,最终控制台结果如下:

Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

与myLua.lua文件中内容一致:

Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary


Cocos2d-x教程 Lua脚本(4) Lua复杂表结构的访问,将table中元素存放到CCDictionary

上一篇:PS结合3D max 制作三羊开泰多层立体字效果


下一篇:unix环境高级编程例程里 apue.h找不到的问题