如何创建包含其他状态的状态

时间:2012-01-22 17:21:44

标签: flex flex4

我有一个移动应用程序,其中有3个状态。有默认的肖像和风景,我想添加第三个状态,包括其他两个。

<s:states>
    <s:State name="portrait"/>
    <s:State name="landscape"/>
    <s:State name="panel" stateGroups="portrait, landscape"/>
</s:states>

在这个名为“面板”的第三个状态中,我想在其中包含纵向和横向状态。当我这样做时,我收到以下错误:

Identifier 'landscape' used for both a state group and a state.

BTW我一直在努力了解stateGroups,我认为我没有得到它。

更新
这是更多的背景。我有一个名为“appMenu”的容器,当用户按下菜单键时,我希望该容器可见。所以我想为此创建一个状态。现在只有一个值发生变化,那就是“y”属性。由于这是移动应用程序,因此设备将处于纵向或横向模式(状态)。我不想让那些状态的用户只将这个新属性应用到他们所处的状态。

<s:BorderContainer id="appMenu"
                   borderVisible="false"
                   width="100%" 
                   height="120" 
                   y="-120"  
                   y.panelVisible="0" 
                   backgroundColor="0"
                   >
    <s:HGroup right="10" verticalCenter="0">
        <s:Label text="Feedback" 
                 color="#ffffff" 
                 fontSize="18" 
                 fontWeight="bold"/>
    </s:HGroup>
</s:BorderContainer>

1 个答案:

答案 0 :(得分:1)

您的问题有两种可能的答案。

如果“面板”状态只有其他两个状态,那么您只需要以下内容:

<s:states>
    <s:State name="portrait" stateGroups="panel" />
    <s:State name="landscape" stateGroups="panel" />
    <s:State name="someOtherState" />
</s:states>

另一方面,如果“面板”状态中还包含其他内容,那么它可能看起来更像:

<s:states>
    <s:State name="portrait" stateGroups="panel" />
    <s:State name="landscape" stateGroups="panel" />
    <s:State name="justThePanel" stateGroups="panel" />
    <s:State name="someOtherState" />
</s:states>

如果你现在有

<s:Group id="a" includeIn="portrait" />
<s:Group id="b" includeIn="landscape" />
<s:Group id="c" includeIn="someOtherState" />
<s:Group id="d" includeIn="panel" />
<s:Group id="e" />

然后

    始终显示
  • e
  • a仅以“纵向”状态显示
  • b仅以“横向”状态显示
  • c仅显示在'someOtherState'状态
  • d以'portrait','landscape'和'justThePanel'状态显示(因为所有这三个都是'panel'stateGroup的成员)