0

次の 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" です。

なぜこのような区別があるのでしょうか。前の例では、サイズを大きくしてから小さくすることを数回、ゆっくりと試みましたが、常に同じ場所で動かなくなりました。ありがとう!

4

1 に答える 1