Собственно как то давно создавал похожую тему, просто щас конкретно допер где глюк.
Задача : есть допустим 100 спрайтов, разной высоты, они помещаются в контейнер таким образом, что если общая высота спрайтов превышает контейнер, то спрайты переносятся на след страницу ( но не наглядно, а в памяти так сказать ).
Как считал кол-во страниц :

Код AS3:
private function getListCount():Number {
var h:int = 0;
var h1:int = _stage.stageHeight - _mainContainer.y;
for (var i:int = 0; i < _eVector.length; i++) {
if (i) h += _eVector[i].height + 15;
else h += _eVector[i].height;
}
var lists:Number = h / h1;
if (lists < 0) lists = 1;
else if ( int(lists) < lists ) lists = int(lists) + 1;
return lists;
}
Считало поидее верно, но есть нюанс о котором я не знал до этого :
Допустим на первой странице поместилось 3 спрайта, а 4 спрайт очень большой и занял всю вторую страницу, на 3й странице появился маленький спрайт, но фишка в том, что этот маленький спрайт совершенно легко мог быть помещен на 1 страницу в свободное место, поэтому такая система считает, что страниц всего 2, а не 3.
Вот думаю как лучше решить, наверное стоит сначала сортировать вектор по мин > макс высоте , а потом только прогонять в цикле. или есть лучше решение?