Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

<Ч>

Итак, моя сетка репитера имеет ширину 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: 0 * 300

второй элемент: 1% 3 == позиция x: 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, который находится во второй «строке»

<Ч>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top