FLEX中的VIEW STATES

FLEX中视图改变有很多种形式,可以跳转页面,也可以通过添加state控制,在当前页面进行控制。这里介绍mx:states(对应到as中试States 类)的使用。具体的使用在示例代码中介绍,本例是一个登陆/注册界面的转换,下面看代码:

 

 

 

  1. <? xml version = " 1.0 " ?>
  2.  
  3. < mx:Application   xmlns:mx = " http://www.adobe.com/2006/mxml " >
  4.  
  5.     <!-- 定义一个视图状态,用于向基态中添加-->
  6.     < mx:states >
  7.         < mx:State   name = " Register " > <!--状态名称-->
  8.             < mx:AddChild   relativeTo = " {loginForm} " position = " lastChild " > <!--把FormItem作为一个子组件添加到ID为loginForm的组件中,位置为该组件的最后-->
  9.                 < mx:target >
  10.                     < mx:FormItem   id = " confirm " label = " Confirm: " >
  11.                         < mx:TextInput />
  12.                     </ mx:FormItem >
  13.                 </ mx:target >
  14.             </ mx:AddChild >
  15.             < mx:SetProperty   target = " {loginPanel} " name = " title " value = " Register " /> <!--修改id值为loginPanel的组件的 title属性的值-->
  16.             < mx:SetProperty   target = " {loginButton} " name = " label " value = " Register " />
  17.             < mx:SetStyle   target = " {loginButton} "  
  18.                 name = " color "   value = " blue " />
  19.             < mx:RemoveChild   target = " {registerLink} " /> > <!--删除id值为registerLink的组件-->
  20.  
  21.             < mx:AddChild   relativeTo = " {spacer1} " position = " before " > <!--增加子级在id为spacer1的组件之前-->
  22.                 < mx:target >
  23.                     < mx:LinkButton   id = " loginLink " label = " Return to Login " click = " currentState='' " />
  24.                 </ mx:target >
  25.             </ mx:AddChild >
  26.         </ mx:State >
  27.     </ mx:states >
  28.  
  29.     <!-- Define a Panel container that defines the login form.-->
  30.     < mx:Panel   title = " Login " id = " loginPanel "  
  31.         horizontalScrollPolicy = " off "   verticalScrollPolicy = " off "
  32.         paddingTop = " 10 "   paddingLeft = " 10 " paddingRight = " 10 " paddingBottom = " 10 " >
  33.  
  34.         < mx:Text   width = " 100% " color = " blue "
  35.             text = " Click the 'Need to Register?' link to change state. Click the 'Return to Login' link to return to the base state. " />
  36.  
  37.         < mx:Form   id = " loginForm " >
  38.             < mx:FormItem   label = " Username: " >
  39.                 < mx:TextInput />
  40.             </ mx:FormItem >
  41.             < mx:FormItem   label = " Password: " >
  42.                 < mx:TextInput />
  43.             </ mx:FormItem >
  44.         </ mx:Form >
  45.         < mx:ControlBar >
  46.             < mx:LinkButton   id = " registerLink "   label = " Need to Register? "
  47.                 click = " currentState='Register' " />
  48.             < mx:Spacer   width = " 100% " id = " spacer1 " />
  49.             < mx:Button   label = " Login " id = " loginButton " />
  50.         </ mx:ControlBar >
  51.     </ mx:Panel >
  52. </ mx:Application >

详细说一下mx:AddChild 有六个属性 其中id不说了

  • relativeTo :相对于其添加子项的对象;
  • target :要添加的子级;
  • position :显示列表中子项的位置,随 relativeTo 属性指定的对象而变化。有效值为 “before”、”after”、”firstChild” 和 “lastChild”。 默认值为“lastChild”。
  • creationPolicy :该子级的创建策略。该属性确定 targetFactory 将在何时创建该子级的实例。仅当指定 targetFactory 属性时,Flex 才使用该属性。以下是有效值:
    值 意义
    auto (默认)在第一次需要实例时创建实例。
    all 在应用程序启动时创建实例。
    none 不自动创建实例。必须调用 createInstance() 方法来创建该实例。
    默认值为 “auto”.
  • targetFactory :创建子级的 factory。可以指定以下任一项目:
    1实现 IDeferredInstance 接口并创建一个或多个子实例的 factory 类。
    2Flex 组件(即任何为 UIComponent 类的子类的类),如 Button 控件。如果使用 Flex 组件,Flex 编译器会自动将该组件包装到 factory 类中。
    如果设置了该属性,子级将在由 creationPolicy 属性确定的时间实例化。
    如果设置了 target 属性,则不要设置该属性。该属性是 AddChild 类默认属性。设置该属性并将 creationPolicy 设置为“all”等同于设置 target 属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值