博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用lua扩展应用程序
阅读量:5278 次
发布时间:2019-06-14

本文共 1574 字,大约阅读时间需要 5 分钟。

  1. 全局变量的操作

void lua_getglobal(lua_State * L ,const char * name)

此函数从lua中取出一个名为name的全局变量并将其压入栈中。

如当lua文件内容为

width = 200

height = 300

时,以下代码

int _tmain(int argc, _TCHAR* argv[]){    lua_State *L = luaL_newstate();    luaL_openlibs(L);    if(0 != luaL_loadfile(L,"config_width_height.lua"))    {        printf("loadbuff error :%s",lua_tostring(L,-1));        lua_pop(L,-1);    }    if(0 != lua_pcall(L,0,0,0))    {        printf("pcall error :%s",lua_tostring(L,-1));        lua_pop(L,-1);    }    lua_getglobal(L,"width");    printf("width  = %d\n",lua_tointeger(L,-1));    lua_getglobal(L,"height");    printf("height = %d\n",lua_tointeger(L,-1));    lua_settop(L,0);    lua_close(L);    system("pause");    return 0;}

运行结果为

width  = 200
height = 300
请按任意键继续. . .

2.   table的操作

文件内容:

width = 200

height = 300

background =

{
    r = 0,
    g = 0,
    b = 1
}

获取以上 r g b的代码

int red;    int blue;    int green;    lua_getglobal(L,"background");   //push table    if(lua_istable(L,-1))    {        red = getfield(L,"r");        green = getfield(L,"g");        blue = getfield(L,"b");        printf("red:%d,green:%d blue:%d ",red,green,blue);    }

 

注意:getfield不是 lua内置函数。getfield函数如下。

/*假设table 们位于栈顶*/int getfield(lua_State * L,const char * key){    int result ;    lua_pushstring(L,key);      //push index    lua_gettable(L,-2);//获取table   //pop index push table[index]    if(!lua_isnumber(L,-1))        printf("error is the value is not a value\n");    result = (int ) lua_tonumber(L,-1) * MAX_COLOR;    lua_pop(L,1);      return result;}

转载于:https://www.cnblogs.com/zhangdongsheng/p/3176282.html

你可能感兴趣的文章
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
CSS中隐藏内容的3种方法及属性值
查看>>
每天一个linux命令(1):ls命令
查看>>
根据xml生成相应的对象类
查看>>
查看ASP.NET : ViewState
查看>>
Android StageFrightMediaScanner源码解析
查看>>
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
循环队列实现
查看>>
CSS层模型
查看>>