Flex ActionScript 関連覚書などなど

ポップアップウインドウとか、たまに必要になるのに、そのたびに作り方忘れるのでメモ。

まずはポップアップで開くウインドウをコンポーネントとして作ります。

1
2
3
4
5
6
7
8
9
10
11
12
< ?xml version="1.0" encoding="utf-8"?>
< mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" showCloseButton="true" close="closePopup()" width="400" height="300">
  < mx:Script>
    < ![CDATA[
      import mx.managers.PopUpManager;
 
      private function closePopup():void{
        PopUpManager.removePopUp(this);
      }
    ]]>
  < /mx:Script>
< /mx:TitleWindow>

簡単に作るならTitleWindowがいいかな?
showCloseButtonで閉じるボタンができるので楽チンです。
closeイベントを取得して、PopupManagerから自分自身を削除するようにすると、ポップアップが消せます。

そしたらポップアップを開く側を。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< ?xml version="1.0" encoding="utf-8"?>
< mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  < mx:Script>
    < ![CDATA[
      import mx.managers.PopUpManager;
 
      public function doPopup():void{
        var popup_window:PopupWindow = new PopupWindow();
        // PopupManagerにインスタンスを登録
          PopUpManager.addPopUp(popup_window, this);
        // 画面中央へ表示
          PopUpManager.centerPopUp(popup_window);
      }
    ]]>
  < /mx:Script>
  < mx:Button label="Popup" click="doPopup()"/>
< /mx:Application>

とりあえずサンプルなので、ポップアップを開くためのボタンだけ配置。この辺は適宜ですね。
addPopUpの引数は、
第一引数がwindow:IFlexDisplayObject。
ポップアップさせるインスタンス
第二引数がparent:DisplayObject。
ポップアップ表示の親となるDisplayObject。次のcenterPopUpのときの中心座標を計算する基準になるっぽい。
第三引数がmodal:Boolean = false 。
trueだと、ポップアップ表示中は、ポップアップ以外が操作不能になります。
第四引数はchildList:String = null 。
与えられる引数は以下の三種。
PopUpManagerChildList.APPLICATION
PopUpManagerChildList.PARENT
PopUpManagerChildList.POPUP

APPLICATIONはSTAGE以下に、PARENTは第二引数のparent以下に、POPUPはSystemManager以下にDisplayObjectを追加します。

他の方法としては、
centerPopUp(popUp:IFlexDisplayObject):void
このメソッドでは、クラスネームを引数で渡します(インスタンスではなく)。

ん~、リファレンスのPopupManagerの説明が微妙にわかりづらいんですよね。

コメント

コメント(4) “[Flex]ポップアップウインドウの作り方”

  1. 匿名

    Add Your Comment

コメントする