|
|
|||||
Регистрация: Jul 2014
Сообщений: 36
|
как сделать список плиткой?
Подскажите пожалуйста, профессионалы, как сделать список изображений плиткой, но не по ровной сетке как в таблице? Как сделать расположение объектов в зависимости от ширины каждого изображения (высоту можно выставить одинаковую)? Нужно получить что то типа фотоальбома... Заранее спасибо.
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
//items - массив итемов var curX:Number=0;//начальная позиция var curY:Number=0; var maxX:Number=0;//ширина контейнера итемов for(var i:uint=0;i<items.length;i++) { curX+=(i>0)?items[i].width:0; if(curX+items[i].width>maxX) { curX=0; curY+=items[i].height; } items[i].x=curX; items[i].y=curY; } |
|
|||||
Регистрация: Jul 2014
Сообщений: 36
|
Не совсем то. Нужен динамический список, содержимое которого перестраивается при масштабировании списка. Нужно что то наподобие, как если бы использовать mx:Box для размещения там изображений. Проблема в том, что в mx:Box элементы распределяются по горизонтали/вертикали без перераспределения на следующую строку/столбец.
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
ну так и обновляй координаты при изменении размеров контейнера.
|
|
|||||
Регистрация: Jul 2014
Сообщений: 36
|
так если довести до абсурда количество элементов в контейнере, то насколько все это оптимально в плане быстродействия?
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
обновлять надо только те,что видны в данный момент.В первом приближении можно считать что все итемы расположены строго плиткой и дальше прикинуть сколько их влезит во вьюпорт контейнера
Добавлено через 3 минуты либо лучше так: начинаешь обновлять координаты и проверяешь не вылез ли текущий итем за пределы вьюпорта, как вылез - останавливаемся. Добавлено через 11 минут как-то так: //items - массив итемов var curX:Number=0;//начальная позиция var curY:Number=0; var maxX:Number=0;//ширина контейнера итемов var maxY:Number=0;//высота контейнера итемов var i:uint=0; while (curY+items[i].height<maxY && i<items.length) { curX+=(i>0)?items[i].width:0; if(curX+items[i].width>maxX) { curX=0; curY+=items[i].height; } items[i].x=curX; items[i].y=curY; i++; } Последний раз редактировалось undefined; 24.04.2017 в 17:00. |
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
да не, мой велосипед вполне справится с абсурдно большим списком ибо не зависит от его размера.Только если размер контейнера до абсурда доводить никто не будет.
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
С чем конкретно не справится? С отрисовкой небольшого кол-ва видимых итемов?
|
Часовой пояс GMT +4, время: 12:26. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|