システムのウィンドウ枠がないアプリを作る方法
アプリケーション記述ファイルのsystemChromeをnoneに設定し、transparentをtrueにすればよい。
記述例は以下の通り。
Test Test app! Sample app copyright information Main Window Test.swf true none true 800 600
しかし、システムのウィンドウ枠がないと閉じるボタンがないためアプリ側でアプリケーションを終了させる方法を提供する必要が出てくる。
アプリケーションを終了させるには、現在開いているすべてのNativeWindowのインスタンスを取得し、close()メソッドを呼べば良い。コードは下記の通りとなる。
import flash.display.NativeWindow; import flash.system.Shell; function closeAllWindows():void { Shell.shell.openedWindows.forEach(function(nw:*, index:int, arr:Array):void { nw.close(); }); }
実際は、いきなり全てのwindowを閉じていい場合は少ないと思うが上記のコードのようにflash.system.Shellクラスのstaticプロパティを使うケースは多いのではないかと思う。
AIRのパッケージ作成方法
AIRアプリケーションをパッケージングするには、beta2からデジタル署名が必要になった。
とりあえずは、adtコマンドを使って署名ファイルを作成できる。
$adt -certificate -cn SelfSigned 1024-RSA sampleCert.pfx samplePassword
これでsampleCert.pfxというファイルができるので、このファイルを使ってAIRパッケージを作る。
例えば、アプリケーション記述ファイルがTest-app.xml、アプリケーション本体がTest.swf、パッケージ名がTest.airの場合、
下記のコマンドで作成出来る。
$adt -package -certificate sampleCert.pfx -password samplePassword Test.air Test-app.xml Test.swf
Test-app.xmlの記述ないように誤りがなければこれで、Test.airが作成される。
ここで一つだけ注意が必要なのだが、Test-app.xmlのxml宣言に誤りがあるとこのコマンドを実行した際に下記のようなエラーが発生する。
error 100: Application descriptor cannot be parsed
adlコマンドはアプリケーション記述ファイルが多少仕様からはずれていても実行できるようだが、adtコマンドは正確な記述を要求する。
そのため、adlコマンドで実行できていたものがパッケージの段階で上記エラーが発生するということがあるようだ。