клёва
silin! чуть позже буду дома и гляну обязательно, + попробую написать простенький пример чего хочется добиться, наглядный пример лучший пример!
кстати мне до недавнего времени нравился мой метод сортировки, у которого взят за основу твой (правда старый):

Код AS3:
var array:Array = new Array();
var numChildren:int = this.numChildren;
for (var childIndex:int = 0; childIndex < numChildren; childIndex++) {
var sprite:DisplayObject = this.getChildAt(childIndex);
try {
var vector3D:Vector3D = sprite.transform.getRelativeMatrix3D(root).position;
vector3D.x -= stage.stageWidth / 2;
vector3D.y -= stage.stageHeight / 2;
vector3D.z += Math.round(root.transform.perspectiveProjection.focalLength * 1);
array.push({length:vector3D.length, sprite:sprite});
} catch (error:Error) {
array.push({length:0, sprite:sprite});
}
}
array.sortOn('length', Array.DESCENDING);
for (var i:Object in array)
this.addChild(array[i].sprite);
получаю таким образом расстояние, вбиваю в массив, сортирую и добавляю на сцену. сортировать по Z координате вообще тупо так как у кубика бывает 4 граени равноудалены от плоскости - root но двигая кубик по x координате грани так и не сортируются.
Если бы была возможность получить правильный вектор от точки обзора до объекта и правильный вектор нормали, то можно было бы найти правильный угол между этими векторами и определить лицевую и заднюю сторону спрайта. если на задний вид поставить visible=false а на передний visible=true не пришлось бы трогать addChild вообще, и кубик бы рисовался чётко и быстро )