cocos2d-x Lua 中的公共函数 handler
来源:互联网 发布:淘宝blued如何实现刷粉 编辑:程序博客网 时间:2024/05/05 21:45
handler函数的主要作用是将lua对象及方法包装为一个匿名函数,用来做回调函数。
许多功能都需要传入一个 Lua 函数做参数,然后在特定事件发生时就会调用传入的函数。例如触摸事件、帧事件等等。
在解释handler函数的原理之前,首先需要了解lua中 "." 和 ":" 还有 "..."的用法。
handler函数定义的位置 /src/cocos/cocos2d/functions.lua。
函数定义源码:
--[[@param obj lua对象@param function method 对象方法--]]function handler(obj, method) return function(...) return method(obj, ...) endend
由此不难发现handler通过接收的两个参数obj, method创建了一个匿名函数并将其返回,并且调用匿名函数时所传入的参数也将传入method方法中,作为obj后面的参数。
以下两段代码的对比显示了handler函数的作用。
local cls = {}function cls:test()self._m = "hello world"endlocal clsb = {}cls.test(clsb)print(clsb._m)print(cls._m)--[[上述代码输出结果:hello worldnil--]]是的,没有看错,cls中的self变成了clsb。
我们再运行如下代码:
function handler(obj, method)return function(...)return method(obj, ...)endendlocal cls = {}function cls:test()self._m = "hello world"endlocal clsb = {}--cls.test(clsb)handler(cls, cls.test)() -- 等同于 cls.test(cls)print(clsb._m)print(cls._m)--[[上述代码输出结果:nilhello world--]]
0 0
- cocos2d-x Lua 中的公共函数 handler
- lua使用cocos2d-x中的函数
- 【cocos2d-x + lua】生命周期函数
- cocos2d-x中的lua调试
- Cocos2d-x lua中的定时器
- Cocos2d-x 3.x lua中的定时器
- Cocos2d-x lua的随机函数
- cocos2d-x下c++调用lua函数
- Cocos2d-x中C++回调Lua函数
- Cocos2d-x Lua中生命周期函数
- cocos2d-x lua调用c++函数
- Cocos2d-x 脚本语言Lua中的面向对象
- Cocos2d-x 3.0 lua中的定时器
- Cocos2d-x 脚本语言Lua中的面向对象
- Cocos2d-x 3.0 中的lua binding - fonzieyang
- 【Cocos2d-x lua篇005】C++调用Lua的函数
- 【Cocos2d-x lua篇006】Lua调用C++的函数
- cocos2d-x CCTouch中的函数
- 当不确定输入数组为多少个的时候
- 欢迎使用CSDN-markdown编辑器
- 【Basic Code】一道“单例”的笔试题
- C++第2次实验报告项目1输出完数
- frameset标签设计页面
- cocos2d-x Lua 中的公共函数 handler
- Qt 字符串的操作(一)查找 替换 比较
- 个人编码模板
- Java单例的实现(懒汉式和饿汉式)
- Beginning C++ Through Game Progamming 全书学习笔记
- 不用sqrt()函数,如何求平方根
- 小程序:递归实现所有变位词的排列组合
- xss获取客户端ip
- 算法训练 王、后传说 (八皇后问题)