Lua相关回调总结【转】】的更多相关文章

原文 http://www.zaojiahua.com/lua-callback-functions.html 最近做一个小项目,是用Lua写的,中间用到了很多的回调,基本Cocos中的那几种常用回调都用到了,为了不做一个无脑的码农,打算写篇博客,总结一下,刚刚学习Lua,望大家指教! 1.菜单按钮的回调.这二者的回调是这么实现的,新建一个菜单或者是按钮,为了点击菜单或者按钮以后实现程序的逻辑,我们需要为菜单和按钮来绑定一个回调函数,于是乎,我们有了以下的代码. 1 --定义菜单项的回调函数 2…
1. 目录 1. 目录 [2. LUA二次开发](#2. LUA二次开发) 2.1 [新手教程](#2.1 新手教程) 2.2 [进阶教程](#2.2 进阶教程) 2.3 [LUA开发环境](#2.3 LUA开发环境) 2.3.1 [LUA固件](#2.3.1 LUA固件) 2.3.2 [LUA相关调试工具](#2.3.2 LUA相关调试工具) 2.4 [LUA相关文章](#2.4 LUA相关文章) 2.5 [LUA开发实例](#2.5 LUA开发实例) [3. 产品资料](#3. 产品资料)…
--[[ xpcall( 调用函数, 错误捕获函数 ); lua提供了xpcall来捕获异常 xpcall接受两个参数:调用函数.错误处理函数. 当错误发生时,Lua会在栈释放以前调用错误处理函数,因此可以使用debug库收集错误相关信息. 两个常用的debug处理函数:debug.debug和debug.traceback 前者给出Lua的提示符,你可以自己动手察看错误发生时的情况; 后者通过traceback创建更多的错误信息,也是控制台解释器用来构建错误信息的函数. --]]  …
思路 像所有语言一样,绑定回调主要是执行的任务执行到特定情形的时候,调用对用回调方法. 这里也一样.核心思路是,当c代码执行到特定特定情形的时候,调用lua的方法 我这里使用的是用lua_stack直接调用lua的方法,没有使用cocos2dx封装的那个dispatcher,因为熟悉那个格式太墨迹了 主要步骤如下 缓存lua函数在lua环境中的引用 在c代码的地方用c的方式设置好回调 在c代码回调函数执行的时候,调用lua函数 实现 c代码绑定回调,调用lua函数 void ArmatureNo…
1.报之类的错误 /usr/lib/libreadline.so: undefined reference to `PC' /usr/lib/libreadline.so: undefined reference to `tgetflag' /usr/lib/ibreadline.so: undefined reference to `tgetent' /usr/lib/libreadline.so: undefined reference to `UP' /usr/lib/libreadlin…
回调里的self是另一个不同的东西了,通常是触发回调的对象,或_G或nil ,视情况而定 我的 print(self) 输出 userdata function MyClass:sayFromCallback() print('Hello~ in MyClass:sayFromCallback') end function MyClass:testCallback() local this = self self:runAction(cc.Sequence:create( action, del…
技巧1: local a = {}; function b() print("Hello World") end a["sell"] = {callFunc =b} a["sell"].callFunc() 技巧2: 使用lua 自带的 unpack : 解释:把一直数组(仅仅有连续数字下标的 table)展开成一串返回值.可是对用字符串或别的东西做 key 的 table 无能为力. function unpackex(tbl, args) l…
缘起 lua脚本语言虽好,代码写得飞快,可是写错了调试起来却很困难,lua使用者经常容易犯得一个错误是--写错变量名了,if end 嵌套太多没匹配~,多打了一个逗号, 假设定义了一个变量 local studentAge = true -- 手滑写错了... if studntAge then ... end 这个小小的错误,解释器不知道是错误,只当是nil,导致问题在运行的时候出现,而且,通常解决的方式是打log~~不知道有多少人 和我一样因为写错了变量名而泪流满面.. 好了,言归正传~插件…
Lua官网:http://www.lua.org/ Lua for windows地址:http://www.lua.org/download.html Lua教程:http://www.runoob.com/lua/lua-tutorial.html 国内中文权威参考手册:http://www.runoob.com/manual/lua53doc/manual.html Lua 5.1 参考手册:https://www.codingnow.com/2000/download/lua_manua…
lua的特性 1. 轻量级:一标准的C语言编写原发开放,编译后仅仅100K,占用内存小: 2. 扩展性:Lua提供了非常已于使用的扩展口和机制: 3. 支持面向过程编程和函数式编程 lua的数据类型 nil.boolean.number.string.userdata.function.thread和table 其中:lua把false和nil看作”假“,其他的是都是“真” pairs和ipairs区别 pairs迭代table,可以遍历表中所有key并返回nil ipairs迭代数组,不能返回…
写一个树控件并没有想象中的那么容易,今天又花了我一个1个多小时,主要为IT小鲜肉 Widgets Tree控件添加了 单选.多选.选择前和选择后两个回调函数.获取选中节点的功能.后面会继续努力完善这个树控件. 1.通过设置初始化时候的选项{select:true}开启单选,通过设置初始化时候的选项{select:{type:'multiple'}}开启多选 使用实例代码如下: 运行效果如下: 2.添加了onBeforeSelect回调函数,用来实现自定义选择,如果该函数返回false会中断默认的…
一.先安装lua brew install lua 我本机的安装路径为:/usr/local/Cellar/lua/5.3.4_2 二.安装luarocks 下载luarocks的安装包: http://luarocks.github.io/luarocks/releases/luarocks-2.4.3.tar.gz 解压后到安装包的目录下执行如下命令(可以自行根据自己的lua版本号进行修改): ./configure --with-lua=/usr/local/Cellar/lua/5.3.…
缘起 lua脚本语言虽好,代码写得飞快,可是写错了调试起来却很困难,lua使用者经常容易犯得一个错误是--写错变量名了,if end 嵌套太多没匹配~,多打了一个逗号, --假设定义了一个变量 local studentAge = true -- 手滑写错了... if studntAge then ... end 这个小小的错误,解释器不知道是错误,只当是nil,导致问题在运行的时候出现,而且,通常解决的方式是打log~~不知道有多少人和我一样因为写错了变量名而泪流满面.. 好了,言归正传~插…
http://stackoverflow.com/questions/5438751/how-to-debug-lua-remotely http://cn.bing.com/search?q=org.luaj.vm2.LuaError%3A++no+field+package.preload%5B%27mobdebug%27%5D&go=%E6%8F%90%E4%BA%A4&qs=n&form=QBRE&pq=org.luaj.vm2.luaerror%3A+no+fie…
背景 之前写的 Redis Cluster部署.管理和测试 和 Redis 5.0 redis-cli --cluster help说明 已经比较详细的介绍了如何安装和维护Cluster.但关于Cluster各个节点的通信和原理没有说明,为了方便自己以后查阅,先做些记录.顺便对Redis 4.0和5.0的相关特性也做下说明. Redis 4.0 新功能说明 Redis4.0版本增加了很多新的特性,如: Redis Memeory Command:详细分析内存使用情况,内存使用诊断,内存碎片回收:…
前面一篇文章介绍了Openresty Lua协程调度机制,主要关心的是核心调度函数run_thread()内部发生的事情,而对于外部的事情我们并没有涉及.本篇作为其姊妹篇,准备补上剩余的部分.本篇将通过一个例子,完整介绍OpenResty中Lua钩子的调用流程,包括初始化阶段的工作.新连接进来时如何进入钩子.I/O等待时如何出去.事件触发时如何恢复.钩子正常执行结束时的操作.钩子内出错的情况.本文同样是基于stream-lua模块的代码. 本博客已经迁移至CatBro's Blog,那里是我自己…
UICollectionView的布局是可以自己定义的,在这篇博客中先在上篇博客的基础上进行扩充,我们先使用UICollectionViewFlowLayout,然后好好的介绍一下UICollectionView的一些回调方法,主要包括UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,UICollectionViewDelegate相关回调方法,并通过实例来介绍每个回调的用法.并且给每个Section添加定制的Header…
服务器端Server 实现回调接口Interface定义.客户端实现回调接口Interface实现,从而实现服务器端通过  var channel = OperationContent.Current.GetCallbackChannel</*接口类名*/>(); 获取回调实例对象channel; 通过channel可以在服务器端调用客户端的实现相关回调接口. 在分布式服务器中 实现心跳包的方式绝大部分使用了这种方法. 可轻松 使用 基于双程模式 + delegate 实现 事件驱动型集群分布…
IOS中如何调用LUA,以及LUA如何调用IOS中的功能 下面将讲解一下如何在iOS里调用Lua函数,以及Lua函数如何调用iOS本地函数. 转载请注明出处.原文出处 http://www.cnblogs.com/winewind/archive/2012/09/06/2673094.html 1 lua_State *l; 2 l = lua_open(); lua_open 若要使用Lua,必须先初始化一个lua_State环境,以后的所有Lua相关操作都必须包含这个State. 1 voi…
原文链接:http://blog.csdn.net/u012945598/article/details/17168831   在使用Lua写脚本的时候大家都会因为没有代码提示导致敲代码的效率有所下降.笔者今天一直在找Lua的编辑器,最后综合代码提示.纠错.以及界面美观性.可操作性等原因,选择了Sublime Text. 关于编码环境的基本搭建过程,笔者给大家推荐一篇博客:http://blog.sina.com.cn/s/blog_991afe570101rdgf.html. 绿色背景内的内容…
Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio,我下载的是破解版(我自己为自己感到可耻,其实并不贵,百十来块钱的样子) 解压后在bin下有lua解释器的路径,把该路径添加到环境变量中:假设解释器路径是:D:/ZeroBraneStudio/bin/lua.exe,那么就把D:/ZeroBraneStudio/bin添加到Path环境变量下. 2.…
最近在帮朋友维护一个站点.这个站点是一个Php网站.坑爹的是用IIS做代理.出了无数问题之后忍无可忍,于是要我帮他切换到nginx上面,前期被不断的扫描和CC.最后找到了waf这样一个解决方案缓解一下.话不多说直接开始. waf的作用: 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止ApacheBench之类压力测试工具的攻击 屏蔽常见的扫描黑客工具,扫描器 屏蔽异常的网络请求 屏蔽图片附件类目录php执行权限 防止web…
因为动态化的东西我第一次看实现方案的源码,而且目前还是大三的学生,缺少很多实践经验说错的地方还请原谅,也希望能指出,被告知.想了很久还是决定写出来,求大神勿喷. 并且我的一个朋友bestswifter写了一篇关于ReactNative源码分析的一品文章,React Native 从入门到原理,感兴趣也可以阅读下. 最近看到很多场对动态化提出了很多技术方案,原因就是客户端的业务需求越来越复杂,尤其是一些业务快速发展的互联网产品,肯定会造成版本的更新迭代跟不上业务的变化,尤其是App Store不确…
网址:http://www.2cto.com/kf/201404/290996.html 最近在学习Android 4.4上面的WifiDisplay(Miracast)相关的模块,这里先从WifiDisplay用到的各个Service讲起,然后再从WifiDisplaySettings里面讲解打开wfd的流程.首先看下面的主要几个Service的架构图: 相关Service的启动 图中主要有以下几个模块,DisplayManagerService.MediaRouterService.Wifi…
$.ajax({ options:/*类型:Object;  可选.AJAX 请求设置.所有选项都是可选的.*/ async:/*类型:Boolean; 默认值: true.默认设置下,所有请求均为异步请求.如果需要发送同步请求,请将此选项设置为 false. 注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行.*/ beforeSend(xhr):/*类型:Function; 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头. XMLHtt…
vim编译安装+lua模块 使用背景:代码自动补全插件,需要安装lua模块 安装准备,首先下载安装vim所依赖的其它安装包,ncurses,lua,readline,vim 源码下载,编译安装 ncurses:http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz readline:ftp://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz lua:http://www.lua.org/download…
1.首先说下目的,为什么要这么做 ? 正式项目中,希望主程序尽量不做修改,于是使用C/C++完成功能的主干(即不需要经常变动的部分)用lua这类轻量级的解释性语言实现一些存在不确定性的功能逻辑:所以,程序功能如有问题,只需对lua脚本作出修改,而修改脚本的好处是简单高效,改完脚本后重新执行程序便能看到效果.  2.具体怎么做? 一般来说,C/C++调用lua接口或是数据交互,首先要做的是包含lua相关操作的头文件以及lua库相关的头文件,然后调用接口创建lua环境.用操作栈的规则和lua交互数据…
脚本语言,你可能更需要的是 Lua 不同的脚本语言有不同的特性,第一接触的脚本语言,可能会影响自己对整个脚本语言的理解和认知.我以前接触最多的脚本语言是 JavaScript.后果就是:我一度以为脚本语言都是必须和宿主语言运行在不同的进程:脚本本身的语法受环境的影响很大,很难做到统一:如果想统一写法,都需要在应用体积上做出非常大的妥协(嵌入一个通用的 JS 解释器,会使应用体积增大十几 M). 我在试着做一些努力,去改进因大量使用 JavaScript 引起的一些特定的技术问题.但是偶然间又想起…
前言 这篇文章针对的是基于 LuaJIT 的环境配置.借助于 LuaJIT,Lua 的执行效率可以进一步提升几十倍.如果你不是很清楚自己是需要 Lua 还是 LuaJIT,那么建议你从 LuaJIT 起步.LuaJIT 对应的是 Lua5.1 的语法,这一点需要注意. 如果你想看基于最新版 Lua 环境的配置文章,请移步:http://yanfeng.life/2017/11/10/Latest-guid-for-lua/ 脚本语言,你可能更需要的是 Lua 不同的脚本语言有不同的特性,第一接触…
hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows .Linux 下仍是 redis/hiredis.hiredis-for-windows 是以 hiredis 0.13.3 为基础移植的.hiredis-for-windows 需要稍加修正:    * 去除 inline 宏    * TCP_NODELAY 改在连接之前设置.详见其Issue…