我怎样才能重新整理我的容器的AS3的孩子(How can I re-order the childr

2019-09-26 02:57发布

我在管理孩子我的容器有点麻烦。 事实是,它有很多的孩子和他们的y坐标是很随意的。

反正是有,我可以命令他们通过y坐标,下会在正面和高于在后面?

是什么事情,我可以用2做“为”?

感谢您的帮助^^

Answer 1:

//the number of elements in our component
var count:int = numElements;
var elements:Array = [];

//load all the elements of the component into an Array
for (var i:int=0; i<count; i++) {
    elements[i] = getElementAt(i);
}

//sort the Array elements based on their 'y' property
elements.sortOn("y", Array.NUMERIC);

//re-add the element to the component 
//in the order of the sorted Array we just created.
//When we add the element using 'addElement' it will 
//be added at the top of the component's displaylist
//and will automatically be removed from its original position.
for (i=0; i<count; i++) {
    addElement(elements[i]);
}

这是Spark组件。 你可以使用MX组件完全相同的getChildAt()addChild()而不是getElementAt()addElement()



Answer 2:

这是假设你的容器被命名为container和存在于同一范围内码(未经测试):

//prepare an array
var sortArray:Array = [];
//put the children into an array
for(var i:int = 0; i < container.numChildren; i++) {
    sortArray[i] = container.getChildAt(i);
}
//get a sorting function ready
function depthSort(a:MovieClip,b:MovieClip):int
{
    return a.y - b.y;
}
//sort the array by y value low -> high
sortArray.sort(depthSort);
//loop through the array resetting indexes
for(i = 0; i <sortArray.length; i++) {
    container.setChildIndex(sortArray[i],i);
}


Answer 3:

这听起来像你想的堆叠顺序相对于排序y

您可以使用此方法:

addChildAt(child:DisplayObject, index:int)

其中零的索引表示显示列表和底部numChildren - 1代表顶部。

详细信息请参考AS3的语言参考: 的flash.display.DisplayObjectContainer



文章来源: How can I re-order the children of my container in AS3