Показать сообщение отдельно
Старый 23.01.2012, 15:34
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию мат кол-во невидимых блоков

Собственно как то давно создавал похожую тему, просто щас конкретно допер где глюк.

Задача : есть допустим 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.
Вот думаю как лучше решить, наверное стоит сначала сортировать вектор по мин > макс высоте , а потом только прогонять в цикле. или есть лучше решение?
__________________
Марк Tween