lua(仿类)】的更多相关文章

Account = { balance = } function Account:deposit(v) self.balance = self.balance + v end function Account:new(o) o = o or {} setmetatable(o, self)--Account表本身作为o的metatable self.__index = self--自己作为自己的原型?? return o end a = Account:new{balance = } --调用a…
在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.Lua没有类的概念,但我们可以模拟类. 我们首先看看元表和元方法.这两个东西和我们模拟类有关. Lua 本身是函数式的语言,但借助 metatable (元表)这个强大的工具,Lua 实现操作符重载易如反掌.就像两个表相加,只要我们在元表中写上__add方法就可以实现了. meta={ __add=f…
(本文转载)学习之用,侵权立删! 原文地址   http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&utm_medium=referral lua面向对象实现: 一个类就像是一个创建对象的模具.有些面向对象语言提供了类的概念,在这些语言中每个对象都是某个特定类的实例.lua则没有类的概念,每个对象只能自定义行为和形态.不过,要在lua中模拟类也并不困难. lua中,面向对象是用元表这个机制来实现.…
之前写了个C++版本的,现在改成lua的, 两者原理是一样,但是动作的执行方式有些微区别 (因为lua无法继承CCActionInterval类,单纯使用lua的话无法调用action的update方法) 下载地址:https://github.com/chenquanjun/Quick-x-CCLabelChange c++版本的也放到这个号了 --演示 --使用方法 do ) label:setPosition(display.cx - , display.cy) self:addChild…
数学类主要有Vec2(坐标向量).Size(尺寸).Rect(矩形). 创建 在Lua中创建的 Vec2.Size.Rect 都是一个table类型. 其中只有相应的成员变量,没有相关的函数运算. cc.p(x, y) -- 构造 Vec2 cc.size(width, height) -- 构造 Size cc.rect(x, y, width, height) -- 构造 Rect 坐标向量运算 Lua中常用的向量运算如下: 返回值为bool -- 直线AB与直线CD是否相交 cc.pIsL…
在网上看到这样一段代码,真是误人子弟呀,具体就是: lua类的定义 代码如下: local clsNames = {} local __setmetatable = setmetatable local __getmetatable = getmetatable function Class(className, baseCls) if className == nil then BXLog.e("className can't be nil") return nil end if c…
利用lua 中的table 特性 Base = {x = 0,y = 0} Base.name = "luohai"Base.age = 12Base.sex = "man" Base.new = function(self) local ower = {} setmetatable(ower,self) self.__index = self return owerend Base.setXY = function(self,x,y) self.x = x; se…
利用3.0里面封装好的模板类来写,不罗嗦,直接上例子(消除星星小游戏中 星星类) require "extern" StarSprite = class("StarSprite",function(fileName) return cc.Sprite:create(fileName) end) StarSprite.__index = StarSprite StarSprite.type = 0 --around colorStarSprite.UP = "…
记得把extern.lua拷贝到你的资源目录,这里要用到 require "extern" MyLayer = class("MyLayer", function(fileName) return CCSprite:create(fileName) end ) function MyLayer.CreateWithFile(fileName) local o = MyLayer.new(fileName) o.m_nA = return o end function…
由于工作原因,两周前开始研究Lua,因为之前的项目要由php改成Lua实现,而一些php里现成的东西,在Lua里就需要手写,于是就有了下面的代码.写的比较粗糙,权当做个记录吧. --[[ 获取时间戳 --]] function strtotimestamp(timeToConvert) local ymdhis = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)" local runyear,runmonth,runday = getymd(timeToCon…