有人可以解释新状态如何在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>
如果你需要“目标”代码,请告诉我们。
答案 0 :(得分: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" ... />
基本上,您使用includeIn
和excludeFrom
特殊属性而不是旧的RemoveChild
和AddChild
标记。请注意,由于只有2个州,includeIn="menu"
和excludeFrom="login"
具有完全相同的效果
还可以根据当前状态设置属性,例如:
<v:MyComp left.login="0" left.menu="25"/>
答案 1 :(得分: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"/>
您可以在Adobe 4.6 Create and apply view states
的Adobe帮助页面上阅读有关状态的更多信息