![基于Flex的WebGIS开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/396/773396/b_773396.jpg)
1.3 Flex开发实践
Adobe Flex是一个免费的产品,可以使用任何一款编辑器开发。在诸多编辑器中,Flex Builder是一个不可或缺的、功能强大的编辑器,是基于Eclipse IDE开源项目构建的,继承了很多优秀的功能。Flex Builder有两个版本,即独立的开发工具版本和集成于Eclipse的插件版本,本书统一采用独立的开发工具版本。下面将基于Flex Builder 3.0,通过一个简单的示例程序介绍Flex的开发。
1.3.1 安装Flex开发环境
Flex Builder是一个实用的集成开发环境,通过这个环境,可以高效地完成Flex程序的编写。Flex的开发环境需要安装配置Flex Builder(统一使用Flex Builder 3.0)与Flex SDK,以及Flash Player插件。Flex Builder与Flash Player可运行于任何操作系统中,Flash Player插件根据浏览器的类型,提供相应的安装程序。
● Adobe Flex Builder
Flex Builder是一个Flex的集成开发环境,通过Flex Builder可以对程序进行所见即所得的界面设计,并支持MXML和ActionScript的智能编写,可以快速方便地构建Flex应用程序,在很大程度上提高Flex的开发效率。使用Flex Builder,还可以设置代码的断点,调试程序。
● Adobe FlexSDK
Flex SDK是Flex产品集中最基础的、也是必需的组件,使用其他组件必须在SDK的基础上,单独通过SDK就可以完成常用的程序设计。
1.安装Flex Builder 3.0
Flex Builder 3.0集成开发环境的安装程序可在Adobe的官方网站上下载,或者使用本书网络光盘中的安装程序。安装Flex Builder 3.0时,安装程序会自动安装Flex SDK 3.0。
Adobe公司Flex Builder官方下载地址为:
http://download.macromedia.com/pub/flex/flex_builder/FB3_win.exe
2.安装Flash Palyer插件
Flash Player插件有两种:一种是单纯的Flex程序运行播放器,另一种是针对Flex程序开发中调式运行的播放器。进行Flex开发,一般需要安装Flash Player的debug程序。
(1)安装Flash Palyer插件。Flash Player针对不同的浏览器内核提供相应的安装程序,在安装时根据机器上的浏览器选择安装。Adobe官方下载地址为get.adobe.com/flashplayer/。
● IE内核的Flash播放插件,如Adobe Flash Player Active 10.0.22.87.exe;
● 非IE内核的Flash播放插件,如Adobe Flash Player Plugin 10.0.22.87.exe。
(2)安装Flash Player的debug程序。对于Flex的开发,提供Flash Player的debug程序,用于调试AS脚本程序,方便程序的调试运行。针对不同的浏览器内核,同样提供相应的debug安装程序。可到Adobe官方网站上下载,或者使用本书网络光盘中的安装程序。
● IE内核的调试程序,如flashplayer_10_ax_debug.exe;
● 非IE内核的调试程序,如flashplayer10_1_rc2_debug_plugin_041910.exe。
3.Flex Builder开发界面
Flex Builder对MXML界面设计的支持是相当强大的,支持“所见即所得”的开发方式。MXML本身就是由标签语言配置而成的,因此对于MXML的操作方式更适合于配置和设计。同时,在MXML中我们会常常进行调用ActionScript脚本、调用自定义组件、做数据绑定等操作,Flex Builder对这些方面都提供了完善的支持。
Flex Builder对于MXML的开发提供了两种模式。在Flex Builder的编辑区上方可以看到Source和Design按钮。Source为代码编辑模式,我们可以手工书写MXML代码,完成ActionScript的编写;Design为UI设计模式。
1)Source编辑模式
在Flex Builder 3.0中打开一个MXML文件,切换到Source界面,各功能区域的作用如图1.2所示。
● 菜单栏:IDE支持的所有开发功能菜单;
● 工具栏:菜单栏中某些常用条目的快捷方式;
● 导航器:可以按照不同模式浏览当前项目的文件结构;
● 编辑区:代码编写区域;
● 定制视图:可以显示控制台、搜索窗口、调试窗口等信息;
● 大纲:显示当前代码的组织结构。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0021_0001.jpg?sign=1738945700-OH5qiyGavCtjFIutD1zcFlgWtBxybuIZ-0-cfd91a506b3a2be78ab2ca88f2e004cb)
图1.2 Flex Builder的Source编辑模式
2)Design设计模式
当切换到UI设计状态后,即切换到UI设计界面,各功能区域的作用如图1.3所示。
● UI设计器:通过所见即所得的方式设计图形界面;
● 组件工具栏:可以从中选取各种Flex可视化组件,放到UI设计器中;
● 属性编辑区:编辑选定Flex可视化组件的各种属性。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0022_0001.jpg?sign=1738945700-37cj1yPc8zHDKhymiTj8oqeEPvMENFBf-0-100cff836617a3e638f6050cadb4775a)
图1.3 Flex Builder的Design设计模式
4.Flex的文件类型
在Flex中,可以创建各种文件格式,包括基本的MXML文件、单独的ActionScript文件、类以及接口等,不同的文件发挥不同的功能作用。创建完某一个项目后,右击其源代码目录,选择并展开New命令项,将会弹出右键源代码菜单,如图1.4所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0022_0002.jpg?sign=1738945700-FTvMlonDpZ6t1fqNmUw3Ca0MPo0z5kQI-0-c0272524127db71eb77863e0941a3394)
图1.4 Flex文件类型
● MXML Component——项目组件化
在右键菜单中,可以选择并创建一个MXML Component组件文件,可以把每个组件独立出来。这样做可以使项目源代码组件化,把不同功能的组件独立出来管理。
● MXML Module——组件模块化
在右键源代码菜单中,可以选择并创建一个MXML Module模块文件。项目模块化实际上就是把相同功能的代码组织到一个模块中,通过多个模块的累积,从而形成一个完整的应用系统。
● 项目模式化
在右键源代码菜单中,可以选择并创建一个ActionScript文件、类或者接口。通常这类文件会在设计模式中被应用。设计模式是管理和组织大量代码有效的方法之一,是面向对象思想最直接的体现,而ActionScript语言本身就是一个面向对象的语言。
1.3.2 创建一个Flex应用
Project(项目)是Flex Builder中的基础,一个Project是一组相互关联的文件。所以,创建一个Flex应用程序,就需要创建一个项目。一个项目是由多个Flex的文件组织成的集合。下面来创建第一个Flex项目,具体步骤如下所述。
(1)在菜单栏单击左键或者在Flex导航器的空白处单击右键,选择“File(文件)”→“New(新建)”→“Flex Project(Flex项目)”命令,弹出“New Flex Project(新建Flex项目)”对话框,如图1.5和图1.6所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0023_0001.jpg?sign=1738945700-xs8fastNI0e33mVW0rn6DygWy1xyflkH-0-7d92430d7e2b2aa3e306ae9267a5f3d6)
图1.5 新建Flex项目(方式一)
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0023_0002.jpg?sign=1738945700-ENA8pGALzi4KU6N7znoYHouhfhHdoP2C-0-7e907b12703c48026a472fa228b081db)
图1.6 新建Flex项目(方式二)
(2)在“Project name”文本框中输入项目名称——First Project,选择项目存放位置,在“Application type”选框中点选“Web application(runs in Adobe Flash Palyer)”单选项,在“Application server type”下拉列表中选择“None”选项,如图1.7所示。单击“Next”按钮,弹出输出配置对话框。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0024_0001.jpg?sign=1738945700-qUY86mnf0L6aJ4cKQk6kReKLM4VVtRFI-0-d2104e621a6f5c83d07aa4dfa35138a9)
图1.7 填写项目名称
(3)在输出配置对话框中的“Qutput folder”处填写项目编译后文件的存放目录名称,默认使用“bin-debug”,单击“Next”按钮,进入下一步设置,如图1.8所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0024_0002.jpg?sign=1738945700-ruwSuUN1o54pDub9xW4Fyi0EU98QskqJ-0-85046417f83a92f65db78f307bae7868)
图1.8 设置编译文件存放目录
(4)在“Main application file(主应用程序文件)”文本框中输入默认项目启动的文件名(将在项目中自动创建一个该名称的主应用程序文件),其他项使用默认值,然后单击“Finish(完成)”按钮(见图1.9),完成项目的创建(见图1.10),自动打开主应用程序文件。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0024_0003.jpg?sign=1738945700-PPPLKeHpCAEypjhfYBIS8PMU45GKCa9B-0-59df916cc58f30d5992637f35a21ec39)
图1.9 设置新项目源文件目录与主程序
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0025_0001.jpg?sign=1738945700-nIHi1ltwjWvnB1s2nWdgNRz3le6HFOHo-0-5abf272c88378854674497eb260ee508)
图1.10 完成项目创建
(5)在编辑工作区中单击“Design”按钮,进入设计模式,如图1.11所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0025_0002.jpg?sign=1738945700-h9IA1qfSnWtL0SkUpjCUrEEX9grRMjio-0-a6615420934b00f6a0dabd41321d8f75)
图1.11 进入设计模式
(6)在左下角的组件工具箱的列表中,选择“Components”窗口下的“Label”控件,将该标签控件拖动到设计模式工作区中,如图1.12所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0025_0003.jpg?sign=1738945700-LSkdICqp5H0X8949aZzGFUqkXSMUQqx4-0-d6bc3fd51c0fbc432ad1babb6d842003)
图1.12 加载Label控件
(7)在设计窗口中选中“Label”控件,然后在右下角的Flex Properties(属性工作区)里设置“Label”控件的属性。例如,在“Common”下设置“Text(文本)”为“Hello World!”,在“Style”下设置字体为“Courier New”,字体大小为“28”,加粗,颜色设置为蓝色,如图1.13所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0026_0001.jpg?sign=1738945700-qFn3JHoQyoiLfNaOmEpLvLPBrfB5pD0R-0-7844de898dddb87e914c0a8f6680d367)
图1.13 设置控件属性值
(8)在编辑工作区中单击“Source”按钮,切换到代码编辑模式,生成如下MXML源代码。
程序代码1.1 第一个简单的Flex应用源代码
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"layout= "absolute"> <!—添加一个Label控件 --> <mx:Label x="128" y="123" text="Hello World!" fontFamily="Courier New" color="#0909B4" fontSize="28" fontWeight="bold" textAlign="left" /> </mx:Application>
1.3.3 编译运行
Flex SDK中包含两个编译器:mxmlc和compc。mxmlc编译器可以把MXML和ActionScript代码编译为SWF文件,compc编译器可以把组件和库编译为SWC文件。Flex Builder 3.0中集成了Flex SDK,通过Flex SDK把Flex程序代码编译成SWF文件,并在浏览器中运行。
在1.3.2节创建了一个简单的Flex应用程序,编译与运行程序的步骤如下所述。
(1)如果Flex项目中有多个Application的MXML文件,想要设置其中一个文件为程序默认初始页,可以在左上角的导航窗口中选中该文件,单击鼠标右键,选择“Set as Default Application”(设置为默认应用程序)命令,效果如图1.14所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1738945700-Q1PI2R1stLFIEQqsIa12JisWJn3WWMHC-0-8fb09413ae7b11b0c8f06169612cbb7f)
图1.14 设置默认应用程序
(2)如要运行1.3.2节创建的Flex程序,选中要编译运行的main文件,在菜单中选择“Run”→“Run main”命令,Flex Builder开始编译运行程序(见图1.15),运行后的效果如图1.16所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0027_0002.jpg?sign=1738945700-30VLGp7n8EY6j7O01nvAlcVW9Re6oVi5-0-a8c884ab990c2d83a3254dc9a249f232)
图1.15 编译运行程序
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0028_0001.jpg?sign=1738945700-ImmljMINvkPC7Rg3BEkZq4AkGqmUFD2k-0-8f9a476fc783e59491326aacd9858718)
图1.16 程序运行结果
如果Flex程序中有ActionScript代码,需要在编译运行时进行调试,这时需要启用Flash Player的debug程序。例如,在main.mxml文件中添加初始化的一个脚本,然后进行调试。添加ActionScript脚本后的源代码如下。
程序代码1.2 添加一个ActionScript脚本源代码
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout= "absolute" creationComplete="init();"> <!—添加一个Label控件 --> <mx:Label x="128" y="123" text="Hello World!" fontFamily="Courier New" color="#0909B4" fontSize="28" fontWeight="bold" textAlign="left" /> <mx:Script> <![CDATA[ import mx.controls.Alert; public function init():void { //弹出一个系统对话框 Alert.show("这是创建的第一个Flex程序"); } ]]> </mx:Script> </mx:Application>
在Flex Builder中调试程序的具体方法如下所述。
在Flex程序的ActionScript代码段相应位置设置断点,方法是:在代码编辑模式下,直接在要设置断点的代码前面双击鼠标,或者选中代码后用快捷键设置,例如在main文件的ActionScript代码处设置断点,如图1.17所示。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1738945700-hYfzo7Ic9AFhaTkSrHqIrYyyQpUJ1q62-0-7af4a52993c5bbf7bb2feb68cf5bd60f)
图1.17 设置断点
(3)打开调试界面,即在右上角选择“Flex Debugging”(见图1.18),就进入了debug环境。选中要调试运行的主程序文件,如示例中main文件,在菜单中选择“Run”→“Debug main”命令,Flex Builder开始跟踪调试程序(见图1.19、图1.20、图1.21)。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0029_0002.jpg?sign=1738945700-eCFlbEJ7fRDpEafbr91Ht6kA6iNTic6h-0-6454b71f0a66e80e69a605928a6d3d05)
图1.18 打开调试视图
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0030_0001.jpg?sign=1738945700-lu5relqf6lz6QNQNFYn2ieCHSTcIjvfD-0-604ea3e22dc09878b474ba0fa96df851)
图1.19 开始跟踪调试程序
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0030_0002.jpg?sign=1738945700-g2IX0DIyWGssN1vDLgtCW7NEsHUXmA9E-0-cb670671ca5d31a8534d472d80a46a75)
图1.20 调试运行程序
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0031_0001.jpg?sign=1738945700-CzKVmGdw0Jfy8EJe8ZVvvL47NXg3fbYI-0-3214cfc61de42193ad97280a36cd4802)
图1.21 程序运行结果
注
在Flex Builder 3.0的调试状态下,debug窗口旁边的Variables窗口显示的是某一时刻各种变量的值。
Flex Builder沿袭了Eclipse体系,具有Eclipse所支持的开发配置、快捷键、调试控制、代码重构等方面优势,简化开发,为用户提供便利。
快捷键如下:
● Ctrl+Shift+C——单行注释;
● Ctrl+/——段注释;
● Tab——代码的缩进;
● Shift+Tab——代码的前进;
● Ctrl+Shift+B——加或去除断点;
● F1——Flex帮助;
● F3——转到定义;
● F11——开始调试;
● F5——调试进入下一层代码;
● F6——调试进入同层下一句错码;
● F7——跳到上一层继续调试;
● F8——调试到下一层断点。
1.3.4 项目发布
一个Web的Flex项目编译后,通常需要发布到Web服务器中。在进行项目部署发布时,需要根据项目的具体情况,选择发布到IIS,或者Java的Web服务器中,如Tomcat。项目发布的方法与Web项目发布相同,发布的是编译好的项目文件。下面以创建的第一个项目为例,介绍部署到Windows操作系统中的IIS服务器的具体步骤。
(1)将编译好的Flex项目复制到Web服务器所在机器硬盘中。
注
默认情况下Flex项目的bin-debug目录中是编译好的文件(见图1.22)。通常建一个文件夹,把bin-debug目录下的所有文件复制到新建的文件夹中,然后再移到Web服务器机器上。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0032_0001.jpg?sign=1738945700-1q1dipLsVivaUjOFFwNo1y4fEe46vnAT-0-691ec57620eaad690a84ecb1a0659e6c)
图1.22 Flex项目编译好的文件
(2)为服务器中的Flex项目创建一个虚拟目录(见图1.23和图1.24),即设置为Web共享。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0032_0002.jpg?sign=1738945700-mJmPpprGYwFw9eqXEqEJg4XcpfgC6Jke-0-e5082a2d1e4176f4c0ad1f821b929ca9)
图1.23 设置虚拟目录
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0033_0001.jpg?sign=1738945700-F0syl89kYUz2mIVWQgBmbpxWoYSRJyc1-0-733b536b14cbac2e85972b4046ad2e8b)
图1.24 IIS中设置好的虚拟目录
(3)在IIS中为Flex项目设置一个访问首页(见图1.25),并进行匿名访问设置(见图1.26)。
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0033_0002.jpg?sign=1738945700-7FnpPoo5JTaJglkgfquNUhd5vvlEfdyF-0-01fe9ab8468dc7bf93adc3da905e61da)
图1.25 设置访问首页
![](https://epubservercos.yuewen.com/0E54F1/3590602603545001/epubprivate/OEBPS/Images/figure_0033_0003.jpg?sign=1738945700-Loji4g6zfGrxKZ1SPgsXZMnri2aK9Emp-0-fc96ea8d89f04ac36fcf43bef617d824)
图1.26 设置匿名访问