使用CreateJS进行Z-Index定位

时间:2013-08-28 16:41:27

标签: html5 canvas easeljs createjs

我正在尝试为我的行Graphic()设置z-index。我试图将线设置为始终落后于其他两个形状。 Two shapes and one line.

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

我正在尝试使用stage.setChildIndex(element,z-level)改变他们的z位置,是吗?

感谢。

2 个答案:

答案 0 :(得分:4)

1)索引越低,该项目的“后退”越多,因此:0 = bottom 另请注意,如果您尝试使用setChildIndexcontainer.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;
}

这样你就不必担心设置一个超出界限的zIndex。

答案 1 :(得分:4)

使用createjs,setChildIndex()的有效值范围为0到numChildren() - 1。电话如:

container.setChildIndex(container.numChildren());

会失败。

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