zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【JS】415- JS面向对象之 7 大基本原则
    【每周小回顾】14- 一起回顾上周精彩内容
    【全栈修炼】414- CORS和CSRF修炼宝典
    【全栈修炼】CORS和CSRF修炼宝典
    【JS】413- JavaScript中的位运算和权限设计
    【面试题】412- 35 道必须清楚的 React 面试题
    【CSS】410- 关于CSS盒子模型、BFC及其应用
    15.app后端怎么设计用户登录方案
    14.app后端如何设计api
    13.app后端为什么要用到消息队列
  • 原文地址:https://www.cnblogs.com/lan0725/p/4213862.html
Copyright © 2011-2022 走看看