(一)class() 定義純 Lua 類
基類:
--定義一個名爲 Shape 的基礎類
local Shape = class("Shape") --這是一個純Lua類
--ctor()是類的構造函數,在調用Shape.new()創建Shape對象實例時自動調用
function Shape:ctor( shapeName )
self.shapeName = shapeName
printf("Shape:ctor(%s)", self.shapeName)
end
function Shape:initView()
printf("draw %s", self.shapeName)
end
return Shape
派生類:
local Circle = class("Circle",require("Shape"))
function Circle:ctor( ... )
-- 如果繼承類覆蓋了 ctor() 構造函數,那麼必須手動調用父類構造函數
-- 類名.super 可以訪問指定類的父類
--在用super獲取到基類對象的時候,函數傳遞要將自己傳入self
--因爲lua中所有的成員,函數都已經保存在派生類中了,基類調用不到
self.super.ctor(self)
--調用派生類中的函數
self:initView()
--調用基類中的函數
self.super:initView()
end
--覆蓋父類的同名方法
function Circle:initView()
end
return Circle
(二)class() 從 C++ 對象繼承類
--定義一個名爲 BaseView 的基礎類
--從 cc.Layer 對象派生 BaseView 類,該類具有所有 cc.Layer 的屬性和方法
local BaseView = class("BaseView",function()
return cc.Layer:create()
end)
function BaseView:ctor( ... )
end
function BaseView:initView()
end
return BaseView