加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex中的导航器

发布时间:2020-12-15 04:06:27 所属栏目:百科 来源:网络整理
导读:? 一个导航容器可 以通过一组子容器来监控用户的操作。比如,TabNavigator?这个容器就可以通过一组tabs?来让用户选择可见的子容器。Flex3?提供了三种主要的导航容器: ????????ViewStack ????????TabNavigator ????????Accordion 接下来的时间逐 个介绍每个
?

一个导航容器可 以通过一组子容器来监控用户的操作。比如,TabNavigator?这个容器就可以通过一组tabs?来让用户选择可见的子容器。Flex3?提供了三种主要的导航容器:

????????ViewStack

????????TabNavigator

????????Accordion

接下来的时间逐 个介绍每个容器的使用方法。

1.???????????ViewStack?导航容器

? ViewStack?导航容器,以下简称VS?容器。是由很多子容器组合起来的,这些子容器相互叠在彼此之上,并且在某一特定的时间内只有一个容器是可见的或者说是Active?状态的。VS?容器没有定义?built-in?的机制来切换当前处于active?状态的容器,所以用户需要使用像LinkBar,TabBar?或者ToggleButtonBar?这些控件,或者使用ActionScript?来更改当前可见容器的状态。比你可以定义一系列的按钮来控制所有子容器的切换动作。

图中 左边的图片显示VS?容器中第一个子容器是激活的,可以用索引的方法来表示VS?容器里面的子容器。比如0-?(n-1?).

创建一个VS?容器

??使用<mx:ViewStack>?标记就可以定义一个VS?容器,当然还可以设定很多属性了:

????????selectedIndex?表示如果VS?容器里里面有多余一个的子容器,那么selectedIndex?的值所对应的那个子容器就是active?的可见的。其取值范围0?到n-1.n?代表子容器的个数。

????????selectedChild?当前激活的容器当定义了一个或者多个子容器,如果没有定义子容器,其值为null?。并且这个属性必须是现在AS?当中指定你要激活的那个容器的id.

????????numChildren?值VS?容器当中到底有多少个子容器。

举 例:我们试图增加一些特效。

Xml代码?
  1. <!--?containers/navigators/VSLinkEffects.mxml?-->???
  2. ?<?mx:Application???xmlns:mx?=?"http://www.adobe.com/2006/mxml"?>???
  3. ???mx:WipeUp???id?=?"myWU"???duration?=?"300"?/>???
  4. ???mx:WipeDown???id?=?"myWD"???duration?=?"300"?mx:WipeRight???id?=?"myWR"???duration?=?"300"?/>???
  5. ???mx:VBox?>???
  6. ?????mx:LinkBar???dataProvider?=?"{myViewStack}"???
  7. ???????borderStyle?=?"solid"???
  8. ???????backgroundColor?=?"#EEEEFF"?/>???
  9. ???????mx:ViewStack???id?=?"myViewStack"???
  10. ????????????borderStyle?=?"solid"???
  11. ????????????width?=?"100%"???
  12. ????????????creationCompleteEffect?=?"{myWR}"?>???
  13. ??????mx:Canvas???id?=?"search"???
  14. ??????????label?=?"Search"???
  15. ??????????hideEffect?=?"{myWD}"???
  16. ??????????showEffect?=?"{myWU}"?>???
  17. ???????mx:Label???text?=?"Search?Screen"?/>???
  18. ?????</?mx:Canvas?mx:Canvas???id?=?"custInfo"???
  19. ?????????label?=?"Customer?Info"???
  20. ?????????hideEffect?=?"{myWD}"???
  21. ?????????showEffect?=?"{myWU}"?mx:Label???text?=?"Customer?Info"?mx:Canvas???id?=?"accountInfo"???
  22. ?????????label?=?"Account?Info"???
  23. ?????????hideEffect?=?"{myWD}"???
  24. ?????????showEffect?=?"{myWU}"?mx:Label???text?=?"Account?Info"?/>???
  25. ????>???
  26. ??mx:ViewStack?>???
  27. ?>???
  28. mx:Application?>???
[xml]?view plaincopy
  1. <!--?containers/navigators/VSLinkEffects.mxml?-->??
  2. ?<mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml">??
  3. ???mx:WipeUp?id="myWU"?duration="300"/>??
  4. ???mx:WipeDown?id="myWD"?duration="300"/>??
  5. ???mx:WipeRight?id="myWR"?duration="300"/>??
  6. ???mx:VBox>??
  7. ?????mx:LinkBar?dataProvider="{myViewStack}"??
  8. ???????borderStyle="solid"??
  9. ???????backgroundColor="#EEEEFF"/>??
  10. ???????mx:ViewStack?id="myViewStack"??
  11. ????????????borderStyle="solid"??
  12. ????????????width="100%"??
  13. ????????????creationCompleteEffect="{myWR}">??
  14. ??????mx:Canvas?id="search"??
  15. ??????????label="Search"??
  16. ??????????hideEffect="{myWD}"??
  17. ??????????showEffect="{myWU}">??
  18. ???????mx:Label?text="Search?Screen"/>??
  19. ?????</mx:Canvas>??
  20. ?????mx:Canvas?id="custInfo"??
  21. ?????????label="Customer?Info"??
  22. ?????????hideEffect="{myWD}"??
  23. ?????????showEffect="{myWU}"mx:Label?text="Customer?Info"mx:Canvas?id="accountInfo"??
  24. ?????????label="Account?Info"??
  25. ?????????hideEffect="{myWD}"??
  26. ?????????showEffect="{myWU}"mx:Label?text="Account?Info"/>??
  27. ????>??
  28. ??mx:ViewStack>??
  29. ?>??
  30. mx:Application>??
?

效果图:

2.???????????TabNavigator?导航容器

TabNavigator?容器用来创建和管理一组tabs?,这些tabs?可以帮用户导航选择需要的子容器板块。

创建TabNavigator?容器

你可以通过<mx:TabNavigator>?标记来定义个TabNavigator?容器。用户可以通过tab?选择对应的板块容器。当用户改变当前容器时,?TabNavigator?容器都会触发一个change?事件。

TabNavigator?容器会自动为每一个子容器创建一个tab,?并且通过label?属性设定tab?里面的值。当然你可以指定图片等。用户还可以设定enable disable?属性来决定那个容器可用与否。

举例:

?

Xml代 码?
  1. <??xml???version?=?"1.0"??>???
  2. <!--?containers/navigators/TNEffect.mxml?-->???
  3. ??>???
  4. ????mx:WipeLeft???id?=?"myWL"?mx:TabNavigator?mx:VBox???label?=?"Accounts"???
  5. ??????width?=?"300"???
  6. ???????height?=?"150"???
  7. ???????showEffect?=?"{myWL}"?>???
  8. ????<!--?Accounts?view?goes?here.?-->???
  9. ????mx:Text???text?=?"This?is?a?text?control."?/>???
  10. ??>???
  11. ??mx:VBox???label?=?"Stocks"???
  12. ??????width?=?"300"???
  13. ??????height?=?"150"???
  14. ??????showEffect?=?"{myWL}"?>???
  15. ???????<!--?Stocks?view?goes?here.?-->???
  16. ???????mx:VBox???label?=?"Futures"???
  17. ??????width?=?"300"???
  18. ??????height?=?"150"???
  19. ???????showEffect?=?"{myWL}"?>???
  20. ?????????<!--?Futures?view?goes?here.?-->???
  21. ?????/>???
  22. ?
  23. <?xml?version="1.0"?>??
  24. <!--?containers/navigators/TNEffect.mxml?-->??
  25. ??>??
  26. ????mx:WipeLeft?id="myWL"mx:TabNavigatormx:VBox?label="Accounts"??
  27. ??????width="300"??
  28. ???????height="150"??
  29. ???????showEffect="{myWL}">??
  30. ????<!--?Accounts?view?goes?here.?-->??
  31. ????mx:Text?text="This?is?a?text?control."/>??
  32. ??>??
  33. ??mx:VBox?label="Stocks"??
  34. ??????width="300"??
  35. ??????height="150"??
  36. ??????showEffect="{myWL}">??
  37. ???????<!--?Stocks?view?goes?here.?-->??
  38. ???????/>??
  39. ??>??
  40. ??mx:VBox?label="Futures"??
  41. ??????width="300"??
  42. ??????height="150"??
  43. ???????showEffect="{myWL}">??
  44. ?????????<!--?Futures?view?goes?here.?-->??
  45. ?????/>??
  46. ?>??
?

效果如图:

TabNavigator?支持键盘导航功能,即可以通过键盘来选择tabs.?具体可以参考development guide.

?

3.???????????Accordion?导航容器

窗体 是很常见的容器了,可是有时候组件很多一个窗体放不下,accordion?就提供了一个可以来回移动的窗体。这个容器可以包含一系列的子panels?。但是任意时刻都只有一个panel?是可见的。

创建Accordion?容器

你可 以使用<mx:Accordion>?标记来创建这个容器。举例说明:

?

?

?

Xml代码?
    <!--?containers/navigators/AccordionButtonNav.mxml?-->???
  1. mx:Application???xmlns:mx?=?"http://www.adobe.com/2006/mxml"???width?=?"600"???
  2. ????height?=?"600"???
  3. ????creationComplete?=?"setButtonStyles();"?>???
  4. mx:Script?>???
  5. ????<![CDATA[??
  6. ?????public?function?setButtonStyles():void?{??
  7. ??????comp.getHeaderAt(0).setStyle('color',?0xAA0000);??
  8. ??????comp.getHeaderAt(1).setStyle('color',?0x00AA00);??
  9. ??}??
  10. ??????]]>???
  11. >???
  12. mx:Accordion???id?=?"comp"???height?=?"250"?>???
  13. ?????mx:Form???id?=?"shippingAddress"???label?=?"1.?Shipping?Address"?>???
  14. ????????mx:FormItem???id?=?"sfirstNameItem"???label?=?"First?Name"?mx:TextInput???id?=?"sfirstName"?/>???
  15. ????????mx:FormItem?>???
  16. ?????mx:Form?>???
  17. ???????mx:Form???id?=?"billingAddress"???label?=?"2.?Billing?Address"?mx:Button???id?=?"backButton"???label?=?"Back"???click?=?"comp.selectedIndex=0;"mx:Button???id?=?"nextButton"???label?=?"Next"???click?=?"comp.selectedIndex=2;"mx:Form???id?=?"creditCardInfo"???label?=?"3.?Credit?Card?Information"?>???
  18. ?????mx:Accordion?<!--?containers/navigators/AccordionButtonNav.mxml?-->??
  19. mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?width="600"??
  20. ????height="600"??
  21. ????creationComplete="setButtonStyles();">??
  22. mx:Script>??
  23. ????<![CDATA[?
  24. ?????public?function?setButtonStyles():void?{?
  25. ??}?
  26. ??????]]>??
  27. >??
  28. mx:Accordion?id="comp"?height="250">??
  29. ?????mx:Form?id="shippingAddress"?label="1.?Shipping?Address">??
  30. ????????mx:FormItem?id="sfirstNameItem"?label="First?Name">??
  31. ????????mx:TextInput?id="sfirstName"/>??
  32. ????????mx:FormItem>??
  33. ?????mx:Form>??
  34. ???????mx:Form?id="billingAddress"?label="2.?Billing?Address">??
  35. ???????mx:Button?id="backButton"?label="Back"?click="comp.selectedIndex=0;"mx:Button?id="nextButton"?label="Next"?click="comp.selectedIndex=2;"mx:Form?id="creditCardInfo"?label="3.?Credit?Card?Information">??
  36. ?????>??
  37. ?mx:Accordion>??
  38. >??

?我们增加了一些效果。比如用户通过按钮可以选择那个panel?是可见的。

Xml代码?
    mx:Button???id?=?"lastButton"???label?=?"Last"???click?="accordion1.selectedIndex?=?accordion1.numChildren?-?1;"?/>???
[xml]?mx:Button?id="lastButton"?label="Last"?click="accordion1.selectedIndex?=?accordion1.numChildren?-?1;"/>??
?

这段程序就可以 打开最后一个?panel.

同时还可以设定 每个?panels?的外观,包括字体、颜色等。

效果图:

当然?Accordion?也有键盘导航功能。具体参考?development guide.

4、?导航容器ApplicationControlBar

主要用来作页面顶部的导航条:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读