SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Flex 3で動的に項目を編集できるメニューバーを作成する

ButtonBarの利用とXMLファイルの読み込み

  • X ポスト
  • このエントリーをはてなブックマークに追加

解説

 「menuBar.mxml」のソースについて解説します。

 基本的な構成はPanelコンポーネントの内部にButtonBarコンポーネントを配置し、XMLファイルに書かれたリンク情報に基づいてButtonBarの中に表示していくものです。

 詳しく見てみましょう。まずPanelタグです。

<mx:Panel id="panel1" title="MENU" width="130" height="300"
 paddingTop="10" paddingLeft="10" paddingRight="10"
 paddingBottom="10" backgroundColor="0x8b4513" color="0xdda0dd">
  <mx:ButtonBar id="buttonBar" color="0x000000"
   itemClick="bClickHandler(event);"
   direction="vertical"
   buttonMode="true"
   useHandCursor="true"/>
</mx:Panel>

 titleプロパティで"MENU"という文字を指定します。これにより、Panelのヘッダー部分にMENUという文字が現れます。

 paddingToppaddingLeftpaddingRightpaddingBottomプロパティではそれぞれ、上部、左側、右側、下部から内部コンテンツへの距離をピクセル数で指定します。

 ButtonBarタグではitemClick="bClickHandler(event);"と指定することでButtonBar内のボタンを押した際の挙動を指定できます。

 directionプロパティはボタンの並びの方向を指定します。今回は"vertical"なので縦方向です。useHandCursor="true"と指定すると、コンポーネント上にカーソルが乗った際にカーソルが手の形になります。

 次にScriptタグ内のActionScriptを見てみましょう。

 関数init()は、「menuBar.mxml」の上から3行目にcreationComplete="init();"とあるように、起動と同時に呼び出されます。

private function init():void {

  array = new Array();
  var loader:URLLoader = new URLLoader();
  try {
    var url:String
    ="menu.xml?"+new Date().getTime().toString();
  loader.load(new URLRequest(url));
  } catch (error:Error) {
  }
  loader.addEventListener(Event.COMPLETE,
    function(event:Event):void {
      var loader:URLLoader = URLLoader(event.target);

      xml = XML(event.target.data);
      array = new Array();

      for each (var title :XML in xml..label) {
        array.push(title.toString());
      }
      buttonBar.dataProvider=array;

    });
}

 この関数の内部では、まずURLLoaderで「menu.xml」をロードします。そしてロードしたデータをXMLオブジェクトに変換して「menu.xml」のlabel要素を配列化したものを、ButtonBarコンポーネントのdataProviderプロパティに代入します。

 これによって、ButtonBarにXMLファイルのlabel要素が表示されるようになります。

 次にbClickHandler(event:ItemClickEvent)です。

private function bClickHandler(event:ItemClickEvent):void {
  var urlString:String
    = xml.item[event.index].url + "?"
      + new Date().getTime().toString();
  navigateToURL(new URLRequest(urlString),'_self');
}

 この関数はButtonBarの各ボタンをクリックすることで呼びだされます。

 引数のeventからButtonBar内の何番目かというインデックス情報が得られますので、先ほどのXMLの該当インデックスのurl要素を呼び出し、関数navigateToURL()によって画面を遷移します。

 遷移先にも同じ「menuBar.swf」が埋め込んであれば、同様にどの画面にも遷移できます。

最後に

 いかがだったでしょうか? 今回はFlex 3のButtonBarコンポーネントを使用してWebサイトのメニューバーを構築してみましたが、この他にもWebサイトを魅力的なものにするコンポーネントがFlex 3にはあります。今回紹介したものはそのほんの一部です。読者の皆さまもぜひFlex 3を活用して楽しいWebサイトを構築してください。

「FlexではじめるRIA開発」特集、絶賛公開中!

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

tkitamura(ティーキタムラ)

Java,php,Flex,Flashなどにより、某社FXシステムから個人HPの作成まで幅広く手がけました。宜しくお願い致します。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2765 2009/10/20 17:11

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング