1

有人能解释一下新状态在 flex 4 中是如何工作的吗?我从 flex 3 迁移到 flex 4 时,我在状态代码中遇到了错误:

<s:states>

        <s:State name="login"/>
        <mx:RemoveChild target="{viewStack}" />
        <mx:RemoveChild target="{header}" />
        <mx:RemoveChild target="{footer}" />
        <mx:SetStyle target="{login}" name="verticalAlign" value="middle" />

        <s:State name="menu"/>
        <mx:RemoveChild target="{login}" />
        <mx:AddChild relativeTo="{null}" >
            <search:Drawer title="{resourceManager.getString('locale','mySearch')}" 
                           dockSide="left" 
                           backgroundAlpha="0.9" 
                           backgroundColor="#ccccff">
                <search:SearchContent />
            </search:Drawer>
        </mx:AddChild>

    </s:states>

如果您需要“目标”代码,请在此处说明。

4

2 回答 2

0

您显示的代码有点太短,无法为您提供确切的代码,但它应该看起来像这样:

<s:states>
    <s:State name="login"/>
    <s:State name="menu"/>
</s:states>

<mx:ViewStack id="viewStack" excludFrom="login" 
              paddingTop="15" width="100%" height="100%"/>

<s:HGroup id="header" excludeFrom="login" width="100%"/>
<s:HGroup id="footer" excludeFrom="login" width="100%" verticalAlign="bottom"/>

<mx:Box id="login" includeIn="login" width="100%" height="100%"
        horizontalAlign="center" verticalAlign="middle"/>

<search:Drawer includeIn="menu" ... />

基本上,您使用includeInandexcludeFrom特殊属性而不是旧的RemoveChildandAddChild标记。请注意,由于只有 2 个状态,includeIn="menu"并且excludeFrom="login"具有完全相同的效果。
还可以根据当前状态设置属性,例如:

<v:MyComp left.login="0" left.menu="25"/>
于 2013-01-08T12:47:16.247 回答
0

视图状态标签应该只包含如下状态:

    <s:states> 
        <s:State name="State1"/> 
        <s:State name="State2"/> 
        <s:State name="State3"/> 
    </s:states> 

然后,使用点 (.) 运算符为组件定义特定于状态的属性值:

propertyName.stateName

例如:

<s:Button label="Play" label.State2="Stop" label.State3="Paused"/>

您可以在 Flex 4.6创建和应用视图状态的 Adob​​e 帮助页面上阅读有关状态的更多信息

于 2013-01-08T12:48:33.223 回答