質問

ランダムなサイズのアイテムの配列があります。 Repeaterコンポーネントのアイテムごとに1つのラベルを表示したいと思います。 5列、必要な数の行を含むグリッドレイアウトで表示したい。 Flex / ActionScriptでどのように行うのですか?

たぶん、まだ見たことのない別の方法があるので、どんな提案でも歓迎します。ありがとう!

役に立ちましたか?

解決

リピーターの代わりにタイルリストを使用します。次に例を示します。

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

他のヒント

1か月遅すぎましたが、タイルリストでは得られない特定の機能が必要だったのと同じ状況でした。 私の質問はこちら


したがって、リピーターグリッドの幅は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>

では、このコードをどのように読みますか:

市長部はリピーター内のキャンバスで処理されます。ご覧のとおり、各キャンバスの幅は300ピクセル(各列の幅)、高さは31ピクセルです。モジュロで遊ぶことにより、要素のx位置を定義できます。

データプロバイダーに6つのアイテムがあるとしましょう:

x =&quot; {rptCities.currentIndex%3 * 300}&quot;

最初のアイテム:0%3 == x-position:0 * 300

2番目のアイテム:1%3 == x-position:1 * 300

3番目のアイテム:2%3 == x-position:2 * 300

4番目のアイテム:3%3 == x-position:0 * 300

要素のx位置を処理します。要素のy位置は32を定数値として定義しました。これは、間に1ピクセルのスペースが必要だからです。数値を整数に変換すると、丸められた値が得られます(斜体の値は数値です。通常のフォントタイプはflexが考慮する整数です)

y =&quot; {int(rptCities.currentIndex / 3)* 32}&quot;

最初のアイテム:0/3 == y-position:0 * 32

2番目の項目:1/3 == y位置:0 * 32(0.33)

3番目の項目:2/3 == y位置:0 * 32(0.66)

4番目の項目:3/3 == y位置:1 * 32

リピーターが4番目のアイテムにあるとき、x-およびy-position = x:0およびy:32は2番目の「行」にあります


かなり大きな答えは申し訳ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top