cocos2dx2.2.2 自带的extern.lua的一个bug

最近在做核心战斗,大量用到了类,不得不说cocos2dx 2.2.2 自带的类方法真是写的太不好了,有一个很初级的bug,另外缺少超类方法。

初级bug是原作者在new方法里,连:和.都没搞清楚。

重新写了一下该文件:

function super(TmpClass)

return TmpClass.super

end


--Create an class.

function class(classname,super)

local superType = type(super)

local cls


if superType ~= "function" and superType ~= "table" then

superType = nil

super = nil

end


if superType == "function" or (super and super.__ctype == 1) then

-- inherited from native C++ Object

cls = {}


if superType == "table" then

-- copy fields from super

for k,v in pairs(super) do cls[k] = v end

cls.__create = super.__create

cls.super = super

else

cls.__create = super

end


cls.ctor = function() end

cls.__cname = classname

cls.__ctype = 1


function cls.new(...)

local instance = cls.__create(...)

-- copy fields from class to native object

for k,v in pairs(cls) do instance[k] = v end

instance.class = cls

instance.ctor(...)

return instance

end


else

-- inherited from Lua Object

if super then

cls = clone(super)

cls.super = super

else

cls = {ctor = function() end}

end


cls.__cname = classname

cls.__ctype = 2 -- lua

cls.__index = cls


function cls.new(...)

local instance = setmetatable({},cls)

instance.class = cls

instance.ctor(...)

return instance

end

end


return cls

end

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...