在lua中要实现对类的定义一般都是通过metatable来做到的。。例如:
Fjs = {}
function Fjs:new(name)
local out = {}
setmetatable(out, self)
self.__index = self
out.name = name
return out
end
function Fjs:sayHello()
print("my name is " .. self.name)
print("hello")
end
local fjs = Fjs:new("fjs")
fjs:sayHello()
首先定义了一个table,然后在它上面定义相应的方法,在创建对象的时候,通过将对象的metatable指定为刚刚定义的table,这样也就实现了方法的绑定。。也就实现了类的定义和对象的创建。
上述实现中,自己需要定义一些约定的代码,在cocos2d-x中,为了实现的方便,扩展了一个class方法用于实现定义类型,对于上述类型的定义可以简化为如下:
Fjs = class("Fjs")
function Fjs:ctor(name)
self.name = nam