如题,ccui.scrollView如果在scrollview内部有一个cc.Node,在这个cc.node里又有一个ccui.Button,那么这个button在不可见的区域里也会接受事件(正常是不会的)。
也就是说scrollview里如果有ccui系统的需要交互的控件,其一直到这个scrollview为止的所有parent必须为ccui系统的,即都是继承自ccui.Widget的。
但是一般UI的做法是Scrollview放在一个csd里面,scrollview里面的格子则专门创建一个格子csd。但是默认读取csd的时候顶层是个Node,这样一来默认总是会有上面提到的BUG。
我现在的做法是在读取格子的时候自己手动把定层的Node替换成Widget。
不知道有没有更好的办法
–测试代码
local testNode=cc.CSLoader:createNode("TestScrollView.csb")
self:addChild(testNode)
local left_scrollview=testNode:getChildByName("ScrollView_left") --左边这个scrollview是cocos编辑器里已经编辑好的
local right_scrollview=testNode:getChildByName("ScrollView_right") --右边这个scrollview是代码处理的
for i=1,3 do
local cell=cc.CSLoader:createNode("TestScrollViewItem.csb")
right_scrollview:addChild(cell)
cell:setPosition(100,500-200*(i-1))
end
```
代码高亮好像有问题
我重新贴一遍代码
local testNode=cc.CSLoader:createNode("TestScrollView.csb")
self:addChild(testNode)
local left_scrollview=testNode:getChildByName("ScrollView_left") --左边这个scrollview是cocos编辑器里已经编辑好的
local right_scrollview=testNode:getChildByName("ScrollView_right") --右边这个scrollview是代码处理的
for i=1,3 do
local cell=cc.CSLoader:createNode("TestScrollViewItem.csb")
right_scrollview:addChild(cell)
cell:setPosition(100,500-200*(i-1))
end
