cocos2d-x使用lua,如何继承一个C++类并重写它的函数

我想定义一个lua表,继承C++类 cc.Node,并重写getContentSize()函数,返回一个新的contentsize。

-- 这里,如何继承cc.Node
local Ball = class('Ball')

function Ball:ctor()
end

function Ball:getContentSize()
     local width -- 这里,如何调用super的getContentSize
     local height
     return cc.size(width + 10, height + 10)
end

return Ball
点赞
用户3683659
用户3683659

Lua表是一种有趣的类型,你可以这样做。

local Ball = class('Ball', function() return cc.Node:create() end)

但继承C++类不支持“super”操作。 你可以像这样调用父类函数。

local _getContentSize = cc.Node.getContentSize

function Ball:getContentSize()
    local width = _getContentSize(self).width
    local height = _getContentSize(self).height
    return cc.size(width + 10, height + 10)
end

你甚至可以在不继承的情况下扩展cc.Node。

local Ball = cc.Node
function Ball:newfunc()
end

你可以在lua中的所有cc.Node对象中调用newfunc

2017-03-23 04:26:03