NativeWindow クラスには Apollo アプリケーションのウインドウの位置や大きさを示すプロパティがあります。
x:Number // ウインドウの左上の角の x 座標 y:Number // ウインドウの左上の角の y 座標 width:Number // ウインドウの幅(単位:ピクセル) height:Number // ウインドウの高さ(単位:ピクセル)
これらのプロパティに値を設定することでウインドウの位置や大きさを変えることができます。
stage.window.x = 50; stage.window.y = 50; stage.window.width = 800; stage.window.height = 600;
ウインドウの幅と高さに指定できる最小値と最大値は予め決められています。最小値より小さな値を指定すると最小値として与えられている大きさになります。つまり下限の定義よりウインドウを小さくすることはできません。同様に最大値として定義されている値よりウインドウを大きくすることもできません。
最大値と最小値はそれぞれ以下のプロパティから参照できます。当然ですがこれらのプロパティは読み取り専用です。
maxSize:Point // ウインドウの大きさの最大値 minSize:Point // ウインドウの大きさの最小値
どちらも Point 型 (Class Point@livedocs) で、座標値として大きさの上限または下限を指定します。例えば、maxSize.x はウインドウ幅の上限、maxSize.y はウインドウ高さの上限です。
ちなみに、maximize() を呼んだ後のウインドウの大きさは maxSize に定義されている上限の値と同じになります。
それから、プロパティを使ってウインドウを最大化した場合 reset() を呼んでも元には戻りません。displayState が NORMAL のままのためです。
bounds 属性
NativeWindow の bounds 属性を使うと位置と大きさをいっぺんに指定することができます。
bounds:Rectangle // ウインドウの位置と大きさ
Rectangle 型 (Class Rectangle@livedocs) のオブジェクトで座標情報を管理するわけです。例えば上の例は以下のように書き直すことができます。
// ウインドウ左上角の座標を (50, 50) 幅を 800 高さを 600 に設定 stage.window.bounds = new Rectangle(50, 50, 800, 600);
NativeWindow と Stage
ところで、ウインドウの大きさはシステムクロームが使用されていた場合にはクロームの大きさも含みます。ウインドウ内のクローム以外の領域がステージ (window.stage) です。
ステージ領域の大きさは stage オブジェクトの属性から取得することができます。Stage クラスには stageWidth と stageHeight という属性がありそれぞれ stage オブジェクトの幅と高さを表しています。
これらの属性に値を代入すると stage の大きさが変わります。そのためステージを表示しているウインドウの大きさも変わります。
stage.stageWidth = 800; stage.stageHeight = 600;
stage と window が同じ display list に属していることになるので stage と stage.window.stage は 同じオブジェクトのはずですね。
コメントする