• 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
  • 相关阅读:
    存储过程的语法
    C#之理解接口的作用
    获取gridview模板列里面的控件的ID
    asp.net asp:Repeater嵌套绑定方法(2)
    asp.net asp:Repeater嵌套绑定方法(1)
    listview 绑定hashtable 以及值的显示
    mark
    程序员的路该怎么样继续走下去?
    多条件查询以及分页存储过程(倒叙和顺序查询)
    发生ActionScript 错误:[RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed
  • 原文地址:https://www.cnblogs.com/lan0725/p/4213862.html
Copyright © 2020-2023  润新知