Flex Viewer解析-----结构(1)
更新时间:2023-05-29 11:20:01 阅读量: 实用文档 文档下载
- flexible推荐度:
- 相关推荐
flexviewer解析,结构
1、 结构图以及解析
下图是ESRI提供的开发帮助里面对其结构的一个描述图,本人做了一些归类:
A部分:这一部分是项目中的组件列表,包括一些配置文件、Module(就是
Widget)、组件等等。这些组件在没有经过组织之前是完全孤立的。
它们主要完成一些界面显示和业务逻辑。
B部分:该部分的主要功能就是将A部分中相互完全孤立的文件列表,不管
是业务层还是界面层进行一个组织,将他们之间关联起来,便于程
序的统一管理和开发。其中对于将这些文件或者组件综合起来的一
个非常重要的一个内容就是container(在viewer中叫做
SiteContainer容器),关于container是如何组织这些组件的,在
SiteContainer解析一文中将会详细阐述。
C部分:我们可以将该部分称作数据层,也就是说这一层是提供数据的,不
管是地图数据还是常规数据,都是通过这一层获取的,关于这一层
在Viewer中并不明显,其贯穿于整个系统的各个角落。本人愚见,
此处也是Viewer需要改进的地方。
flexviewer解析,结构
在下面的文章里,我们主要基于这三部分对FlexViewer进行解析。
理解了Viewer的这三部分,那么在Viewer中是如何具体的进行文件或者说组件组织的那?
2、 文件组织
首先我们还是看下Viewer的效果图,同样将其分成几个部分,我们在将这
些部分进行一一介绍。
我同样将其分成三个大的组件部分。
A部分:该部分是地图显示部分,也是系统的主体部分,地图的一些显示配置和
基本操作都在该部分中。对于该部分的定义,我们在Viewer中不难找到,那就是FlexVIew文件夹下面的
com\esri\solutions\flexviewer\MapManager.mxml
该文件中定义个,地图的添加以及一些地图的基本操作。
map = new Map();
map.id = "map"; map.zoomSliderVisible = false; map.addEventListener(MapEvent.LOAD, mapLoadComplete);
this.addChild(map);
这几行代码完成了对map控件的添加,下面的部分就是图层的添加以及一些配置,包括一些工具定义:
navToolbar = new Navigation();
navToolbar.map = map; drawToolbar = new Draw();
drawToolbar.map = map;
这两行代码,为地图添加了一个浏览工具和一个绘图工具。
B部分:该部分是一个控制条,用来控制整个系统的用户操作。其主文件为:
flexviewer解析,结构
com\esri\solutions\flexviewer\Controller.mxml
打开之后我们发现其显示部分很简洁:
<comp:Banner id="banner" status="{status}"/>
<mx:HBox id="menuContainer" horizontalGap="-25"
horizontalCenter="0" y="{banner.height - 20}"/>
其实其使用了一个定义好的组件Banner,这个组件才是这个控制条信息的主体部分。而control只是为这个组件提供必须的配置信息。
Banner组件位于components文件夹下,打开它,仔细查看其中的内容,我们就可以明白Viewer里面的B部分是怎么出来的了。
然后我们说说B部分的菜单是如何出来的。在Controller仅仅的两行设计代码里面我们可以看到有个叫做menuContainer的HBox,他就是负责显示菜单的。在程序的配置文件加载完成后,这个界面就会执行对菜单的配置,也就是下面的一个函数:
private function configureMenus():void
{
} for (var i:Number = 0; i < configData.configMenus.length; i++) { } var bw:Number = configData.configMenus.length * 90; if (bw > banner.minWidth) banner.width = bw; var menuId:String = configData.configMenus[i].id; var menuLabel:String = configData.configMenus[i].label; var menuIcon:String = configData.configMenus[i].icon; var menuItems:Array = configData.configMenus[i].items; var controllerMenu:ControllerMenu = new ControllerMenu(); controllerMenu.id = menuId; controllerMenu.menuLabel = menuLabel; controllerMenu.menuImage = menuIcon; controllerMenu.menuCollection = new ArrayCollection(menuItems); menuContainer.addChild(controllerMenu);
这里面使用了另外一个组件ControllerMenu,其定义位于Banner.mxml同目录下的ControllerMenu.mxml中,这个组件就是完成主菜单定义的主要控件。对于子菜单的定义我们在ControllerMenu中可以看到这句代码:
<mx:Repeater id="menuRepeater" dataProvider="{menuCollection}">
<comp:ControllerMenuItem itemId="{menuRepeater.currentItem.id}" itemLabel itemIcon itemRuleVisible itemAction ="{bel}" ="{menuRepeater.currentItem.icon}" ="{menuRuleVisible(menuRepeater.currentIndex)}"
flexviewer解析,结构
="{menuRepeater.currentItem.action}"
itemValue ="{menuRepeater.currentItem.value}" /> </mx:Repeater>
这个Repeater就是用来完成子菜单信息绑定的。其中使用了关于子菜单的组件ControllerMenuItem,我们打开这个子菜单的定义,可以清楚地看到关于子菜单的点击事件和一些效果代码。这就是菜单的实现方式。
以上就是Viewer左上侧控制条的实现流程。
C部分:这一部分的实现相对比较复杂,主要是在其管理上面,再加上其使用Module的方式加载显示,所以感觉上相对复杂。
正在阅读:
《消防法》解读02-02
我想住在海边作文700字07-07
采矿车间“三违”界定(1)06-11
思想政治教育生命线地位评述01-21
开展“树正气,强责任”活动心得体会09-06
劳务合同终止通知书04-08
2016七夕经典语句02-10
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 解析
- 结构
- Viewer
- Flex
- 现代大学英语第5册(精读5)lesson 4
- 集团财务管理模式
- 民族院校财务管理专业培养目标定位探讨
- 2015年下半年小学综合素质
- 平板硫化机安全规程
- 重庆一中2012-2013学年高二下学期期末考试 政治试卷
- 常见电脑故障的排除
- 人教版英语英语数词专项练习综合含答案解析百度文库
- U1 festivals around the world Reading
- 2017-2022年中国纺织洗涤信息化行业十三五前景预测及投资战略发展分析报告
- 学海2020-10八年级第一学期月考一数学
- 中国教育产品市场行情分析报告
- 2006年度第二次临时股东大会的法律意见书
- 黑龙江省泰来县第一中学2020┄2021届高三上学期第二次月考英语
- 禾嘉股份半年报(修订版)
- 人教版初中英语七年级下册全册英教案(全英文版)整理版
- 电气工程系课程期末考试题(发电厂变电站电气设备)
- 大广高速公路衡大段筹建处处长廖济柙在大广高速公路衡大段预防职务犯罪工作领导小组成立暨警示教育大会上的
- 浙教版初一数学平行线知识和题目
- 初一数学第一章预习资料