lua中的继承
做为一个java出身的程序媛,长时间做Lua,重复一些工作后,特别想用继承。其实很简单。因为我有一大部分的场景,背景长的都一样,所以打算做一个父类。
需要注意的是,如果子类有和父类的同名函数,就会被覆盖,除非手动的调用.super.方法。
关键的代码就两个地方,都在子类中。
1 创建场景时:
local SceneBase = import("app.scenes.SceneBase")
local ActivityScene = class("ActivityScene", SceneBase)
2 子类的构造函数中,需调用父类
ActivityScene.super.ctor(self) -- 这是关键
超级简单,为什么以前没人用呢,用了多省事啊,便于维护,省了很多人力呢。下面是两个文件的完整代码。
父类:
local commImgPath = "#images/common/ui/" local SceneBase = class("SceneBase", function()
return display.newScene("SceneBase")
end) function SceneBase:ctor()
print("SceneBase:ctor")
self:addSprite()
end function SceneBase:addSprite()
print("SceneBase:addSprite")
self.menuBgHeight = ZySize.scale *
self.menuBgWidth = display.width - ZySize.scalew *
--背景
cc.ui.UIImage.new(commImgPath.."beijing.jpg")
:setLayoutSize(display.width + ZySize.scalew*, display.height + ZySize.scale*)
:align(display.CENTER, display.cx, display.cy)
:addTo(self) cc.ui.UIImage.new(commImgPath.."tongyongmianban3.png", {scale9 = true})
:setLayoutSize(display.width - ZySize.scalew* , display.size.height - self.menuBgHeight - ZySize.scale * )
:pos(ZySize.scalew * , self.menuBgHeight + ZySize.scale * )
:addTo(self) cc.ui.UIImage.new(commImgPath.."diban2.np.png", {scale9 = true})
:setLayoutSize(display.width, self.menuBgHeight)
:addTo(self)
end return SceneBase
子类:
local SceneBase = import("app.scenes.SceneBase")
local ActivityScene = class("ActivityScene", SceneBase) function ActivityScene:ctor()
ActivityScene.super.ctor(self) -- 这是关键
end return ActivityScene
lua中的继承的更多相关文章
- lua中基类和“继承机制”
基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lu ...
- cocos2dx lua中继承与覆盖C++方法
cocos2dx的extern.lua中的class方法为lua扩展了面向对象的功能,这使我们在开发中可以方便的继承原生类 但是用function返回对象的方法来继承C++类是没有super字段的,这 ...
- 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...
- 【转载】【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
[游戏开发]在Lua中实现面向对象特性——模拟类.继承.多态 阅读目录 一.简介 二.前提知识 三.Lua中实现类.继承.多态 四.总结 回到顶部 一.简介 Lua是一门非常强大.非常灵活的脚本语 ...
- lua 中的面向对象
lua 是一种脚步语言,语言本身并不具备面向对象的特性. 但是我们依然可以利用语言的特性,模拟出面向对象的特性. 面向对象的特性通常会具备:封装,继承,多态的特性,如何在lua中实现这些特性,最主要的 ...
- Cocos2d-x 脚本语言Lua中的面向对象
Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...
- lua中的面向对象编程
简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 上述代码会输出tb1 ~= tb2.说明两个具有相同值得对象是两个不同的对象,同时在Lua中table是引用类型的 ...
- Lua中metatable和__index的联系
Lua中metatable和__index的联系 可以参考 http://blog.csdn.net/xenyinzen/article/details/3536708 来源 http://blog. ...
- Lua中的环境概念
[前言] Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”.这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现:另一个优点 ...
随机推荐
- Alpha 冲刺3
队名:日不落战队 安琪(队长) 今天完成的任务 组织第三次站立式会议. 完成了个人信息前端界面. 明天的计划 草稿箱前端界面. 个人信息扩展界面框架. 还剩下的任务 回收站前端界面. 信息修改前端界面 ...
- Winform 子窗体设置刷新父窗体
方法1:所有权法 父窗体:Form1 子窗体:Form2 //Form1:窗体代码 //需要有一个公共的刷新方法 public void Refresh_Method() { //... } / ...
- 多线程Worker初尝试
多线程这个概念,不知道听了多少遍.但是真滴没有去实操过. 前几天看视频听到作者说道关注技术本身,而不是总写业务代码.这几天依然思考着这个问题.于是从头开始重现了html文件的堵塞问题,重现了html文 ...
- DBGrid相关技术整理
DBGrid相关技术整理: 注:对于DBGrid相关属性.方法的学习融入到技术整理过程中 一,多选 设置属性: Options->dgMultiSelect = True; ->dgRow ...
- 在select中,载入时默认select为空白,选项内不显示空白项
有两种办法,一种纯css实现,一种借助js实现. html: <body onload="load()"> <select id="abc" ...
- 用css制作空心箭头(上下左右各个方向均有)
平常在网页中,经常会有空心箭头,除了用图片外,可以用css来实现.基本思路是,用css绘制两个三角形,通过绝对定位让两三角形不完全重叠,例如制作向右的空心箭头,位于前面的三角形border颜色是需要的 ...
- URL 编码规则
规则: 1.将空格转换为加号(+) 2.对0-9.a-z.A-Z之间的字符保持不变 3.对于所有其他的字符,用这个字符的当前当前字符集编码在内存中的十六进制格式表示,并在每一个字节前加上一个百分号(% ...
- 【题解】CF#403 D-Beautiful Pairs of Numbers
这题还挺对胃口的哈哈~是喜欢的画风!回家路上一边听歌一边想到的解法,写出来记录一下…… 首先,由于 \(b_{k} < a_{k + 1}\) ,所以我们可以看作是在一个长度为 n 的序列上选择 ...
- ubuntu简易教程(如何使用noi linux)
目录 linux环境下的基础操作 命令行操作 编辑器 程序编译 程序调试 gdb的使用 对拍 在提高组的考试中要求使用noi linux,因此了解一下如何在linux环境下编程是很有必要的. linu ...
- [POI2014]FAR-FarmCraft 树形DP + 贪心思想
(感觉洛谷上题面那一小段中文根本看不懂啊,好多条件都没讲,直接就是安装也要一个时间啊,,,明明不止啊!还好有百度翻译......) 题意:一棵树,一开始在1号节点(root),边权都为1,每个点有点权 ...