技术前沿 解析Flex4beta状态语法中的变化

开发 后端
本文向大家简单介绍一下Flex4beta状态语法中的变化,Flex4beta将状态功能升级为一个全面的MXML语言功能。希望本文的介绍能让你有所收获。

在学习Flex4beta的过程中你可能会遇到Flex4beta状态语法中的变化方面的问题,这里和大家分享一下,相信本文介绍一定会让你有所收获。

Flex4beta状态语法中的变化

Flex4beta将状态功能升级为一个全面的MXML语言功能。因此,您可能会发现状态更灵活、更直接。新的状态语法内联程度更高,允许在上下文中指定状态特定变化。以下是Flex4beta语法中的主要区别:

◆只有状态是在状态阵列中定义的。

◆在新的状态语法中,不能使用AddChild和RemoveChild。您必须使用includeIn和excludeFrom属性在组件上定义组件在特定状态中的角色。

在以下Flex3示例中,仅当文档的currentState为submitState时,才使用状态包含一个Button并删除一个TextInput。对于较复杂的状态,这种方法可以做到十分详细。

  1. <mx:states> 
  2. <mx:Statenamemx:Statename="submitState"basedOn=""> 
  3. <mx:AddChildrelativeTomx:AddChildrelativeTo="{loginForm}"> 
  4. <mx:Buttonlabelmx:Buttonlabel="submit"bottom="10"right="10"/> 
  5. </mx:AddChild><mx:RemoveChildtargetmx:RemoveChildtarget="{firstTextInput}"/> 
  6. </mx:State></mx:states 
  7. <mx:TextInputidmx:TextInputid="firstTextInput"/> 
  8. <mx:Canvasidmx:Canvasid="loginForm"/> 

以下是一段使用includeIn和excludeFrom、更简单的Flex4beta代码。 

  1. <s:states> 
  2. <s:Statenames:Statename="submitState"/> 
  3. </s:states><s:TextInputids:TextInputid="firstTextInput"excludeFrom="submitState"/> 
  4. <s:Groupids:Groupid="loginForm"> 
  5. <s:Buttonlabels:Buttonlabel="submit"bottom="10"right="10"includeIn="submitState"/> 
  6. </s:Group> 

◆SetProperty、SetStyle和SetEventHandler已替换为新的点语法,它允许您限定具备特定状态标识符的MXML属性值。

在以下Flex3示例中,代码为submitState中的一个Button定义了属性、样式和事件。

  1. <mx:states><mx:Statenamemx:Statename="submitState"basedOn=""> 
  2.  
  3. <mx:SetPropertytargetmx:SetPropertytarget="{submitButton}"name="label"value="submit"/> 
  4.  
  5. <mx:SetStyletargetmx:SetStyletarget="{submitButton}"name="textDecoration"value="underline"/> 
  6.  
  7. <mx:SetEventHandlertargetmx:SetEventHandlertarget="{submitButton}"name="click"  
  8. handler="trace('done');"/> 
  9.  
  10. </mx:State><mx:Statenamemx:Statename="clearState"basedOn=""> 
  11.  
  12. <mx:SetPropertytargetmx:SetPropertytarget="{submitButton}"name="label"  
  13. value="clear"/> 
  14.  
  15. <mx:SetEventHandlertargetmx:SetEventHandlertarget="{submitButton}"name="click"  
  16. handler="emptyDocument()"/> 
  17.  
  18. </mx:State></mx:states> 
  19.  
  20. <mx:Buttonidmx:Buttonid="submitButton"/> 
  21.  

在Flex4beta中,代码如下:

  1. <s:states> 
  2. <s:Statenames:Statename="submitState"/> 
  3. <s:Statenames:Statename="clearState"/> 
  4. </s:states><s:Buttonlabel.submitStates:Buttonlabel.submitState="submit" 
  5. textDecoration.submitState="underline"click.submitState="trace('done')  
  6. "click.clearState="emptyDocument()  
  7. "label.clearState="clear"textDecoration.clearState="none"/> 

◆组件不能再处于未定义状态或空状态。默认情况下,声明的***个状态是组件的初始状态。

当文档使用MXML2009语言名称空间时,可以使用新语法。可以混合使用旧版语法和新版状态语法。只有MXML2006名称空间中可以使用旧版语法。
此外,各个组件现在支持外观类中定义的一组状态,这使得根据组件状态应用可视变化更加简单。例如,如果查看SparkButton的外观,您会发现已定义以下状态:

  1. <s:states> 
  2. <s:Statenames:Statename="up"/> 
  3. <s:Statenames:Statename="over"/> 
  4. <s:Statenames:Statename="down"/> 
  5. <s:Statenames:Statename="disabled"/> 
  6. </s:states> 

ButtonSkin类定义了各个状态中SparkButton在可视方面的变化。

以上只是简要介绍了新的Flex4beta状态语法。有关更多详细信息,请参阅增强的状态语法规范*。

【编辑推荐】

  1. Flex4beta的Spark布局特性解析
  2. 技术前沿 剖析Flex4beta效果中的变化
  3. Flex module用法指南
  4. Flex4Beta引入新元素功能更强大
  5. FlexBuilder开发方法及特点解析 

 

责任编辑:佚名 来源: cnblogs.com
相关推荐

2010-08-09 12:59:15

Flex4beta

2010-08-09 12:53:15

Flex4beta

2010-07-27 10:32:41

Flex4beta

2010-08-09 09:09:43

Flex技术

2010-08-11 12:50:04

Flex4

2010-07-27 09:55:52

Flex4

2010-08-10 15:55:20

FlexHTML页面

2010-08-09 12:47:00

Flex4beta

2010-07-29 09:08:20

Flex客户端缓存

2010-07-30 15:35:11

Flex结合

2010-08-10 15:38:32

Flex2.0

2010-08-04 16:24:08

FlexSDK4

2010-07-29 17:26:54

Flex富客户端技术

2010-06-30 16:52:23

UML数据建模

2010-07-27 09:37:44

Flex

2010-09-27 15:26:17

JVM for Lin

2014-08-08 15:36:39

Apdex

2010-08-02 11:26:21

Flex4

2010-08-13 10:30:30

Flex4

2010-07-27 10:03:57

Flex4
点赞
收藏

51CTO技术栈公众号