通过setSiblingIndex 设置节点的渲染顺序之后, 但是节点对点击事件的捕获还是原先的顺序。如何同时更改节点的事件捕获优先级。
在cocosCreator编辑器中预览时,默认是问题描述的情况, 但是在左边的层级管理器中点击被更改的节点后,会同时同级对象的事件捕获顺序。 这个点击层级管理器 是调用/刷新了什么。
通过setSiblingIndex 设置节点的渲染顺序之后, 但是节点对点击事件的捕获还是原先的顺序。如何同时更改节点的事件捕获优先级。
在cocosCreator编辑器中预览时,默认是问题描述的情况, 但是在左边的层级管理器中点击被更改的节点后,会同时同级对象的事件捕获顺序。 这个点击层级管理器 是调用/刷新了什么。
改用UITransform组件的_priority属性吧
如果想要原生版本生效, 需要对engine\cocos\2d\framework\ui-transform.ts中做如下修改
private static _sortChildrenSibling (node) {
const siblings = node.children;
if (siblings) {
siblings.sort((a: Node, b: Node) => {
const aComp = a._uiProps.uiTransformComp;
const bComp = b._uiProps.uiTransformComp;
const ca = aComp ? aComp._priority : 0;
const cb = bComp ? bComp._priority : 0;
const diff = ca - cb;
if (diff === 0) return a.getSiblingIndex() - b.getSiblingIndex();
return diff;
});
+ // https://form.cocos.org/t/topic/138996
+ if((node as any)._setChildren)
+ {
+ (node as any)._setChildren(siblings);
+ }
}
}