6

私は、spark.components.Groupを拡張して背景色を持たせる単純なコンポーネント、より具体的には、背景を塗りつぶすために引き伸ばされたspark.primitives.Rectコンポーネントを構築しようとしています。

これは私がこれまでに思いついたものです:

<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/halo"
    <fx:Metadata>
        [DefaultProperty(name="content")]
    </fx:Metadata>

    <s:Rect id="background" width="100%" height="100%">
        <s:fill>
            <s:SolidColor color="#990000"/>
        </s:fill>
    </s:Rect>

    <s:Group id="container"/>

    <s:filters>
        <!-- For good measure ;) -->
        <s:DropShadowFilter color="#000000" strength="0.4" blurX="5" blurY="5" distance="2" angle="90"/>
    </s:filters>

    <fx:Script>
        <![CDATA[
            public function set content(value:Array):void {
                this.container.mxmlContent = value;
            }
        ]]>
    </fx:Script>
</s:Group>

さて、ここでのロジックは基本的に理にかなっていますよね?MXMLで宣言されたすべての子は、「コンテナ」と呼ばれるグループに移動します。それはうまく機能しています。ただし、以下の例を実行すると、レイアウトは完全にfubarになります。

<s:VGroup>
    <!-- This is the component described above -->
    <components:MessageContainer id="component" width="100" height="100"/>
    <mx:Slider/>
    <mx:Slider/>
    <mx:ColorPicker/>
</s:VGroup>

これはどのように見えるかです:

フレックスfubar

ここに欠けているものはありますか?多分私がオーバーライドする必要があるメソッド?

4

2 に答える 2

0

どのビルドのflex4を使用していますか?コードを正確にコピーしたところ、期待どおりの出力になりました。

結果

過去数週間以内にリリースされたベータ2ビルドを実行しています。4.0.0.253292をビルドします。最新のものを実行していない場合は、ビルドをアップグレードできますが、プロジェクトのクリーンアップを試みることもできます。混乱しているだけかもしれません。また、ブラウザがswfをキャッシュしていないことを確認してください。これは、ファイルサイズが大幅に変更されていない場合に発生することがあります。

于 2009-10-15T23:22:23.937 に答える
0

変。スキンの実装を作成し、SkinnableContainer に適用することにしました。Flex 4 の Beta 2 リリースも使用してコンパイルしていました。本当に奇妙です。

于 2009-10-18T03:17:53.213 に答える