2

Flex の新しいステートは、includeIn/excludeFrom でマークされたビジュアル アイテムを再親化します。状態が制御される 5 つの子/要素を持つグループ (MainGroup) がある場合、MainGroup の子への参照を取得する方法はありますか? mainGroup.numChildren と mainGroup.numElements は、子が再親化されるため機能しません。せいぜい、それらは 1 を示します。

<s:states>
   <s:State name="view1State" />
   <s:State name="view2State" />
   <s:State name="view3State" />
   <s:State name="view4State" />
</s:states>

<s:Group id="mainGroup">
    <shipping:OrderShipping id="view1"
            includeIn="view1State" />
    <payment:OrderPayment id="view2"
            includeIn="view2State" />
    <verification:OrderVerification id="view3"
            includeIn="view3State" />
    <confirmation:OrderConfirmation id="view4"
            includeIn="view4State" />
</s:Group>
4

4 に答える 4

2

親であることではなく、visible/includeinlayout を制御する状態が必要な場合は、次のようにします。

<s:states>
    <s:State name="view1State" />
    <s:State name="view2State" />
    <s:State name="view3State" />
    <s:State name="view4State" />
</s:states>
<s:Group id="mainGroup">
    <shipping:OrderShipping id="view1" 
        visible="false" 
        includeInLayout="false" 
        visible.view1State="true" 
        includeInLayout.view1State="true"/>
    <payment:OrderPayment id="view2" 
        visible="false" 
        includeInLayout="false" 
        visible.view2State="true" 
        includeInLayout.view2State="true"/>
    <verification:OrderVerification id="view3" 
        visible="false" 
        includeInLayout="false" 
        visible.view3State="true" 
        includeInLayout.view3State="true" />
    <confirmation:OrderConfirmation id="view4" 
        visible="false" 
        includeInLayout="false"
        visible.view4State="true" 
        includeInLayout.view4State="true"/>
</s:Group>
于 2011-08-17T21:44:33.653 に答える
2

私のアプリケーションの1つで同様の状況があり、これが私が物事を達成した方法です。これは機能しますが、少しハッキーだと感じます。それを念頭に置いて:

  1. 別の状態を作成します。これを と呼びますcheating。この状態をデフォルトにします (states配列の最初に配置します。
  2. この状態に含まれるようにすべてのビューを更新します。
    例えば、 <shipping:OrderShipping id="view1" includeIn="cheating,view1State" />
  3. Arrayというタイプの新しいクラス メンバーを作成しますviews
  4. creationCompleteイベント ハンドラーを追加します。ハンドラーviewsで、各ビューへの参照を入力します。例えば、views = [view1, view2, view3, view4];
  5. 状態を「最初の」(非cheating) 状態に変更します。setCurrentState("view1State");

このすべての後views、アプリケーションが現在どの状態にあるかに関係なく、配列には各ビューへの参照が含まれます。

于 2011-08-17T21:45:17.043 に答える
1

ベストアンサー頂きました!まあ、決めさせてもらいます。状態配列を操作するだけです...

 for each (var viewState:State in mainDocument.states)
{
    var overrides:Array = viewState.overrides;

    for (var i:int = 0; i < overrides.length; i++)
    {
        var addItems:AddItems = overrides[i];
        if (addItems.destination === mainDocument.mainGroup)
            trace((addItems.items as UIComponent).name);
    }

}
于 2011-08-18T05:11:29.367 に答える