根据属性值对Array进行排序

_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;
}

 

 

你可能感兴趣的:(array,sort)