包 | mx.states |
类 | public class State |
继承 | State EventDispatcher Object |
overrides
属性指定一组要添加到基本视图状态或从基本视图状态中删除的子类,以及当视图状态有效时要设置的属性、样式和事件处理函数。
可以在 Flex 组件的 states
属性中使用 State 类。只能在应用程序或自定义控件的根中指定 states
属性,而不能在子控件中指定。
可通过设置组件的 currentState
属性来启用视图状态。
The <mx:State>
tag has the following attributes:
<mx:State Properties basedOn="null" name="null" overrides="null" />
默认 MXML 属性overrides
另请参见
属性 | 定义方 | ||
---|---|---|---|
basedOn : String 该视图状态所基于的视图状态的名称;如果该视图状态不是基于已命名的视图状态,则为 null。 | State | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
name : String 视图状态的名称。 | State | ||
overrides : Array 该视图状态的覆盖,表现为实现 IOverride 接口的对象的数组。 | State | ||
prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object |
方法 | 定义方 | ||
---|---|---|---|
State() 构造函数。 | State | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
将事件调度到事件流中。 | EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher |
事件 | 摘要 | 定义方 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
[广播事件] 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
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
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。
|
<?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>