`
全能骑士
  • 浏览: 68761 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex States 视图状态

    博客分类:
  • FLEX
阅读更多
    Flex States可以为组件定义多个视图状态,每一个视图状态为一个State,可以在 Flex 组件的 states 属性中使用 State 类。只能在应用程序或自定义控件的根中指定states 属性,而不能在子控件中指定。可通过设置组件的 currentState 属性来启用视图状态。

Flex States功能使用的类在mx.states.*包中:如下
接口
IOverride        该接口用于视图状态覆盖。


 
AddChild         将子显示对象(如组件)作为视图状态的一部分添加到容器。

RemoveChild      将子显示对象(如组件)作为视图状态的一部分从容器中删除。
SetEventHandler  类指定只在特定视图状态期间才处于活动状态的事件处理函数。
SetProperty      类指定只在父视图状态期间有效的属性值。
SetStyle         类指定只在父视图状态期间有效的样式。
State            类定义视图状态,即组件的特定视图。
Transition       类定义了一组在响应视图状态更改时播放的效果。


State 视图状态类

首先看看使用State定义视图,进行组件的属性和样式设置以及添加删除子组件。

State类的默认属性overrides是一个IOverrides类型的数组,AddChild、
RemoveChild、SetEventHandler、SetStyle、SetProperty都是实现IOverride接口的类,可以作为State的默认属性overrides数组的成员。
例如:

<mx:states>
        <mx:State name="Register">
            <mx:AddChild relativeTo="{loginForm}" position="lastChild">
                <mx:target>
                    <mx:FormItem id="confirm" label="Confirm:">
                        <mx:TextInput/>
                    </mx:FormItem>
                </mx:target>
            </mx:AddChild>
            <mx:SetProperty target="{loginPanel}" name="title" value="Register"/>
            <mx:SetProperty target="{loginButton}" name="label" value="Register"/>
            <mx:SetStyle target="{loginButton}" 
                name="color" value="blue"/>
            <mx:RemoveChild target="{registerLink}"/>
            <mx:AddChild relativeTo="{spacer1}" position="before">
                <mx:target>
                    <mx:LinkButton id="loginLink" label="Return to Login" click="currentState=''"/>
                </mx:target>
            </mx:AddChild>
        </mx:State>
    </mx:states>


下面是5个实现了IOverride接口的视图状态行为的使用方法。
1.AddChild添加子组件,relativeTo指定相对于添加子组件的组件,position指定添加的位置,如果不指定默认为lastChild,position可以为firstChild,lastChild,before,after四个值中任意一个,这四个值基于relativeTo指定的子组件,可以确定要添加的子组件将会添加到何处。比如relativeTo="{spacer1}" position="before"将target指定的组件添加到spacer1的前面。

2.RemoveChild为移除子组件。通过target属性指定要移除的子组件即可。

3.SetProperty设置组件的属性。使用target属性指定子组件,name属性指定组件的属性名,value指定要设置的组件的属性的值。

4.同理SetStyle一样。

5.SetEventHandler设置子组件事件侦听器,target指定要进行侦听的目标对象,name指定要侦听的事件的类型,handlerFunction指定事件的处理函数,注意:设置的事件侦听仅仅在该视图状态(State)下有效,即当视图状态切换到其他时,将自动移除该目标对象target的事件类型name的侦听函数handlerFunction。




Transition 类

Transition 类定义了一组在响应视图状态更改时播放的效果。视图状态(State)定义了如何更改状态,而过渡(Transition)则定义了在状态更改过程中可视更改发生的顺序。 可使用 Transition 类的 toState 和 fromState 属性来指定触发过渡的状态更改。默认情况下,fromState 和 toState 属性均设置为“*”,表示将过渡应用到视图状态的任何更改。

effect是Transition的默认属性,其类型为IEffect,在视图过渡时将播放effect指定的效果。例如:

<mx:Transition id="toRegister" fromState="*" toState="Register">
            <mx:Sequence targets="{[loginPanel, registerLink, confirm, loginLink, spacer1]}">
                <mx:RemoveChildAction/>
                <mx:SetPropertyAction target="{loginPanel}" name="title"/>
                <mx:SetPropertyAction target="{loginButton}" name="label"/>
                <mx:SetStyleAction target="{loginButton}" name="color"/>
                <mx:Resize target="{loginPanel}"/>
                <mx:AddChildAction/>
            </mx:Sequence>
        </mx:Transition>



注意:AddChildAction仅指定了添加子组件在效果中的顺序和时间,并非State中AddChild一样定义要添加子组件到组件中。可以理解为State中的AddChild指定添加哪一个子组件到容器,AddChildAction指定该子组件在过渡时何时添加到组件中,比如上面的代码中,先移除State中定义的RemoveChild指定的子组件,然后设置title属性,接着设置登录按钮字体颜色,调整组件大小,最后才将State中AddChild指定要添加的子组件添加进来。


可以使用State的enterState事件和exitState事件侦听State的进入和退出。例如从A视图状态到B视图状态,则会先触发A视图状态的exitState事件和B视图状态的enterState事件。


可以自定义类,实现IOverride接口,将可以使用该类作为State的行为,只需要将该类的对象添加到State的默认属性overrides数组即可,使用如同AddChild,SetPropery。

IOverride接口定义如下
    apply(parent:UIComponent):void      应用覆盖
    initialize():void                  初始化覆盖
    remove(parent:UIComponent):void    删除覆盖。



可以自定义类,实现IEffect接口,将可以使用该类作为Transition的效果类,在指定的视图之间切换的时候播放该效果类。





分享到:
评论

相关推荐

    Flex使用视图状态(View States)笔记

    ### Flex使用视图状态(View States)笔记 #### 视图状态概述 视图状态(View States,简称VS)是Adobe Flex框架中一个非常实用的功能,它允许开发者根据用户的交互或程序的状态来动态地更改界面元素的外观和行为。...

    flex web工作流程图

    可以使用Flex的_states_功能来实现,根据用户操作或条件切换不同的视图状态。 8. **布局管理器**:Flex提供了几种布局管理器,如HorizontalLayout、VerticalLayout,用于自动调整组件的排列方式,确保工作流程图的...

    Flex 4的十大变化

    4. **View States改进**:Flex 4对视图状态进行了优化,简化了状态切换的语法,使得组件在不同状态下的显示和行为管理变得更加容易。新的`includeIn`和`excludeFrom`属性使得开发者可以更灵活地控制组件在哪些状态中...

    Flex 4 高级编程 Flex 4 高级编程

    4. **骨骼动画(Skinning and States)**:Flex 4 强化了组件的皮肤机制,通过定义不同状态(如normal、hover、down等),可以实现组件在不同交互下的动态变化,增强了用户体验。 5. **数据绑定和依赖注入**:Flex ...

    Flex4创建页面

    - 在Flex中,状态是通过 `&lt;s:states&gt;` 标签定义的。 - 每个状态都有一个唯一的名称,例如 `&lt;s:State name="Employees"/&gt;`。 - 这些状态定义了应用程序的不同视图,用户可以根据操作在这些视图间切换。 2. **状态...

    FLEX4_Flex4教程 - FLEX4从入门到精通,挺不错的值得一看

    4. **States和Transitions**:Flex4中的States和Transitions机制允许开发者轻松管理UI的不同状态,比如在不同视图之间切换,以及添加平滑的动画效果,提高用户体验。 5. **数据绑定**:Flex4的数据绑定功能使得UI...

    flex builder 4 help

    5. **States(状态)**:在Flex 4中,开发者可以为组件定义多种状态,如“normal”、“hover”、“selected”等,方便在不同情境下展示不同的界面效果。 6. **Effects(特效)**:Flex Builder 4支持ActionScript ...

    flex quick starts

    Adobe Flex 提供了一种非常实用的方法来管理这些界面变化——**视图状态**(View States)。通过视图状态,开发者能够轻松地为组件定义多种不同的视图,并且可以在这些视图之间进行平滑过渡,从而提高用户体验的同时...

    Flex中文参考手册

    6. **_states_ 和 _effects_**:Flex中的状态管理允许你根据应用程序的不同阶段或用户行为改变组件的外观和行为。 7. **移动开发**:Flex也可以用于开发移动应用程序,适应iOS和Android平台,使用Adobe AIR技术。 ...

    Flex_API的架构图

    8. **States**: Flex组件支持状态管理,允许根据不同的应用场景定义组件的不同状态,例如在不同屏幕尺寸或用户角色下的界面表现。 9. **Charts and Graphs**: Flex API还包含了丰富的图表组件,如条形图、饼图、...

    Flex4之控制状态转换以及产生动画特效【登录示例】

    ### Flex4之控制状态转换及产生动画特效详解 #### 一、引言 Flex4作为Adobe公司的开源框架,因其强大的跨平台能力与丰富的组件库,被广泛应用于开发复杂的富互联网应用(RIA)。本文将详细介绍如何利用Flex4实现登录...

    flex4 学习资料

    5. **_states_ 和 _transitions_**:Flex4中新增的状态管理机制,使得组件在不同状态间切换更加平滑,可以定义过渡效果(transitions)来实现动态视觉效果。 6. **Graphical Asset Creation**:包括位图、矢量图...

    flex 图片编辑器

    Flex的_states机制可以帮助管理不同状态下的UI和行为。 8. **数据绑定**:Flex支持双向数据绑定,这意味着UI组件的属性可以直接绑定到应用的模型数据,当数据改变时,UI会自动更新,反之亦然。这对于保持视图和模型...

    flex4学习资料

    4. **States和Effects**:Flex 4允许开发者轻松管理应用程序的不同状态,如视图状态,以及添加过渡效果。这部分内容可能解释了如何使用states和effects来实现动态UI变化。 5. **皮肤和样式**:Flex 4支持更高级的...

    Flex4实战源代码

    6. **States和Layouts**:Flex4中的状态管理(States)和布局管理(Layouts)功能也得到了加强,使得开发者能更方便地管理组件的不同状态和容器内的元素布局。 7. **高级动画支持**:Flex4提供了一个全新的动画框架...

    Flex4权威指南源代码

    7. **States和Transitions**:Flex 4引入的状态管理机制,允许开发者定义不同UI状态并平滑过渡,例如在不同视图之间切换时的动画效果。 8. ** Cairngorm、PureMVC等框架**:这些是常见的Flex 4 MVC框架,可以帮助...

    Flex4 电视墙效果

    9. **状态管理**:电视墙可能有多种状态,比如全屏模式、列表模式等,状态管理可以帮助切换和保存不同视图的状态。 10. **深度缓冲和层叠**:为了实现3D效果,可能需要利用Flex4的深度缓冲和层叠特性,让某些元素在...

    了解 flex State对象

    Flex State对象是Adobe Flex框架中的一个关键特性,它允许开发者管理应用程序的不同视图或界面状态。在Flex程序中,状态设计是一种强大的工具,用于根据用户的交互和应用需求动态地改变UI布局和组件行为。通过使用...

    Flex4.0中文API.rar

    5. ** States and Transitions**:状态管理和过渡效果是Flex 4.0的新特性,允许开发者定义组件在不同状态间的行为和动画效果,从而创建动态用户界面。 6. **Data Binding**:Flex 4.0的数据绑定机制更加灵活,支持...

Global site tag (gtag.js) - Google Analytics