今回は前回にご紹介したサンプル・サイトで新たに登場した「ToggleButtonBar」コンポーネントにまつわるいくつかのコンポーネントを紹介します。

  • 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の中身が違えば配列データを抽出するロジックも違います。