mx.states
public class State
继承State Inheritance EventDispatcher Inheritance Object

State 类定义视图状态,即组件的特定视图。例如,产品缩略图可以有两个视图状态,包含最少信息的基本视图状态和包含附加信息的丰富视图状态。overrides 属性指定一组要添加到基本视图状态或从基本视图状态中删除的子类,以及当视图状态有效时要设置的属性、样式和事件处理函数。

可以在 Flex 组件的 states 属性中使用 State 类。只能在应用程序或自定义控件的根中指定 states 属性,而不能在子控件中指定。

可通过设置组件的 currentState 属性来启用视图状态。

MXML 语法expanded隐藏 MXML 语法

The <mx:State> tag has the following attributes:

  <mx:State
  Properties
  basedOn="null"
  name="null"
  overrides="null"
  />
  

默认 MXML 属性overrides

查看示例

另请参见

mx.states.AddChild
mx.states.RemoveChild
mx.states.SetEventHandler
mx.states.SetProperty
mx.states.SetStyle
mx.states.Transition


公共属性
 属性定义方
  basedOn : String
该视图状态所基于的视图状态的名称;如果该视图状态不是基于已命名的视图状态,则为 null。
State
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  name : String
视图状态的名称。
State
  overrides : Array
该视图状态的覆盖,表现为实现 IOverride 接口的对象的数组。
State
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
构造函数。
State
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  在进入视图状态时调度。State
  在退出视图状态之前调度。State
属性详细信息
basedOn属性
public var basedOn:String

该视图状态所基于的视图状态的名称;如果该视图状态不是基于已命名的视图状态,则为 null。如果该值为 null,则该视图状态基于根状态(包括不是使用 State 类为组件定义的属性、样式、事件处理函数和子项)。

默认值为 null.

name属性 
public var name:String

视图状态的名称。给定组件的状态名称必须唯一。必须设置此属性。

overrides属性 
public var overrides:Array

该视图状态的覆盖,表现为实现 IOverride 接口的对象的数组。这些覆盖在进入状态时按顺序应用,在退出状态时按相反的顺序删除。

以下 Flex 类实现 IOverride 接口,并可用来定义视图状态特性:

overrides 属性是 State 类的默认属性。如果使用 MXML 标签语法来定义覆盖,则可以省略 <mx:overrides> 标签及其子 <mx:Array> 标签。

构造函数详细信息
State()构造函数
public function State()

构造函数。

事件详细信息
enterState 事件
事件对象类型: mx.events.FlexEvent
属性 FlexEvent.type = mx.events.FlexEvent.ENTER_STATE

在进入视图状态时调度。在应用基本视图状态的更改之后调度该事件。

FlexEvent.ENTER_STATE 常数可为 enterState 事件定义事件对象的 type 属性值。

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
exitState 事件  
事件对象类型: mx.events.FlexEvent
属性 FlexEvent.type = mx.events.FlexEvent.EXIT_STATE

在退出视图状态之前调度。在删除基本视图状态的更改之前调度该事件。

FlexEvent.EXIT_STATE 常数可为 exitState 事件定义事件对象的 type 属性值。

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
示例 如何使用示例
StatesExample.mxml
<?xml version="1.0" ?>
<!-- Simple example to demonstrate the States class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <!-- Define one view state, in addition to the base state.-->
    <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>

    <!-- Define a Panel container that defines the login form.-->
    <mx:Panel title="Login" id="loginPanel" 
        horizontalScrollPolicy="off" verticalScrollPolicy="off"
        paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">

        <mx:Text width="100%" color="blue"
            text="Click the 'Need to Register?' link to change state. Click the 'Return to Login' link to return to the base state."/>

        <mx:Form id="loginForm" >
            <mx:FormItem label="Username:">
                <mx:TextInput/>
            </mx:FormItem>
            <mx:FormItem label="Password:">
                <mx:TextInput/>
            </mx:FormItem>
        </mx:Form>
        <mx:ControlBar>
            <mx:LinkButton id="registerLink"  label="Need to Register?"
                click="currentState='Register'"/>
            <mx:Spacer width="100%" id="spacer1"/>
            <mx:Button label="Login" id="loginButton"/>
        </mx:ControlBar>
    </mx:Panel>
</mx:Application>