quick 3.3 display.newColorLayer setContentSize

使用 display.newColorLayer 时,发现设置了setContentSize() 改变不了ColorLayer 的大小。

源码在处理的时候有这么一句话,node.setContentSize = layer.setContentSize 。

然后写了俩测试node ,来试验一下,这个具体的作用。

--node

local testnode = class("testnode", function ()
    return display.newNode()
end)


function testnode:ctor()
    self.index = 0
end


function testnode:test()
    print("testnode")
    self:to()
end


function testnode:to()
    print("node to")
    print(self.index)
end


return testnode


--layer

local testlayer = class("testlayer", function ()
    return cc.LayerColor:create(cc.c4b(120,0,120,255))
end)


function testlayer:ctor()
    self.index = 1
end


function testlayer:test()
    print("testlayer")
    self:to()
end


function testlayer:to()
    print("layer to")
    print(self.index)
end


return testlayer


--测试

local node = testnode.new()
local layer = testlayer.new()
layer:addTo(node)
node:addTo(self)

node:test()
layer:test()

node.test = layer.test
node:test()


测试的结果,是执行 node.test = layer.test这句话后,

node:test()的输出结果是,

testlayer

node to

0

程序先执行了,layer的test,但是self指向的确是node自己,所以在layer的test函数中,调用的self:to 是调用的node 的to函数,打印的也是node.index。


所以最开始设置node的setContentSize实际最后改变的是node 自己的width,height 的值。ColorLayer的值是没有改变的。

翻看quick 3.5的源码,修复了这个bug,如下:

node.setContentSize = function(_, ...)
layer:setContentSize(...)
        end

node.getContentSize = function()
return layer:getContentSize()
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值