いきなり脱線しますが、Adobe AIRで作られたアプリケーションは何と呼べば良いのでしょうか。とりあえずAIRアプリと呼ぶことにしましたが、どうもわかりずらいですね。
というわけで、AIRアプリの起動時の位置について社内で質問を受けたのでまとめておこうと思います。
まず何も指定しない場合は、画面左上(原点)に表示されます。
それから、明示的に位置を指定したい場合は、アプリケーション記述ファイルのinitialWindowのxやyを書きます。
では、画面の中央にAIRアプリの中央を持ってきたい場合はどうすれば良いのでしょうか。この場合は、アプリケーション記述ファイルでは表現出来ないので、スクリプトのコンストラクタなどに以下のような記述を追加します。
addEventListener(Event.ADDED_TO_STAGE, function (event:Event):void {
stage.frameRate = 30;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.nativeWindow.x = Capabilities.screenResolutionX / 2 - stage.stageWidth / 2;
stage.nativeWindow.y = Capabilities.screenResolutionY / 2 - stage.stageHeight / 2;
});
Capabilitiesクラスでクライアントの画面解像度を取ってくることが出来ます。
なお、asだけで書いている場合にドキュメントクラスのコンストラクタに記述してみても、特定の条件下においてはうまくいきませんでした。どうもアプリケーション記述ファイルに書かれた値の方が勝ってしまうようで、その場合はinitializeWindowのx、yをコメントアウトすれば大丈夫でした。
WindowedApplicationクラスを使っている場合は、preinitializeイベント以降に記述すれば、アプリケーション記述ファイルのinitializeWindowのx、yを書いても問題ないです。