Flex - компонент повторителя с разметкой сетки - PullRequest
2 голосов
/ 04 августа 2009

У меня есть массив предметов произвольного размера. Я хотел бы отобразить одну метку для каждого элемента в компоненте Repeater. Я хочу, чтобы они отображались в виде сетки с 5 столбцами и таким количеством строк, сколько необходимо. Как мне это сделать во Flex / ActionScript?

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

Ответы [ 2 ]

3 голосов
/ 04 августа 2009

Я бы использовал список плиток вместо повторителя. Вот пример:

http://blog.flexexamples.com/2007/09/28/using-the-flex-tilelist-classs-new-datachangeeffect-style-in-flex-3/

0 голосов
/ 03 сентября 2009

в месяц слишком поздно, но я был в той же ситуации, когда мне требовались определенные функции, которые мне не мог предоставить список плиток. см. Мой вопрос здесь


Итак, моя сетка репитера имеет ширину 900 пикселей. Ширина каждого столбца составляет 300 пикселей, а высота каждой строки - 31 пиксель, а между ними - 1 пиксель. Всего 3 столбца.

код:

<mx:Repeater id="rptCities" dataProvider="{citiesArr}">
<mx:Canvas label="{rptCities.currentItem.city}" x="{rptCities.currentIndex%3 * 300}" y="{int(rptCities.currentIndex/3) * 32}" width="300" height="31">
<mx:Label text="{rptCities.currentItem.city}"/>
</mx:Canvas>
</mx:Repeater>

так как же вы читаете этот код:

часть мэра обрабатывается на холсте внутри повторителя. Как вы можете видеть, каждый холст имеет ширину 300px (ширина каждого столбца) и высоту 31px. Играя по модулю, вы можете определить x-позицию элемента.

скажем, в поставщике данных есть 6 элементов:

x = "{rptCities.currentIndex% 3 * 300}"

первый элемент: 0% 3 == x-position: 0 * 300

второй элемент: 1% 3 == x-position: 1 * 300

третий элемент: 2% 3 == позиция x: 2 * 300

четвертый пункт: 3% 3 == позиция x: 0 * 300

Это заботится о x-положении элементов. Y-позиция элементов, которые я определил 32 как постоянное значение, потому что я хочу промежуток 1px между ними. Преобразовав число в целое число, вы получите округленные значения (значения, выделенные курсивом, являются числовыми значениями, нормальный тип шрифта - это целое число, которое учитывает flex)

y = "{int (rptCities.currentIndex / 3) * 32}"

первый элемент: 0/3 == позиция y: 0 * 32

второй элемент: 1/3 == y-позиция: 0 * 32 (0.33)

третий элемент: 2/3 == позиция y: 0 * 32 (0,66)

четвертый элемент: 3/3 == y-позиция: 1 * 32

когда повторитель находится на четвертом объекте, x- и y-позиция = x: 0 и y: 32, который находится во втором «ряду»


Извините за довольно большой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...