初期ウィンドウの systemChrome と transparent は変更できません。また、
表示ウィンドウカタログ(Adobeのヘルプ) で比較されている、Type も変更できません。
初期ウィンドウのタイプは必ず normal であるため、
ウィンドウは必ずタスクバーに表示されます。
まずは、2次ウインドウを作成せずにできる状態を確認していきます。
systemChrome : standard でウィンドウを透明にしない ( transparent="false" )
WindowedApplication で、title を設定すると、XML で設定した title が上書きされます
下の画像は、backgroundAlpha="0" を指定したものです
※ standard で、transparent を true には設定できません
<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.0">
<id>airApplication</id>
<version>1.0</version>
<filename>airApplication</filename>
<initialWindow>
<title>AIR アプリケーション</title>
<content>Mainw.swf</content>
<x>300</x>
<y>200</y>
<width>600</width>
<height>300</height>
<systemChrome>standard</systemChrome>
<transparent>false</transparent>
<visible>false</visible>
<minimizable>true</minimizable>
<maximizable>true</maximizable>
<resizable>true</resizable>
</initialWindow>
</application>
systemChrome : none でウィンドウを透明にしない
下の画像は、backgroundAlpha="0" を指定したものです
systemChrome : none でウィンドウを透明にする
上から順に、backgroundAlpha は、1、0(完全透過)、0.1 です。
完全透過にすると、背景のデスクトップの操作が可能になります
完全透過ウインドウの showFlexChrome を false にする
完全透過で FlexChrome を使わない事によって、デスクトップに浮いたようなフォームになります。
当然、マウスで移動ができないのですが、タスクバーに表示されているので( メインウインドウなので )
最小化したり、元に戻したり、終了する事は可能です。
しかしこのままでは実用にならないので、マウスまたはキーボードで移動可能にする必要があります。
また、この表示特性にあわせて、常に前面に表示(alwaysInFront="true")するようにすると良いでしょう
キーボードによる移動処理
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
xmlns:mx="http://www.adobe.com/2006/mxml"
showFlexChrome="false"
initialize="initData();"
creationComplete="initApp1()"
applicationComplete="initApp2()"
visible="true"
usePreloader="true"
backgroundAlpha="0"
alwaysInFront="true"
keyDown="moveThisWindow(event)"
>
<mx:Script>
<![CDATA[
// *****************************************************
// 上下キーによる移動
// *****************************************************
private function moveThisWindow(e:KeyboardEvent):void {
var primaryScreen:Screen = Screen.mainScreen;
var rect:Rectangle = primaryScreen.bounds;
var x:int = mx.core.Application.application.nativeWindow.x;
var y:int = mx.core.Application.application.nativeWindow.y;
var width:int = mx.core.Application.application.nativeWindow.width;
var height:int = mx.core.Application.application.nativeWindow.height;
if ( e.keyCode == 37 ) {
x -= 10;
if ( x < 0 ) {
x = 0;
}
}
if ( e.keyCode == 38 ) {
y -= 10;
if ( y < 0 ) {
y = 0;
}
}
if ( e.keyCode == 39 ) {
x += 10;
if ( x > rect.width - width ) {
x = rect.width - width;
}
}
if ( e.keyCode == 40 ) {
y += 10;
if ( y > rect.height - height ) {
y = rect.height - height;
}
}
mx.core.Application.application.nativeWindow.x = x;
mx.core.Application.application.nativeWindow.y = y;
}
// *********************************************************
// initialize
// *********************************************************
public function initData():void {
trace("[App:beforeDisplay]");
}
// *********************************************************
// creationComplete
// *********************************************************
private function initApp1():void {
trace("[App:afterDisplay]");
}
// *********************************************************
// applicationComplete
// *********************************************************
private function initApp2():void {
trace("[App:start]");
dr.setFocus();
}
]]>
</mx:Script>
<mx:Image id="dr" source="@Embed('dr.png')" />
<mx:HBox>
<mx:TextInput id="data" width="400"
/>
<mx:Button
id="btn"
label="参照"
styleName="blackButton"
/>
</mx:HBox>
</mx:WindowedApplication>
|