# 元类 class

# extends 继承

该函数实现了多重继承以及多继承

  • 多重继承:
local classA = {}
local classB = extends(classA) { }
local classC = extends(classB) { }

1
2
3
4

多继承:

local classA = {}
local classB = {}

classC = extends(classA,classB) { }

1
2
3
4
5

class 是一个用来生成新类的类

例如

    class.text = extends(class.panel) {
        new = function (parent, ...)
            --... 此处略去1万字
            return object
        end,
    }
1
2
3
4
5
6

会给 text 类 默认生成几个模板函数


--创建控件
function class.text.create(...)
    return class.text.new(nil,...)
end

--作为子控件被创建
function class.text.add_child(parent, ...)
    return class.text.new(parent, ...)
end

--获取单例
function class.text.get_instance(...)
    local instance = class.text.instance
    if instance == nil then
        instance = class.text.create()
        class.text.instance = instance
    end
    return instance
end


--添加为父控件添加 子文本控件
--注意 这里是给 panel 注册的 所有 继承自panel类的 子类 都会自动拥有 add_text方法
function class.panel:add_text(...)
    return class.text.new(self, ...)
end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28