-
Creator 版本: 2.0.4
-
目标平台: web/android/ios
-
重现方式:不断试
一开始我有一组节点,这组节点都来自同一个预制体,这组节点来自对象池。
他们的name分别为a、b、c、d、e、f、g、h、i、j,
他们被顺序添加到同一个父节点下,该父节点上有个Layout,水平排列,从左到右。添加方式是addChild(),并没有设置siblingIndex,也就是自动生成的。然后打印他们的name和siblingIndex和_localZOrder构成:name_siblingIndex__localZOrder,这组值为:
a_0_205843
b_1_205844
c_2_205845
d_3_205846
e_4_205847
f_5_205848
g_6_140313
h_7_140314
i_8_205851
j_9_205852
其中g节点和h节点的_localZOrder存在了问题。
正常情况下,g节点和h节点的_localZOrder应当为:205849、205850,这里为什么变成了更小的值,以至于在显示上,g节点和h节点被显示到了最左侧。
这个问题需要不断地回收节点,创建节点并排序,才会偶发。这些子节点的_localZOrder值也会随着每次新添加到父节点下后不断增大。
在以上问题的基础上,我对每个节点重新设置了siblingIndex
for (var i = 0; i < list.length; i++) {
const node = list[i].node;
node.setSiblingIndex(i);
}
还是按照上面一样的构成输出,结果还是:
a_0_205843
b_1_205844
c_2_205845
d_3_205846
e_4_205847
f_5_205848
g_6_140313
h_7_140314
i_8_205851
j_9_205852