上周开始做项目的奇遇模块
奇遇分为很多种,显示在同一个列表中,有很多共同之处
所以考虑使用继承去实现如 弹框,倒计时,取消奇遇等事务逻辑
local BaseView = class("BaseView" , function()
return cc.Node:create()
end)
BaseView.age = 998
BaseView.createPopup()
Log("...")
end
BaseView:ctor()
self.name = "helloworld"
end
以上就是我们的基类,继承自Node
静态属性age
静态方法createPopup
动态方法ctor
子类需要用以上这三种属性
首先lua实际上并不区分静态/动态方法
换言之
BaseView:ctor()
BaseView.ctor(argu)
其实没有区别
默认调用分别是baseView:ctor()与baseView.ctor(baseView)
当然反过来也行baseView.ctor(baseView) , baseView:ctor()
:定义的函数可以用.调用(已测试) ; .定义的函数也可以用:调用(未测试,应该是这样,调用者作为首参传入)
local ChildView = class("ChildView" , BaseView)
这时已经可以使用 静态属性age/静态方法createPopup/动态方法ctor
接下来我们需要得到name应该怎么做呢!?
需要调用父类的ctor函数
local childView = ChildView.new()
print(childView.age) --998
print(childView.name)--nil
childView.super.ctor(childView)
print(childView.name)--helloworld
childView.super.ctor(childView)调用过后就继承了name
与其说继承其实就是赋值
这条语句只要写对了 就没什么问题 多层继承也不怕!
浙公网安备 33010602011771号