加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua/cocos2d-lua中定义类的四中方法

发布时间:2020-12-14 21:57:33 所属栏目:大数据 来源:网络整理
导读:=====Account Start==========local Account = { balance = 0,-- withdraw = function(self,v) -- self.balance = self.balance - v -- end,}function Account : withdraw(v) if v self.balance then --error "insufficient funds" end self.balance = self.
=====Account Start==========
local Account = {
    balance = 0,--  withdraw = function(self,v)
   --     self.balance = self.balance - v
  --  end,}


function Account : withdraw(v)
    if v > self.balance then 
        --error "insufficient funds"
    end
    self.balance = self.balance - v
end 

 
function Account : deposit(v)
    self.balance = self.balance + v
end

function Account : new(account)
    account = account or {}
    setmetatable(account,self)
    self.__index = self

    return account
end
--=====Account End==========

--=====SpecialAccount Start==========
local SpecialAccount = Account : new()
function SpecialAccount : withdraw(v)
    if v - self.balance >= self : getLimit() then
        error "insufficient funds"
    end
    self.balance = self.balance - v
end

function SpecialAccount : getLimit()
    return self.limit
end
--=====SpecialAccount End==========


--=====NewAccount Start==========
local NewAccount = {}
function NewAccount : new(initialBalance)
    local self = {balance = initialBalance}

    local withdraw = function(v)
        self.balance = self.balance - v
    end

    local deposit = function(v)
        self.balance = self.balance + v
    end

    local getBalance = function()
        return self.balance
    end

    return {
        withdraw = withdraw,deposit = deposit,getBalance = getBalance
    }
end
--=====NewAccount End==========

--=====Test Start==========
local Test = class("Test",Account)
function Test : ctor(name)
    print("get a name:",name)
end

function Test : print()
    print("I'm test class's print function",self.balance)
end
--=====Test End==========
local t = Test : new()
t : withdraw(100)
t : print()


local acc1 = NewAccount : new(100)
acc1.withdraw(40)
print("NewAccount余额",acc1.getBalance())


local s = SpecialAccount : new({limit = 1000})
s : withdraw(200)


local MainScene = class("MainScene",cc.load("mvc").ViewBase)

function MainScene:onCreate()
    -- add background image
    display.newSprite("MainSceneBg.jpg")
        :move(display.center)
        :addTo(self)

    -- add play button
    local playButton = cc.MenuItemImage:create("PlayButton.png","PlayButton.png")
        :onClicked(function(sender)
            --self:getApp():enterScene("PlayScene")
             --local layer = cc.TestLayer:create()
            -- layer:myPrint("哈哈")

            local a1 = Account : new({balance = 0})
         --   a1:deposit(100)
            --a1.deposit(a1,100)
           -- getmetatable(a1).__index.deposit(a1,100)
           -- Account.deposit(a1,100)
           --a1 : withdraw(100)
            print("余额:",a1.balance)

        end)


    cc.Menu:create(playButton)
        :move(display.cx,display.cy - 200)
        :addTo(self)
end

return MainScene

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读