SpinnerListコンポーネント
SpinnerListは、上下にドラッグすることによって、回転ドラムのように動作するリストのコンポーネントです。一般的には、NumericStepperコンポーネントのように、数字選択の用途で使用します。
ListBaseを継承しているので、Listコンポーネントと同様にdataProviderプロパティにデータをセットしてリストを構築します。SpinnerListコンポーネントは常に単一の選択状態をサポートし、選択した項目はコンポーネントの中心に位置するという特徴を兼ね備えています。
SpinnerListコンポーネントを使用するときには、基本的にSpinnerListContainerと併せて使います。次のコードは、SpinnerListコンポーネントを使ったシンプルなサンプルです(サンプル:SpinnerListSample.fxp)。
<?xml version="1.0" encoding="utf-8"?>
<!---
SpinnerList Sample 01
-->
<s:View
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
title = "SpinnerList Sample"
>
<s:SpinnerListContainer
width = "100"
verticalCenter = "0"
horizontalCenter = "0"
>
<s:SpinnerList width="100%" textAlign="center">
<s:dataProvider>
<s:ArrayList>
<fx:int>1</fx:int>
<fx:int>2</fx:int>
<fx:int>3</fx:int>
<fx:int>4</fx:int>
<fx:int>5</fx:int>
<fx:int>6</fx:int>
<fx:int>7</fx:int>
<fx:int>8</fx:int>
<fx:int>9</fx:int>
</s:ArrayList>
</s:dataProvider>
</s:SpinnerList>
</s:SpinnerListContainer>
</s:View>
SpinnerContainerは、複数のSpinnerListを内包することができ、水平方向にレイアウトする機能を持っているので、次のようなUIを構築することも可能です。
<?xml version="1.0" encoding="utf-8"?>
<!---
SpinnerList Sample 02
-->
<s:View
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
title = "SpinnerList Sample"
>
<s:SpinnerListContainer
width = "200"
verticalCenter = "0"
horizontalCenter = "0"
>
<s:SpinnerList width="100%" textAlign="center">
<s:dataProvider>…</s:dataProvider>
</s:SpinnerList>
<s:SpinnerList width="100%" textAlign="center">
<s:dataProvider>…</s:dataProvider>
</s:SpinnerList>
</s:SpinnerListContainer>
</s:View>
SpinnerListのアイテムレンダラーをIconItemRendererに変更することで、画像を表示することも可能です。
<?xml version="1.0" encoding="utf-8"?>
<!---
SpinnerList Sample 03
-->
<s:View
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
title = "SpinnerList Sample 03"
>
<fx:Declarations>
<s:ArrayList id="listData">
<fx:Object data="@Embed(source='assets/images/taigaBlack.png')" label="" />
<fx:Object data="@Embed(source='assets/images/taigaBlue.png')" label="" />
<fx:Object data="@Embed(source='assets/images/taigaGreen.png')" label="" />
<fx:Object data="@Embed(source='assets/images/taigaOrange.png')" label="" />
<fx:Object data="@Embed(source='assets/images/taigaPink.png')" label="" />
<fx:Object data="@Embed(source='assets/images/taigaRed.png')" label="" />
<fx:Object data="@Embed(source='assets/images/taigaYellow.png')" label="" />
</s:ArrayList>
</fx:Declarations>
<s:SpinnerListContainer
width = "400"
height = "300"
verticalCenter = "0"
horizontalCenter = "0"
>
<s:SpinnerList width="100%" textAlign="center" dataProvider="{listData}">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer iconField="data" />
</fx:Component>
</s:itemRenderer>
</s:SpinnerList>
<s:SpinnerList width="100%" textAlign="center" dataProvider="{listData}">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer iconField="data" />
</fx:Component>
</s:itemRenderer>
</s:SpinnerList>
</s:SpinnerListContainer>
</s:View>

