zindex和layer和siblingindex的关系?

我是从unity转过来的所以习惯通过layerindex 和 siblingindex来控制渲染层级 到了cocoscreator
感觉zindex的加入有点打破我原有的习惯思维 网上的文章和官方文档的讲解也没有进行平行对比

我先根据经验瞎说一通。首先,zIndex是渲染层级,多个节点可以共用同一个zIndex,但是谁先谁后我不知道,估计看心情,是在渲染层面来决定先后;接着是siblingIndex,这个貌似是有互斥的关系,同一父节点下的节点不共用,遇到同样siblingIndex的节点冲突的时候会把其它的顶下去,也就是设置setSiblingIndex(999)这样的通常能够把节点放在层级最高层,但是其siblingIndfex并不会是999,而是根据节点顺序来排,这个是根据节点层级来决定的。
因为creator的场景是树状结构,所以siblingIndex比zIndex更常用,也更好控制。
目测siblingIndex最后到渲染的时候会转化成zIndex来决定渲染先后。
纯粹经验瞎总结,仅供参考

1赞

siblingindex 是 子节点在父节点的children这个数组的下标。
zIndex 是渲染层。
zIndex 和 节点在父节点的children数组的排序位置来共同作用该父节点下的chidren的渲染层次
(_localZOrder 前16位存放zIndex, 后16位存放根据下标index自增的arrivalOrder)。
更新zIndex 和 siblingindex,都会重新计算children 的 _localZOrder 并依照此值从小到大排序。
siblingindex > children.length - 1 || siblingindex < 0 则取children.length - 1 。即,将该节点丢到chidren末尾,然后重新触发_localZOrder 的计算与排序。
layer 控制子节点渲染在父节点上面。(即控制父子关系)

2赞