zoukankan      html  css  js  c++  java
  • flex>导航 小强斋

                                                                                      导航
    导航的作用是在不同的子组件之间相互切换的时候,能够保证顺利的操作运行和导向。

    ViewStack导航、Tab导航、Accordion

    一、 ViewStack导航设计
    ViewStack是一种可以灵活定义的导航,其各个子组件可以是任意形式的。同时,ViewStack导航没有为用户提供可以切换当前活动容器的导航组件,需要自行定义。

    1.1 创建ViewStack容器
    在Flex中,已经预置了ViewStack导航容器。通过标签<mx:ViewStack>可以创建一个ViewStack导航容器。切换当前活动容器的导航组件可以通过使用诸如LinkBar、TabBar、ButtonBar、或者ToggleButtonBar组件完成。

    main.mxml

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:lalo="lalo.*">
    	<mx:VBox>
    		<mx:HBox>
    			<mx:Button label="Flash" fontSize="12" click="vsInfo.selectedChild=infoFlash;"/>
    			<mx:Button label="Flex" fontSize="12" click="vsInfo.selectedChild=infoFlex;"/>
    			<mx:Button label="Adobe AIR" fontSize="12" click="vsInfo.selectedChild=infoAIR;"/>
    		</mx:HBox>
    		<mx:ViewStack id="vsInfo" width="300" height="500" fontSize="12">
    			<lalo:FlashInfo id="infoFlash"/>
    			<lalo:FlexInfo id="infoFlex"/>
    			<lalo:AIRInfo id="infoAIR"/>
    		</mx:ViewStack>
    	</mx:VBox>
    </mx:Application>

    AIRInfo(FlexInfo,FlashInfo类似)

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="300" width="500">
    	<mx:Text width="100%" height="100%">
    		<mx:text>
    			<![CDATA[
    Adobe® AIR™ 运行时使开发人员能够使用已经过验证的 Web 技术来构建可部署到桌面并跨操作系统运行的丰富互联网应用程序。
    Adobe AIR 提供一种激动人心的新方式, 可借助创新的、品牌的桌面应用程序吸引客户, 而无需对现有技术、人员或流程进行更改。
    			]]>
    		</mx:text>
    	</mx:Text>
    </mx:Canvas>
    

    AIRInfo

    1.2 实现不同子容器之间的传值
    在ViewStack导航中,最常用的功能就是当切换每个子容器的时候,能够互相的传送参数。传送参数的一般的做法是可以创建一个全局的静态类或者静态变量,把参数值暂时存放起来。

    main.mxml

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:lalo="lalo.*">
    	<mx:ViewStack id="vsPass" fontSize="12">
    		<lalo:PassValue id="passValue"/>
    		<lalo:ViewValue id="viewValue"/>
    	</mx:ViewStack>
    </mx:Application>
    

    PassValue.mxml

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
    			import mx.containers.ViewStack;
    			
    			private function btnPass_click():void
    			{
    				var modelLocator:ViewModelLocator = ViewModelLocator.getInstance();
    				modelLocator.param = txtParam.text;
    				
    				(ViewStack)(this.parent).selectedChild = 
    						(ViewStack)(this.parent).getChildByName("viewValue");
    			}
    		]]>
    	</mx:Script>
    	<mx:Form fontSize="12">
    		<mx:FormItem label="传递的参数值:">
    			<mx:TextInput id="txtParam"/>
    		</mx:FormItem>
    		<mx:FormItem>
    			<mx:Button id="btnPass" label="提交" click="btnPass_click()"/>
    		</mx:FormItem>
    	</mx:Form>
    </mx:Canvas>
    

    ViewValue.mxml

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
    	creationComplete="initApp()">
    	<mx:Script>
    		<![CDATA[
    			[Bindable]
    			private var modelLocator:ViewModelLocator = ViewModelLocator.getInstance();
    			
    			private function initApp():void
    			{
    				lbParam.text = "传递过来的参数值:" + modelLocator.param;
    			}
    		]]>
    	</mx:Script>
    	<mx:Label id="lbParam" fontSize="14" x="40" y="47"/>
    </mx:Canvas>
    

    ViewModelLocator.as

    package lalo {  public class ViewModelLocator  {   private static var instance:ViewModelLocator;      public function ViewModelLocator()   {    // 构造函数   }

      public static function getInstance() : ViewModelLocator   {    if (instance == null)    {     instance = new ViewModelLocator();    }        return instance;   }

      // 定义变量   public var param : String;  } }

    二、 标签导航设计
    标签导航又称选项卡导航,这种导航是通过管理若干个标签页,来切换子容器的。标签导航容器是ViewStack导航容器的子类,集成了ViewStack的诸多功能。

    2.1 使用TabNavigator导航容器
    在Flex中,提供了TabNavigator标签导航容器。使用标签<mx:TabNavigator>可以创建一个TabNavigator导航容器。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:lalo="lalo.*">
    	<mx:TabNavigator borderStyle="solid" fontSize="12">
    		<lalo:FlashInfo label="Flash"/>
    		<lalo:FlexInfo label="Flex"/>
    		<lalo:AIRInfo label="AIR"/>
    	</mx:TabNavigator>
    </mx:Application>

    2.2 动态添加TAB标签
    在TabNavigator导航容器的应用中,动态添加TAB标签是最常用的了。动态添加TAB标签是根据用户的操作,添加指定数量的TAB标签的数量。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.Label;
    			import mx.containers.Canvas;
    			
    			// 删除按钮单击事件
    			private function btnDelTab_click():void
    			{
    				// 移除TabNavigator组件中指定的标签页
    				myTab.removeChild((DisplayObject)(myTab.selectedChild));
    			}
    			
    			// 添加按钮单击事件
    			private function btnAddTab_click():void
    			{
    				// 添加TabNavigator组件中指定的标签页
    				addTab(txtTitle.text, txtContent.htmlText);
    			}
    			
    			// 添加标签页
    			private function addTab(tabLabel:String, tabText:String):void
    			{
    				// 创建Canvas对象
    				var canvas:Canvas = new Canvas();
    				// 设置Canvas对象的标签属性
    				canvas.label = tabLabel;
    				// 创建Label对象
    				var label:Label = new Label();
    				// 设置Label对象的超文本内容
    				label.htmlText = tabText;
    				// 添加Label对象到canvas中
    				canvas.addChild(label);
    				// 添加canvas对象到TabNavigator组件中
    				myTab.addChild(canvas);
    			}
    		]]>
    	</mx:Script>
    	<mx:HBox fontSize="12">
    		<mx:Form>
    			<mx:FormItem label="题目:">
    				<mx:TextInput id="txtTitle"/>
    			</mx:FormItem>
    			<mx:FormItem label="内容:">
    				<mx:TextArea height="200" id="txtContent"/>
    			</mx:FormItem>
    			<mx:Form>
    				<mx:HBox>
    					<mx:Button label="添加" click="btnAddTab_click()"/>
    					<mx:Button label="删除" click="btnDelTab_click()"/>
    				</mx:HBox>
    			</mx:Form>
    		</mx:Form>
    		<mx:TabNavigator width="300" height="300" id="myTab"/>
    	</mx:HBox>
    </mx:Application>
    


    三、 折叠导航设计
    表单是很多应用中最基本的组件之一。当遇到多个关联表单,使用者可能会遇到操作上的困难。当表单很多,并且不能集成在同一个页面时,用户需要在多个表单之间前后移动切换。折叠导航设计可以有效的解决这个问题。在Flex中,使用标签<mx:Accordion>可以创建一个Accordion导航容器。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:lalo="lalo.*">
    	<mx:Accordion>
    		<lalo:FlashInfo label="Flash"/>
    		<lalo:FlexInfo label="Flex"/>
    		<lalo:AIRInfo label="AIR"/>
    	</mx:Accordion>
    </mx:Application>
    

     

  • 相关阅读:
    开发DBA(APPLICATION DBA)的重要性
    SQL有外连接的时候注意过滤条件位置
    程序与bug
    Dalvik虚拟机进程和线程的创建过程分析
    Dalvik虚拟机简要介绍和学习计划
    Dalvik虚拟机的运行过程分析
    JRE和JDK的概念
    myeclipse6.0.1(内置了eclipse)安装及其配置
    JDK 环境变量如何设置
    jdk1.5和tomcat5.5免安装的环境配置
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5429495.html
Copyright © 2011-2022 走看看