上周开始做项目的奇遇模块

奇遇分为很多种,显示在同一个列表中,有很多共同之处

所以考虑使用继承去实现如 弹框,倒计时,取消奇遇等事务逻辑

 

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

与其说继承其实就是赋值

这条语句只要写对了 就没什么问题 多层继承也不怕!