Да, на ум ток координата
x приходит, как наиболее адекватное уникальное значение. Кому интересно, вот итоговый класс для сортировки:

Код AS3:
package mvc.view.map
{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
/**
* Сортировщик дисплей объектов по оси y.
* Чем выше координата y тем ниже в списке отображения объект.
*
* @author Tails
*/
public class Sorter{
// Приват
private var _contaner:DisplayObjectContainer;
public function Sorter() {
}
// ГЕТТЕР-СЕТТЕРЫ
/** Контейнер сортируемых объектов. **/
public function get sorterContaner():DisplayObjectContainer {
return _contaner;
}
public function set sorterContaner(value:DisplayObjectContainer):void {
_contaner = value;
}
// ПАБЛИК
/** Сортировать объекты. **/
public function sort():void {
if (!_contaner)
throw new Error(this + ' Сортировочный контейнер не выбран.');
var length:uint = _contaner.numChildren;
if(length > 1)
qSort(_contaner, 0, length - 1);
}
/**
* Алгоритм быстрой сортировкки.
* http://ru.wikipedia.org/wiki/%D0%91%...B2%D0%BA%D0%B0
*/
private function qSort(a:DisplayObjectContainer, low:int, high:int):void {
var i:int = low;
var j:int = high;
var child:DisplayObject = a.getChildAt(int((low + high) / 2));
var x:Number = child.y + child.x * 0.00001; // x - опорный элемент посредине между low и high
do {
while(a.getChildAt(i).y + a.getChildAt(i).x * 0.00001 < x) ++i; // поиск элемента для переноса в старшую часть
while(a.getChildAt(j).y + a.getChildAt(j).x * 0.00001 > x) --j; // поиск элемента для переноса в младшую часть
if(i <= j){
// обмен элементов местами:
a.swapChildrenAt(i, j);
// переход к следующим элементам:
i++; j--;
}
} while(i < j);
if(low < j) qSort(a, low, j);
if(i < high) qSort(a, i, high);
}
}
}