в месяц слишком поздно, но я был в той же ситуации, когда мне требовались определенные функции, которые мне не мог предоставить список плиток.
см. Мой вопрос здесь
Итак, моя сетка репитера имеет ширину 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, который находится во втором «ряду»
Извините за довольно большой ответ.