码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-08-06 20:39:03      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

标签:

原文地址:http://my.oschina.net/jabbawockeez/blog/488791

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!