当class继承自c++ 类时 (如 class(classname, super)中 super 参数是function 或者super的__ctype == 1)
1.自动创建cls ={} 空表并增加以下成员
cls.__create = super --New 时候要初始化的C++对象
cls.ctor = function () end – 默认的空构造
cls.__cname = classname --类名字
cls.__ctype = 1 --类型
–然后New的时候做了这些操作,不管什么类,原型都是一个管理表
function cls.new(…) --每个new出来的c++对象
local instance = cls.__create(…)
– copy fields from class to native object
for k,v in pairs(cls) do instance = v end --把参数传进function 从表中克隆成员
instance.class = cls
instance:ctor(…) --创建完之后执行构造
return instance
end
-----------------------------完成后 类似以下的原型表 ---------------------------------------
–cls = {___cname = “GameObject”,__ctype = 1,ctor =function () end,__create = function return node end,new = function ()return node end}
–类似 local GameObject = class(“GameObject”, function() return display.newNode() end) 的操作
–创建基础表之后我们又在其上(GameObject)绑定了一些成员方法,这些都是加入原型表的 New出来的时候 是执行表中的__create之后,再复制表成员