• lua中的继承


    做为一个java出身的程序媛,长时间做Lua,重复一些工作后,特别想用继承。其实很简单。因为我有一大部分的场景,背景长的都一样,所以打算做一个父类。

    需要注意的是,如果子类有和父类的同名函数,就会被覆盖,除非手动的调用.super.方法。

    关键的代码就两个地方,都在子类中。

    1 创建场景时:

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

    2 子类的构造函数中,需调用父类

    ActivityScene.super.ctor(self) -- 这是关键

    超级简单,为什么以前没人用呢,用了多省事啊,便于维护,省了很多人力呢。下面是两个文件的完整代码。

    父类:

    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
  • 相关阅读:
    DataSnap(MIDAS)三层架构中,常用事件及其触发顺序
    如何让中间层MIDAS/DATASNAP支持大量的并发用户并且控制连接数量
    插件之注册插件和注册插件中的模块
    TField.ProviderFlags
    datasnap生命期LifeCycle
    datasnap服务器支持的参数类型
    TDSAuthenticationManager的用法
    泛型实现的对象池
    服务器端如何防止DDOS
    获得客户端的信息
  • 原文地址:https://www.cnblogs.com/lan0725/p/4213862.html
Copyright © 2020-2023  润新知