_trees = new Array();
for(var i:int = 0; i < 500; i++)
{
var tree:Shape = new Shape();
tree.z = Math.random() * 10000;
_trees.push(tree);
}
_trees.sortOn("z", Array.NUMERIC | Array.DESCENDING);
for(i = 0; i < 500; i++)
{
addChild(_trees[i] as Shape);
}
Array.sort(compareFunction , sortOptions)其参数定义如下:
-
compareFunction
- 一个用来确定数组元素排序顺序的比较函数。此参数是可选的。比较函数应该用两个参数进行比较。给定元素 A 和 B,compareFunction
的结果可具有以下三个值之一:- s-1,如果 A 应在排序后的序列中出现在 B 之前
- 0,如果 A 等于 B
- 1,如果 A 应在排序后的序列中出现在 B 之后
-
sortOptions
- 一个或多个数字或定义的常数,相互之间由|
(按位 OR)运算符隔开,它们将排序的行为从默认行为更改为其它行为。此参数是可选的。下面是sortOptions
可接受的值:
1 或 Array.CASEINSENSITIVE
2 或 Array.DESCENDING
4 或 Array.UNIQUESORT
8 或 Array.RETURNINDEXEDARRAY
16 或 Array.NUMERIC
private var _shapes:Array;
_shapes.sort(depthSort);
private function depthSort(objA:DisplayObject, objB:DisplayObject):int
{
var posA:Vector3D = objA.transform.matrix3D.position;
posA = _holder.transform.matrix3D.deltaTransformVector(posA);
var posB:Vector3D = objB.transform.matrix3D.position;
posB = _holder.transform.matrix3D.deltaTransformVector(posB);
return posB.z - posA.z;
}