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

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>

flex----导航相关推荐

  1. flex导航条MenuBar

    <?xml version="1.0"?> <!-- Simple example to demonstrate the MenuBar control. --& ...

  2. php与flex宝典

    (英文原文: [http://www.adobe.com/devnet/flex/articles/php_getstarted.html Flex quick start guide for PHP ...

  3. 潭州学院html学习(day10)

     完成以上的作业布置 代码: <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  4. ActionScript编译器

    ActionScript 编译器 这是最后的主要章节,他包含了所有你使用的SDK细节,你的目标是什么版本的播放器,如何添加参数 这里也是一个显示HTML 包装的重要地方.你需要注意的是,如果你修改了h ...

  5. 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块...

    config.xml文件的配置如下: <widget left="10" top="50" config="widgets/Navigation ...

  6. html-css13 flex弹性盒 W3school导航条另一种写法 淘宝的导航条

    flex弹性盒 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF ...

  7. flex 学习篇 ---- 导航类容器

    导航类容器需要使用<mx:ViewStack />.可以直接从ui设计器中拉控件过去舞台或者手动敲代码. 导航类容器就是相当于创建了一个菜单,然后按每个选项都可以进入到不同的页面. 创建了 ...

  8. AMFPhp与Flash||Flex 的交互后——台技术区分类导航

    2010-12-03 21:07 http://bbs.9ria.com/redirect.php?tid=57798&goto=lastpost php简介及学习方法 [转载]PHP大潮将至 ...

  9. vue中点击导航栏部分,页面切换

    写页面的时候都会用到一些导航栏.点击不同的部分切换不同的页面.并且点击的时候更换颜色 代码自己简单的写一下:(vue) <nav> <ul><li v-for=" ...

  10. uniapp自定义导航栏样式,自定义导航栏组件使用说明,兼容小程序和H5及各端

    实现思路: 把底部导航做成一个组件,点击导航显示的页面也做成组件,在启动页面引入这四个组件,点击封装的导航组件就显示相应的组件页面,这样就不会出现页面重新加载的问题了,有个弊端就是导航页面不能使用页面 ...

最新文章

  1. pku The Windy's KM最小权匹配 or 最小费用最大流
  2. 看清上市公司的财务分析
  3. Java代码在计算机中的三个阶段与反射
  4. android wheelview 字体颜色,百行代码实现Android WheelView
  5. Android studio编译好的apk文件在哪里?
  6. openresty源码剖析——lua代码的执行
  7. 苹果忘记开机密码_苹果电脑忘记开机密码快速恢复的方法!
  8. gephi生成网络关系图_用 NetworkX + Gephi + Nebula Graph 分析lt;权力的游戏gt;人物关系(上)
  9. 保险行业持续扩展,巨杉数据库再次中标人保财险
  10. 有道无术,术尚可求,有术无道,止于术
  11. 八月十一上午笔记钊哥第一节课
  12. redis主从完整配置说明
  13. Mybatis学习整理
  14. 软件开发中的《清单革命》
  15. phase-portrait相轨迹
  16. 使用ssr退出后,电脑能连上无线网,但是不能上网的解决方法
  17. 百度虚拟服务器上传,百度云虚拟主机好用吗?事实告诉你很坑
  18. php面试题中笔试题目的汇总,php面试题中笔试题目的汇总
  19. 51单片机入门模板(STC89C52RC)
  20. 使用费曼技术更快地学习任何东西 【翻译】

热门文章

  1. script学习,如何用linux监控你的同事?
  2. 动画--过渡属性 transition-property
  3. BZOJ-1010 玩具装箱toy (斜率优化)
  4. API 版本控制的几种方式
  5. poj 1699 Best Sequence (搜索技巧 剪枝 dfs)
  6. 快捷进入开发状态,这里很简单~
  7. vba传值调用_小白关于VBA调用Sub传递参数之传值与传址的思考
  8. oracle适配器接口,Oracle
  9. 【Paper】2020_多智能体系统的分布式故障估计方法研究
  10. 1.9 池化层-深度学习第四课《卷积神经网络》-Stanford吴恩达教授