Html 使用CreateJS进行Z索引定位

Html 使用CreateJS进行Z索引定位,html,canvas,easeljs,createjs,Html,Canvas,Easeljs,Createjs,我正在尝试设置线条图形()的z索引。我试图将线条设置为始终位于其他两种形状的后面。 据我所知,添加的第一个元素是z=0,第二个元素是z=1,依此类推。是这样吗?z=0是顶部还是底部 我正在尝试使用stage.setChildIndex(元素,z-level)更改它们的z位置,对吗 谢谢。1)索引越低,“后面”的项目越多,因此:0=bottom 还请记住,如果您尝试以下操作,则setChildIndex将失败:container.setChildIndex(child,500)如果您只有4个子项

我正在尝试设置线条图形()的z索引。我试图将线条设置为始终位于其他两种形状的后面。

据我所知,添加的第一个元素是z=0,第二个元素是z=1,依此类推。是这样吗?z=0是顶部还是底部

我正在尝试使用stage.setChildIndex(元素,z-level)更改它们的z位置,对吗

谢谢。

1)索引越低,“后面”的项目越多,因此:
0=bottom
还请记住,如果您尝试以下操作,则
setChildIndex
将失败:
container.setChildIndex(child,500)
如果您只有4个子项,则要将子项设置为的索引不能超出范围。这意味着如果要对它们进行排序,应该从最低的索引(通常为0)开始

2)或者您也可以为对象指定一个属性,例如:
child.zIndex=500
并编写自己的排序方法,然后使用容器的
sortChildren
-方法,例如:

function sortByZ(a,b) {
    if (a.zIndex < b.zIndex) return -1;
    if (a.zIndex > b.zIndex) return 1;
    return 0;
}

myContainer.sortChildren(sortByZ);

// or a shorter version:
function sortByZ(a,b) {
    return a.zIndex - b.zIndex;
}
函数sortByZ(a,b){
如果(a.zIndexb.zIndex)返回1;
返回0;
}
霉菌携带者;sortChildren(sortByZ);
//或更简短的版本:
函数sortByZ(a,b){
返回a.zIndex-b.zIndex;
}

这样,您就不必担心设置超出范围的zIndex。

对于createjs,setChildIndex()的有效值在0到numChildren()的范围内。电话,例如:

container.setChildIndex(container.numChildren());
将失败


更重要的是,当您增加子索引时-例如,对于z索引为1的子级,当更改为2时,子级将放置在索引2处的对象前面。如果减少索引,将子对象向后移动,它将移动到目标位置的对象后面。当您不确定孩子的初始z索引是什么时,可能会增加混乱。

您可以发布一些代码吗?我不完全确定期望值是多少。如果我使用getNumChildren(),我可以检索到孩子的数量,对吗?谢谢olsn,我不仅在订单上弄错了,而且在索引上也弄错了。我在做setChildIndex(child,200),因为我认为它将存储在一个无界数组中。谢谢顺便问一下,索引是否从0到getNumChildren()?是的,这是正确的。所有这些方法基本上都是用于基本数组操作的包装函数,
getNumChildren()
setChildIndex()
,例如,
getNumChildren()
将只返回
this.children.length
-和
setChildIndex()
只需检查索引,并在
子数组上执行拼接操作-因此,如果您想了解一些内容,请到后台查看:-这是gskinner团队编写的一些非常好的代码:)