|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+4 06.05.14]
|
Алгоритм построения фоток по 2 штуки
Все мы знакомы с фотогаллереями типа Книга ( 2х страничная галлерея ).
И так у нас есть xml через который мы грузим все фотки. В итоге есть массив битмап дат, и соотв им вектор конфигурации. Выглядит приблизительно так : Тоесть каждой битмапке соотв тип. Типов может быть два - 2х страничный и 1 страничный, предоставим их как '1' и '2' соотв. Но, тип 1 страничный может быть только у 1 позиции и последней ( обложки ) Использую цикл такого типа : var bwidth:int = _rwidth + _rwidth / 5; var bheight:int = _rheight + _rheight / 4; var alen:int = a.length; var cols:int = 3; for (var i:int = 0; i < alen; i++) { var row:int = Math.floor(i / cols); var xcoord:int = (i - row*cols) * bwidth; var ycoord:int = row * bheight; var con:ImageContainer = new ImageContainer(_rwidth, _rheight, bit , bit1, i.toString() ); con.x = xcoord; con.y = ycoord; } Если тип для первый картинки тип 1, создается контейнер с этой 1ой фоткой, точно так же и для последней, если же тип 2, создается контейнер сразу с 1й и 2й картинкой. В моем примере bit , bit1 это 2 возмлжные картинки. Проблема в следующем цикл пробегает по всем картинкам и создает соотв столько контейнеров сколько картинок. А мне же нужно, объединять картинки если тип 2, и контейнеров соотв будет в 2 раза меньше... Вообщем наверное туго пояснил, но надеюсь кто то сможет понять о чем идет разговор. Вот полный код ( корявый ) как я пытаюсь это решить, хотя до конца и не получилось... private function onLoad(e:CustomMultiLoaderEvents):void { var a:Array = e.content; var bwidth:int = _rwidth + _rwidth / 5; var bheight:int = _rheight + _rheight / 4; var alen:int = a.length; var cols:int = 3; var n:int = 1; var b:Boolean; for (var i:int = 0; i < alen; i++) { var row:int = Math.floor(i / cols); var xcoord:int = (i - row*cols) * bwidth; var ycoord:int = row * bheight; var bit:Bitmap = null; var bit1:Bitmap = null; if (!i || n == alen - 2) { bit = new Bitmap((a[i] as Bitmap).bitmapData); } else { bit = new Bitmap( (a[n] as Bitmap).bitmapData); bit1 = new Bitmap( (a[n + 1] as Bitmap).bitmapData); if (n != alen - 2 ) n = n + 2; else break; } var con:ImageContainer = new ImageContainer(_rwidth, _rheight, bit , bit1, i.toString() ,_content[i].type); con.addEventListener(MouseEvent.CLICK , onClick); _dynamicContent.addChild(con); con.x = xcoord; con.y = ycoord; }
__________________
Марк Tween |
|
|||||
ветеран форума
|
Как бы название темы не очень то соответствует проблеме.
Но всё же, я не понял в чем именно затык, зачем держать битмапдаты сразу всех фоток и тем более зачем сразу строить контейнеры для всех страниц? Разве что только для превьюшек. Может, действительно, повествование не очень и визуальный пример чего то похожего помог бы понять суть. Из всего вышеизложенного понял что проблема отделить первую и последнюю картинки и остальные объединить по две?
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Разве не проще обработать обложки отдельно, а циклом пройтись только по страницам, увеличивая итератор не на 1 а на 2, и начиная с индекса 1 а не 0, и заканчивая индексом длина - 2 (может -3)))? Особенно если есть гарантия, что страниц – четное кол-во.
Добавлено через 6 минут Если типов всего два, можно было обойтись булевым флагом, скажем isTitle или isCover = true//false Конструктор ImageContainer мог бы и сам принимать решение, когда одна из битмап == null Дополнительный каунтер n по-моему только запутывает код) Ну это так, общие замечания.
__________________
Reality.getBounds(this); |
|
|||||
ололо..
а вообще, я не понимаю зачем громадить непонятные массивы из которых потом не понятно как собрать массив определенных объектов содержащих битмапы...не проще ли сразу в парсере на горячую, когда все атрибуты под руками сразу нагородить массив того, что нужно?
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
Регистрация: Apr 2010
Сообщений: 219
|
Может сначала отсортировать массивы нужным образом, а потом хоть сразу контейнеры, хоть потом: если выстроено правильно на этот счет можно будет уже не парится.
|
Часовой пояс GMT +4, время: 12:07. |
|
« Предыдущая тема | Следующая тема » |
|
|