脚本
文章平均质量分 75
evilswords
这个作者很懒,什么都没留下…
展开
-
一步步进行 LUA的OOD封装 (二)
概要介绍了如何将lua面向过程的封装方式向面向对象的方向靠拢,这里开始逐步介绍其做法。还是以lua_tinker为主 首先我们知道lua中最接近c中类概念的就是它的表,在上一页里已经介绍过他们的相似之处了,这里也就不再继续扯这个了。 总体的目标是把一个C中类表述到lua中,让脚本能够识别传入的userdata是属于这个类的并且允许lua去使用这个类特定的类成员函数及其变量 第一步就是给这个即原创 2011-10-22 16:25:31 · 2487 阅读 · 0 评论 -
Lua的function、closure和upvalue
Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包和内嵌都具有传递性,即f2的内嵌必然是f1的内嵌,而f1的外包也一定是f2的外包。内嵌函数可以访问外包转载 2011-11-08 10:08:57 · 1063 阅读 · 0 评论 -
实现简易的LUA嵌套表 读写接口
最近在做副本的脚本复用机制,之前想到的是用fork 这种方式从副本的静态数据里的state下得到一个一模一样的state,从此一来省掉 open 基础的脚本库和脚本文件的操作。 实现这种方案的时候发现能省的操作还真少,网上提到的lua rings这个库事实上只能给新建了个带 基础库 的new state ,并不是和已有state 一样的clone , 脚本环境初始化的操作还是得重新做。 转头一想这原创 2012-04-16 11:57:15 · 3530 阅读 · 0 评论 -
通过栈恢复脚本函数间参数传递
最近处理了一个客户端同事的需求,大体上是这样的: 在一个脚本里调用另一个窗口的 方法 button_down 一类的, 但如果所调用窗口没有被初始化过则需要先绕到c里面去初始化这个窗口,并且通过窗口对象加载其相应的脚本( 即包含 button_down 定义 的脚本) ,然后再调用 此脚本函数。 换一种描述 就是 当函数不存在时自动加载此函数。 第一反应是通过脚本做一个调用壳,在壳里实现判断 函原创 2012-08-11 11:24:52 · 741 阅读 · 0 评论 -
轻松升级lua_tinker支持lua5.2
lua_tinker自从lua5.0出来以后就鲜有更新 ,好在5.1没有对接口作大的修改让lua_tinker平稳的过渡,但到了lua5.2 发布以后 再执行tinker 能得到的也就只有报错的提示了。 关于5.2的修改 网上总结了不少,有不少宏都不用了而tinker恰好用到了其中的几个,比如LUA_GLOBALSINDEX lua_open ,如果简单的用新的宏替换掉旧的 #define L原创 2013-03-22 15:04:54 · 4973 阅读 · 3 评论