Когда я создавал подобные игры, я не использовал сортировку дисплей листа ибо это влияет на производительность, но взамен этого я каждый раз генерировал дисплей лист. Мой метод заключался в следующем.
Создается двумерный массив, в первом массиве хранится индекс массива который определяется по сортируемой величине, второй массив хранит объекты имеющие данную величину. Код примерно следующий

Код AS3:
var container:Sprite = new Sprite(); //допустим это какой-то контейнер в котором нужно сортировать всех детей по Y.
var sortChildList:Array = new Array(); //наш двумерный массив со списком отображения
//перебираем всех детей и записываем их в массив
var i:int = container.numChildren;
while(i--)
{
var j:Sprite = container.getChildAt(i);
if (sortChildList[Math.floor(j.y)] == undefined)
{
var na:Array = new Array(j);
sortChildList[Math.floor(j.y)] = na;
}
else
{
sortChildList[Math.floor(j.y)].push(j);
}
}
container.removeChildren(); //удаляем всех детей из списка отображения
//добавляем всех детей заново
for (i = 0; i < sortChildList.length; i++)
{
if (sortChilList[i] == undefined) continue;
for (var j:int = 0; j < sortChilList[i].length; j++)
{
container.addChild(sortChilList[i][j]);
}
}
Опытных гуру прошу оценить и прокомментировать мой способ, есть ли у него преимущества перед сортировочным?