読者です 読者をやめる 読者になる 読者になる

追い越せないポップアップ

Flex2 Flex2 AS3

例えばちょっとした情報をポップアップで上げておき、それを元に別のポップアップに入力をしたいという場合、入力用のモーダルポップアップをあげてしまうと、先に出ていたポップアップが隠れてしまいます。
ということで、モーダルポップアップが来た場合にさらに割り込んで上に出て行く(若干うざめな)ポップアップを作ってみました。

プロフィール情報ボタンの後に、データ入力ボタンを押してみてください。
(見れない場合はこちら)


キモはNekoBeanPopup.mxml

private function handleAddedEvent(e:Event):void{
  var comp:UIComponent = e.target as UIComponent;
  //作られたのがポップアップで、かつアラートじゃない場合
  if(comp != null && comp.isPopUp && (comp is Alert)==false){
    //自分を前面に押し出す
    PopUpManager.bringToFront(this);

    //お遊び処理(ねこびーんの画像を変える)
    image.source = happyImage;
    var timer:Timer = new Timer(1000,1);
    timer.addEventListener(TimerEvent.TIMER_COMPLETE,function(event:TimerEvent):void{
      image.source = smileImage;
    });
    timer.start();
  }
}

の部分です。
このハンドラはSystemManagerのEvent.ADDEDでひっかけてあるため、自分以外のポップアップが追加されたときに感知できます(PopupはApplicationの子供ではなく、SystemManagerの子供になるので)。
もしポップアップが作られたら、PopUpManager.bringToFront()を使って、自分を前に出します。
仕掛けはとしてはこんだけですので、ユーティリティ化とかして使ってみるのもいいかともいます。