1

含まれているコンテンツに合わせたサイズのグループがありますが、Tweenerを使用してトランジションを実行するには、幅と高さのプロパティを設定する必要があります。アニメーションが完了したら、明示的な幅と高さのプロパティをクリアして、グループがその内容に基づいたサイズに戻るようにするにはどうすればよいですか?

前:

<s:Group ><content.../></s:Group>

コード:

width = 250;
height = 250;
Tweener.addTween(this, {width:500, height:500, time:0.25, onComplete:openAnimationComplete});

トゥイーン後、グループは次のように実質的に500x500に設定されます。

<s:Group width="500" height="500" ><content /></s:Group>

私はそれをこれに戻したい:

<s:Group ><content /></s:Group>


Flextrasのソリューションを使用してテストコードを更新します。

<fx:Script>
    <![CDATA[
        protected function button1_clickHandler(event:MouseEvent):void
        {
            var w:Object = myGroup.width;
            var h:Object = myGroup.height;

            if (myGroup.width!=300) {
                myGroup.width = 300;
                myGroup.height = 300;
            }
            else {
                myGroup.width = NaN;
                myGroup.height = NaN;

                w = myGroup.width; // NaN
                h = myGroup.height; // NaN

                //myGroup.validateNow()
                if (myGroup.parent is IInvalidating) {
                    IInvalidating(myGroup.parent).validateNow();
                }

                w = myGroup.width; // 600
                h = myGroup.height; // 100
            }


        }
    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<s:Group id="myGroup" minHeight="0" minWidth="0" clipAndEnableScrolling="true">     
    <s:Button width="600" height="100" label="here is a button" click="button1_clickHandler(event)"/>
</s:Group>
4

1 に答える 1

3

高さと幅をNaNに設定します。これは、Flex Frameworkに「この値が何であるかわからない」ことを効果的に伝え、次にコンポーネントがそれ自体をレンダリングするときにmeasure()イベントを実行します。MeasurementHeightプロパティとmeasuredWidthプロパティを更新します。これは、グループのサイズを決定するために親コンテナによって順番に使用されます。

于 2012-11-02T20:31:41.193 に答える