次の AS3/MXML コードを使用します。
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns="*"
backgroundColor="#000000" showStatusBar="false" width="400" height="400"
minWidth="0" minHeight="0">
<s:Rect width="50%" height="50%">
<s:fill>
<s:SolidColor color="#0000FF"/>
</s:fill>
</s:Rect>
</s:WindowedApplication>
これはほとんど機能します。プログラムのサイズを増減すると、Rect のサイズは WindowedApplication の幅と高さの 50% にスケーリングされます。しかし、ウィンドウの高さを減らし続けると、縮小によって 0 よりも数ピクセル手前で停止します。これは、Rect を y 軸に沿って配置できる限り小さくなります。
ここまでくると、WindowedApplication のサイズを減らし続けても何も起こりません。Rect は、ウィンドウのサイズを再び大きくし始めるまで、まったく同じ高さにとどまります。さらに、Rect の高さは 12 ピクセルであり、これは非常に恣意的な数値です。
ただし、変更すると:
<s:Rect width="50%" height="50%">
に:
<s:Rect width="{width / 2}" height="{height / 2}">
問題は魔法のように消えます:
WindowedApplication の高さは 5 で、Rect の高さは約 "2.5" です。
なぜこのような区別があるのでしょうか。前の例では、サイズを大きくしてから小さくすることを数回、ゆっくりと試みましたが、常に同じ場所で動かなくなりました。ありがとう!