1

次の MXML コンポーネントのさまざまな組み合わせを試してみました。

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" width="80%" height="100%">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:DropShadowFilter id="mainDSF" color="0x000000" alpha=".7" blurX="20" blurY="20" quality="1" distance="0" />
    </fx:Declarations>

    <s:Graphic>

        <s:Rect width="200" height="200" bottomLeftRadiusX="10" bottomLeftRadiusY="10"
                    bottomRightRadiusX="10" bottomRightRadiusY="10" filters="{[mainDSF]}"
                    horizontalCenter="0">
                <s:fill>
                    <s:LinearGradient rotation="90">
                        <s:GradientEntry color="0x57DDF5" ratio=".05" />
                        <s:GradientEntry color="0x32D2F2" ratio=".25" />
                        <s:GradientEntry color="0x01B7E6" />
                    </s:LinearGradient>
                </s:fill>
            </s:Rect>
    </s:Graphic>
</s:Group>

私は非常に単純であるべき何かをしようとして失敗しました。メインの MXML ファイルで popupManager を使用して作成すると、画面の幅の 80% と画面の高さの 15% になるドロップシャドウでグラデーションで塗りつぶされたボックスを描画したいだけです。

上記のコード例の現在の値はピクセル単位ですが、それは望ましくありません。FlashBuilder 4.5 では、これらをパーセンテージに変更するとすぐにビューから消えてしまうので、そこにあります。

Rect を Graphic タグでラップしてみました。幅、パーセンテージ幅、左右の値のさまざまな組み合わせを試しました。このボックスを画面のすぐ上から MXML ドキュメントの上部セクションに移動します)

これに関する任意の助けをいただければ幸いです。

4

1 に答える 1

2

ポップアップ マネージャーの動作方法が原因で、パーセンテージの計算で奇妙なことが起こっています。私はそれに指を置くことはできません。しかし、私はそれを機能させるためにハックしました。誰かがもっと良いものを思いつくかもしれませんが、見てください:

  1. ルート要素から高さ/幅を削除しました
  2. Graphicノードを削除しました
  3. 100% を使用するように長方形を設定しheightwidth
  4. 初期化時に、height/widthを の関数に設定しましたparent

コードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Declarations>
        <s:DropShadowFilter id="mainDSF" color="0x000000" alpha=".7" blurX="20" blurY="20" quality="1" distance="0" />
    </fx:Declarations>

    <s:initialize>
        height = parent.height * 0.15;
        width = parent.width * 0.8;
    </s:initialize>

    <s:Rect width="100%" height="100%" bottomLeftRadiusX="10" bottomLeftRadiusY="10"
                bottomRightRadiusX="10" bottomRightRadiusY="10" filters="{[mainDSF]}"
                horizontalCenter="0">
        <s:fill>
            <s:LinearGradient rotation="90">
                <s:GradientEntry color="0x57DDF5" ratio=".05" />
                <s:GradientEntry color="0x32D2F2" ratio=".25" />
                <s:GradientEntry color="0x01B7E6" />
            </s:LinearGradient>
        </s:fill>
    </s:Rect>

</s:Group>

お役に立てれば。繰り返しますが、これはハックですが、機能しているようです ;)

于 2011-06-29T01:42:32.420 に答える