class() 高级用法
class() 除了定义纯 Lua 类之外,还可以从 C++ 对象继承类。比如需要创建一个工具栏,并在添加按钮时自动排列已有的按钮,那么我们可以使用如下的代码:-- 从 CCNode 对象派生 Toolbar 类,该类具有 CCNode 的所有属性和行为
local Toolbar = class("Toolbar", function()return display.newNode() -- 返回一个 CCNode 对象
end)-- 构造函数
function Toolbar:ctor()self.buttons = {} -- 用一个 table 来记录所有的按钮
end-- 添加一个按钮,并且自动设置按钮位置
function Toolbar:addButton(button)-- 将按钮对象加入 tableself.buttons[#self.buttons + 1] = button-- 添加按钮对象到 CCNode 中,以便显示该按钮-- 因为 Toolbar 是从 CCNode 继承的,所以可以使用 addChild() 方法
    self:addChild(button)-- 按照按钮数量,调整所有按钮的位置local x = 0for _, button in ipairs(self.buttons) dobutton:setPosition(x, 0)-- 依次排列按钮,每个按钮之间间隔 10 点x = x + button:getContentSize().width + 10end
end
class() 的这种用法让我们可以在 C++ 对象基础上任意扩展行为。~既然是继承,自然就可以覆盖 C++ 对象的方法:function Toolbar:setPosition(x, y)-- 由于在 Toolbar 继承类中覆盖了 CCNode 对象的 setPosition() 方法-- 所以我们要用以下形式才能调用到 CCNode 原本的 setPosition() 方法getmetatable(self).setPosition(self, x, y)printf("x = %0.2f, y = %0.2f", x, y)
end
注意: Lua 继承类覆盖的方法并不能从 C++ 调用到。也就是说通过 C++ 代码调用这个 CCNode 对象的 setPosition() 方法时,并不会执行我们在 Lua 中定义的 Toolbar:setPosition() 方法。

class() 高级用法 -- lua相关推荐

  1. vim的高级用法配置以及在系统中如何获取帮助

    vim的高级用法配置以及在系统中如何获取帮助 1 vim的三种模式 1.1 使用方法 1.2 vim模式 2 vim工作的基本配置 2.1 临时设定(set设定) 2.2 永久设定方式 3 搜索 4 ...

  2. Cacti Weathermap 高级用法 (二)

    成都长宽Weathermap实际运用的效果图示例: 这是一个CNC出口的质量监控图. 途中cnc节点(红色)是一个展示图例,TEL节点根据存活状态显示为绿色 TEL节点上面P:47.2ms 是一个,这 ...

  3. JAVA正则表达式高级用法(分组与捕获)

    2019独角兽企业重金招聘Python工程师标准>>> 正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下 ...

  4. GUN sed高级用法,sed脚本编写

    这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [root@QX-××× ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 ...

  5. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

  6. (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案

    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 参考文章: (1)(转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 (2)ht ...

  7. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  8. Newtonsoft.Json高级用法

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  9. Python进阶:切片的误区与高级用法

    众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片 ...

最新文章

  1. 计算机网络第六章:应用层
  2. 恢复mysql数据库详细图解_binlog恢复mysql数据库超详细步骤
  3. apply,call,bind区别
  4. linux命令eric,Linux命令行下连接无线网
  5. 第 3-4 课:数据结构——队列详解 + 面试题
  6. IOS逆向-动态调试
  7. 精益生产理论学习总结(一)
  8. 这是阿里的码农吗?杭州小伙深夜骑车逆行被交警拦后当场崩溃!成年人的奔溃从一次逆行开始。...
  9. 半小时一篇文过完C语言基础知识点
  10. 中移物联网采购4G行车记录仪
  11. 解决:ActiveX控件不能使用
  12. 唐朝诡事录之西行官宣
  13. 安兔兔 android 4.4,适配智能电视 安兔兔评测V4.4.3发布
  14. LTE 终端如何申请 RB 资源以及现实面临的问题
  15. 台式计算机cpu功率,如何计算主机所需的功率? ?
  16. 打表+dp思维+博弈
  17. 什么是高端的IPv6?和IPv4有什么差别呢?
  18. 本人以及硕士期间研究介绍
  19. 20191019 前端日报
  20. Oracle VM VirtualBox虚拟MS-DOS时失败,提示内存不能为“written”

热门文章

  1. 本地Yum生成数据库及常用命令
  2. mysql 二十条记录_记 MySQL优化 20条
  3. html圆点虚线,html的a标签点击后出现虚线框问题
  4. SNMP OID批量枚举工具
  5. linux 终端 渐变色,iOS开发——UI篇文字渐变效果:图层中的mask属性
  6. python3中unicode怎么写_详解python3中ascii与Unicode使用
  7. 未在本地计算机上注册oraoledb.oracle.1提供程序,未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序--问题的处理...
  8. php json_encode 后直接复制给js怎么调用,如何将数组从php(使用json_encode)传递给javascript...
  9. java fromstring_Java UUID fromString()方法与示例
  10. python找字符串_Python如何实现查找字符串