Apollo改めAIRプログラミング入門(3)

AIRアプリのウィンドウは自由自在で縦横無尽!

クラスメソッド
杉浦篤史
2007/9/18


複数ウィンドウを使ったアプリを作ろう

 これまでの例では、ただ新しいウィンドウを生成するだけでしたが、複数ウィンドウを使いそれぞれを制御してみましょう。

 以下に例を示します。実行結果の一部を図3図4に示します。

<?xml version="1.0" encoding="utf-8"?>
    <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical" horizontalAlign="center" verticalAlign="middle"
    verticalGap="0" width="160" height="150"
    paddingTop="0" paddingBottom="0" paddingLeft="0" paddingRight="0"
    applicationComplete="applicationCompleteHandler()"
    closing="closingHandler()">
<mx:Script>
<![CDATA[
    private var wa:Array = new Array();
    private function applicationCompleteHandler():void {
        //常に最前面に表示する
        stage.window.alwaysInFront = true;
        //4つのウィンドウを起動時に生成する
        for (var i:int=0; i<4; i++) {
            createWindow(i+1);
        }
    }
    private function createWindow (num:int):void {
        //新しいウィンドウを作る
        var wOptions:NativeWindowInitOptions
            = new NativeWindowInitOptions();
        wOptions.type = NativeWindowType.UTILITY;
        var nw:NativeWindow = new NativeWindow(true, wOptions);
        nw.width = 160;
        nw.height = 150;
        nw.title = num.toString();
        nw.alwaysInFront = true;
        nw.x = stage.window.x + nw.width + 5;
        nw.y = stage.window.y + 20*(num-1);

        //作成したウィンドウは配列に保持する
        wa.push(nw);
    }
    private function closingHandler():void {
        //メインウィンドウを閉じたら、サブウィンドウをすべて閉じる
        for (var i:int=0; i<wa.length; i++) {
            var nw:NativeWindow = wa[i] as NativeWindow;
            if (nw) nw.close();
        }
    }
    private function hBtnClickHandler():void {
        //メインウィンドウを先頭に横に並べる
        var nw:NativeWindow;
        for (var i:int=0; i<wa.length; i++) {
            nw = wa[i] as NativeWindow;
            nw.x = stage.window.x + stage.window.width * (i+1);
            nw.y = stage.window.y;
        }
    }
    private function vBtnClickHandler():void {
        //メインウィンドウを先頭に縦に並べる
        var nw:NativeWindow;
        for (var i:int=0; i<wa.length; i++) {
            nw = wa[i] as NativeWindow;
            nw.x = stage.window.x;
            nw.y = stage.window.y + stage.window.height * (i+1);
        }
    }
    private function cBtnClickHandler():void {
        //メインウィンドウを上下左右に並べる゛
        var nw:NativeWindow;
        for (var i:int=0; i<wa.length; i++) {
            nw = wa[i] as NativeWindow;
            switch (i) {
            case 0:
                nw.x = stage.window.x;
                nw.y = stage.window.y - stage.window.height;
                break;
            case 1:
                nw.x = stage.window.x + stage.window.width;
                nw.y = stage.window.y;
                break;
            case 2:
                nw.x = stage.window.x;
                nw.y = stage.window.y + stage.window.height;
                break;
            case 3:
                nw.x = stage.window.x - stage.window.width;
                nw.y = stage.window.y;
                break;
            }
        }
    }
]]>
</mx:Script>
<mx:Button id="hBtn" label="横に並べる" click="hBtnClickHandler()" />
<mx:Button id="vBtn" label="縦に並べる" click="vBtnClickHandler()" />
<mx:Button id="cBtn" label="上下左右に並べる"
     click="cBtnClickHandler()" />
</mx:WindowedApplication>

図3 子ウィンドウを横に並べる
図3 子ウィンドウを横に並べる

図4 子ウィンドウを上下左右に並べる
図4 子ウィンドウを上下左右に並べる

 この例では、1つのメインウィンドウから4つの子ウィンドウを立ち上げそれぞれの動きを制御しています。

 各ボタンを押下することで、メインウィンドウを基準にして、子ウィンドウを縦・横・上下左右に並べています。

さらに驚きの機能も

 今回紹介したウィンドウAPIですが、ベータ版ではまだ実装されていない機能がいくつかあります、これらについてはまた機能が実装されたらご紹介したいと思います。

  • システムトレイへのアイコン表示
  • ウィンドウツールバーの制御
  • アプリケーションアイコンの制御
  • ネイティブウィンドウメニューの制御
  • デスクトップスクリーン情報取得

 今回紹介したサンプルのコードはこちらからダウンロードできます。

@IT関連記事


AptanaでAjax・AIR・iPhone用ページの開発を行う
どこまでできる? 無料ツールでWebサイト作成(2) AptanaはAjax開発にも便利な機能を発揮し、Eclipseベースなので、プラグインでさまざまな機能拡張も実現します
リッチクライアント & 帳票」フォーラム 2007/9/13
Flex/AIRの開発環境Flex Builder 3を使ってみよう
現場で使えるFlex実践テクニック(特別編) 今秋に機能確定版がリリース予定のFlex Builder 3。EclipseベースのFlex/AIR開発環境のインストール方法と新機能を紹介
リッチクライアント & 帳票」フ ォーラム 2007/9/6
仕事で使える! お役立ちFlash/AIRアプリ集
連載:Flash観測所(6) システム手帳、サイト監視、サイトのAIRウィジェット変換、サイトのサムネイル化、オン/オフラインのワードプロセッサ、ログ解析結果表示などを紹介
リッチクライアント & 帳票」フ ォーラム 2007/9/5
行く先はMAX 2007? バスツアーがOn“AIR”中!
連載:Flash観測所(5) いま米で進行中のOn AIR Busツアー。停車する各地でAIR・Flexなどに関する技術セッションが行われている。そこでできたAIRアプリなども紹介しよう
リッチクライアント & 帳票」フ ォーラム 2007/8/1
AIRとGearsの連携で注目のオフラインWebアプリ集
連載:Flash観測所(4) Apolloが正式名AIRとなってGoogle Gearsと連携できるようになり、オフラインWebアプリがいま注目だ。Flashでも面白いものがあるので紹介しよう
リッチクライアント & 帳票」フ ォーラム 2007/7/3

プロフィール:杉浦 篤史(すぎうら あつし)
クラスメソッド株式会社 エンタープライズサービス部門 Flexエンジニア

FlexやAIRを用いたRIAシステム開発に携わる。業務に特化したカスタムコンポー ネント開発を得意としています。 FlexやAIRの開発依頼はコチラ

1-2  

 INDEX
Apollo改めAIRプログラミング入門(3)
  Page1
ウィンドウタイプを指定して新しいウィンドウを開く
ウィンドウを常に最前面に表示させてみよう
Page2
複数ウィンドウを使ったアプリを作ろう
さらに驚きの機能も




HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間