3.5 layout位置计算BUG

Layout接收到第一次_doLayout的事件是UITransform发送的childrenSiblingOrderChanged事件,此时计算第一个Child位置的值是312


Layout接收到第二次_doLayout的事件是Director.EVENT_AFTER_UPDATE事件,此时计算第一个Child位置的值是311.99999999

发现是传入的baseWidth值变了

最终结果就是导致了本来一排放7个的layout变成了6个,剩下的1个放在了第二排,编辑器倒是没有出现这个情况

1赞

断点发现_resized的contentSize全都是带小数的?
image

造成width有小数点的原因竟是父节点使用的widget设置的0,0


然后一直溯源到了rootNode,widget设置如下

此时的width和height都有小数点了
image

widget和layout本来就是冲突的啊 你用widget方便的改完一次位置以后 要把它去掉

现在发现的问题是溯源到rootNode,该Node的width和height都出现了问题,不是整数了,导致了子节点的widget的宽度不对,最终导致了layout的数据错了

水平layout的子节点不要有widget 水平方向的对齐 垂直layout的子节点不要有widget垂直方向的对齐 你检查一下

我临时取消了左右的拉伸,但问题肯定不是widget和layout造成的,源头不在这