Adobe AIRで作るデスクトップアプリケーション

第6回 ウィンドウの操作

この記事を読むのに必要な時間:およそ 2 分

新しいウィンドウを開く

NativeWindowクラス(またはそのサブクラス)のインスタンスを生成すれば,新しいウィンドウが開きます。下記のサンプルは,ユーティリティスタイルのウィンドウを開き,タイトルとサイズを設定しています。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			private function openWindow():void {
				var options:NativeWindowInitOptions = new NativeWindowInitOptions();
				options.type = NativeWindowType.UTILITY;
				var newWin:NativeWindow = new NativeWindow(false, options);
				newWin.title = "New Window";
				newWin.width = 160;
				newWin.height = 120;
				newWin.visible = true;
			}
		]]>
	</mx:Script>
	<mx:Button x="20" y="20" label="新規ウィンドウ" click="openWindow()"/>
</mx:WindowedApplication>

NativeWindowクラスのコンストラクタの最初の引数は,visibleプロパティの初期値です。ウィンドウの初期化処理を見せたくない場合などはfalseを指定しておき,後からtrueにできます。2番目の引数はNativeWindowInitOptionsクラスのインスタンスです。このオブジェクトはウィンドウの属性を決める様々なプロパティを保持しています。主なプロパティには次のものがあります。

systemChrome:Stringクロームの指定
transparent:Booleanアルファをサポートするかどうか
type:Stringウィンドウのタイプ
maximizable:Boolean最大化可能かどうか
minimizable:Boolean最小化可能かどうか
resizable:Booleanリサイズ可能かどうか

※Macintoshでリサイズを無効にするにはmaximizableとresizableの両方をfalseにする必要があります。

systemChromeプロパティはNativeWindowSystemChromeクラスの定数で指定します。

NativeWindowSystemChrome.STANDARDシステムクロームを使う
NativeWindowSystemChrome.NONEシステムクロームを使わない

typeプロパティはNativeWindowTypeクラスの定数で指定します。NORMAL以外のタイプはタスクバー等に表示されないウィンドウです。

NativeWindowType.NORMAL通常のウィンドウ
NativeWindowType.UTILITYユーティリティスタイルのウィンドウ
NativeWindowType.LIGHTWEIGHTクロームを持たないウィンドウ

MacintoshとWindowsのユーティリティスタイルのウィンドウ

MacintoshとWindowsのユーティリティスタイルのウィンドウ

いったん新規ウィンドウを開いたら,そのウィンドウが持つステージに対してSpriteオブジェクトなどを追加できます。ステージはNativeWindowクラスのstageプロパティで取得できます。次のステートメントは,新規に開いたウィンドウの中央に円を描画します。

var options:NativeWindowInitOptions = new NativeWindowInitOptions();
var newWin:NativeWindow = new NativeWindow(true, options);
var myStage:Stage = newWin.stage;
myStage.align = StageAlign.TOP_LEFT;
myStage.scaleMode = StageScaleMode.NO_SCALE;
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFFF00);
circle.graphics.drawCircle(myStage.stageWidth / 2, myStage.stageHeight / 2, 40);
myStage.addChild(circle);

著者プロフィール

タナカヤスヒロ

早稲田大学卒業後,DTP業務を経てマルチメディア系制作会社へ。Macromedia Directorにのめり込む。フリーランスとなりFlashにシフトしてからもデスクトップ絡みの仕事が絶えず,Apolloにも勝手に縁を感じている。現在株式会社antsに所属。ants Lab.にも記事を上げている。

URLhttp://labs.anthill.jp/

著書