一、简介:
States是一套用于创建状态视图的强大工具,也就是说组件可以有多个视图。所有的UICompnent都可以添加一个或多个State到states数组中,可以通过状态增加或删除子组件。也可以改变组件的样式、特效等。
二、通过State设置组件的样式:
定义State,通过SetProperty与setStyle来改变组件的样式,如:
<State name="s">
<mx:SetProperty target="{组件}" name="属性名" value="改变的值" />
<mx:SetStyle target="{组件}" name="属性名" value="改变的值" />
</State>
三、通过定义Transitions在改变state时运用特效:
<mx:transitions id="tr" fromState="开始State" toState="变化后的State" effect="{特效}" />
formState: 就是初使状态(可以是*,表示所有)
toState:变化后的状态(可以是*,表示所有)
表示当组件的状态改变时,播放指定的特效
四、为特定的子节点过滤Transitions:
使用EffectTargetFilter对象。如:
filter.filterFunction = a();
public function a(p:Array,target:Object):Boolean{
if(target is HBox){return true;}return false;
}
五、建立State之上的State:
<mx:State name="st" baseOn="baseOnState" />
st状态与baseOnState状态都同时调用相同的baseOnState的内容,baseOnState先调用,st状态后调用,类似于父子类的关系。
六、用HistoryManager来管理历史纪录
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
implements="mx.managers.IHistoryManagementClient"
initialize="mx.managers.HistoryManager.register(this);">
还需要实现IHistoryManagementClient的saveState()与loadSatet方法来完成组件的注册。扩展UICompnent的组件会自动继承loadState()方法。
感觉State最大的用途就是当前发生某事件时,改变组件的状态视图显示不用的组件或样式更方便的进行操作与改善用户体验。