加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 16:22:32 所属栏目:百科 来源:网络整理
导读:最近在做核心战斗,大量用到了类,不得不说cocos2dx 2.2.2 自带的类方法真是写的太不好了,有一个很初级的bug,另外缺少超类方法。 初级bug是原作者在new方法里,连:和.都没搞清楚。 重新写了一下该文件: function super(TmpClass) return TmpClass.super

最近在做核心战斗,大量用到了类,不得不说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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读