Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92056
  • 博文数量: 41
  • 博客积分: 2650
  • 博客等级: 少校
  • 技术积分: 680
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-23 16:26
文章分类

全部博文(41)

文章存档

2011年(1)

2008年(40)

我的朋友

分类:

2008-06-24 15:22:46

 一个导航容器可以通过一组子容器来监控用户的操作。比如,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容器

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

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

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

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

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

 

<!-- containers\navigators\VSLinkEffects.mxml -->
 <mx:Application xmlns:mx="">
   <mx:WipeUp id="myWU" duration="300"/>
   <mx:WipeDown id="myWD" duration="300"/>
   <mx:WipeRight id="myWR" duration="300"/>
   <mx:VBox>
     <mx:LinkBar dataProvider="{myViewStack}"
       borderStyle="solid"
       backgroundColor="#EEEEFF"/>
       <mx:ViewStack id="myViewStack"
            borderStyle="solid"
            width="100%"
            creationCompleteEffect="{myWR}">
      <mx:Canvas id="search"
          label="Search"
          hideEffect="{myWD}"
          showEffect="{myWU}">
       <mx:Label text="Search Screen"/>
     </mx:Canvas>
     <mx:Canvas id="custInfo"
         label="Customer Info"
         hideEffect="{myWD}"
         showEffect="{myWU}">
      <mx:Label text="Customer Info"/>
     </mx:Canvas>
     <mx:Canvas id="accountInfo"
         label="Account Info"
         hideEffect="{myWD}"
         showEffect="{myWU}">
       <mx:Label text="Account Info"/>
    </mx:Canvas>
  </mx:ViewStack>
 </mx:VBox>
</mx:Application>

效果图:

2.           TabNavigator导航容器

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

创建TabNavigator容器

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

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

举例:

 

<?xml version="1.0"?>
<!-- containers\navigators\TNEffect.mxml -->
  <mx:Application xmlns:mx="">
    <mx:WipeLeft id="myWL"/>
    <mx:TabNavigator>
     <mx:VBox label="Accounts"
      width="300"
       height="150"
       showEffect="{myWL}">
    <!-- Accounts view goes here. -->
    <mx:Text text="This is a text control."/>
  </mx:VBox>
  <mx:VBox label="Stocks"
      width="300"
      height="150"
      showEffect="{myWL}">
       <!-- Stocks view goes here. -->
       <mx:Text text="This is a text control."/>
  </mx:VBox>
  <mx:VBox label="Futures"
      width="300"
      height="150"
       showEffect="{myWL}">
         <!-- Futures view goes here. -->
     <mx:Text text="This is a text control."/>
 </mx:VBox>
 </mx:TabNavigator>
</mx:Application>

效果如图:

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

 

3.           Accordion导航容器

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

创建Accordion容器

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

 

 

<?xml version="1.0"?>
<!-- containers\navigators\AccordionButtonNav.mxml -->
<mx:Application xmlns:mx="" width="600"
    height="600"
    creationComplete="setButtonStyles();">
<mx:Script>
    <![CDATA[
     public function setButtonStyles():void {
      comp.getHeaderAt(0).setStyle('color', 0xAA0000);
      comp.getHeaderAt(1).setStyle('color', 0x00AA00);
  }
      ]]>
</mx:Script>
<mx:Accordion id="comp" height="250">
     <mx:Form id="shippingAddress" label="1. Shipping Address">
        <mx:FormItem id="sfirstNameItem" label="First Name">
        <mx:TextInput id="sfirstName"/>
        </mx:FormItem>
     </mx:Form>
       <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>
     <mx:Form id="creditCardInfo" label="3. Credit Card Information">
     </mx:Form>
 </mx:Accordion>
</mx:Application>

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

<mx:Button id="lastButton" label="Last" click="accordion1.selectedIndex = accordion1.numChildren - 1;"/>

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

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

效果图:

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

 

阅读(851) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~