Adobe AIRのNativeWindowクラス
Adobe AIRでネイティブのデスクトップウィンドウを作成するには「flash.display.NativeWindow」クラスを使用します。
NativeWindowを作成する初期化オプション「flash.display.NativeWindowInitOptions」をNativeWindowのコンストラクタ渡してNativeWindowの「activateメソッド」を呼び出せばウィンドウが表示されます。
NativeWindowInitOptionsクラスの「type」プロパティに、NativeWindowTypeに定義してある定数を設定すればウィンドウの種別を変更できるようです。
下記にサンプルを掲載します。

■NativeWindowType.NORMALのウィンドウ

■NativeWindowType.LIGHTWEIGHTのウィンドウ

■NativeWindowType.UTILITYのウィンドウ

Flex2ではコンテナにコンポーネントを追加する場合、コンテナの「addChild」メソッドを呼び出してコンポーネントを追加していましたが、NativeWindowクラスではNativeWindowのプロパティ「stage」に対して「addChild」を呼び出し追加するようです。
しかし、私の環境ではFlexのコンポーネントをNativeWindowに追加することができませんでした。これはベータ版のときの制約だったようですが、正式にリリースされたバージョンでも対応していないようです。
NativeWindowを作成する初期化オプション「flash.display.NativeWindowInitOptions」をNativeWindowのコンストラクタ渡してNativeWindowの「activateメソッド」を呼び出せばウィンドウが表示されます。
NativeWindowInitOptionsクラスの「type」プロパティに、NativeWindowTypeに定義してある定数を設定すればウィンドウの種別を変更できるようです。
下記にサンプルを掲載します。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.core.Window;
private function newWindowButton1ClickHandle():void {
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.type = NativeWindowType.NORMAL;
var win:NativeWindow = new NativeWindow(options);
win.title = "NORMAL";
win.width = 200;
win.height = 200;
win.stage.addChild(createTextField("サンプル"));
win.activate();
}
private function newWindowButton2ClickHandle():void {
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.type = NativeWindowType.LIGHTWEIGHT;
/* NativeWindowTypeがLIGHTWEIGHTの場合はsystemChromeをNONEにする */
options.systemChrome = NativeWindowSystemChrome.NONE;
var win:NativeWindow = new NativeWindow(options);
win.title = "LIGHTWEIGHT";
win.width = 200;
win.height = 200;
win.stage.addChild(createTextField("サンプル"));
win.activate();
}
private function newWindowButton3ClickHandle():void {
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.type = NativeWindowType.UTILITY;
var win:NativeWindow = new NativeWindow(options);
win.title = "UTILITY";
win.width = 200;
win.height = 200;
win.stage.addChild(createTextField("サンプル"));
win.activate();
}
private function createTextField(text:String):TextField {
var button:TextField = new TextField();
button.text = text;
button.width = 100;
button.height = 20;
return button;
}
]]>
</mx:Script>
<mx:Canvas x="0" y="0" width="100%" height="100%" backgroundColor="#FFFFFF">
<mx:Button id="newWindowButton1" x="10" y="10" label="新しいウィンドウ1" click="newWindowButton1ClickHandle()"/>
<mx:Button id="newWindowButton2" x="10" y="40" label="新しいウィンドウ2" click="newWindowButton2ClickHandle()"/>
<mx:Button id="newWindowButton3" x="10" y="70" label="新しいウィンドウ3" click="newWindowButton3ClickHandle()"/>
</mx:Canvas>
</mx:WindowedApplication>
■上記のプログラムを実行すると表示されるウィンドウ
■NativeWindowType.NORMALのウィンドウ

■NativeWindowType.LIGHTWEIGHTのウィンドウ

■NativeWindowType.UTILITYのウィンドウ

Flex2ではコンテナにコンポーネントを追加する場合、コンテナの「addChild」メソッドを呼び出してコンポーネントを追加していましたが、NativeWindowクラスではNativeWindowのプロパティ「stage」に対して「addChild」を呼び出し追加するようです。
しかし、私の環境ではFlexのコンポーネントをNativeWindowに追加することができませんでした。これはベータ版のときの制約だったようですが、正式にリリースされたバージョンでも対応していないようです。
ラベル: AIR

0 件のコメント :
コメントを投稿
この投稿へのリンク :
リンクを作成
<< ホーム