Extren.lua里的class方法是不是有问题

这个class方法是为了模拟面向对象功能,不过貌似有个地方有问题。


-- inherited from Lua Object        
if super then            
      cls = clone(super)            
      cls.super = super        
else            
       cls = {ctor = function() end}        
end

这里的clone方法用得有点问题。
简单的比方,父类有个属性name,子类继承过来,然后父类有个方法叫setName修改了name属性。
本来子类调用setName,子类的name属性也应当变化,不过由于是clone。所以子类调用了setName后,
变化的是父类的属性,而子类的没有变化。
这个应该算是一个bug吧,对象对象貌似不是这样的

修改了一下


-- inherited from Lua Object
        if super then
            setmetatable(cls,super)
            cls.super = super
        else
            cls = {ctor = function() end}
        end

cls也要改成声明的时候就初始化
继承的问题解决了,不知道有没有其他问题,大家看看吧

这个方法是从 quick-cocos2d-x 里提取出来的。但是版本太老了。

如果你用 cocos2dx-lua,还不如直接用 quick-cocos2d-x,有最完善的 lua 支持。

:14:嗯,谢谢版主了