AIRでアプリケーション終了の確認ダイアログを表示する

不慣れなActionScript、はじめてのAIR開発とあって、いろんなことでつまづき続けています。

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:WindowedApplication xmlns:mx=”http://www.adobe.com/2006/mxml” applicationComplete=”init()” layout=”absolute”>
<mx:Script>
 <![CDATA[
  import mx.controls.Alert;
  import mx.events.CloseEvent;
  private function init():void
  {
     addEventListener(Event.CLOSING,application_closing);
  }
  private function application_closing(event:Event):void
  {
     event.preventDefault();
     Alert.show(“終了しますか?”,”終了の確認”,Alert.YES | Alert.CANCEL,null,goto_close);
  }
  private function goto_close(event:CloseEvent):void
  {
     if(event.detail==Alert.YES)
     {
      nativeWindow.close();
     }
  }
 ]]>
</mx:Script>
</mx:WindowedApplication>

 

applicationCompleteでイベントリスナーを追加しています。「closingイベントが起こったら呼べや」っていう感じですね。

で、呼ばれた関数の中で、ひとまずclosingイベントをキャンセルしています。確認云々のまえにキャンセルです。問答無用です。そのあと、確認します。キャンセルしておいて確認です。

確認ダイアログは、結果もコールバック関数です。これもはじめは違和感バリバリでした。C#だとそこで1回処理がとまるじゃないですか。基本的にすべてコールバック関数。慣れるまで戸惑いそうです。

確認ダイアログの結果によって、プログラムからアプリケーションを終了します。

正直、これが正しい実装方法なのかはまったくわかりません。こんな泥臭い方法じゃなくて、もっとスマートな記述方法があるのかもしれません。

まぁ、やりたかったことはできているようなのでOKかなと。

AIR 1.5、ActionScript 3.0です。