quick中继承重写问题,具体如下
local RuleLayer = class(“RuleLayer”, function ()
return display.newLayer()
end)
RuleLayer.isLog = 1
function RuleLayer:ctor()
ui.newTTFLabel({text = “RuleLayer”, size = 32, align = ui.TEXT_ALIGN_CENTER})
:pos(200, 100)
:addTo(self)
end
function RuleLayer:onEnter()
end
function RuleLayer:onExit()
end
function RuleLayer:updateUi()
print(“RuleLayer:updateUi”)
end
return RuleLayer
//以上是app.views.RuleLayer.lua文件






local RuleLayer = require(“app.views.RuleLayer”)
print(type(RuleLayer))
local PlayerLayer = class(“PlayerLayer”, RuleLayer)
PlayerLayer.isLog = 1
function PlayerLayer:ctor()
self.super:ctor()
ui.newTTFLabel({text = “PlayerLayer”, size = 64, align = ui.TEXT_ALIGN_CENTER})
:pos(100, 100)
:addTo(self)
end
function PlayerLayer:onEnter()
self.super:onEnter()
end
function PlayerLayer:onExit()
self.super:onExit()
end
function PlayerLayer:updateUi()
self.super:updateUi()
print(“PlayerLayer:updateUi”)
end
return PlayerLayer
这个是一个PlayerLayer.lua文件
//在scene里面添加这两个Layer
local RuleLayer = require(“app.views.RuleLayer”)
local rleLayer = RuleLayer.new()
self:addChild(rleLayer)
rleLayer:updateUi()
local PlayerLayer = require("app.views.PlayerLayer")
local playerLayer = PlayerLayer.new()
self:addChild(playerLayer)
if iskindof(playerLayer, "RuleLayer") then
lualogByIsLog(self.isLog, "iskindof(PlayerLayer, 'RuleLayer')")
end
playerLayer:updateUi()
再添加PlayerLayer的时候产生错误如下
Cocos2d: LUA ERROR: :0: attempt to call method ‘addChild’ (a nil value)
Cocos2d:
stack traceback:
: in function ‘addTo’
in function ‘ctor’
in function ‘ctor’
: in function ‘new’
:90: in function ‘onEnter’
: in main chunk
如果把
function RuleLayer:ctor()
ui.newTTFLabel({text = “RuleLayer”, size = 32, align = ui.TEXT_ALIGN_CENTER})
:pos(200, 100)
:addTo(self)
end
这里的
ui.newTTFLabel({text = “RuleLayer”, size = 32, align = ui.TEXT_ALIGN_CENTER})
:pos(200, 100)
:addTo(self)
去掉的话 就不会有错!!!怎么回事?lua中的继承搞得好乱啊,不太明白了,很疑惑!