lua中的繼承

作爲一個java出身的程序媛,長時間作Lua,重複一些工做後,特別想用繼承。其實很簡單。由於我有一大部分的場景,背景長的都同樣,因此打算作一個父類。java

須要注意的是,若是子類有和父類的同名函數,就會被覆蓋,除非手動的調用.super.方法。app

關鍵的代碼就兩個地方,都在子類中。函數

1 建立場景時:ui

local SceneBase = import("app.scenes.SceneBase")
local ActivityScene = class("ActivityScene", SceneBase)

2 子類的構造函數中,需調用父類spa

ActivityScene.super.ctor(self) -- 這是關鍵

超級簡單,爲何之前沒人用呢,用了多省事啊,便於維護,省了不少人力呢。下面是兩個文件的完整代碼。code

父類:blog

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 * 98
    self.menuBgWidth = display.width - ZySize.scalew * 85
    --背景
    cc.ui.UIImage.new(commImgPath.."beijing.jpg")
    :setLayoutSize(display.width + ZySize.scalew*20, display.height + ZySize.scale*20)
    :align(display.CENTER, display.cx, display.cy)
    :addTo(self)

    cc.ui.UIImage.new(commImgPath.."tongyongmianban3.png", {scale9 = true})
    :setLayoutSize(display.width - ZySize.scalew* 10, display.size.height - self.menuBgHeight - ZySize.scale * 10)
    :pos(ZySize.scalew * 5, self.menuBgHeight + ZySize.scale * 3)
    :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
相關文章
相關標籤/搜索