- ButtonBar
- LinkBar
- ToggleButtonBar
- TabBar
の四つです。
これらのコンポーネントの継承元を辿ると「mx.controls.NavBar」クラスに行き着きます(*1)。しかし,この NavBar クラス自体はインスタンス化できません。NavBar というのは名前からも想像できるように,ナビゲーション関連の用途での使用を想定されたコンポーネントの基本クラスです。
この NavBar を簡単に説明してしまうと,ボタンを縦・横に並べるクラスです。ただ並べるだけなら,別にこのクラスを使用しなくても Button コンポーネントを並べればそれで事足ります。では,この NavBar を使用するメリットは何かと言いますと,配列データを元に自動的にボタンを縦・横に並べてくれるところです。
では,具体的な例として「ButtonBar」コンポーネントのサンプルを見ていただきましょう(*2)。
図1:「ButtonBar」コンポーネントのサンプル(クリックすると別ウィンドウで表示します。ソースコードをこちらからダウンロードできます)
上から順に
1-1.配列(Array)を使用
1-2.データをサーバーから受信
1-3.縦に並べる
1-4.間隔を指定する
1-5.幅/高さを指定する
1-6.ボタンの幅/高さを指定する
1-7.ボタンの配置を指定する
1-8.ボタンにアイコンを指定する
1-9.ボタンのスタイルを指定する
1-10.ViewStack を連動させる
1-11.クリックイベント
となります。
1-1.ですが,まずソースを見てみましょう。
図2:「1-1」のソース
「dataProvider」属性にArray型の「data1」をバインドしています。「initialize」イベントで「init_data1」関数をコールし「data1」のデータを初期化していますが,各配列要素のデータには「Object」クラスをセットしています。そして,そのインスタンスの「label」属性がボタンのラベルになっているのがわかると思います。これはデフォルトの動作で,ButtonBarの「labelField」属性で変更することが可能です。
1-2.では,サーバーからXMLファイルをロードし,そのデータを元に「dataProvider」属性にArray型のデータをセットしています(図3)。
図3:「1-2」のソース
「1-1」と同様に「initialize」イベントを使用していますが,このサンプルではHTTPServiceの「send」メソッドを実行し,サーバーからXMLデータをロードしています。そしてHTTPServiceの「result」イベントで「dataProvider」属性にセットするデータを初期化しています。
ただし,「resultHandler_data2」関数のロジックはあくまで今回使用したXMLの中身に対応させたロジックです。HTTPServiceの「resultFormat」が「object」以外だったり,XMLの中身が違えば配列データを抽出するロジックも違います。