《FleRIA开发详解讲解》由会员分享,可在线阅读,更多相关《FleRIA开发详解讲解(620页珍藏版)》请在金锄头文库上搜索。
1、FleRIA开发详解讲解Flex 4.0 RIA开发详解开发详解(第第2版版)1.1 Flex1.1 Flex简介简介传统的基于传统的基于HTML的应用程序部署本钱低、构造简单、的应用程序部署本钱低、构造简单、简单易学。很多用户和开发人员于是放弃了现代高性能计简单易学。很多用户和开发人员于是放弃了现代高性能计算机能带来的用户体验,转而追求数据的快速访问,从而算机能带来的用户体验,转而追求数据的快速访问,从而丧失了一些重要的丧失了一些重要的UI功能。功能。RIA利用相对强健的客户端描述引擎。利用相对强健的客户端描述引擎。RIA的另一个的另一个好处是:数据能够被缓存在客户端,从而可以实现一个比好处
2、是:数据能够被缓存在客户端,从而可以实现一个比基于基于HTML的响应速度更快且数据往返于效劳器的次数更的响应速度更快且数据往返于效劳器的次数更少的用户界面。少的用户界面。Flex是是Adobe公司近两年推出的重量级产品与技术。公司近两年推出的重量级产品与技术。Flex的出现就是为了高效地开发和部署富互联网应用程序。的出现就是为了高效地开发和部署富互联网应用程序。Flex 4.0 RIA开发详解开发详解(第第2版版)1.1 Flex1.1 Flex简介简介Adobe公司对于公司对于Flex采取了开源的策略,所以开发者采取了开源的策略,所以开发者可以在可以在Flex原代码的根底上修改。新版原代码的
3、根底上修改。新版Flex 4中的开发环境中的开发环境已经更名为已经更名为Flash Builder,而不再是,而不再是Flex Builder系列。系列。Flex采用事件驱动机制,程序的执行过程严格按照事件发采用事件驱动机制,程序的执行过程严格按照事件发生的时间顺序执行。本节将介绍为读者生的时间顺序执行。本节将介绍为读者Flex开发技术的特开发技术的特点、优点和新特性。点、优点和新特性。Flex 4.0 RIA开发详解开发详解(第第2版版)1.1.1 Flex1.1.1 Flex的技术特点的技术特点Flex可以在企业内部或在可以在企业内部或在 Web 上创立富互联网应用程上创立富互联网应用程序
4、序RIA,堪称最完整、最强大的,堪称最完整、最强大的RIA开发解决方案。它开发解决方案。它使企业能够创立个性化的丰富多媒体应用程序,极大地提使企业能够创立个性化的丰富多媒体应用程序,极大地提高用户的体验,彻底革新人与高用户的体验,彻底革新人与 Web 的交互关系。的交互关系。1增强用户体验增强用户体验2完善的开发环境完善的开发环境3通用的配置环境通用的配置环境4企业级的特征企业级的特征5消除页面加载消除页面加载6标准的架构标准的架构7与浏览器兼容与浏览器兼容Flex 4.0 RIA开发详解开发详解(第第2版版)1.1.2 Flex SDK 41.1.2 Flex SDK 4的新特性的新特性Fl
5、ex 4较之较之Flex 3有了许多令人兴奋的新特性。有了许多令人兴奋的新特性。1新增主题和组件新增主题和组件2增强布局方式增强布局方式3增强特效和滤镜效果增强特效和滤镜效果4新增双向绑定功能新增双向绑定功能5增强的增强的CSS6增强的增强的HTML模板模板7增强的状态增强的状态8增强增强ASDoc的支持的支持9运行时共享库运行时共享库10本地化本地化Flex 4.0 RIA开发详解开发详解(第第2版版)1.2 Flash Builder1.2 Flash Builder的下载与安装的下载与安装Flash Builder的安装文件可从的安装文件可从Adobe官方主页下载。官方主页下载。安装文件
6、版本有安装文件版本有Flash Builder 4 Standalone Installer版本和版本和Flash Builder 4 Plugin for Eclipse版本两种。版本两种。Flash Builder 4 Standalone Installer是独立的开发工具的版本,是独立的开发工具的版本,Flash Builder 4 Plugin for Eclipse是可将是可将Flex 4集成于集成于Eclipse的安的安装插件。本节介绍装插件。本节介绍Flash Builder 4 Standalone Installer的下的下载与安装。载与安装。Flex 4.0 RIA开发详
7、解开发详解(第第2版版)1.2.1 1.2.1 安装安装Flash BuilderFlash Builder的系统要求的系统要求Flash Builder 4可以安装在可以安装在Windows操作系统上,也操作系统上,也可以安装于可以安装于Mac OS X操作系统中。安装操作系统中。安装Flash Builder 4的的最低配置如下。最低配置如下。1Windows操作系统最低要求操作系统最低要求2Mac OS X操作系统最低要求操作系统最低要求Flex 4.0 RIA开发详解开发详解(第第2版版)1.2.2 1.2.2 下载下载Flash Builder BetaFlash Builder B
8、eta1浏览器中输入浏览器中输入“ :/labs.adobe /,翻开,翻开Adobe Flex主页。主页。2单击单击“Flash Builder 4图标或者文字链接,进图标或者文字链接,进入入Flash Builder 4的下载页面。的下载页面。3单击单击“Download the Flash Builder 4 beta 2 release链接,进入链接,进入Flash Builder 4验证页面。验证页面。4下载下载Adobe公司的产品需要输入公司的产品需要输入Adobe ID和和Password,可以免费注册。注册步骤用户可按网页提示。,可以免费注册。注册步骤用户可按网页提示。5单击单
9、击“Flash Builder 4 Standalone Installer下的下的“Download Flash Builder 4 Installer for Windows链接,链接,开场下载开场下载Windows平台版本的平台版本的Flash Builder 4。Flex 4.0 RIA开发详解开发详解(第第2版版)1.2.3 Flash Builder 4 Beta1.2.3 Flash Builder 4 Beta的安装的安装1双击双击“FlashBuilder.exe,弹出选择安装语言对,弹出选择安装语言对话框。话框。2单击单击“OK按钮,弹出安装第一步骤按钮,弹出安装第一步骤“
10、简介对简介对话框。话框。3单击单击“下一步按钮,弹出安装第二步骤下一步按钮,弹出安装第二步骤“许可许可协议对话框。协议对话框。4选择选择“本人承受许可协议条款单项选择框,单本人承受许可协议条款单项选择框,单击击“下一步按钮,弹出安装第三步骤下一步按钮,弹出安装第三步骤“选择安装文件夹选择安装文件夹对话框。对话框。Flex 4.0 RIA开发详解开发详解(第第2版版)1.2.3 Flash Builder 4 Beta1.2.3 Flash Builder 4 Beta的安装的安装5在文本框中输入安装路径或是单击在文本框中输入安装路径或是单击“选择按钮选择按钮选择安装路径。选择安装路径。6单击单
11、击“安装按钮。完成安装后自动弹出安装第安装按钮。完成安装后自动弹出安装第五步骤五步骤“安装完毕对话框。安装完毕对话框。7单击单击“完成按钮,完成安装。完成按钮,完成安装。Flex 4.0 RIA开发详解开发详解(第第2版版)1.2.4 Flash Builder1.2.4 Flash Builder的新特性的新特性1新增工作流模式与新增工作流模式与Flash Catalyst的支持的支持2新增网络监控功能新增网络监控功能3添加单元测试的支持添加单元测试的支持4新增新增ASDoc的支持的支持5自动生成自动生成getter和和setter6自动生成事件处理函数构造自动生成事件处理函数构造7增强调试
12、器功能增强调试器功能8新增新增Flash CS4组件开发包组件开发包9导入和应用诸多主题导入和应用诸多主题10新增类包浏览器新增类包浏览器Flex 4.0 RIA开发详解开发详解(第第2版版)1.3 Flex1.3 Flex根底构造根底构造MXMLMXML介绍介绍开发者使用两种语言来写开发者使用两种语言来写Flex应用程序:应用程序:MXML和和ActionScript。MXML是一种是一种XML标识语言,用于进展组标识语言,用于进展组件布局。件布局。MXML中的组件包括了可视组件和非可视组件。中的组件包括了可视组件和非可视组件。非外观组件可以是从效劳器中读取的数据源或用户组件绑非外观组件可以
13、是从效劳器中读取的数据源或用户组件绑定至效劳器中的数据。定至效劳器中的数据。Flex 4.0 RIA开发详解开发详解(第第2版版)1.4 1.4 建立第一个建立第一个Flex 4Flex 4程序程序下面以下面以“Hello World为第一个例子为读者详细说明为第一个例子为读者详细说明如何建立第一个如何建立第一个Flex 4程序,步骤如下。程序,步骤如下。1选择选择“文件文件|“新建新建|“Flex工程命令,弹出工程命令,弹出“新建新建Flex工程对话框。工程对话框。2在在“工程名文本框中输入工程名称,工程名文本框中输入工程名称,“应用程应用程序类型下拉框选择序类型下拉框选择“Web(runs
14、 in Adobe Flash Palyer)。3在在“主应用程序文本框中输入默认工程启动的主应用程序文本框中输入默认工程启动的文件名,其他可默认。单击文件名,其他可默认。单击“完成按钮,完成工程的创立。完成按钮,完成工程的创立。Flex 4.0 RIA开发详解开发详解(第第2版版)1.4 1.4 建立第一个建立第一个Flex 4Flex 4程序程序4在编辑工作区中单击在编辑工作区中单击“Design按钮,进入设计按钮,进入设计模式。模式。5从左下角的从左下角的“组件列表,选择组件列表,选择“控件子文件控件子文件夹下的夹下的“标签控件。拖动控件到设计模式工作区。标签控件。拖动控件到设计模式工作
15、区。6选择选择“标签控件,然后在右下角的属性工作区标签控件,然后在右下角的属性工作区里设置里设置“标签控件的属性。标签控件的属性。7在代码模式下,生成的在代码模式下,生成的MXML代码。代码。Flex 4.0 RIA开发详解开发详解(第第2版版)1.5 1.5 编译与运行第一个编译与运行第一个Flex 4Flex 4程序程序前面建立了前面建立了“Hello World程序,编译与运行程序的程序,编译与运行程序的步骤如下。步骤如下。1在想要成为程序默认初始页的在想要成为程序默认初始页的mxml文件上右击,文件上右击,选择选择“设置为默认应用程序。设置为默认应用程序。2菜单中选择菜单中选择“运行运
16、行|“运行运行HelloWorld命令,命令,Flash Builder 4就开场编译与运行程序。就开场编译与运行程序。3效果如图效果如图1-19所示。所示。Flex 4.0 RIA开发详解开发详解(第第2版版)1.6 1.6 小结小结本章对本章对Flex进展了介绍,包括进展了介绍,包括Flex技术特点、新特性技术特点、新特性和优点。和优点。Flex应用程序具有丰富的交互性、操作性和用户应用程序具有丰富的交互性、操作性和用户体验,能开发出与体验,能开发出与HTML更强大的网络应用程序。更强大的网络应用程序。本章图文并茂地讲解了本章图文并茂地讲解了Flash Builder 4的下载与安装。的下
17、载与安装。Flash Builder 4是是Flex应用程序开发的利器,能快速、有效应用程序开发的利器,能快速、有效地开发地开发Flex应用程序。有关应用程序。有关Flash Builder 4的内容将在下一的内容将在下一章介绍。章介绍。本章最后以本章最后以“Hello World为例,为读者详细讲解了为例,为读者详细讲解了Flex应用程序的开发编写及编译运行过程。应用程序的开发编写及编译运行过程。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2 2章章 熟悉开发环境熟悉开发环境Flash Builder 4Flash Builder 4“工欲善其事必先利其器。工欲善其事必先利其器
18、。Flash Builder 4是是Adobe公司推出的集成开发环境。公司推出的集成开发环境。Flash Builder 4工作环境是一种工作环境是一种具有丰富特征的开发环境,有利于开发者开发具有丰富特征的开发环境,有利于开发者开发Flex和和ActionScript应用程序。应用程序。Flash Builder 4建立在建立在Eclipse这一这一开源的集成开发环境开源的集成开发环境IDE上,用户可使用强大的代码上,用户可使用强大的代码编辑器,可视化设计器,调试工具等来开发编辑器,可视化设计器,调试工具等来开发Flex应用程序。应用程序。Flex 4.0 RIA开发详解开发详解(第第2版版)
19、2.1 2.1 熟悉熟悉Flash Builder 4Flash Builder 4工作区工作区Flash Builder 4工作区是开发工作区是开发Flex应用程序的工作环境,应用程序的工作环境,熟悉工作环境对开发的益处是显而易见的。熟悉工作环境对开发的益处是显而易见的。Flash Builder 4平台是基于平台是基于Eclipse平台,因此与平台,因此与Eclipse的布局风格异常相的布局风格异常相似。似。Flash Builder 4平台的特点是集可视化编辑与代码编辑平台的特点是集可视化编辑与代码编辑为一体,用户在为一体,用户在Flash Builder 4环境下可方便地切换设计模环境
20、下可方便地切换设计模式和代码模式。式和代码模式。Flex 4.0 RIA开发详解开发详解(第第2版版)2.1.1 Perspectives2.1.1 Perspectives透视透视透视是一种布局风格,与任务、编辑器和视图相关联。透视是一种布局风格,与任务、编辑器和视图相关联。一旦切换透视,对应的任务、编辑器或视图就可能发生改一旦切换透视,对应的任务、编辑器或视图就可能发生改变。变。Flash Builder 4包含包含3种透视:种透视:“Flash透视、透视、“Flash Debug透视以及透视以及“Flash Profile透视。透视。Flex 4.0 RIA开发详解开发详解(第第2版版)
21、2.1.2 Editors2.1.2 Editors编辑器编辑器1MXML编辑器编辑器2ActionScript编辑器编辑器3CSS编辑器编辑器Flex 4.0 RIA开发详解开发详解(第第2版版)2.1.3 Views2.1.3 Views视图视图视图是用以辅助用户管理工程和开发工程。用户通过视图是用以辅助用户管理工程和开发工程。用户通过视图可以较直观地处理一些需求。例如,视图可以较直观地处理一些需求。例如,“包资源管理器包资源管理器既可以管理工作区中的文件和文件夹,又可以浏览包和类既可以管理工作区中的文件和文件夹,又可以浏览包和类的构造。的构造。Flex 4.0 RIA开发详解开发详解(第
22、第2版版)2.2 2.2 编译与运行编译与运行Flex 4Flex 4程序详解程序详解MXML语言和语言和ActionScript语言都是需要编译后才能语言都是需要编译后才能运行的。运行的。Flash Builder 4开发环境中集成了两者的编译器,开发环境中集成了两者的编译器,用户只需选择相应的编译运行命令。用户只需选择相应的编译运行命令。本书在介绍第一个本书在介绍第一个Flex程序程序“Hello World程序时,程序时,简单地介绍了了如何编译与运行简单地介绍了了如何编译与运行Flex应用程序。事实上编应用程序。事实上编译时可选的参数较多,本节将为读者介绍详细的编译与运译时可选的参数较多
23、,本节将为读者介绍详细的编译与运行过程。仍以行过程。仍以“Hello World为例,讲解编译与运行过程为例,讲解编译与运行过程中的可选参数。中的可选参数。Flex 4.0 RIA开发详解开发详解(第第2版版)2.3 2.3 调试调试Flex 4Flex 4程序程序程序常包含不可知的逻辑错误,这些错误不属于编译程序常包含不可知的逻辑错误,这些错误不属于编译错误,编译器不能检查此类错误。例如,程序中要判断闰错误,编译器不能检查此类错误。例如,程序中要判断闰年,代码的语法正确但判断的方法是错误的,此时编译器年,代码的语法正确但判断的方法是错误的,此时编译器不会报错。使用在调试功能能跟踪代码每一步的
24、执行,从不会报错。使用在调试功能能跟踪代码每一步的执行,从而检查逻辑错误。而检查逻辑错误。Flash Builder 4开发环境有强大的调试功开发环境有强大的调试功能,有利于程序进展代码检查。本节介绍如何调试能,有利于程序进展代码检查。本节介绍如何调试Flex应应用程序,包括添加断点、开场调试、监视变量等。用程序,包括添加断点、开场调试、监视变量等。Flex 4.0 RIA开发详解开发详解(第第2版版)2.3.1 2.3.1 添加断点添加断点断点的作用是使应用程序在带断点的代码行处中断,断点的作用是使应用程序在带断点的代码行处中断,从而开场检查代码。同时,用户可使用从而开场检查代码。同时,用户
25、可使用Flash Builder 4自带自带的调试工具检测并修复错误。例如,变量视图和表达式视的调试工具检测并修复错误。例如,变量视图和表达式视图。在代码编辑器中添加断点的方法很多。图。在代码编辑器中添加断点的方法很多。调试器只允许在以下代码的断点处中断。调试器只允许在以下代码的断点处中断。MXML标签中包含标签中包含ActionScript事件处理,如事件处理,如。其中。其中“click是单击是单击处理事件。处理事件。ActionScript代码中。可以是代码中。可以是MXML文件中的文件中的标签下,也可以是标签下,也可以是ActionScript文件中。文件中。ActionScript文件
26、中的任何代码行。文件中的任何代码行。Flex 4.0 RIA开发详解开发详解(第第2版版)2.3.2 2.3.2 调试程序调试程序在设置完断点后可选择在设置完断点后可选择“运行运行|“调试命令,选择相调试命令,选择相应的运行配置开场调试。也可单击工具栏上的按钮或快捷应的运行配置开场调试。也可单击工具栏上的按钮或快捷键键F11开场调试。调试器运行后就会自动进入开场调试。调试器运行后就会自动进入“Flash Debug透视。其中比较有用的是调试视图。透视。其中比较有用的是调试视图。在调试程序时常需要监视某些变量的变化,从而发现在调试程序时常需要监视某些变量的变化,从而发现代码中的错误。变量视图能自
27、动跟踪程序中变量的变化。代码中的错误。变量视图能自动跟踪程序中变量的变化。Flex 4.0 RIA开发详解开发详解(第第2版版)2.4 Flex 42.4 Flex 4工程工程概述工程工程概述Flex 4现支持创立的工程工程有三类:现支持创立的工程工程有三类:Flex 工程、工程、ActionScript 工程、和工程、和Flex 库工程。不同的工程用于开发库工程。不同的工程用于开发不同的工程。不同的工程。Flex 工程工程是普通的工程工程是普通的RIA工程,主要用于工程,主要用于开发互联网应用程序。开发互联网应用程序。ActionScript 工程工程主要用于开发工程工程主要用于开发Acti
28、onScript类库。类库。Flex 库工程用于开发共享库,可以是自库工程用于开发共享库,可以是自定义组件,也可以是定义组件,也可以是ActionScript代码。代码。Flex 4.0 RIA开发详解开发详解(第第2版版)2.4.1 Flex 2.4.1 Flex 工程工程Flex 工程是最根底配置的工程,工程是最根底配置的工程,Flex工程包括两种应工程包括两种应用程序类型:用程序类型:Web和和Desktop。使用。使用Flex框架、框架、XML、Web services等来开发等来开发Flex应用程序。应用程序。Web应用程序类型是在应用程序类型是在Flash Builder 4中编译
29、后会将可执行文件中编译后会将可执行文件swf文件放在文件放在HTML文件中,最终生成的是文件中,最终生成的是Web应用程序。应用程序。Desktop应用应用程序类型是在程序类型是在Flash Builder 4中编译后会将文件放在中编译后会将文件放在AIR平平台中,最终生成的是台中,最终生成的是AIR应用程序。应用程序。Flex 4.0 RIA开发详解开发详解(第第2版版)2.4.2 ActionScript 2.4.2 ActionScript 工程工程ActionScript 工程使用的是工程使用的是Flash API,而不是,而不是Flex框框架。架。ActionScript 工程没有可
30、视化的表现。也就是说工程没有可视化的表现。也就是说ActionScript应用程序中没有设计模式这样的概念。应用程序中没有设计模式这样的概念。ActionScript工程编译后也可运行于工程编译后也可运行于Flash Player中。中。Flex 4.0 RIA开发详解开发详解(第第2版版)2.4.3 Flex 2.4.3 Flex 库工程库工程Flex库工程用以创立自定义的代码库。代码库可共享库工程用以创立自定义的代码库。代码库可共享于应用程序或是其他开发人员。于应用程序或是其他开发人员。Flex库工程编译后生成库工程编译后生成SWC文件。文件。SWC文件包含组件、各种资源和文件包含组件、各
31、种资源和catalog.xml文文件。件。SWC常被用于制作主题和制作应用程序的外观。一个常被用于制作主题和制作应用程序的外观。一个SWC主题可以包括多个主题可以包括多个CSS文件和全部的图片、动画资源。文件和全部的图片、动画资源。Flex 4.0 RIA开发详解开发详解(第第2版版)2.5 Flash Builder 42.5 Flash Builder 4常用快捷键常用快捷键快捷键的作用是使得开发工作更加高效和简单。快捷键的作用是使得开发工作更加高效和简单。Flash Builder 4中提供了许多快捷键。用户想要更多的快捷键说中提供了许多快捷键。用户想要更多的快捷键说明,可选择明,可选择
32、“帮助帮助|“键辅助命令或键辅助命令或“Shift+Ctr+L快捷快捷键查看。键查看。Flex 4.0 RIA开发详解开发详解(第第2版版)2.6 2.6 使用使用FlexFlex帮助帮助开发开发Flex应用程序过程中难免会遇到困难,如对某一应用程序过程中难免会遇到困难,如对某一组件的某一属性不清楚,此时也查看组件的某一属性不清楚,此时也查看Flex 帮助。在安装帮助。在安装Flash Builder 4后,自动安装了后,自动安装了Flex 帮助。用户可选择帮助。用户可选择“帮帮助助|“帮助内容命令翻开帮助内容命令翻开Flex 帮助。帮助。Flex 帮助左下方的图标表示显示全部内容,图标表示帮
33、助左下方的图标表示显示全部内容,图标表示显示搜索结果,图标表示显示链接,图标表示显示书签。显示搜索结果,图标表示显示链接,图标表示显示书签。单击不同的图标会切换至不同的内容。另外,用户可在左单击不同的图标会切换至不同的内容。另外,用户可在左上方的上方的“搜索输入框中输入要搜索的内容。搜索输入框中输入要搜索的内容。Flex 4.0 RIA开发详解开发详解(第第2版版)2.7 2.7 小结小结Flash Builder 4是功能强大的集成开发环境,能高效是功能强大的集成开发环境,能高效地开发地开发Flex应用程序。本章主要介绍了应用程序。本章主要介绍了Flash Builder 4的相的相关根底。
34、内容包括熟悉关根底。内容包括熟悉Flash Builder 4工作区,如何编译运工作区,如何编译运行程序,如何调试程序,不同工程工程的作用、常用快捷行程序,如何调试程序,不同工程工程的作用、常用快捷键、键、Flex 帮助的使用等。通过本章的学习,读者会对帮助的使用等。通过本章的学习,读者会对Flash Builder 4的开发环境会有一个比较清楚的了解。的开发环境会有一个比较清楚的了解。Flex 4.0 RIA开发详解开发详解(第第2版版)ActionScript 3.0是在是在Flash Player运行环境下的编程语运行环境下的编程语言,是一种面向对象的语言。在言,是一种面向对象的语言。在
35、Flex工程中,使用工程中,使用ActionScript 3.0语言作为编程语言。应用程序的功能实现语言作为编程语言。应用程序的功能实现全部依赖于全部依赖于ActionScript 3.0。Flex 4.0 RIA开发详解开发详解(第第2版版)ActionScript 3.0是运行于是运行于Flash Player运行环境的编程运行环境的编程语言,使用新的语言,使用新的ActionScript虚拟机虚拟机AVM 2。AVM 2使用新使用新的二进制指令集,并在性能上有很大改进。同时,的二进制指令集,并在性能上有很大改进。同时,ActionScript 3.0使用面向对象模型,扩展和提高了应用程使
36、用面向对象模型,扩展和提高了应用程序接口。序接口。ActionScript 3.0代码被代码被Flex Builder或或Flash中的编中的编译器编译成二进制数据。这种二进制数据被装入译器编译成二进制数据。这种二进制数据被装入SWF文件文件中,然后运行于中,然后运行于Flash Player运行环境中。运行环境中。Flex 4.0 RIA开发详解开发详解(第第2版版)Flex工程中可有两种方式使用工程中可有两种方式使用ActionScript 3.0代码:代码:一种是在一种是在MXML文件的文件的标签下使用标签下使用ActionScript 3.0代码,另一种是直接在代码,另一种是直接在AS
37、文件中编写文件中编写ActionScript 3.0代代码。码。Flex 4.0 RIA开发详解开发详解(第第2版版)在在MXML文件中编写文件中编写ActionScript 3.0代码,只要在代码,只要在MXML文件下插入文件下插入标签。标签。在在MXML文件中的文件中的标签下使用标签下使用ActionScript 3.0。在在Flex Builder 3的编辑器中输入标签会自动封闭。例的编辑器中输入标签会自动封闭。例如,输入如,输入“后,自动生成封闭区域后,自动生成封闭区域“。Flex 4.0 RIA开发详解开发详解(第第2版版)ActionScript Class、ActionScrip
38、t File和和ActionScript Interface都属于都属于AS文件。它们三者的文件格式都为文件。它们三者的文件格式都为AS格式,格式,不同的只是其中的定义有所区别。不同的只是其中的定义有所区别。Flex应用程序中最常使应用程序中最常使用的用的AS文件是文件是ActionScript Class,也就类的定义。用户可,也就类的定义。用户可使用使用ActionScript Class创立向导来完成创立。创立向导来完成创立。Flex 4.0 RIA开发详解开发详解(第第2版版)3.2.3 MXML3.2.3 MXML中引用中引用ASAS文件文件MXML文件中假设要引用文件中假设要引用A
39、S文件有两种方式:一种文件有两种方式:一种是引用使用是引用使用标签中的标签中的“source属性。属性。这种方式可看成是将这种方式可看成是将MXML文件和文件和AS文件别离,从文件别离,从而减小而减小MXML文件的代码,提高重用性。文件的代码,提高重用性。另外一种方法是引用另外一种方法是引用ActionScript Class类。使用类。使用这种方法的前提是这种方法的前提是AS文件中定义的是一个类。文件中定义的是一个类。Flex 4.0 RIA开发详解开发详解(第第2版版)用户可以使用用户可以使用Flash、Flex Builder、Dreamweaver等等任何文本编辑器编写任何文本编辑器编
40、写ActionScript 3.0代码代码as格式文件。格式文件。2创立创立HelloWorld工程和工程和Greeter类类3编写编写Greeter类类5编译运行程序编译运行程序Flex 4.0 RIA开发详解开发详解(第第2版版)3.4 3.4 小结小结ActionScript 3.0是是Flex应用程序中的编程语言,控制应用程序中的编程语言,控制Flex应用程序的执行,完成应用程序的各项功能。在应用程序的执行,完成应用程序的各项功能。在Flex工工程中使用程中使用ActionScript 3.0有两种方法:一种是在有两种方法:一种是在MXML文文件的件的标签下,一种是在标签下,一种是在A
41、S文件中。对于大型应文件中。对于大型应用程序来说,代码与模型的别离能使得程序更简洁。另外,用程序来说,代码与模型的别离能使得程序更简洁。另外,将将ActionScript 3.0代码写入代码写入AS文件也提高了代码的重用性。文件也提高了代码的重用性。可以使用可以使用标签中的标签中的Source属性来指明引用的属性来指明引用的AS文件,也可以使用引用类的方法来使用文件,也可以使用引用类的方法来使用AS类。类。Flex 4.0 RIA开发详解开发详解(第第2版版)第第4 4章章 数据类型数据类型程序中使用的各种变量都应预先加以定义,即先定义,程序中使用的各种变量都应预先加以定义,即先定义,后使用。
42、对变量的定义可以包括三个方面:数据类型,存后使用。对变量的定义可以包括三个方面:数据类型,存储类型,作用域。储类型,作用域。数据类型表示了变量的性质、表示形式、占据存储空数据类型表示了变量的性质、表示形式、占据存储空间等。在间等。在ActionScript 3.0语言中,数据类型可分为:根本语言中,数据类型可分为:根本数据类型:其值不可以再分解为其他类型。数据类型:其值不可以再分解为其他类型。复杂数据类型:复杂数据类型根据已定义的一个或多复杂数据类型:复杂数据类型根据已定义的一个或多个数据类型定义。个数据类型定义。Flex 4.0 RIA开发详解开发详解(第第2版版)4.1 4.1 常量与变量
43、常量与变量对于根本数据类型量,按其取值是否可改变又分为常对于根本数据类型量,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,其值不发生改变的量量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。常量和变量可与数据称为常量,其值可变的量称为变量。常量和变量可与数据类型结合起来,如整型常量、整型变量、实型常量、实型类型结合起来,如整型常量、整型变量、实型常量、实型变量、字符串常量、字符串变量。在程序中常量是可以不变量、字符串常量、字符串变量。在程序中常量是可以不经说明而直接引用的,而变量那么必须先定义后使用。经说明而直接引用的,而变量那么必须先定义后使用。F
44、lex 4.0 RIA开发详解开发详解(第第2版版)4.1.1 4.1.1 直接常量和符号常量直接常量和符号常量1直接常量直接常量整型常量:整型常量:12、0、-3;实型常量:实型常量:4.6、-1.23;字符串常量:字符串常量:“adf、“b。2符号常量符号常量符号常量是用标识符代表一个常量。标识符是用来标符号常量是用标识符代表一个常量。标识符是用来标识变量名、符号常量名、函数名、数组名、类型名、文件识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。名的有效字符序列。Flex 4.0 RIA开发详解开发详解(第第2版版)4.1.2 4.1.2 变量变量程序中其值可以改变的量
45、称为变量。一个变量应该有程序中其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量定义必须一个名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前。变量名和变量值是两个不同的概念。放在变量使用之前。变量名和变量值是两个不同的概念。变量名是指变量的名称,用以区别不同的变量。变量值是变量名是指变量的名称,用以区别不同的变量。变量值是指变量中包含的值。指变量中包含的值。Flex 4.0 RIA开发详解开发详解(第第2版版)4.1.3 4.1.3 变量赋初值变量赋初值变量赋初值是指变量定义时就赋值给变量,也称为变变量赋初值是指变量定义时就赋值给变量,也称为变量初
46、始化。量初始化。Flex 4.0 RIA开发详解开发详解(第第2版版)4.1.4 4.1.4 局部变量和全局变量局部变量和全局变量局部变量也称为内部变量,是在函数内作定义说明的局部变量也称为内部变量,是在函数内作定义说明的变量。其作用域仅限于函数内,离开该函数后再使用这种变量。其作用域仅限于函数内,离开该函数后再使用这种变量就是非法的。变量就是非法的。主调函数中定义的变量也只能在主调函数中使用,不主调函数中定义的变量也只能在主调函数中使用,不能在其他函数中使用。能在其他函数中使用。形参变量是属于被调函数的局部变量,实参变量是属形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
47、于主调函数的局部变量。允许在不同的函数中使用一样的变量名。允许在不同的函数中使用一样的变量名。全局变量也称为外部变量,是在函数外部定义的变量。全局变量也称为外部变量,是在函数外部定义的变量。Flex 4.0 RIA开发详解开发详解(第第2版版)4.1.5 4.1.5 变量的存储方式变量的存储方式变量的存储方式按是否预先分配内存空间,可分为动变量的存储方式按是否预先分配内存空间,可分为动态存储方式和静态存储方式。静态存储方式是指在程序运态存储方式和静态存储方式。静态存储方式是指在程序运行期间分配固定的存储空间方式。动态存储方式是指在程行期间分配固定的存储空间方式。动态存储方式是指在程序运行期间根
48、据需要进展动态的分配存储空间方式。序运行期间根据需要进展动态的分配存储空间方式。用户存储空间可以分为用户存储空间可以分为3个局部:个局部:程序区程序区静态存储区静态存储区动态存储区动态存储区动态存储区存放以下数据:动态存储区存放以下数据:函数形式参数函数形式参数自动变量未加自动变量未加static声明的局部变量声明的局部变量Flex 4.0 RIA开发详解开发详解(第第2版版)4.1.5 4.1.5 变量的存储方式变量的存储方式函数调用时的现场保护和返回地址函数调用时的现场保护和返回地址对于以上这些数据,在函数开场调用时分配动态存储对于以上这些数据,在函数开场调用时分配动态存储空间,函数完毕时
49、释放这些空间。空间,函数完毕时释放这些空间。有时用户希望函数中的局部变量的值在函数调用完毕有时用户希望函数中的局部变量的值在函数调用完毕后仍保存原值,这时就需要指定局部变量为静态局部变量,后仍保存原值,这时就需要指定局部变量为静态局部变量,使用用关键字使用用关键字static进展声明。进展声明。Flex 4.0 RIA开发详解开发详解(第第2版版)4.2 4.2 整型数据整型数据整型数据用以存储整型量,如整型数据用以存储整型量,如2、60等。整型数据可等。整型数据可以是整型常量,也可以是整型变量。以是整型常量,也可以是整型变量。Flex 4.0 RIA开发详解开发详解(第第2版版)4.2.1
50、4.2.1 整型常量整型常量1十进制整型常量十进制整型常量2八进制整型常量八进制整型常量3十六进制整型常量十六进制整型常量Flex 4.0 RIA开发详解开发详解(第第2版版)4.2.2 4.2.2 整型变量整型变量1整型变量的分类整型变量的分类2整型变量的定义整型变量的定义3整型数据的溢出整型数据的溢出Flex 4.0 RIA开发详解开发详解(第第2版版)4.3 4.3 实型数据实型数据实型数据用以存储实型量。实型数据用以存储实型量。ActionScript 3.0中实型中实型数据类型只有一种:数据类型只有一种:Number型。实型数据可以是实型常型。实型数据可以是实型常量,也可以是实型变量
51、。量,也可以是实型变量。 Flex 4.0 RIA开发详解开发详解(第第2版版)4.3.1 4.3.1 实型常量的表示方法实型常量的表示方法1十进制形式十进制形式2指数形式指数形式Flex 4.0 RIA开发详解开发详解(第第2版版)4.3.2 4.3.2 实型变量实型变量1实型数据在内存中的存放形式实型数据在内存中的存放形式2实型变量的定义实型变量的定义3实型数据的舍入误差实型数据的舍入误差Flex 4.0 RIA开发详解开发详解(第第2版版)4.4 4.4 字符串数据字符串数据字符串数据存储字符串量,包括字符串常量和字符串字符串数据存储字符串量,包括字符串常量和字符串变量。变量。Actio
52、nScript 3.0中字符串数据类型为:中字符串数据类型为:String型。型。Flex 4.0 RIA开发详解开发详解(第第2版版)4.4.1 4.4.1 字符串常量字符串常量字符串常量是指存储字符串的常量,由一对双引号或字符串常量是指存储字符串的常量,由一对双引号或单引号封闭的字符串序列。单引号封闭的字符串序列。Flex 4.0 RIA开发详解开发详解(第第2版版)4.4.2 4.4.2 转义字符转义字符转义字符是一种特殊的字符常量,主要用来表示那些转义字符是一种特殊的字符常量,主要用来表示那些用一般字符不便于表示的控制代码。转义字符以反斜线用一般字符不便于表示的控制代码。转义字符以反斜
53、线开头,后跟一个或几个字符。开头,后跟一个或几个字符。Flex 4.0 RIA开发详解开发详解(第第2版版)4.4.3 4.4.3 字符串变量字符串变量字符串变量是指存储字符串的变量。字符串变量是指存储字符串的变量。Flex 4.0 RIA开发详解开发详解(第第2版版)4.5 4.5 各类型数据之间的转换各类型数据之间的转换变量的数据类型是可以转换的。转换的方法有两种,变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。一种是自动转换,一种是强制转换。Flex 4.0 RIA开发详解开发详解(第第2版版)4.5.1 4.5.1 自动类型转换自动类型转换自动转换遵循以下
54、规那么:自动转换遵循以下规那么:1假设参与运算量的类型不同,那么先转换成同假设参与运算量的类型不同,那么先转换成同一类型,然后进展运算。一类型,然后进展运算。2转换按数据长度增加的方向进展,以保证精度转换按数据长度增加的方向进展,以保证精度不降低。不降低。3在赋值运算中,赋值号两边量的数据类型不同在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。时,赋值号右边量的类型将转换为左边量的类型。Flex 4.0 RIA开发详解开发详解(第第2版版)4.5.2 4.5.2 强制类型转换强制类型转换强制类型转换把表达式的运算结果强制转换成某种数强制类型转换把表达式的运算
55、结果强制转换成某种数据类型。据类型。在使用强制转换时应注意以下问题:在使用强制转换时应注意以下问题:1括号所处的位置要正确。括号所处的位置要正确。2无论是强制转换或是自动转换,都只是为了本无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进展的临时性转换,而次运算的需要而对变量的数据长度进展的临时性转换,而不改变数据说明时对该变量定义的类型。不改变数据说明时对该变量定义的类型。Flex 4.0 RIA开发详解开发详解(第第2版版)4.6 4.6 小结小结ActionScript 3.0中的数据类型分为根本数据类型和复中的数据类型分为根本数据类型和复杂数据类型。本章详细介绍了
56、整型、实型、字符串型。根杂数据类型。本章详细介绍了整型、实型、字符串型。根据数据是否是变量或常量,根本数据又可分为整型常量、据数据是否是变量或常量,根本数据又可分为整型常量、整型变量、实型常量、实型变量、字符串常量、字符串变整型变量、实型常量、实型变量、字符串常量、字符串变量。量。各数据类型间可进展转换。转换的方式有自动转换和各数据类型间可进展转换。转换的方式有自动转换和强制转换两种。自动转换由编译器自动完成,强制转换由强制转换两种。自动转换由编译器自动完成,强制转换由用户确定转换的方向。用户确定转换的方向。Flex 4.0 RIA开发详解开发详解(第第2版版)第第5 5章章 运算符和表达式运
57、算符和表达式ActionScript 3.0语言中运算符和表达式很多。丰富的语言中运算符和表达式很多。丰富的运算符和表达式使得运算符和表达式使得ActionScript 3.0语言功能强大。语言功能强大。ActionScript 3.0语言的运算符不仅具有不同的优先级,而语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约:到底是自左向右进展运算还还要受运算符结合性的制约:到底是自左向
58、右进展运算还是自右向左进展运算。这种结合性增加了是自右向左进展运算。这种结合性增加了ActionScript 3.0语言的复杂性。语言的复杂性。Flex 4.0 RIA开发详解开发详解(第第2版版)ActionScript 3.0语言的运算符可分为以下几类:语言的运算符可分为以下几类:算术运算符用于各类数值运算,包括加算术运算符用于各类数值运算,包括加“+、减、减“-、乘乘“*、除、除“/、求余、求余“%、自增、自增“+、自减、自减“-,共,共7种。种。关系运算符用于比较运算,包括大于关系运算符用于比较运算,包括大于“、小于、小于“=、小于等于、小于等于“=和不等于和不等于“!= ,共,共6种
59、。种。逻辑运算符用于逻辑运算,包括与逻辑运算符用于逻辑运算,包括与“&、或、或“|、非非“! ,共,共3种。种。位操作运算符用于二进制位运算,包括位与位操作运算符用于二进制位运算,包括位与“&、位、位或或“|、位非、位非“、位异或、位异或“、左移、左移“,共共6种。种。Flex 4.0 RIA开发详解开发详解(第第2版版)l特殊运算符,如括号特殊运算符,如括号“(),下标,下标“,取,取XML属性属性“等。等。l赋值运算符用于赋值运算,分为简单赋值赋值运算符用于赋值运算,分为简单赋值=、复、复合算术赋值合算术赋值+=,-=,*=,/=,%=和复合位运算赋值和复合位运算赋值&=,|=,=,=,=
60、3类,共类,共11种。种。l条件运算符用于条件求值。运算符为条件运算符用于条件求值。运算符为“?:。l逗号运算符用于把假设干表达式组合成一个表达式。逗号运算符用于把假设干表达式组合成一个表达式。运算符为运算符为“,。Flex 4.0 RIA开发详解开发详解(第第2版版)5.2 5.2 算术运算符和算术表达式算术运算符和算术表达式算术运算符是用来进展算术运算的操作符,是算术运算符是用来进展算术运算的操作符,是ActionScript 3.0中最根本的运算符。使用算术运算符连接中最根本的运算符。使用算术运算符连接的表达式称为算术表达式。的表达式称为算术表达式。Flex 4.0 RIA开发详解开发详
61、解(第第2版版)5.2.1 5.2.1 根本的算术运算符根本的算术运算符根本的算术运算符包括:根本的算术运算符包括:加法运算符加法运算符“+:加法运算符为双目运算符,表示两:加法运算符为双目运算符,表示两个量相加,具有右结合性。个量相加,具有右结合性。减法运算符减法运算符“-:减法运算符为双目运算符,表示两:减法运算符为双目运算符,表示两个量相减运算,具有右结合性。个量相减运算,具有右结合性。乘法运算符乘法运算符“*:乘法运算符为双目运算,表示两个:乘法运算符为双目运算,表示两个量相乘,具有左结合性。量相乘,具有左结合性。除法运算符除法运算符“/:除法运算符为双目运算,表示两个:除法运算符为双
62、目运算,表示两个量相除,具有左结合性。量相除,具有左结合性。求余运算符求余运算符“%:求余运算符为双目运算,表示两:求余运算符为双目运算,表示两个量相除求余数,具有左结合性。个量相除求余数,具有左结合性。Flex 4.0 RIA开发详解开发详解(第第2版版)5.2.2 5.2.2 算术表达式算术表达式算术表达式是用算术运算符和括号将运算对象也称算术表达式是用算术运算符和括号将运算对象也称操作数连接起来的、符合操作数连接起来的、符合ActionScript 3.0语法规那么的语法规那么的式子。式子。Flex 4.0 RIA开发详解开发详解(第第2版版)5.2.3 5.2.3 运算符的优先级和结合
63、性运算符的优先级和结合性ActionScript 3.0语言中,运算符的运算优先级共分为语言中,运算符的运算优先级共分为15级。级。1级最高,级最高,15级最低。在表达式中,优先级较高的先级最低。在表达式中,优先级较高的先于优先级较低的进展运算。假设两个运算符优先级一样,于优先级较低的进展运算。假设两个运算符优先级一样,按运算符的结合性所规定的方向处理。按运算符的结合性所规定的方向处理。ActionScript 3.0语言中各运算符的结合性有两种:左语言中各运算符的结合性有两种:左结合性结合性(自左至右自左至右)和右结合性和右结合性(自右至左自右至左)。Flex 4.0 RIA开发详解开发详解
64、(第第2版版)5.2.4 5.2.4 自增、自减运算符自增、自减运算符自增运算符和自减运算符为单目运算只对一个变量自增运算符和自减运算符为单目运算只对一个变量操作运算,可有以下操作运算,可有以下4种形式。种形式。+i:i自增自增1后再参与其他运算。后再参与其他运算。-i:i自减自减1后再参与其他运算。后再参与其他运算。i+:i参与运算后,参与运算后,i的值再自增的值再自增1。i-:i参与运算后,参与运算后,i的值再自减的值再自减1。Flex 4.0 RIA开发详解开发详解(第第2版版)5.3 5.3 关系运算符和关系表达式关系运算符和关系表达式 关系运算符是用来对两个量之间的关系进展运算的操关
65、系运算符是用来对两个量之间的关系进展运算的操作符。使用关系运算符连接的表达式称为关系表达式。作符。使用关系运算符连接的表达式称为关系表达式。Flex 4.0 RIA开发详解开发详解(第第2版版)5.3.1 5.3.1 关系运算符关系运算符在在ActionScript 3.0语言中有以下关系运算符:语言中有以下关系运算符:l :小于;:小于;l :大于;:大于;l= :大于或等于;:大于或等于;l= :等于;:等于;l!= :不等于。:不等于。Flex 4.0 RIA开发详解开发详解(第第2版版)5.3.2 5.3.2 关系表达式关系表达式关系表达式使用关系运算符连接其他对象。关系表达式使用关系
66、运算符连接其他对象。由于表达式可以又是关系表达式,就会出现嵌套的情由于表达式可以又是关系表达式,就会出现嵌套的情况。况。关系表达式的值是真和关系表达式的值是真和“假,分别用假,分别用“1和和“0表示。表示。Flex 4.0 RIA开发详解开发详解(第第2版版)5.4 5.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 逻辑运算符是用来进展逻辑运算的操作符,包括与、逻辑运算符是用来进展逻辑运算的操作符,包括与、或、非运算。使用逻辑运算符连接的表达式称为逻辑表达或、非运算。使用逻辑运算符连接的表达式称为逻辑表达式。式。Flex 4.0 RIA开发详解开发详解(第第2版版)5.4.1 5.4.1
67、逻辑运算符逻辑运算符ActionScript 3.0语言中提供了三种逻辑运算符:语言中提供了三种逻辑运算符:& 与运算与运算| 或运算或运算! 非运算非运算与运算符与运算符“&和或运算符和或运算符“|均为双目运算符,具均为双目运算符,具有左结合性。非运算符有左结合性。非运算符“!为单目运算符,具有右结合性。为单目运算符,具有右结合性。Flex 4.0 RIA开发详解开发详解(第第2版版)5.4.2 5.4.2 逻辑运算的值逻辑运算的值逻辑运算的值只有逻辑运算的值只有“真和真和“假两种,可用假两种,可用“1和和“0 来表示。求值规那么如下:来表示。求值规那么如下:与运算与运算 “&:参与运算的两
68、个量都为真时,结果才:参与运算的两个量都为真时,结果才为真,否那么为假。为真,否那么为假。或运算或运算“|:参与运算的两个量只要有一个为真,结:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。果就为真。两个量都为假时,结果为假。以下代码说明与运算规那么。以下代码说明与运算规那么。非运算非运算“!:参与运算的量为真时,结果为假;参与:参与运算的量为真时,结果为假;参与运算量为假时,结果为真。运算量为假时,结果为真。Flex 4.0 RIA开发详解开发详解(第第2版版)5.4.3 5.4.3 逻辑表达式逻辑表达式使用逻辑运算符连接式子就得到逻辑表达式。使用逻辑运算符连接式子就
69、得到逻辑表达式。其中的表达式可以又是逻辑表达式,从而组成了嵌套其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。的情形。Flex 4.0 RIA开发详解开发详解(第第2版版)5.5 5.5 赋值运算符和赋值表达式赋值运算符和赋值表达式赋值运算符包括简单的赋值运算符赋值运算符包括简单的赋值运算符“=和复合赋值运和复合赋值运算符,如算符,如“+=、“-=等。使用赋值运算符连接的表达式等。使用赋值运算符连接的表达式称为赋值表达式。称为赋值表达式。Flex 4.0 RIA开发详解开发详解(第第2版版)5.5.1 5.5.1 简单赋值运算符和简单赋值表达式简单赋值运算符和简单赋值表达式简单赋值运算符
70、为简单赋值运算符为“=。由。由“= 连接的式子称为赋值连接的式子称为赋值表达式。表达式。赋值运算符赋值运算符“=具有右结合性。具有右结合性。Flex 4.0 RIA开发详解开发详解(第第2版版)5.5.2 5.5.2 复合赋值运算符和复合赋值表达式复合赋值运算符和复合赋值表达式在赋值符在赋值符“=之前加上其他二目运算符可构成复合赋之前加上其他二目运算符可构成复合赋值符,如值符,如“+=、“-=、“*=、“=、“%=、“=、“&=、“=、“|=。 Flex 4.0 RIA开发详解开发详解(第第2版版)5.6 5.6 逗号运算符和逗号表达式逗号运算符和逗号表达式在在ActionScript 3.0
71、语言中逗号语言中逗号“,也是一种运算符,也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。个表达式,称为逗号表达式。逗号表达式可以嵌套,即表达式逗号表达式可以嵌套,即表达式1或表达式或表达式2又是逗号又是逗号表达式。表达式。整个逗号表达式的值等于表达式整个逗号表达式的值等于表达式n的值。并不是在所的值。并不是在所有出现逗号的地方都组成逗号表达式。有出现逗号的地方都组成逗号表达式。Flex 4.0 RIA开发详解开发详解(第第2版版)5.7 5.7 位运算符位运算符位运算指对二进制数的位进展运算。位运算指
72、对二进制数的位进展运算。ActionScript 3.0语言提供了语言提供了6种位运算符:种位运算符:& :按位与;:按位与;| :按位或;:按位或; :按位异或;:按位异或; :取反;:取反; :右移。:右移。Flex 4.0 RIA开发详解开发详解(第第2版版)5.7 5.7 位运算符位运算符1按位与运算按位与运算2按位或运算按位或运算3按位异或运算按位异或运算4求反运算求反运算5左移运算左移运算6右移运算右移运算Flex 4.0 RIA开发详解开发详解(第第2版版)5.8 5.8 小结小结ActionScript 3.0中定义了许多运算符,这使得中定义了许多运算符,这使得ActionSc
73、ript 3.0语言具有强大的运算能力。运算表达式是语言具有强大的运算能力。运算表达式是由运算符连接起来的式子,其运算方式及结果与运算符的由运算符连接起来的式子,其运算方式及结果与运算符的特性严密相关。特性严密相关。本章主要介绍了算术运算符、关系运算符、逻辑运算本章主要介绍了算术运算符、关系运算符、逻辑运算符、赋值运算符和位运算符。算术运算符中详细介绍了各符、赋值运算符和位运算符。算术运算符中详细介绍了各种根本的算术运算符、逗号表达式及自增、自减运算符。种根本的算术运算符、逗号表达式及自增、自减运算符。关系运算符用以比较两个量之间的关系。逻辑运算符中包关系运算符用以比较两个量之间的关系。逻辑运
74、算符中包括与、或、非运算符。赋值运算符包括简单的赋值运算符括与、或、非运算符。赋值运算符包括简单的赋值运算符“=和复合赋值运算符。位运算符中介绍了和复合赋值运算符。位运算符中介绍了6种位运算符的种位运算符的特点及使用方法。特点及使用方法。Flex 4.0 RIA开发详解开发详解(第第2版版)第第6 6章章 程序设计的根本构造程序设计的根本构造从程序流程的角度来看,程序可以分为三种根本构造:从程序流程的角度来看,程序可以分为三种根本构造:顺序构造、分支构造和循环构造。这顺序构造、分支构造和循环构造。这3种根本构造可以组成种根本构造可以组成所有的各种复杂程序。程序设计的根本组成局部是语句,所有的各
75、种复杂程序。程序设计的根本组成局部是语句,不同语句组成不同的程序构造。例如,不同语句组成不同的程序构造。例如,for语句、语句、while语句语句组成循环构造程序。组成循环构造程序。Flex 4.0 RIA开发详解开发详解(第第2版版)6.1 6.1 顺序构造程序设计顺序构造程序设计顺序构造程序是指程序中的语句由表达式语句、函数顺序构造程序是指程序中的语句由表达式语句、函数调用语句、控制语句、复合语句、空语句或赋值语句构成。调用语句、控制语句、复合语句、空语句或赋值语句构成。顺序构造是程序中最根本的构造之一,最大的特点是程序顺序构造是程序中最根本的构造之一,最大的特点是程序是以从上至下的顺序执
76、行。是以从上至下的顺序执行。Flex 4.0 RIA开发详解开发详解(第第2版版)6.1.1 6.1.1 表达式语句表达式语句表达式语句是最根本的语句,由表达式加上分号表达式语句是最根本的语句,由表达式加上分号“;组成。组成。Flex 4.0 RIA开发详解开发详解(第第2版版)6.1.2 6.1.2 函数调用语句函数调用语句由函数名、实际参数加上分号由函数名、实际参数加上分号“;组成。;组成。执行函数语句就是调用函数体并把实际参数赋予函数执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取定义中的形式参数,然后执行被调函数体中的语句,求取函数值在后
77、面函数中再详细介绍。函数值在后面函数中再详细介绍。Flex 4.0 RIA开发详解开发详解(第第2版版)6.1.3 6.1.3 复合语句复合语句把多个语句用括号把多个语句用括号括起来组成的一个语句称复合语括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条句。在程序中应把复合语句看成是单条语句,而不是多条语句。语句。复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;结尾,在;结尾,在括号括号“外不能加分号。外不能加分号。Flex 4.0 RIA开发详解开发详解(第第2版版)6.1.4 6.1.4 空语句空语句只有分号只有分号“;组成的语句称为空语句。
78、空语句是什;组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。么也不执行的语句。在程序中空语句可用来作空循环体。Flex 4.0 RIA开发详解开发详解(第第2版版)6.1.5 6.1.5 赋值语句赋值语句赋值语句是由赋值表达式再加上分号赋值语句是由赋值表达式再加上分号“;构成。;构成。赋值语句的功能和特点都与赋值表达式一样。它是程赋值语句的功能和特点都与赋值表达式一样。它是程序中使用最多的语句之一。在赋值语句的使用中需要注意序中使用最多的语句之一。在赋值语句的使用中需要注意以下几点:以下几点:1表达式嵌套表达式嵌套2变量赋初值与赋值语句的区别变量赋初值与赋值语
79、句的区别3赋值表达式与赋值语句的区别赋值表达式与赋值语句的区别Flex 4.0 RIA开发详解开发详解(第第2版版)6.2 6.2 分支构造程序设计分支构造程序设计分支构造程序是指程序中存在分支的逻辑,需要分别分支构造程序是指程序中存在分支的逻辑,需要分别处理各分支的逻辑。分支构造程序常用的语句有:处理各分支的逻辑。分支构造程序常用的语句有:if语句、语句、ifelse语句、语句、ifelseif语句、语句、switch语句。分支构造是程语句。分支构造是程序中最根本的构造之一,最大的特点是程序是分支处理。序中最根本的构造之一,最大的特点是程序是分支处理。Flex 4.0 RIA开发详解开发详解
80、(第第2版版)6.2.1 if6.2.1 if语句语句if语句语义是:如果表达式的值为真,那么执行其后语句语义是:如果表达式的值为真,那么执行其后的语句。否那么不执行该语句。的语句。否那么不执行该语句。以下代码使用以下代码使用if语句实现取最大值。语句实现取最大值。Flex 4.0 RIA开发详解开发详解(第第2版版)6.2.2 if-else6.2.2 if-else语句语句if-else语句语义是:如果表达式的值为真,那么执行语句语义是:如果表达式的值为真,那么执行语句语句1,否那么执行语句,否那么执行语句2。Flex 4.0 RIA开发详解开发详解(第第2版版)6.2.3 if-else
81、-if6.2.3 if-else-if语句语句在使用在使用if语句中还应注意以下问题。语句中还应注意以下问题。1表达式形式的多样性表达式形式的多样性2if语句格式语句格式3if语句中使用复合语句语句中使用复合语句Flex 4.0 RIA开发详解开发详解(第第2版版)6.2.4 if6.2.4 if语句的嵌套语句的嵌套当当if语句中的执行语句又是语句中的执行语句又是if语句时,就构成了语句时,就构成了if 语句语句嵌套的情形。嵌套的情形。在嵌套内的在嵌套内的if语句可能又是语句可能又是if-else语句,这将会出现多语句,这将会出现多个个if关键字和多个关键字和多个else关键字的情况,这时要特
82、别注意关键字的情况,这时要特别注意if和和else的配对问题。的配对问题。Flex 4.0 RIA开发详解开发详解(第第2版版)6.2.5 switch6.2.5 switch语句语句ActionScript 3.0语言还提供了另一种用于多分支选择语言还提供了另一种用于多分支选择的语句:的语句:switch语句。语句。switch语句的意思是:计算表达式的值,并逐个与其语句的意思是:计算表达式的值,并逐个与其后的常量表达式值相比较。当表达式的值与某个常量表达后的常量表达式值相比较。当表达式的值与某个常量表达式的值相等时,即执行其后的语句。然后不再进展判断,式的值相等时,即执行其后的语句。然后不
83、再进展判断,继续执行后面所有继续执行后面所有case后的语句。假设表达式的值与所有后的语句。假设表达式的值与所有case后的常量表达式均不一样时,那么执行后的常量表达式均不一样时,那么执行default后的语后的语句。句。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3 6.3 循环构造程序设计循环构造程序设计循环构造是程序中一种很重要的构造。其特点是:在循环构造是程序中一种很重要的构造。其特点是:在给定条件成立时,反复执行某程序段,直到条件不成立为给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循止。给定的条件称为循环条件,反复执
84、行的程序段称为循环体环体用用goto语句和语句和if语句构成循环。语句构成循环。while语句。语句。do-while语句。语句。for语句。语句。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.1 goto6.3.1 goto语句语句goto语句是一种无条件转移语句。语句是一种无条件转移语句。goto语句一般不用,因为它将使程序层次不清,且程语句一般不用,因为它将使程序层次不清,且程序不易读。但在多层嵌套退出时,用序不易读。但在多层嵌套退出时,用goto语句那么比较合语句那么比较合理。理。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.2 while6.3.2 w
85、hile语句语句while语句中的表达式是循环条件,语句为循环体。语句中的表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真语句的语义是:计算表达式的值,当值为真(非非0)时,时,执行循环体语句。执行循环体语句。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.3 do-while6.3.3 do-while语句语句do-while语句与语句与while语句的不同在于:语句的不同在于:do-while语句语句先执行循环中的语句,然后再判断表达式。先执行循环中的语句,然后再判断表达式。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.4 fo
86、r6.3.4 for语句语句在在ActionScript 3.0语言中,语言中,for语句使用最为灵活。它语句使用最为灵活。它完全可以取代完全可以取代 while 语句。语句。for语句的执行过程如下。语句的执行过程如下。1求解表达式求解表达式1。2求解表达式求解表达式2。假设其值为真非。假设其值为真非0,那么执,那么执行行for语句中指定的内嵌语句,然后执行下面第语句中指定的内嵌语句,然后执行下面第3步。假设步。假设其值为假其值为假0,那么完毕循环,转到第,那么完毕循环,转到第5步。步。3求解表达式求解表达式3。4转回上面第转回上面第2步继续执行。步继续执行。Flex 4.0 RIA开发详解
87、开发详解(第第2版版)6.3.4 for6.3.4 for语句语句5循环完毕,执行循环完毕,执行for语句下面的一个语句。语句下面的一个语句。1表达式省略表达式省略2表达式表达式1的多样性的多样性3使用逗号表达式使用逗号表达式Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.5 6.3.5 循环的嵌套循环的嵌套循环体语句中可以又是循环语句,这样就形成了循环循环体语句中可以又是循环语句,这样就形成了循环的嵌套。例如,的嵌套。例如,for语句的循环体语句中又包括语句的循环体语句中又包括for语句。层语句。层层嵌套的循环在程序中经常见到,但一般嵌套的次数不宜层嵌套的循环在程序中经常见到,
88、但一般嵌套的次数不宜超过超过5次。因为这样会使程序的可读性和执行效率变差。次。因为这样会使程序的可读性和执行效率变差。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.6 6.3.6 几种循环语句的比较几种循环语句的比较四种循环语句都可以用来处理同一个问题,一般可以四种循环语句都可以用来处理同一个问题,一般可以互相代替。其中互相代替。其中for语句功能最强大,语句功能最强大,goto语句尽量少使用。语句尽量少使用。while语句和语句和do-while语句的循环体语句中应包括使循语句的循环体语句中应包括使循环趋于完毕的语句,从而防止死循环。环趋于完毕的语句,从而防止死循环。用用wh
89、ile语句和语句和do-while语句时,循环变量初始化的操语句时,循环变量初始化的操作应在作应在while和和do-while语句之前完成。而语句之前完成。而for语句可以在表语句可以在表达式达式1中实现循环变量的初始化。中实现循环变量的初始化。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.7 break6.3.7 break语句语句break语句通常用在循环语句和开关语句中。当语句通常用在循环语句和开关语句中。当break语句用于语句用于do-while语句、语句、for语句或语句或while语句中时,可使程语句中时,可使程序终止循环而执行循环后面的语句。序终止循环而执行循
90、环后面的语句。break语句一般总是与语句一般总是与if语句联合使用,即满足条件时便跳出循环。语句联合使用,即满足条件时便跳出循环。使用使用break语句应注意的地方包括:语句应注意的地方包括:lbreak语句对语句对if-else的条件语句不起作用。的条件语句不起作用。l在多层循环中,一个在多层循环中,一个break语句只向外跳一层。语句只向外跳一层。Flex 4.0 RIA开发详解开发详解(第第2版版)6.3.8 continue 6.3.8 continue 语句语句continue语句的作用是跳过循环体中剩余的语句而强语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。行执行下一次
91、循环。continue语句只用在语句只用在for语句、语句、while语语句或句或do-while语句中,常与语句中,常与if语句一起使用,用以加速循环。语句一起使用,用以加速循环。Flex 4.0 RIA开发详解开发详解(第第2版版)6.4 6.4 小结小结与其他大局部程序一样,与其他大局部程序一样,ActionScript 3.0语言中的根语言中的根本构造也包括顺序构造、分支构造、循环构造。顺序构造本构造也包括顺序构造、分支构造、循环构造。顺序构造程序由表达式语句、函数调用语句、复合语句、空语句、程序由表达式语句、函数调用语句、复合语句、空语句、赋值语句组成,其特点是程序按顺序执行。分支构
92、造程序赋值语句组成,其特点是程序按顺序执行。分支构造程序中有不同的逻辑分支,需要分别处理。分支构造程序可使中有不同的逻辑分支,需要分别处理。分支构造程序可使用用if语句、语句、if-else语句、语句、if-else-if语句、语句、switch语句来实现分语句来实现分支处理。循环构造程序中当循环条件成立时,程序执行循支处理。循环构造程序中当循环条件成立时,程序执行循环体中的语句,直至循环条件不成立。循环构造程序可使环体中的语句,直至循环条件不成立。循环构造程序可使用用while语句、语句、do-while语句、语句、for语句来实现循环。其中语句来实现循环。其中for语句功能最为强大。语句功
93、能最为强大。break语句和语句和continue语句可分别用于语句可分别用于退出循环和加速循环。退出循环和加速循环。Flex 4.0 RIA开发详解开发详解(第第2版版)第第7 7章章 函数函数函数是函数是ActionScript 3.0源程序的根本模块,通过对函源程序的根本模块,通过对函数模块的调用实现特定的功能。数模块的调用实现特定的功能。ActionScript 3.0语言不仅语言不仅提供了极为丰富的库函数,还允许用户建立自己定义的函提供了极为丰富的库函数,还允许用户建立自己定义的函数。用户可把算法编成一个个相对独立的函数模块,然后数。用户可把算法编成一个个相对独立的函数模块,然后通用
94、调用来使用函数。可以说通用调用来使用函数。可以说ActionScript 3.0程序的大局程序的大局部工作都是由各式各样的函数完成的。部工作都是由各式各样的函数完成的。Flex 4.0 RIA开发详解开发详解(第第2版版)7.1 7.1 函数概述函数概述1函数定义角度函数定义角度从函数定义的角度看,函数可分为库函数和用户定义从函数定义的角度看,函数可分为库函数和用户定义函数。函数。l库函数是指由库函数是指由ActionScript定义的函数。用户无须定义,定义的函数。用户无须定义,只需在程序中直接使用函数。只需在程序中直接使用函数。l用户定义函数是指由用户按需要自定义的函数。用户定义函数是指由
95、用户按需要自定义的函数。2函数返回值角度函数返回值角度l有返回值函数:此类函数被调用执行完后将向调用者有返回值函数:此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。返回一个执行结果,称为函数返回值。Flex 4.0 RIA开发详解开发详解(第第2版版)7.1 7.1 函数概述函数概述l无返回值函数:此类函数用于完成某项特定的处理任无返回值函数:此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。务,执行完成后不向调用者返回函数值。l3函数数据传送角度函数数据传送角度l无参函数:函数定义、函数说明及函数调用中均不带无参函数:函数定义、函数说明及函数调用中均不带参
96、数。参数。l有参函数:也称为带参函数。在函数定义及函数说明有参函数:也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数简称为形参。时都有参数,称为形式参数简称为形参。Flex 4.0 RIA开发详解开发详解(第第2版版)7.2 7.2 函数定义的一般形式函数定义的一般形式函数按是否带参数可分为无参函数和有参函数。因此函数按是否带参数可分为无参函数和有参函数。因此函数定义的形式也分无参函数和有参函数两种。两者的定函数定义的形式也分无参函数和有参函数两种。两者的定义差异只在于参数定义局部。义差异只在于参数定义局部。Flex 4.0 RIA开发详解开发详解(第第2版版)7.2.1 7.2.
97、1 无参函数的定义形式无参函数的定义形式无参函数是指不带有参数的函数,通常用于一些简单无参函数是指不带有参数的函数,通常用于一些简单的处理。的处理。类型标识符指明了本函数的类型。类型标识符指明了本函数的类型。函数名是由用户定义的标识符,函数名后有一个空括函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。号,其中无参数,但括号不可少。“中的内容称为函数体。中的内容称为函数体。Flex 4.0 RIA开发详解开发详解(第第2版版)7.2.2 7.2.2 有参函数的定义形式有参函数的定义形式有参函数是指带有参数的函数。在有参函数是指带有参数的函数。在ActionScript
98、 3.0中中这种函数最为常见。这种函数最为常见。Flex 4.0 RIA开发详解开发详解(第第2版版)7.3 7.3 函数的参数和函数的返回值函数的参数和函数的返回值函数的参数和函数的返回值是函数定义的最重要组成函数的参数和函数的返回值是函数定义的最重要组成局部。函数的参数决定了主调函数应传递哪些量给被调函局部。函数的参数决定了主调函数应传递哪些量给被调函数。函数的返回值决定了被调函数的返回类型和主调函数数。函数的返回值决定了被调函数的返回类型和主调函数的值。的值。Flex 4.0 RIA开发详解开发详解(第第2版版)7.3.1 7.3.1 形式参数和实际参数形式参数和实际参数函数的形参和实参
99、具有以下特点:函数的形参和实参具有以下特点:形参变量只有在被调用时才分配内存单元,在调用完形参变量只有在被调用时才分配内存单元,在调用完毕时,即刻释放所分配的内存单元。毕时,即刻释放所分配的内存单元。实参可以是常量、变量、表达式、函数等。实参可以是常量、变量、表达式、函数等。实参和形参在数量上、类型上、顺序上应严格一致,实参和形参在数量上、类型上、顺序上应严格一致,否那么会发生类型不匹配的错误。否那么会发生类型不匹配的错误。函数调用中发生的数据传送是单向的,即只能把实参函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。的值传送给形参,而不能把形参的
100、值反向地传送给实参。Flex 4.0 RIA开发详解开发详解(第第2版版)7.3.2 7.3.2 函数的返回值函数的返回值1return语句返回函数值语句返回函数值2返回值类型一致返回值类型一致3返回空类型返回空类型Flex 4.0 RIA开发详解开发详解(第第2版版)7.4 7.4 函数的调用函数的调用函数在定义后可在多处调用。函数调用的方法是使用函数在定义后可在多处调用。函数调用的方法是使用函数名,所以在同文件中函数名不能一样。函数名,所以在同文件中函数名不能一样。Flex 4.0 RIA开发详解开发详解(第第2版版)7.4.1 7.4.1 函数调用的一般形式函数调用的一般形式Action
101、Script 3.0语言中,语言中,实际参数表中的参数可以是常数、变量、其他构造类实际参数表中的参数可以是常数、变量、其他构造类型数据或表达式。各实参之间用逗号分隔。型数据或表达式。各实参之间用逗号分隔。Flex 4.0 RIA开发详解开发详解(第第2版版)7.4.2 7.4.2 函数调用的方式函数调用的方式在在ActionScript 3.0语言中,可以用以下几种方式调用语言中,可以用以下几种方式调用函数。函数。函数表达式:函数作为表达式中的一项出现在表达式函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。中,以函数返回值参与表达式的运算。函数语句:函数调用的一
102、般形式加上分号即构成函数函数语句:函数调用的一般形式加上分号即构成函数语句。语句。函数实参:函数作为另一个函数调用的实际参数出现。函数实参:函数作为另一个函数调用的实际参数出现。Flex 4.0 RIA开发详解开发详解(第第2版版)7.5 7.5 函数的嵌套调用函数的嵌套调用ActionScript 3.0语言允许在一个函数的定义中出现对语言允许在一个函数的定义中出现对另一个函数的调用,这样就形成了函数的嵌套调用,即在另一个函数的调用,这样就形成了函数的嵌套调用,即在被调函数中又调用其他函数。被调函数中又调用其他函数。Flex 4.0 RIA开发详解开发详解(第第2版版)7.6 7.6 函数的
103、递归调用函数的递归调用一个函数在它的函数体内调用它自身称为递归调用。一个函数在它的函数体内调用它自身称为递归调用。ActionScript 3.0语言允许函数的递归调用。在递归调用中,语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。每调用一次就进入新的一层。Flex 4.0 RIA开发详解开发详解(第第2版版)7.7 7.7 数组作为函数参数数组作为函数参数数组可以作为函数的参数使用,进展数据传送。数组数组可以作为函数的参数使用,进展数据传送。数组用作函数参数有两种形式:一种
104、是把数组元素作为实参使用作函数参数有两种形式:一种是把数组元素作为实参使用,另一种是把数组名作为函数的形参和实参使用。用,另一种是把数组名作为函数的形参和实参使用。Flex 4.0 RIA开发详解开发详解(第第2版版)7.7.1 7.7.1 数组元素作为函数实参数组元素作为函数实参数组元素也称下标变量,是数组中的某一项值。因此数组元素也称下标变量,是数组中的某一项值。因此使用数组元素作为函数参数与使用普通变量作为函数参数使用数组元素作为函数参数与使用普通变量作为函数参数并无区别。只是在发生函数调用时,把数组元素作为函数并无区别。只是在发生函数调用时,把数组元素作为函数的实参传递给形参。的实参传
105、递给形参。Flex 4.0 RIA开发详解开发详解(第第2版版)7.7.2 7.7.2 数组名作为函数参数数组名作为函数参数以数组名作为函数参数是指将数组的首地址作为参数以数组名作为函数参数是指将数组的首地址作为参数传递给形参。函数形参根据数组的首地址就能在内存中找传递给形参。函数形参根据数组的首地址就能在内存中找到数组的存储空间。用数组名作函数参数时,要求形参和到数组的存储空间。用数组名作函数参数时,要求形参和相对应的实参都必须是类型一样的数组。相对应的实参都必须是类型一样的数组。Flex 4.0 RIA开发详解开发详解(第第2版版)7.8 7.8 小结小结函数是函数是ActionScrip
106、t 3.0语言中的重要组成局部。函数语言中的重要组成局部。函数根据是否带参分为无参函数和有参函数。函数的参数分为根据是否带参分为无参函数和有参函数。函数的参数分为实参和形参两种。其中,实参是指主调函数中的参数,形实参和形参两种。其中,实参是指主调函数中的参数,形参是指被调函数中的参数。实参和形参在内存空间里是两参是指被调函数中的参数。实参和形参在内存空间里是两个完全不同的量,因此即使实参与形参定义了一样的名称个完全不同的量,因此即使实参与形参定义了一样的名称也不会相互影响。也不会相互影响。Flex 4.0 RIA开发详解开发详解(第第2版版)第第8 8章章 面向对象根底面向对象根底客观世界中任
107、何一个事物都可以看成一个对象。客观客观世界中任何一个事物都可以看成一个对象。客观世界是由千千万万个对象组成,对象间通过一定的渠道相世界是由千千万万个对象组成,对象间通过一定的渠道相互联系。从计算机的角度看,一个对象应该包括两个要素:互联系。从计算机的角度看,一个对象应该包括两个要素:数据和操作。对象就是一个包含数据以及与这数据和操作。对象就是一个包含数据以及与这Flex 4.0 RIA开发详解开发详解(第第2版版)8.1 8.1 类和对象类和对象客观世界中每一个实体都是对象。在客观世界中每一个实体都是对象。在ActionScript 3.0中对象的类型称为类中对象的类型称为类class。类代表
108、了某一对象的共性。类代表了某一对象的共性和特征。可以说类是对象的抽象,而对象是类的具体实例。和特征。可以说类是对象的抽象,而对象是类的具体实例。在在ActionScript 3.0中先声明一个类,然后用类去定义假设中先声明一个类,然后用类去定义假设干个同类型的对象。用户可将类看成是一种数据类型,对干个同类型的对象。用户可将类看成是一种数据类型,对象是这种数据类型的变量。象是这种数据类型的变量。Flex 4.0 RIA开发详解开发详解(第第2版版)8.1.1 8.1.1 类的定义形式类的定义形式在在ActionScript 3.0中定义一个类就是要定义类的成员中定义一个类就是要定义类的成员都数据
109、和成员函数。都数据和成员函数。Flex 4.0 RIA开发详解开发详解(第第2版版)8.1.2 8.1.2 类的成员类型类的成员类型类的成员类型包括三大类:一类是私有类的成员类型包括三大类:一类是私有private,即外界不能调用。一类是公有即外界不能调用。一类是公有public,即外界可以调用。,即外界可以调用。一类是受保护一类是受保护protected,此内容将在后面小节中介绍。,此内容将在后面小节中介绍。Flex 4.0 RIA开发详解开发详解(第第2版版)8.1.3 8.1.3 调用类中的成员调用类中的成员类中的成员只有指明类型为类中的成员只有指明类型为public后,外界才能调用。后
110、,外界才能调用。外界可以调用类中的公有成员数据和公有成员函数。在调外界可以调用类中的公有成员数据和公有成员函数。在调用类的成员之前需要实例化类,即创立类的对象。因为类用类的成员之前需要实例化类,即创立类的对象。因为类中成员只有在创立类的对象时,才会在内存中分配空间。中成员只有在创立类的对象时,才会在内存中分配空间。Flex 4.0 RIA开发详解开发详解(第第2版版)8.2 8.2 构造函数和析构函数构造函数和析构函数类定义中一般都有两个根本的成员函数:构造函数和类定义中一般都有两个根本的成员函数:构造函数和析构函数。构造函数一般用于在类对象创立时初始化成员析构函数。构造函数一般用于在类对象创
111、立时初始化成员数据。析构函数一般用于在类对象去除时释放成员所占的数据。析构函数一般用于在类对象去除时释放成员所占的内存空间。在内存空间。在ActionScript 3.0的类定义中构造函数和析构的类定义中构造函数和析构函数都可缺省,但语言中有默认的、不可见的构造函数和函数都可缺省,但语言中有默认的、不可见的构造函数和析构函数。析构函数。在类定义中构造函数还是非常常用的,因为用户经常在类定义中构造函数还是非常常用的,因为用户经常需要初始化成员数据,而默认的构造函数不初始化任何成需要初始化成员数据,而默认的构造函数不初始化任何成员数据。员数据。Flex 4.0 RIA开发详解开发详解(第第2版版)
112、8.2.1 8.2.1 构造函数构造函数构造函数用在在类对象创立时执行,一般用于成员数构造函数用在在类对象创立时执行,一般用于成员数据的初始化。构造函数与其他成员不同,不需要用户发命据的初始化。构造函数与其他成员不同,不需要用户发命令来激活它,在创立类的对象时自动执行。构造函数可用令来激活它,在创立类的对象时自动执行。构造函数可用户自定义,但构造函数名称与类名必须一致,以便系统能户自定义,但构造函数名称与类名必须一致,以便系统能识别其为构造函数。识别其为构造函数。Flex 4.0 RIA开发详解开发详解(第第2版版)8.2.2 8.2.2 析构函数析构函数析构函数与构造函数正好相反,当类对象去
113、除时自动析构函数与构造函数正好相反,当类对象去除时自动执行析构函数。析构函数往往用来做释放类对象的内存空执行析构函数。析构函数往往用来做释放类对象的内存空间。析构函数名也与类名一样,只是在函数名前面加一个间。析构函数名也与类名一样,只是在函数名前面加一个波浪符波浪符“,以区别于构造函数。,以区别于构造函数。析构函数不带任何参数,也没有返回值包括析构函数不带任何参数,也没有返回值包括void类类型。一个类中只能有一个析构函数。如果用户没有编写型。一个类中只能有一个析构函数。如果用户没有编写析构函数,编译系统会自动生成一个默认的析构函数,但析构函数,编译系统会自动生成一个默认的析构函数,但这个析构
114、函数不进展任何操作。所以许多简单的类中没有这个析构函数不进展任何操作。所以许多简单的类中没有显式的析构函数。显式的析构函数。Flex 4.0 RIA开发详解开发详解(第第2版版)8.3 8.3 继承与派生继承与派生面向对象技术强调程序的可重用性。在面向对象技术强调程序的可重用性。在ActionScript 3.0中可重用性是通过继承机制来实现。继承是一种类的重中可重用性是通过继承机制来实现。继承是一种类的重用技术,用户创立新的类可以基于某一根底类,从而充分用技术,用户创立新的类可以基于某一根底类,从而充分利用了已有资源。已存在的类称为基类或父类。通过继承利用了已有资源。已存在的类称为基类或父类
115、。通过继承而新生成的类称为派生类或子类。派生类继承了基类的所而新生成的类称为派生类或子类。派生类继承了基类的所有数据成员和成员函数,并增加了新的成员。有数据成员和成员函数,并增加了新的成员。Flex 4.0 RIA开发详解开发详解(第第2版版)8.3.1 8.3.1 派生类定义的一般形式派生类定义的一般形式派生类继承了基类的全部成员,使用派生类继承了基类的全部成员,使用extends关键字表关键字表示此类是某类的派生类。示此类是某类的派生类。派生类由于继承了基类,所以包括基类成员和其新增派生类由于继承了基类,所以包括基类成员和其新增的成员。的成员。Flex 4.0 RIA开发详解开发详解(第第
116、2版版)8.3.2 8.3.2 派生类的保护成员派生类的保护成员protected关键字和关键字和private、public一样是用来声明成一样是用来声明成员的引用权限的。由员的引用权限的。由protected声明的成员称为保护成员。声明的成员称为保护成员。保护成员不能被外界引用这点和私有成员一样,但可保护成员不能被外界引用这点和私有成员一样,但可以被派生类的成员函数引用。所以如果想在派生类引用基以被派生类的成员函数引用。所以如果想在派生类引用基类的成员,可以将基类的成员声明为类的成员,可以将基类的成员声明为protected。Flex 4.0 RIA开发详解开发详解(第第2版版)8.3.3
117、 8.3.3 派生类的构造函数派生类的构造函数派生类从基类继承了非私有成员函数和数据成员,但派生类从基类继承了非私有成员函数和数据成员,但是在建立派生类的对象时,系统只执行派生类的构造函数,是在建立派生类的对象时,系统只执行派生类的构造函数,而不会自动执行基类的构造函数。也就是说,基类的构造而不会自动执行基类的构造函数。也就是说,基类的构造函数是不能继承的。如果基类的构造函数包含对变量的初函数是不能继承的。如果基类的构造函数包含对变量的初始化,那么在建立派生类的对象时,由于没有执行基类的始化,那么在建立派生类的对象时,由于没有执行基类的构造函构造函就会使基类的变量未初始化。就会使基类的变量未初
118、始化。 Flex 4.0 RIA开发详解开发详解(第第2版版)8.4 8.4 接口接口在大型程序设计初期开发者往往不需要思考具体的逻在大型程序设计初期开发者往往不需要思考具体的逻辑过程。比方做菜,先想好要买哪些原料,大致采取怎样辑过程。比方做菜,先想好要买哪些原料,大致采取怎样的做法,是煮、蒸或是炸。不用去思考味精放多少,要烧的做法,是煮、蒸或是炸。不用去思考味精放多少,要烧多久等琐碎的事情。这样做的好处是能整体把握程序设计,多久等琐碎的事情。这样做的好处是能整体把握程序设计,防止陷入代码实现误区。防止陷入代码实现误区。ActionScript 3.0语言提供接口的概念。接口是包含一语言提供接
119、口的概念。接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法中不包含任何实现,只定义了有哪些和返回值。接口方法中不包含任何实现,只定义了有哪些方法。然后通过类来实现接口,一个类可以实现多个接口。方法。然后通过类来实现接口,一个类可以实现多个接口。Flex 4.0 RIA开发详解开发详解(第第2版版)8.4.1 8.4.1 创立接口创立接口在在Flex Builder 3中创立接口的方法与创立类的方法类中创立接口的方法与创立类的方法类似。执行似。执行“File|“New|“ActionScript Interface
120、命令,命令,弹出新建接口向导。弹出新建接口向导。Flex 4.0 RIA开发详解开发详解(第第2版版)8.4.2 8.4.2 使用类实现接口使用类实现接口接口定义了抽象的方法,但没有方法的具体实现。接接口定义了抽象的方法,但没有方法的具体实现。接口方法的具体实现可在类中完成。口方法的具体实现可在类中完成。ICommand接口中定义了接口中定义了excute抽象方法,抽象方法,GetEngCaptionCommand类实现了接口中的类实现了接口中的excute方法。方法。实现接口的类中一定要包括接口中全部方法的实现。实现接口的类中一定要包括接口中全部方法的实现。上述上述ICommand接口中只有
121、一个接口中只有一个execute方法待实现,所以方法待实现,所以类中只实现了类中只实现了execute。假设。假设Command接口中有更多方法,接口中有更多方法,类都需要一一实现方法。类都需要一一实现方法。用户不能调用接口中方法,而且这样做也没有意义,用户不能调用接口中方法,而且这样做也没有意义,因为接口不提供方法的具体实现。使用类实现接口后,用因为接口不提供方法的具体实现。使用类实现接口后,用户就可调用类中的方法来完成任务。户就可调用类中的方法来完成任务。Flex 4.0 RIA开发详解开发详解(第第2版版)8.5 8.5 小结小结客观世界中的每个事物都可看作是一个对象,对象间客观世界中的
122、每个事物都可看作是一个对象,对象间相互联系,构成复杂的一个世界。类是同类型的对象的集相互联系,构成复杂的一个世界。类是同类型的对象的集合,也就是说类是对象的抽象,对象是类的具体实例。类合,也就是说类是对象的抽象,对象是类的具体实例。类中包括成员数据和成员函数。类成员的类型有中包括成员数据和成员函数。类成员的类型有3种:种:public、private和和protected。只有声明为。只有声明为public的成员外界才可的成员外界才可以访问。构造函数是指在类对象创立时自动执行的函数,以访问。构造函数是指在类对象创立时自动执行的函数,一般用于初始化成员数据。析构函数是指在类对象消除时一般用于初始
123、化成员数据。析构函数是指在类对象消除时自动执行的函数,一般用于释放内存空间。继承机制是指自动执行的函数,一般用于释放内存空间。继承机制是指在原有类的根底上新建类,这样就能充分利用好现有资源,在原有类的根底上新建类,这样就能充分利用好现有资源,有利于程序的扩展和重用。有利于程序的扩展和重用。Flex 4.0 RIA开发详解开发详解(第第2版版)第第9 9章章 数字处理数字处理数字的用法非常广泛,有多种表示形式,如十进制、数字的用法非常广泛,有多种表示形式,如十进制、十六进制等。每种表示形式都有其特定用处,如十六进制十六进制等。每种表示形式都有其特定用处,如十六进制经常来表示经常来表示RGB颜色值
124、。数字和数学严密相关,没有数学颜色值。数字和数学严密相关,没有数学运算,运算,Flash应用程序将非常迟钝。应用程序将非常迟钝。Flex 4.0 RIA开发详解开发详解(第第2版版)9.1 9.1 数字的不同表现形式数字的不同表现形式数字有不同的表现形式。例如,指定数字为十进制,数字有不同的表现形式。例如,指定数字为十进制,八进制或十六进制。八进制或十六进制。ActionScript 3.0语言中十六进制以语言中十六进制以0x开头,八进制以开头,八进制以0开头,二进制不能直接表示,但可以用等开头,二进制不能直接表示,但可以用等价的八进制或十六进制表示。价的八进制或十六进制表示。Flex 4.0
125、 RIA开发详解开发详解(第第2版版)9.2 9.2 不同数字类型之间的转换不同数字类型之间的转换Number、int和和uint三种数字类型可以相互转换。转换三种数字类型可以相互转换。转换的方法是强制转换,这在前面章节中已介绍。另外,使用的方法是强制转换,这在前面章节中已介绍。另外,使用parseInt()函数可把字符串转换为函数可把字符串转换为int型。型。Number、uint或或int对象中对象中的的toString()方法可将数字转换为字符串。在方法可将数字转换为字符串。在ActionScript中中不管怎么设置数字,其内部结果总是以十进制存储。不管怎么设置数字,其内部结果总是以十进
126、制存储。Flex 4.0 RIA开发详解开发详解(第第2版版)9.2.1 9.2.1 输出其他进制函数输出其他进制函数toStringtoString如果要输出为其他进制,可使用如果要输出为其他进制,可使用toString()方法。方法。toString()方法只有一个参数,表示进制数,合法范围方法只有一个参数,表示进制数,合法范围为为2到到36。此参数可用默认设置,默认为。此参数可用默认设置,默认为10。Flex 4.0 RIA开发详解开发详解(第第2版版)9.2.2 9.2.2 十进制转化函数十进制转化函数parseIntparseIntparseInt()方法与方法与toString()
127、方法正好相反,把指定的字方法正好相反,把指定的字符串转换为十进制数。符串转换为十进制数。parseInt()方法有两个参数:方法有两个参数:待转换的字符串。待转换的字符串。字符串的进制。这个参数表示字符串是以什么进制存字符串的进制。这个参数表示字符串是以什么进制存储的。储的。Flex 4.0 RIA开发详解开发详解(第第2版版)9.3 9.3 四舍五入四舍五入数字的有效数字越长精度越高,但不是精度越高越好。数字的有效数字越长精度越高,但不是精度越高越好。数字的有效数字长度应根据实际需要确定。例如,银行中数字的有效数字长度应根据实际需要确定。例如,银行中使用的账目数字都准确到小数点后三位,形如使
128、用的账目数字都准确到小数点后三位,形如12.067。四。四舍五入是指在缩短有效数字长度时作取舍。四舍五入的一舍五入是指在缩短有效数字长度时作取舍。四舍五入的一般原那么是般原那么是“逢五进一,即某位数字大于逢五进一,即某位数字大于5时,前一位数时,前一位数字加字加1。Flex 4.0 RIA开发详解开发详解(第第2版版)9.3.1 9.3.1 四舍五入函数四舍五入函数roundroundround()方法将小数转为整数。方法将小数转为整数。round()方法的参数为需四舍五入的数值。方法的参数为需四舍五入的数值。Flex 4.0 RIA开发详解开发详解(第第2版版)9.3.2 9.3.2 其他舍
129、入函数其他舍入函数Math中中floor()方法可以去掉小数局部,方法可以去掉小数局部,ceil()方法去掉方法去掉小数局部后自动加小数局部后自动加1。另外,四舍五入最好的方法是使用自定义类另外,四舍五入最好的方法是使用自定义类NumberUtilities中的中的round()方法。方法。NumberUtilities类是第类是第三方的类,可到三方的类,可到 :/ rightactionscript /ascb下载。下载。NumberUtilities的的round()方法有两个参数:方法有两个参数:要舍入的数值。要舍入的数值。间隔值。间隔值。Flex 4.0 RIA开发详解开发详解(第第2
130、版版)9.4 9.4 格式化输出格式化输出程序经常会遇到需要在输出时在头部和尾部加程序经常会遇到需要在输出时在头部和尾部加0,或,或空格来到达格式化输出的目的。空格来到达格式化输出的目的。掩码是指输出的格式,可用掩码是指输出的格式,可用“#、“.、“0等来表等来表示。示。Flex 4.0 RIA开发详解开发详解(第第2版版)9.5 9.5 格式化货币数字格式化货币数字程序时经常使用到数字以特定的货币格式表示,如美程序时经常使用到数字以特定的货币格式表示,如美元等。解决的方法是使用元等。解决的方法是使用NumberFormat类中的类中的currencyFormat()方法。方法。currenc
131、yFormat方法有两个参数:方法有两个参数:待格式的数值。待格式的数值。本地化设置类本地化设置类Loacl。Flex 4.0 RIA开发详解开发详解(第第2版版)9.6 9.6 生成随机数生成随机数应用程序中经常用到生成随机数,如验证码。随机数应用程序中经常用到生成随机数,如验证码。随机数最大的好处是一般不会有重复现象发生。最大的好处是一般不会有重复现象发生。Flex 4.0 RIA开发详解开发详解(第第2版版)9.6.1 Math9.6.1 Math类中生成随机实型函数类中生成随机实型函数randomrandom使用使用Math类的类的random()方法可生成方法可生成0到到0.9999
132、99999的的随机数。随机数。random()方法不带参数,随机生成一个小于方法不带参数,随机生成一个小于1的实的实型数。型数。Flex 4.0 RIA开发详解开发详解(第第2版版)9.6.2 NumberUtilities9.6.2 NumberUtilities类中生成随机数函数类中生成随机数函数randomrandomMath类的类的random()方法生成方法生成0到到0.999999999的随机实的随机实型。大多数情况用户希望产生整数而不是实型,此时可使型。大多数情况用户希望产生整数而不是实型,此时可使用用NumberUtilities类的类的random()方法生成指定范围的随机方
133、法生成指定范围的随机数。数。NumberUtilities类的类的random()方法有三个参数:方法有三个参数:可承受的最小值。可承受的最小值。可承受的最大值。可承受的最大值。间隔值。此参数可默认,默认为间隔值。此参数可默认,默认为1,即为整数。,即为整数。Flex 4.0 RIA开发详解开发详解(第第2版版)9.7 9.7 小结小结ActionScript 3.0中数字的类型有中数字的类型有Number、int和和uint这这3种。数字可用十进制、八进制、十六进制或二进制表示。种。数字可用十进制、八进制、十六进制或二进制表示。其中八进制以其中八进制以0开头,数码为开头,数码为0到到7。十六
134、进制以。十六进制以0x开头,数开头,数码为码为0到到9和和a到到z。各种数字类型可强制转换,也可将字符。各种数字类型可强制转换,也可将字符串转换为数字。使用串转换为数字。使用Math类中的类中的round()方法可四舍五入一方法可四舍五入一个整型。使用个整型。使用NumberUtilities类的类的round()方法可四舍五入方法可四舍五入任意数。数字允许以特定格式输出,方法是使用任意数。数字允许以特定格式输出,方法是使用NumberFormat类的类的format方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)第第1010章章 日期与时间日期与时间日期和时间对于许多日期和
135、时间对于许多ActionScript 3.0应用程序来说是应用程序来说是很重要的。例如,统计当月收益状况时需要处理相关的日很重要的。例如,统计当月收益状况时需要处理相关的日期内的数据。期内的数据。ActionScript 3.0中存储日期和时间的形式是中存储日期和时间的形式是Epoch标准,而不是传统的标准,而不是传统的“年月日时分秒形式。年月日时分秒形式。Flex 4.0 RIA开发详解开发详解(第第2版版)10.1 10.1 获取系统当前日期获取系统当前日期想获取系统当前日期,可使用想获取系统当前日期,可使用Date类的不带参构造函类的不带参构造函数。数。由于由于Flex是客户端的程序,所
136、以获取的时间也为客户是客户端的程序,所以获取的时间也为客户端的时间,请确保客户端的时间是正确的。端的时间,请确保客户端的时间是正确的。假设要获取效劳器端的系统日期,可结合其他效劳器假设要获取效劳器端的系统日期,可结合其他效劳器端语言来获取,如端语言来获取,如PHP、ASP等。然后通过等。然后通过URLLoader类类调用相应的效劳器端页面来传递给调用相应的效劳器端页面来传递给Flex。Flex 4.0 RIA开发详解开发详解(第第2版版)10.2 10.2 获取日期中的特定值获取日期中的特定值Date类的构造函数能获取当前日期,但用户经常不需类的构造函数能获取当前日期,但用户经常不需要完整的日
137、期,只需要其中的年、月或日等。要完整的日期,只需要其中的年、月或日等。Date类中的类中的每局部特定值都存储于特定的属性中,用户只要读取相应每局部特定值都存储于特定的属性中,用户只要读取相应的属性就能获取日期中的特定值。的属性就能获取日期中的特定值。Flex 4.0 RIA开发详解开发详解(第第2版版)10.3 10.3 自定义星期名和月份名自定义星期名和月份名上一节介绍了可用上一节介绍了可用Date类中的类中的month属性来获取月份。属性来获取月份。在在ActionScript 3.0中月份以数字表示,范围为中月份以数字表示,范围为0-11,其中,其中0表示一月份。这种方式在程序中往往不满
138、足用户要求,此表示一月份。这种方式在程序中往往不满足用户要求,此时可使用时可使用DateFormat类来格式化日期和时间,类来格式化日期和时间,DateFormat类在类在ascb.util.DateFormat包中。包中。Flex 4.0 RIA开发详解开发详解(第第2版版)10.4 10.4 格式化输出日期格式化输出日期ActionScript 3.0中日期以中日期以Epoch标准存储,输出日期标准存储,输出日期型会显示形如型会显示形如“Tue Jan 5 14:25:20 GMT-0800 2021这样的这样的时间格式。显然这样的输出格式并不一定能满足用户的需时间格式。显然这样的输出格式
139、并不一定能满足用户的需求。用户可根据求。用户可根据Date类中的特定值属性,如类中的特定值属性,如fullYear、month来组合需要的输出格式。来组合需要的输出格式。Flex 4.0 RIA开发详解开发详解(第第2版版)10.5 10.5 使用计时器使用计时器有些程序中需要使用到计时器。例如,一个应用程序有些程序中需要使用到计时器。例如,一个应用程序中每隔中每隔10分钟检验一下用户是否合法。此时需要用到分钟检验一下用户是否合法。此时需要用到Timer类,它包含于类,它包含于flash.utils.Timer包中。包中。需要注意的是:计时器不会自动执行,应使用需要注意的是:计时器不会自动执行
140、,应使用start()方法来开场计时器。方法来开场计时器。另外,在构造计时器时,可使用第二个参数,表示计另外,在构造计时器时,可使用第二个参数,表示计时器的执行次数。此参数可默认,默认为时器的执行次数。此参数可默认,默认为0,即无限次。,即无限次。Flex 4.0 RIA开发详解开发详解(第第2版版)10.6 10.6 计算日期特定值的间隔计算日期特定值的间隔日期特定值的间隔是指两个日期间某个特定值的间隔,日期特定值的间隔是指两个日期间某个特定值的间隔,如如“相差几天,相差几天,“相差几小时等。由于相差几小时等。由于Date类中以类中以Epoch标准存储,即以毫秒为单位存储,所以两个日期相标准
141、存储,即以毫秒为单位存储,所以两个日期相减能得到间隔时间,单位为毫秒。此时用户可根据时间的减能得到间隔时间,单位为毫秒。此时用户可根据时间的规那么计算来得到需要的数值,但这种方式很麻烦。规那么计算来得到需要的数值,但这种方式很麻烦。使用使用DateUtilities类中相应的求间隔的方法可很方便地类中相应的求间隔的方法可很方便地计算日期间的特定值间隔。这些方法的名称的开头字母都计算日期间的特定值间隔。这些方法的名称的开头字母都为为“elapsed。Flex 4.0 RIA开发详解开发详解(第第2版版)10.7 10.7 从字符串中获取日期从字符串中获取日期使用使用DateFormat类中的类中
142、的parse()方法可从字符串中获取方法可从字符串中获取日期。因为在创立日期。因为在创立DateFormat类对象时定义了日期的格式,类对象时定义了日期的格式,所以只要字符串使用一样的格式就能将字符串转化为日期。所以只要字符串使用一样的格式就能将字符串转化为日期。Flex 4.0 RIA开发详解开发详解(第第2版版)10.8 10.8 小结小结日期和时间是应用程序最常用的内容之一。日期和时间是应用程序最常用的内容之一。ActionScript 3.0中日期存储于中日期存储于Date类型中,且以类型中,且以Epoch标准标准存储。存储。Date类型的特定属性中存储了日期和时间的特定值,类型的特定
143、属性中存储了日期和时间的特定值,如年、月、日等。用户可以访问特定的属性来读取日期中如年、月、日等。用户可以访问特定的属性来读取日期中的特定值。的特定值。Date类型中特定属性的值都为数字,如类型中特定属性的值都为数字,如1月份以月份以0表示。用户可自定义别名数组来格式化此类特定值。使用表示。用户可自定义别名数组来格式化此类特定值。使用DateFormat类中的类中的Format()方法可方便地格式化日期。使方法可方便地格式化日期。使用用DateUtilities类中相应的求间隔的方法可很方便地计算日类中相应的求间隔的方法可很方便地计算日期间的特定值间隔。期间的特定值间隔。Flex 4.0 RI
144、A开发详解开发详解(第第2版版)第第1111章章 字符串字符串字符串是字符串是ActionScript 3.0中文本的根底。一个字符串中文本的根底。一个字符串由零个或零个以上个字符组成,由单引号或双引号表示。由零个或零个以上个字符组成,由单引号或双引号表示。在在ActionScript 3.0中单引号和双引号表示字符串的意义是中单引号和双引号表示字符串的意义是一样的,这不同于其他的一些语言。一样的,这不同于其他的一些语言。Flex 4.0 RIA开发详解开发详解(第第2版版)11.1 11.1 连接字符串连接字符串连接字符串是指两个及两个以上字符串合并为一个字连接字符串是指两个及两个以上字符串
145、合并为一个字符串。可使用符串。可使用“+操作符或操作符或“+=操作符来连接字符串。本操作符来连接字符串。本节将介绍如何连接字符串及连接时应注意的问题。节将介绍如何连接字符串及连接时应注意的问题。Flex 4.0 RIA开发详解开发详解(第第2版版)11.1.1 “+11.1.1 “+操作符连接字符串操作符连接字符串“+操作符是使字符串首尾相接,。操作符是使字符串首尾相接,。字符串中可以有动态变量,编译器会将变量自动转换字符串中可以有动态变量,编译器会将变量自动转换为字符串型。为字符串型。Flex 4.0 RIA开发详解开发详解(第第2版版)11.1.2 “+=11.1.2 “+=操作符连接字符
146、串操作符连接字符串“+=操作符表示先进展连接操作,然后把结果赋值操作符表示先进展连接操作,然后把结果赋值给第一个字符串。给第一个字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)11.2 11.2 字符串中使用引号字符串中使用引号字符串是使用单引号或双引号进展封闭的,但此时假字符串是使用单引号或双引号进展封闭的,但此时假设想在字符串中使用引号,就应该有些注意的地方,以免设想在字符串中使用引号,就应该有些注意的地方,以免编译错误。编译错误。一种修改的方法是使用单引号来封闭字符串。一种修改的方法是使用单引号来封闭字符串。另一种修改方法是使用转义字符,双引号的转义字符另一种修改方法是使用
147、转义字符,双引号的转义字符为为“。Flex 4.0 RIA开发详解开发详解(第第2版版)11.3 11.3 插入空白字符插入空白字符字符串中可插入空白字符,如空格、字符串中可插入空白字符,如空格、Tab符、制表符符、制表符等。假设要插入空格符,可用等。假设要插入空格符,可用“ 双引号中间有空格双引号中间有空格表示。假设要插入其他空白字符就需要使用转义字符来表表示。假设要插入其他空白字符就需要使用转义字符来表示了。示了。Flex 4.0 RIA开发详解开发详解(第第2版版)11.4 11.4 搜索匹配字符串搜索匹配字符串字符串中搜索匹配的字符串可使用字符串中搜索匹配的字符串可使用indexOf(
148、)方法或方法或lastIndexOf()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)11.4.1 11.4.1 顺序搜索字符串函数顺序搜索字符串函数indexOfindexOfindexOf()方法从指定的开场下标开场往后搜索字符串。方法从指定的开场下标开场往后搜索字符串。假设找到那么返回第一个匹配位置。假设没找到那么返回假设找到那么返回第一个匹配位置。假设没找到那么返回-1。indexOf()方法有两个参数:方法有两个参数:要搜索的字符串。要搜索的字符串。开场的下标。此参数可默认,默认为开场的下标。此参数可默认,默认为0。Flex 4.0 RIA开发详解开发详解(第第2
149、版版)11.4.2 11.4.2 逆序搜索字符串函数逆序搜索字符串函数lastIndexOflastIndexOflastIndexOf()方法与方法与indexOf()方法正好相反,它是从方法正好相反,它是从后往前搜索。后往前搜索。lastIndexOf()方法的参数及使用方法与方法的参数及使用方法与indexOf()大致一样。不同的地方在于:假设第二个参数缺省,默认大致一样。不同的地方在于:假设第二个参数缺省,默认为字符串的完毕位置。为字符串的完毕位置。Flex 4.0 RIA开发详解开发详解(第第2版版)11.5 11.5 取字符串的子串取字符串的子串字符串中取子串操作很有用。例如,在文
150、件路径中,字符串中取子串操作很有用。例如,在文件路径中,用户想要获取其文件名,可截取用户想要获取其文件名,可截取“和和“.之间的字符串。之间的字符串。可使用可使用substring()方法、方法、substr()方法或方法或slice()方法来取子串。方法来取子串。Flex 4.0 RIA开发详解开发详解(第第2版版)11.5.1 substr()11.5.1 substr()方法方法substr()方法是从开场下标起截取一定的长度作为子串。方法是从开场下标起截取一定的长度作为子串。substr方法有两个参数:方法有两个参数:(1)开场下标:表示从字符串的哪一位置开场截取子串。开场下标:表示从
151、字符串的哪一位置开场截取子串。(2)子串长度:此参数可默认,默认为取剩余的全部长子串长度:此参数可默认,默认为取剩余的全部长度。度。Flex 4.0 RIA开发详解开发详解(第第2版版)11.5.2 substring()11.5.2 substring()方法方法substring()方法是从开场下标起至完毕下标为止截取方法是从开场下标起至完毕下标为止截取字符串作为子串。字符串作为子串。substring()方法的参数有以下两个。方法的参数有以下两个。开场下标:表示从字符串的哪一位置开场截取子串。开场下标:表示从字符串的哪一位置开场截取子串。完毕下标:此参数可默认,默认为从开场下标开场的完毕
152、下标:此参数可默认,默认为从开场下标开场的全部字符串。全部字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)11.5.3 slice()11.5.3 slice()方法方法slice()方法和方法和substring()方法的功能一样,参数也一致。方法的功能一样,参数也一致。substring()方法与方法与slice()方法有以下区别。方法有以下区别。substring()方法中的参数如果为负数会自动转化为零,方法中的参数如果为负数会自动转化为零,但但slice()方法会把负数看成是方法会把负数看成是“倒数第几个。倒数第几个。substring()方法中假设完毕下标小于开场下标,
153、表示方法中假设完毕下标小于开场下标,表示反转截取字符串,但反转截取字符串,但slice()方法没有此功能。方法没有此功能。Flex 4.0 RIA开发详解开发详解(第第2版版)11.6 11.6 字符串转为数组字符串转为数组字符串中的字符可存储于数组中,可使用字符串中的字符可存储于数组中,可使用split方法实方法实现字符串转为数组。现字符串转为数组。split方法只有一个参数:分隔字符串。此参数也可默方法只有一个参数:分隔字符串。此参数也可默认,默认为认,默认为“空字符串。空字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)11.7 11.7 替换字符串替换字符串替换字符串中的某
154、些字符可使用替换字符串中的某些字符可使用replace()方法或方法或splice()方法配合方法配合join()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)11.7.1 11.7.1 替换字符串函数替换字符串函数replacereplacereplace()方法是方法是String类中的一个方法,可搜索指定字类中的一个方法,可搜索指定字符串并替换为其他字符串,然后返回替换后的字符串。符串并替换为其他字符串,然后返回替换后的字符串。replace()方法有两个参数。方法有两个参数。l搜索字符串,表示待替换的字符串。搜索字符串,表示待替换的字符串。l替换字符串,表示替换成的
155、字符串。替换字符串,表示替换成的字符串。replace()方法只能替换第一个匹配的字符串,要想全方法只能替换第一个匹配的字符串,要想全部替换,可使用循环语句实现。部替换,可使用循环语句实现。另外,另外,replace()方法可用于移除某字符串,只要将第方法可用于移除某字符串,只要将第二个参数设置为空字符串即可二个参数设置为空字符串即可Flex 4.0 RIA开发详解开发详解(第第2版版)11.7.2 11.7.2 其他替换字符串方法其他替换字符串方法由于由于replace()方法只能替换一次,所以假设要替换全方法只能替换一次,所以假设要替换全部就得配合循环语句。部就得配合循环语句。Action
156、Script 3.0中使用中使用split()方法配方法配合合join()方法就能实现全部替换的效果。方法就能实现全部替换的效果。split()方法是以某方法是以某字符串来分隔,使得字符串转为数组。字符串来分隔,使得字符串转为数组。join()方法是以某字方法是以某字符串来连接,使数组转为字符串。符串来连接,使数组转为字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)11.8 11.8 对字符串中的单字符操作对字符串中的单字符操作字符串类型不是数组,不能使用下标操作符字符串类型不是数组,不能使用下标操作符“来操来操作字符串中某一位的字符。作字符串中某一位的字符。字符串类型中假设要操
157、作单个字符可使用字符串类型中假设要操作单个字符可使用charAt()方方法。法。charAt()方法只有一个参数:字符位置。方法只有一个参数:字符位置。Flex 4.0 RIA开发详解开发详解(第第2版版)11.9 11.9 大小写转换大小写转换字符串类型中提供了大小写转换的方法,其中字符串类型中提供了大小写转换的方法,其中toUpperCase()方法是转为大写字母,方法是转为大写字母,toLowerCase()方法是转为小写字方法是转为小写字母。母。Flex 4.0 RIA开发详解开发详解(第第2版版)11.10 11.10 过滤空白字符过滤空白字符前面章节中已介绍如何添加空白字符,本小节
158、正好相前面章节中已介绍如何添加空白字符,本小节正好相反,将介绍如何过滤掉空白字符。在一些程序中,多余的反,将介绍如何过滤掉空白字符。在一些程序中,多余的空白字符会使程序逻辑错误。例如,在用户登录时用户名空白字符会使程序逻辑错误。例如,在用户登录时用户名“ling本来是合法的,但因为有了空白字符,如本来是合法的,但因为有了空白字符,如“ling 而变成非法了。而变成非法了。这里所说的过滤空白字符是指过滤掉字符串之前和之这里所说的过滤空白字符是指过滤掉字符串之前和之后的空白字符,但不包括字符串本身带的空白字符。后的空白字符,但不包括字符串本身带的空白字符。使用使用StringUtil类中的类中的t
159、rim()方法可以过滤掉空白字符,方法可以过滤掉空白字符,包括空格符、回车符、制表符、包括空格符、回车符、制表符、Tab键等。键等。trim()方法的参数只有一个:待过滤的字符串。方法的参数只有一个:待过滤的字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)11.11 11.11 反转字符串反转字符串字符串有时需要反转,如字符串有时需要反转,如“abcd反转为反转为“dcba。字。字符串类型符串类型String中没有直接反转的方法。反转字符串的中没有直接反转的方法。反转字符串的步骤如下。步骤如下。1使用字符串类中的使用字符串类中的split()方法将字符串转为数组方法将字符串转为数
160、组型。型。2使用数组类中的使用数组类中的reverse()方法进展反转。方法进展反转。3使用数组类中的使用数组类中的join()方法转为字符串型。方法转为字符串型。Flex 4.0 RIA开发详解开发详解(第第2版版)11.12 11.12 存取存取ASCIIASCII码码ActionScript 3.0中没有中没有C语言中存储单字符的语言中存储单字符的“char类型,统一都用类型,统一都用String类型来存储字符。类型来存储字符。ASCII码是一种国码是一种国际标准,它为每个字母或控制符赋于一个唯一的编号。际标准,它为每个字母或控制符赋于一个唯一的编号。String类中提供类中提供from
161、CharCode()方法和方法和charCodeAt()方法方法来存取来存取ASCII码。码。Flex 4.0 RIA开发详解开发详解(第第2版版)11.12.1 11.12.1 以以ASCIIASCII码构造字符串函数码构造字符串函数fromCharCodefromCharCodefromCharCode()方法的功能是用方法的功能是用ASCII码构造字符串。码构造字符串。fromCharCode()方法的参数可为一个或多个方法的参数可为一个或多个ASCII码。码。Flex 4.0 RIA开发详解开发详解(第第2版版)11.12.2 11.12.2 读取单字符的读取单字符的ASCIIASCI
162、I码函数码函数charCodeAtcharCodeAtcharCodeAt()方法的功能是读取某一位字符的方法的功能是读取某一位字符的ASCII码。码。charCodeAt()方法只有一个参数:字符位置,即某一方法只有一个参数:字符位置,即某一位字符的下标。位字符的下标。Flex 4.0 RIA开发详解开发详解(第第2版版)11.13 11.13 小结小结字符串是字符串是ActionScript 3.0中最根底的一局部。因为字中最根底的一局部。因为字符串是文本的根底,而符串是文本的根底,而ActionScript 3.0应用程序又经常使应用程序又经常使用和操作文本。一个合法的字符串使用双引号或
163、单引号封用和操作文本。一个合法的字符串使用双引号或单引号封闭。本章主要介绍了字符串中最常用的一些处理方法,包闭。本章主要介绍了字符串中最常用的一些处理方法,包括连接字符串、插入空白字符、搜索匹配字符串、替换字括连接字符串、插入空白字符、搜索匹配字符串、替换字符串、取子串、大小写转换等。符串、取子串、大小写转换等。Flex 4.0 RIA开发详解开发详解(第第2版版)第第1212章章 数组数组ActionScript 3.0语言中数组类型与其他语言有很大的语言中数组类型与其他语言有很大的不同。最大的区别在于:数组不仅是数据类型,也是一种不同。最大的区别在于:数组不仅是数据类型,也是一种类。数组类
164、中定义了很多对数组的操作方法。例如,类。数组类中定义了很多对数组的操作方法。例如,push方法在数组尾部添加元素,方法在数组尾部添加元素,pop方法在数组首部去除元素。方法在数组首部去除元素。另外,数组类中的元素可以是任意的,即数组中的元素不另外,数组类中的元素可以是任意的,即数组中的元素不一定都是一样数据类型。一定都是一样数据类型。Flex 4.0 RIA开发详解开发详解(第第2版版)12.1 12.1 数组简介数组简介数组保存一组相关联的数据,用来组织和处理这些数数组保存一组相关联的数据,用来组织和处理这些数据。数组概念在生活中是很常见的。例如,学生名单包含据。数组概念在生活中是很常见的。
165、例如,学生名单包含姓名、性别、家庭地址等信息。姓名、性别、家庭地址等信息。ActionScript 3.0的数组类的数组类不但可存储一维数组,也可存储多维数组。读取数据时采不但可存储一维数组,也可存储多维数组。读取数据时采用循环遍历的方法。用循环遍历的方法。ActionScript 3.0数组里可以存储字符串、数字、布尔数组里可以存储字符串、数字、布尔值或引用的类型。同一个数组中可以存不同类型的数据,值或引用的类型。同一个数组中可以存不同类型的数据,这点与其他语言有很大的区别。这点与其他语言有很大的区别。Flex 4.0 RIA开发详解开发详解(第第2版版)12.1.1 12.1.1 数组的分
166、类数组的分类在在ActionScript 3.0中数组分为两类:整型下标数组和中数组分为两类:整型下标数组和联合数组。两者都是组织相关数据,只是访问数据的方法联合数组。两者都是组织相关数据,只是访问数据的方法不同而已。不同而已。整型下标数组:数组的每个元素都用唯一的整数下标整型下标数组:数组的每个元素都用唯一的整数下标来索引。通过下标排序,起始值为来索引。通过下标排序,起始值为0,每个元素保存在索引,每个元素保存在索引指定的位置。指定的位置。联合数组:用字符串关键字作为每个元素的索引。联合数组:用字符串关键字作为每个元素的索引。Flex 4.0 RIA开发详解开发详解(第第2版版)12.1.2
167、 12.1.2 创立数组的方法创立数组的方法ActionScript 3.0中使用数组前需创立数组对象。中使用数组前需创立数组对象。数组长度是指数组在内存空间中占有的连续空间长度。数组长度是指数组在内存空间中占有的连续空间长度。创立数组对象时可对数组赋初值。创立数组对象时可对数组赋初值。元素可以是常量或变量。元素可以是常量或变量。另外,使用另外,使用“操作符也可以在创立数组对象时赋初操作符也可以在创立数组对象时赋初值。值。Flex 4.0 RIA开发详解开发详解(第第2版版)12.2 12.2 在数组首部和尾部添加元素在数组首部和尾部添加元素为数组添加新元素是数组中最常见的处理之一。为数组添加
168、新元素是数组中最常见的处理之一。Array类中提供了类中提供了push()方法和方法和unshift()方法来添加元素。方法来添加元素。其中其中push()方法是在数组尾部追加元素,方法是在数组尾部追加元素,unshift()方法是在方法是在数组首部添加元素。另外,使用数组首部添加元素。另外,使用“操作符也可实现元素操作符也可实现元素的添加。的添加。Flex 4.0 RIA开发详解开发详解(第第2版版)12.2.1 12.2.1 数组尾部添加新元素函数数组尾部添加新元素函数pushpushArray类的类的push()方法在数组的尾部添加元素,一次可方法在数组的尾部添加元素,一次可以添加多个值
169、。以添加多个值。元素可以是变量或常量。以下代码使用元素可以是变量或常量。以下代码使用push()方法在方法在数组尾部添加两个元素数组尾部添加两个元素“val 1和和“val 2。Flex 4.0 RIA开发详解开发详解(第第2版版)12.2.2 12.2.2 使用使用“操作符在尾部添加新元素操作符在尾部添加新元素使用使用“操作符也可在尾部添加新元素。由于数组下操作符也可在尾部添加新元素。由于数组下标的最大值为标的最大值为Array.length-1,所以给下标为,所以给下标为Array.length的元素赋值就相当于在数组的尾部添加元素。的元素赋值就相当于在数组的尾部添加元素。Flex 4.0
170、 RIA开发详解开发详解(第第2版版)12.2.3 12.2.3 数组首部添加新元素函数数组首部添加新元素函数unshiftunshift使用使用unshift()方法可在数组首部插入新元素。方法可在数组首部插入新元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.3 12.3 遍历数组元素遍历数组元素用户可使用循环语句遍历数组。使用用户可使用循环语句遍历数组。使用“操作符可访操作符可访问相应位置的数组元素。数组可顺序遍历,下标从问相应位置的数组元素。数组可顺序遍历,下标从0开场至开场至Array.length-1。Flex 4.0 RIA开发详解开发详解(第第2版版)12.4
171、12.4 搜索匹配的数组元素搜索匹配的数组元素搜索匹配的数组元素的方法很多。最简单的方法使用搜索匹配的数组元素的方法很多。最简单的方法使用for语句配合语句配合break语句。用语句。用for循环找到第一个匹配的元素循环找到第一个匹配的元素后使用后使用break语句退出循环。这种顺序搜索方式的缺点是效语句退出循环。这种顺序搜索方式的缺点是效率不高。率不高。第三方类第三方类ArrayUtilities中提供了中提供了findMatchIndex()、findLastMatchIndex()和和findMatchIndices()三种方法来搜索数组元素。三种方法来搜索数组元素。ArrayUtili
172、ties类在类在ascb.util包中。引用时需要在代码前添加包中。引用时需要在代码前添加“import ascb.util.*语句。语句。Flex 4.0 RIA开发详解开发详解(第第2版版)12.4.1 findMatchIndex()12.4.1 findMatchIndex()方法方法findMatchIndex()方法的作用是在指定的数组中搜索方法的作用是在指定的数组中搜索匹配的数组元素。假设找到,那么返回第一个匹配的元素匹配的数组元素。假设找到,那么返回第一个匹配的元素下标。假设没有找到,那么返回下标。假设没有找到,那么返回-1。findMatchIndex()方法有方法有4个参数
173、:个参数:数组对象。数组对象。需要匹配的值。需要匹配的值。搜索的开场下标。此参数可缺省,默认为搜索的开场下标。此参数可缺省,默认为0。布尔值,表示是否返回局部匹配元素。此参数可默认,布尔值,表示是否返回局部匹配元素。此参数可默认,默认为默认为false,即不返回局部匹配元素。,即不返回局部匹配元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.4.2 findLastMatchIndex()12.4.2 findLastMatchIndex()方法和方法和findMatchIndicesfindMatchIndices()()方法方法findLastMatchIndex()方法的
174、作用是返回最后一个匹方法的作用是返回最后一个匹配的元素下标。配的元素下标。findMatchIndices()方法的作用是返回所有方法的作用是返回所有匹配的元素下标数组。两者的参数使用方法与匹配的元素下标数组。两者的参数使用方法与findMatchIndex()方法一样。方法一样。Flex 4.0 RIA开发详解开发详解(第第2版版)12.5 12.5 删除数组元素删除数组元素删除一个或多个数组元素有多种方法。删除一个或多个数组元素有多种方法。splice()方法删方法删除指定位置的元素。除指定位置的元素。pop()方法删除尾部元素。方法删除尾部元素。shift()方法方法删除首部元素。删除首
175、部元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.5.1 12.5.1 删除任意数组元素函数删除任意数组元素函数splicesplicesplice()方法可删除任意数组元素。删除后其他后续元方法可删除任意数组元素。删除后其他后续元素会自动向前移位,数组总长度也自动变化。素会自动向前移位,数组总长度也自动变化。splice()方法的参数有两个:方法的参数有两个:开场下标开场下标删除元素个数。此参数可默认,默认为从起始位置到删除元素个数。此参数可默认,默认为从起始位置到末尾的全部元素个数。末尾的全部元素个数。Flex 4.0 RIA开发详解开发详解(第第2版版)12.5.2 1
176、2.5.2 删除数组首部元素函数删除数组首部元素函数shiftshift使用使用shift()方法可删除数组首部元素,并返回被删除方法可删除数组首部元素,并返回被删除的值。的值。Flex 4.0 RIA开发详解开发详解(第第2版版)12.5.3 12.5.3 删除数组尾部元素函数删除数组尾部元素函数poppop使用使用pop()方法可删除数组尾部元素,并返回被删除的方法可删除数组尾部元素,并返回被删除的值。值。Flex 4.0 RIA开发详解开发详解(第第2版版)12.5.4 12.5.4 删除特定值的数组元素删除特定值的数组元素使用使用for语句配合语句配合splice()方法可删除特定值的
177、数组元素。方法可删除特定值的数组元素。需要注意的是,使用需要注意的是,使用splice()方法删除数组元素时,数组的方法删除数组元素时,数组的总长度会自动变化,所以用户要注意下标的变化。总长度会自动变化,所以用户要注意下标的变化。Flex 4.0 RIA开发详解开发详解(第第2版版)12.6 12.6 在数组中插入元素在数组中插入元素要在数组中间插入元素可使用要在数组中间插入元素可使用splice()方法。方法。splice()方方法不仅可以删除元素,也可以插入元素。插入方法是要将法不仅可以删除元素,也可以插入元素。插入方法是要将splice()方法的第二个参数设置为方法的第二个参数设置为0,
178、从第三个参数开场为要插入,从第三个参数开场为要插入的元素。的元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.7 12.7 转换字符串为数组转换字符串为数组字符串可以转换为数组,使用字符串可以转换为数组,使用String类的类的split()方法就方法就能实现。能实现。split()方法在介绍字符串替换中已有涉及,本节将方法在介绍字符串替换中已有涉及,本节将具体介绍具体介绍split()方法。方法。String类的类的split()方法把字符串转换为数组,但前提是方法把字符串转换为数组,但前提是字符串中含有统一的分隔符。例如,字符串中以逗号作为字符串中含有统一的分隔符。例如,字
179、符串中以逗号作为分隔符。分隔符。split()方法有两个参数:方法有两个参数:分隔符,用以分隔字符串。此参数可默认,默认为分隔符,用以分隔字符串。此参数可默认,默认为“空字符串。空字符串。数组长度,表示分隔后的数组的最大长度。此参数可数组长度,表示分隔后的数组的最大长度。此参数可默认,默认为全部放入数组。默认,默认为全部放入数组。Flex 4.0 RIA开发详解开发详解(第第2版版)12.8 12.8 转换数组为字符串转换数组为字符串数组也可以转换为字符串,使用数组也可以转换为字符串,使用join()方法就能实现此方法就能实现此功能。功能。连接符是指以某字符串来连接数组元素,从而转换为连接符是
180、指以某字符串来连接数组元素,从而转换为字符串。此参数可默认,默认为逗号。字符串。此参数可默认,默认为逗号。Flex 4.0 RIA开发详解开发详解(第第2版版)12.9 12.9 复制数组复制数组一个数组变量并不包含数组数据,而是指向内存中存一个数组变量并不包含数组数据,而是指向内存中存放数组数据的位置。所以数组的比较和复制都和根本类型放数组数据的位置。所以数组的比较和复制都和根本类型有所不同。根本变量的复制只需要将根本变量的值赋给另有所不同。根本变量的复制只需要将根本变量的值赋给另一个变量即可,但数组变量的赋值只是表示两个数组变量一个变量即可,但数组变量的赋值只是表示两个数组变量指向一样的引
181、用位置。此时修改一个数组变量中的值会同指向一样的引用位置。此时修改一个数组变量中的值会同时修改另一数组变量的值,因为两个变量指向同一内存空时修改另一数组变量的值,因为两个变量指向同一内存空间。间。Flex 4.0 RIA开发详解开发详解(第第2版版)12.9.1 concat()12.9.1 concat()方法方法复制数组可以使用复制数组可以使用Array类中的类中的concat()方法。方法。concat()方法返回一维数组的完整复制。方法返回一维数组的完整复制。Flex 4.0 RIA开发详解开发详解(第第2版版)12.9.2 slice()12.9.2 slice()方法方法Array
182、类中的类中的slice()方法可以从指定位置开场复制数组。方法可以从指定位置开场复制数组。开场下标为开场下标为0时表示复制整个数组。时表示复制整个数组。Flex 4.0 RIA开发详解开发详解(第第2版版)12.9.3 ArrayUtilities12.9.3 ArrayUtilities类的类的duplicate()duplicate()方方法法concat()方法和方法和slice()方法只能复制一维整型下标数组。方法只能复制一维整型下标数组。如果是多维的数组就不能使用它们复制。如果是多维的数组就不能使用它们复制。Flex 4.0 RIA开发详解开发详解(第第2版版)12.10 12.10
183、 存储多维数据存储多维数据多维数据是指数据的存储具有多层次性。例如,矩阵多维数据是指数据的存储具有多层次性。例如,矩阵是典型的二维数据,三维坐标是三维数据。存储多维数据是典型的二维数据,三维坐标是三维数据。存储多维数据的一种简单方法是采用平行数组。平行数组是指下标有一的一种简单方法是采用平行数组。平行数组是指下标有一一对应的关系的多个数组。使用平行数组操作同一下标的一对应的关系的多个数组。使用平行数组操作同一下标的元素就能访问多维数据。元素就能访问多维数据。需要注意的是,如果改变了一个数组长度,必须同时需要注意的是,如果改变了一个数组长度,必须同时修改其他数组。存储多维数组最好的方法是创立多维
184、数组。修改其他数组。存储多维数组最好的方法是创立多维数组。其中二维数组是最常用的多维数组。其中二维数组是最常用的多维数组。Flex 4.0 RIA开发详解开发详解(第第2版版)12.11 12.11 数组排序数组排序数组排序是指对数组按某一规那么排序。例如,按字数组排序是指对数组按某一规那么排序。例如,按字母升序排列、按数字升序排列等。母升序排列、按数字升序排列等。ActionScript 3.0中对于中对于整型下标数组可使用整型下标数组可使用sort()方法排序,对于对象数组可使用方法排序,对于对象数组可使用sortOn()方法排序。方法排序。Flex 4.0 RIA开发详解开发详解(第第2
185、版版)12.11.1 sort()12.11.1 sort()方法方法对于整型下标数组可使用对于整型下标数组可使用sort()方法进展排序。方法进展排序。假设要按字母降序排列,排序常量值应为假设要按字母降序排列,排序常量值应为Array.DESCENDING。假设对数字数组使用不带参数的假设对数字数组使用不带参数的sort()方法排序,会根方法排序,会根据第一个数字的据第一个数字的ASCII码排序。码排序。使用使用Array.RETURNINDEXEDARRAY排序常量能得排序常量能得到排序后数组元素的下标顺序,但不改变原始数组。到排序后数组元素的下标顺序,但不改变原始数组。Flex 4.0
186、RIA开发详解开发详解(第第2版版)12.11.2 sortOn()12.11.2 sortOn()方法方法对象数组以关键字作为索引组织数据,如对象数组以关键字作为索引组织数据,如make:Honda,year:1997,color:maroon中的中的make、year和和color都为关键字。对对象数组排序可使用都为关键字。对对象数组排序可使用sortOn()方法。方法。sortOn()方法的参数为排序的关键字。多个关键字之方法的参数为排序的关键字。多个关键字之前以前以“|分隔。假设只按一个关键字排序可省略分隔。假设只按一个关键字排序可省略“。Flex 4.0 RIA开发详解开发详解(第第
187、2版版)12.12 12.12 实现自定义排序实现自定义排序有时数组类提供的排序方式并不满足用户要求,此时有时数组类提供的排序方式并不满足用户要求,此时用户可以自定义数组排序方式。方法是把自定义的比较函用户可以自定义数组排序方式。方法是把自定义的比较函数传递给数传递给sort()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)12.13 12.13 数组元素的最大值和最小值数组元素的最大值和最小值获取数字数组的最大元素和最小元素在程序中很常见。获取数字数组的最大元素和最小元素在程序中很常见。解决方法是先经过数字排序,然后读取数组的第一个和最解决方法是先经过数字排序,然后读取数
188、组的第一个和最后一个元素。后一个元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.14 12.14 比较数组比较数组比较数组是指比较两个数组之间的关系。数组间的关比较数组是指比较两个数组之间的关系。数组间的关系有两种:相等和不相等。两个数组相等的条件是每个位系有两种:相等和不相等。两个数组相等的条件是每个位置上的元素都一样。正确的方法是使用循环语句一一比较置上的元素都一样。正确的方法是使用循环语句一一比较每个位置的元素。每个位置的元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.15 12.15 联合数组联合数组联合数组在其他的语言叫做哈希表,在联合数组在其他的
189、语言叫做哈希表,在ActionScript 3.0里就是里就是Object类的一个实例。联合数组使用名称元素来类的一个实例。联合数组使用名称元素来代替数字下标,该名称也被称为关键字或属性。关键字关代替数字下标,该名称也被称为关键字或属性。关键字关联了元素值,每个元素都有特定的含义。联了元素值,每个元素都有特定的含义。Flex 4.0 RIA开发详解开发详解(第第2版版)12.15.1 12.15.1 创立联合数组创立联合数组创立联合数组不是用创立联合数组不是用Array类而是用类而是用Object类创立。类创立。Flex 4.0 RIA开发详解开发详解(第第2版版)12.15.2 12.15.
190、2 访问联合数组元素访问联合数组元素有两种方法访问联合数组元素:一种是通过关键字访有两种方法访问联合数组元素:一种是通过关键字访问元素,一种是使用问元素,一种是使用“操作符访问元素。操作符访问元素。Flex 4.0 RIA开发详解开发详解(第第2版版)12.15.3 12.15.3 遍历联合数组遍历联合数组联合数组使用关键字作索引,没有下标,所以不能使联合数组使用关键字作索引,没有下标,所以不能使用用for语句遍历。联合数组可以通过语句遍历。联合数组可以通过forin语句进展遍历访语句进展遍历访问。问。Flex 4.0 RIA开发详解开发详解(第第2版版)12.16 12.16 小结小结数组是
191、数组是ActionScript 3.0语言中最常使用的类型之一。语言中最常使用的类型之一。ActionScript 3.0中的数组类型动态分配内存空间,可以存中的数组类型动态分配内存空间,可以存储任意的数据类型。数组分为整型下标数组和联合数组两储任意的数据类型。数组分为整型下标数组和联合数组两种。数组的常见处理包括添加新元素、删除元素、遍历数种。数组的常见处理包括添加新元素、删除元素、遍历数组、在数组中搜索字符串、拷贝数组、数组排序、存储多组、在数组中搜索字符串、拷贝数组、数组排序、存储多维数组等。利用数组类提供的方法可直接或间接地实现相维数组等。利用数组类提供的方法可直接或间接地实现相应操作
192、。应操作。Flex 4.0 RIA开发详解开发详解(第第2版版)第第1313章章 使用使用XMLXMLXML技术是一种构造化的、基于文本的技术,用以格技术是一种构造化的、基于文本的技术,用以格式化和存储数据。式化和存储数据。XML简单、灵活、轻便,常被用数据存简单、灵活、轻便,常被用数据存储和数据交换。储和数据交换。XML现已成为了一种行业标准,是现已成为了一种行业标准,是ActionScript 3.0中很重要的组成局部。中很重要的组成局部。Flex 4.0 RIA开发详解开发详解(第第2版版)13.1 XML13.1 XML概述概述XML技术是一种基于标签的层次构造技术,类似于技术是一种基
193、于标签的层次构造技术,类似于HTML语言。一个外部语言。一个外部XML文件的后缀名为文件的后缀名为“.xml,可,可用任何文本编辑工具翻开,如记事本、用任何文本编辑工具翻开,如记事本、Word等。等。XML数数据相比字符串数据有如下优点。据相比字符串数据有如下优点。用户可以手工或者程序编写用户可以手工或者程序编写XML,可以很容易表示复,可以很容易表示复杂的数据类型。杂的数据类型。大局部效劳器端语言都提供对大局部效劳器端语言都提供对XML的读取操作。的读取操作。XML是一种标准,可以很容易地在不同应用程序或平是一种标准,可以很容易地在不同应用程序或平台上传递和存储。台上传递和存储。XML中的一
194、些概念如下所示。中的一些概念如下所示。Flex 4.0 RIA开发详解开发详解(第第2版版)13.1 XML13.1 XML概述概述XML documentXML文件是指包含文件是指包含XML的文件,的文件,完全不同于完全不同于XMLDocument类。类。XML nodeXML节点是节点是XML的根本组成局部。的根本组成局部。XML elementXML元素一般被理解为标签,但元素一般被理解为标签,但XML元素包含成对的标签,如果元素包含成对的标签,如果XML元素中没有内容,可元素中没有内容,可只写一个标签,标签名后接只写一个标签,标签名后接“/。Root node根节点是最外层的根节点是最
195、外层的XML元素。元素。Attribute属性是属性是XML元素的一局部,位于标签内,元素的一局部,位于标签内,以名字和值的形式表示。以名字和值的形式表示。XML declarationXML声明是一个特殊的标签,声明是一个特殊的标签,指明该文件是指明该文件是XML文件。文件。Flex 4.0 RIA开发详解开发详解(第第2版版)13.2 13.2 创立创立XMLXML对象对象ActionScript 3.0中使用中使用XML类来对类来对XML对象进展操对象进展操作。作。XML对象的创立方法有两种:使用对象的创立方法有两种:使用XML标签创立标签创立XML对象,使用字符串创立对象,使用字符串创
196、立XML对象。对象。Flex 4.0 RIA开发详解开发详解(第第2版版)13.2.1 13.2.1 使用使用XMLXML标签创立标签创立XMLXML对象对象ActionScript 3.0支持直接赋值支持直接赋值XML标签给标签给XML对象。对象。这种方式中这种方式中XML标签的定义与外部标签的定义与外部XML文件中的文件中的XML标标签定义完全一样,方便简单。签定义完全一样,方便简单。Flex 4.0 RIA开发详解开发详解(第第2版版)13.2.2 13.2.2 使用字符串创立使用字符串创立XMLXML对象对象XML类支持使用字符串来构造类支持使用字符串来构造XML对象。字符串中对象。字
197、符串中定义了定义了XML的具体形式。的具体形式。Flex 4.0 RIA开发详解开发详解(第第2版版)13.3 XML13.3 XML对象中添加元素对象中添加元素为为XML对象添加新元素的方法有对象添加新元素的方法有4种:将元素名作为种:将元素名作为属性添加元素,使用属性添加元素,使用“操作符添加元素,使用操作符添加元素,使用insertChildBefore()方法添加元素,使用方法添加元素,使用insertChildAfter()方法添加元素。方法添加元素。Flex 4.0 RIA开发详解开发详解(第第2版版)13.3.1 13.3.1 将元素名作为属性添加元素将元素名作为属性添加元素将元
198、素名作为属性添加元素是添加元素的最常用方法。将元素名作为属性添加元素是添加元素的最常用方法。Flex 4.0 RIA开发详解开发详解(第第2版版)13.3.2 13.3.2 使用使用“操作符添加元素操作符添加元素假设用户新增加的元素名是动态的,那么就不能使用假设用户新增加的元素名是动态的,那么就不能使用访问元素的方法了。可使用访问元素的方法了。可使用“操作符添加元素。操作符添加元素。Flex 4.0 RIA开发详解开发详解(第第2版版)13.3.3 13.3.3 其他添加元素的方法其他添加元素的方法XML对象中提供了对象中提供了insertChildBefore()方法和方法和insertCh
199、ildAfter()方法来添加新元素。方法来添加新元素。insertChildBefore()方法是指在某方法是指在某XML元素前插入新元素。元素前插入新元素。insertChildBefore()方法有两个参数:方法有两个参数:XML元素,表示在该元素前插入新元素。元素,表示在该元素前插入新元素。新元素内容,可以为新元素内容,可以为XML标签,也可以是字符串。标签,也可以是字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)13.4 XML13.4 XML对象中添加元素内容对象中添加元素内容XML元素内容是指两个封闭标签间的内容,如元素内容是指两个封闭标签间的内容,如pppp中的中
200、的“pppp。为。为XML对象添加元素内容有对象添加元素内容有很多方法:使用元素名作为属性,使用很多方法:使用元素名作为属性,使用XML类中的插入方类中的插入方法。法。Flex 4.0 RIA开发详解开发详解(第第2版版)13.4.1 13.4.1 将元素名作为属性添加元素内容将元素名作为属性添加元素内容将元素名作为属性添加元素内容是最常用方法。将元素名作为属性添加元素内容是最常用方法。Flex 4.0 RIA开发详解开发详解(第第2版版)13.4.2 13.4.2 使用使用XMLXML类中的方法添加元素内容类中的方法添加元素内容XML类中的添加元素内容的方法包括类中的添加元素内容的方法包括a
201、ppendChild()方法、方法、prependChild()方法、方法、insertChildBefore()方法和方法和insertChildAfter()方法。方法。appendChild()方法是在现有方法是在现有XML标签后添加新元标签后添加新元素。素。Flex 4.0 RIA开发详解开发详解(第第2版版)13.5 XML13.5 XML元素中添加属性元素中添加属性元素中的属性是指包含在元素内的名称和值,如元素中的属性是指包含在元素内的名称和值,如中的中的“t=1。为。为XML元素添加属性的方法有两种:使元素添加属性的方法有两种:使用用“操作符,使用操作符,使用“操作符。操作符。F
202、lex 4.0 RIA开发详解开发详解(第第2版版)13.5.1 13.5.1 使用使用“操作符添加属性操作符添加属性使用使用“操作符添加元素属性。操作符添加元素属性。Flex 4.0 RIA开发详解开发详解(第第2版版)13.5.2 13.5.2 使用使用“操作符添加属性操作符添加属性假设属性名是动态的,可使用假设属性名是动态的,可使用“操作符来新增属性。操作符来新增属性。Flex 4.0 RIA开发详解开发详解(第第2版版)13.6 13.6 从从XMLXML中读取元素中读取元素从从XML中读取元素,可使用中读取元素,可使用elements()方法。方法。elements()方法返回该方法
203、返回该XML根节点下的全部直接子节点元素。根节点下的全部直接子节点元素。Flex 4.0 RIA开发详解开发详解(第第2版版)13.7 13.7 定位元素定位元素XML中搜索元素是根据元素名称及层次关系来确定的。中搜索元素是根据元素名称及层次关系来确定的。假设用户需要知道元素所在的位置就可直接定位。假设用户需要知道元素所在的位置就可直接定位。如果用户不是很清楚地知道元素所在位置,可使用如果用户不是很清楚地知道元素所在位置,可使用“.方式。方式。“.表示中间过程不清楚,采用搜索的方式查找。表示中间过程不清楚,采用搜索的方式查找。使用使用“.方式的缺点是降低了效率,但相比于其他语方式的缺点是降低了
204、效率,但相比于其他语言中的搜索,言中的搜索,XML中的搜索效率还是很高的。中的搜索效率还是很高的。XML中经常会有一样的元素名,此时要用下标来确定中经常会有一样的元素名,此时要用下标来确定具体的元素。具体的元素。假设同名的元素有多个,那么应该使用下标以区别。假设同名的元素有多个,那么应该使用下标以区别。例如,例如,XML中有多个中有多个元素,那么第一个元素,那么第一个元元素下标为素下标为0,第二个,第二个元素下标为元素下标为1,依此类推。,依此类推。Flex 4.0 RIA开发详解开发详解(第第2版版)13.8 13.8 读取元素内容读取元素内容前面小节中介绍了如何添加元素内容,本节将介绍如前
205、面小节中介绍了如何添加元素内容,本节将介绍如何读取元素的内容。读取元素的内容只需要定位到指定的何读取元素的内容。读取元素的内容只需要定位到指定的元素,然后读取即可。元素,然后读取即可。元素内容的值在元素内容的值在XML中以字符串形式存储。但假设元中以字符串形式存储。但假设元素内容是可转换的,便可强制转换类型。素内容是可转换的,便可强制转换类型。Flex 4.0 RIA开发详解开发详解(第第2版版)13.9 13.9 读取属性值读取属性值前面介绍了如何为属性赋值,本节将介绍如何读取元前面介绍了如何为属性赋值,本节将介绍如何读取元素中的属性值。读取属性值有两种方法:使用素中的属性值。读取属性值有两
206、种方法:使用“操作符,操作符,使用使用XML类中的类中的attribute()方法,使用方法,使用XML类中的类中的attributes()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)13.9.1 13.9.1 使用使用“操作符读取属性值操作符读取属性值使用使用“操作符是读取属性值最常用的方法。操作符是读取属性值最常用的方法。Flex 4.0 RIA开发详解开发详解(第第2版版)13.9.2 13.9.2 使用使用attributeattribute方法读取属性值方法读取属性值使用使用XML类中的类中的attribute()方法可读取某一属性的值。方法可读取某一属性的值。
207、Flex 4.0 RIA开发详解开发详解(第第2版版)13.9.3 13.9.3 使用使用attributes()attributes()方法读取全部属性方法读取全部属性值值attributes()方法可获得某元素的全部属性。用户可以方法可获得某元素的全部属性。用户可以根据下标来区分同一元素下的属性。根据下标来区分同一元素下的属性。Flex 4.0 RIA开发详解开发详解(第第2版版)13.10 13.10 删除元素和属性删除元素和属性使用使用delete语句可删除语句可删除XML中的元素和属性。中的元素和属性。Flex 4.0 RIA开发详解开发详解(第第2版版)13.11 13.11 加载
208、加载XMLXML文件文件XML内容可存储在外部的内容可存储在外部的XML文件中,文件中,ActionScript 3.0中使用中使用URLLoad类的类的load()方法可以加载方法可以加载XML文件。文件。Flex 4.0 RIA开发详解开发详解(第第2版版)13.12 13.12 小结小结XML是一种行业标准,被广泛应用于数据存储。是一种行业标准,被广泛应用于数据存储。XML是类似于是类似于HTML语言的一种层次构造,非常轻巧,但语言的一种层次构造,非常轻巧,但却可以存储复杂的数据类型。却可以存储复杂的数据类型。XML的构造、元素、属性等的构造、元素、属性等全部由用户定义,非常灵活。理论上
209、可构造任何复杂的数全部由用户定义,非常灵活。理论上可构造任何复杂的数据类型。据类型。ActionScript 3.0中提供了中提供了XML类用于支持对类用于支持对XML的操作。由于的操作。由于XML读写简单、使用方便,现已广泛应用于读写简单、使用方便,现已广泛应用于Flex应用程序中。应用程序中。Flex 4.0 RIA开发详解开发详解(第第2版版)第第1414章章 使用组件构建使用组件构建FlexFlex界面界面Flex应用程序的界面通常由各种各样的组件来构建。应用程序的界面通常由各种各样的组件来构建。例如,一个登录框应用程序包括了标签组件、输入框组件、例如,一个登录框应用程序包括了标签组件
210、、输入框组件、按钮组件等。不同的组件有其特有的功能,如按钮组件的按钮组件等。不同的组件有其特有的功能,如按钮组件的单击动作和双击动作。用户可选择不同的组件来满足应用单击动作和双击动作。用户可选择不同的组件来满足应用程序的要求。程序的要求。Flex 4.0 RIA开发详解开发详解(第第2版版)14.1 Flex14.1 Flex组件概述组件概述Flex组件是指用组件是指用MXML标准和标准和ActionScript 3.0代码定代码定义的一种可重用的控件,包括了属性义的一种可重用的控件,包括了属性Properties、方法、方法Methods、事件、事件Events、样式、样式Styles。MX
211、ML是类似于是类似于XML的标签式语言。的标签式语言。MXML文件的文件的后缀后为后缀后为“.mxml。使用。使用MXML标准定义的内容可由标准定义的内容可由MXML编译器编译成编译器编译成SWF文件。文件。Flash Builder 4在编译程在编译程序时就调用了序时就调用了MXML编译器。编译器。Flex 4中提供了许多根底的中提供了许多根底的Flex组件,如文本组件、按组件,如文本组件、按钮组件、下拉框组件等。组件根据是否由钮组件、下拉框组件等。组件根据是否由Adobe公司提供,公司提供,可分为根底可分为根底Flex组件和自定义组件。组件和自定义组件。Flex 4.0 RIA开发详解开发
212、详解(第第2版版)14.2 Flex14.2 Flex可见组件可见组件Flex可见组件是一类最根底的组件,在构建应用程序可见组件是一类最根底的组件,在构建应用程序界面时大量使用。界面时大量使用。Flex可见组件在应用程序中是可见状态,可见组件在应用程序中是可见状态,所以在设计模式下可用鼠标拖曳其位置来构建界面。所以在设计模式下可用鼠标拖曳其位置来构建界面。Flex 4.0 RIA开发详解开发详解(第第2版版)14.2.1 14.2.1 可见组件的分类可见组件的分类在在Flex Builder 3中为了用户使用方便,将可见组件分中为了用户使用方便,将可见组件分成以下几类:成以下几类:定制:存放用
213、户自定义组件定制:存放用户自定义组件控件:存放根底的控制组件,如按钮组件、文本组件、控件:存放根底的控制组件,如按钮组件、文本组件、下接框组件。下接框组件。数据控件:存放数据呈现组件,如网格组件、下拉列数据控件:存放数据呈现组件,如网格组件、下拉列表组件、树组件等。表组件、树组件等。布局:存放布局组件,如窗口组件、表单组件。布局:存放布局组件,如窗口组件、表单组件。导航器:存放导航组件,如导航器:存放导航组件,如Tab条组件、按钮条组件。条组件、按钮条组件。Adobe AIRAdobe AIR组件:存放组件:存放Adobe AIR组件。组件。图表:存放图表组件。图表:存放图表组件。Flex 4
214、.0 RIA开发详解开发详解(第第2版版)14.2.2 14.2.2 使用可见组件构建界面使用可见组件构建界面Flex Builder 4中将根底的可见组件存放于组件面板中。中将根底的可见组件存放于组件面板中。组件面板默认位于组件面板默认位于Flex Builder 4的左下侧。的左下侧。Flex 4.0 RIA开发详解开发详解(第第2版版)14.3 14.3 使用使用FlexFlex非可见组件非可见组件Flex非可见组件的使用方法是在非可见组件的使用方法是在MXML编辑器的代码编辑器的代码模式下手工添加。模式下手工添加。Flex 4.0 RIA开发详解开发详解(第第2版版)14.4 14.4
215、 全新的标签设计全新的标签设计在在Flex4中,标签经过了重新的设计。在原来中,标签经过了重新的设计。在原来halo组件组件的根底上又新增了一套新的组件的根底上又新增了一套新的组件spark。另外,使用不同的。另外,使用不同的名称空间,把可视化的组件标签与非可视化的组件标签分名称空间,把可视化的组件标签与非可视化的组件标签分开来,这样的设计使得标签分类更加清晰。开来,这样的设计使得标签分类更加清晰。Flex 4.0 RIA开发详解开发详解(第第2版版)14.4.1 Declarations14.4.1 Declarations标签标签在新的在新的Flex4中,把可视化组件与非可视化完全别离开。
216、中,把可视化组件与非可视化完全别离开。可以把非可视化组件放在可以把非可视化组件放在Declarations标签内,如效果组件、标签内,如效果组件、数据组件包括数据组件包括XML、XMLList、Array等、等、Model模型模型组件、数据验证组件等。同时也可以在自定义的组件中,组件、数据验证组件等。同时也可以在自定义的组件中,通过通过Declarations标签来定义属性。标签来定义属性。Flex 4.0 RIA开发详解开发详解(第第2版版)14.4.2 Library14.4.2 Library和和DefinitionDefinition标签标签使用使用Definition标签可以定义一组
217、标签可以定义一组FXG格式的图形。格式的图形。Definition标签通常被定义在标签通常被定义在Library标签内,所以,在标签内,所以,在Library标签中,可以通过定义多个标签中,可以通过定义多个Definition标签来创立多标签来创立多组组FXG图形组件。图形组件。Flex 4.0 RIA开发详解开发详解(第第2版版)14.4.3 Private14.4.3 Private标签标签定义在定义在Private标签的元素,在编译器编译的时候,会标签的元素,在编译器编译的时候,会忽略掉其内的所有标签。并且忽略掉其内的所有标签。并且Private标签必须放在文档的标签必须放在文档的最后。
218、如下面的代码,在最后。如下面的代码,在Private标签中,定义编写代码的标签中,定义编写代码的相关信息,包括作者、时间等。相关信息,包括作者、时间等。Flex 4.0 RIA开发详解开发详解(第第2版版)14.5 Flex14.5 Flex常用组件常用组件Flex组件数量众多、功能各异,本书不能一一讲解。组件数量众多、功能各异,本书不能一一讲解。本节主要介绍本节主要介绍Flex应用程序中常用的一些组件。包括按钮应用程序中常用的一些组件。包括按钮组件、下拉框组件、图像组件、标签组件、列表组件等。组件、下拉框组件、图像组件、标签组件、列表组件等。Flex 4.0 RIA开发详解开发详解(第第2版
219、版)14.5.1 14.5.1 按钮组件按钮组件ButtonButton按钮组件是应用程序中最频繁使用的组件之一。按钮组件是应用程序中最频繁使用的组件之一。按钮组件常用的属性还包括:按钮组件常用的属性还包括:toggle和和emphasized。toggle属性是指是否有属性是指是否有“凹凸效果。凹凸效果。emphasized属性是指按钮的边框是否加粗,以示强调属性是指按钮的边框是否加粗,以示强调效果。效果。Flex 4.0 RIA开发详解开发详解(第第2版版)14.5.2 14.5.2 下拉框组件下拉框组件ComboBoxComboBox下拉框组件主要应用于选择一项数据。下拉框组件属下拉框组
220、件主要应用于选择一项数据。下拉框组件属于多值组件,其值可由多种数据源提供。例如,下拉框组于多值组件,其值可由多种数据源提供。例如,下拉框组件的数据来自件的数据来自XML、数组、数组、Object等。下拉框组件的等。下拉框组件的dataProvider属性指明数据来源。方法是使用属性指明数据来源。方法是使用“操作符操作符绑定数据源。绑定数据源。Flex 4.0 RIA开发详解开发详解(第第2版版)14.5.4 14.5.4 标签组件标签组件LabelLabel标签组件主要用以显示单行文本。例如,登录框中的标签组件主要用以显示单行文本。例如,登录框中的“用户名:文本可用用户名:文本可用Label组
221、件。组件。Flex 4.0 RIA开发详解开发详解(第第2版版)14.5.5 14.5.5 多行文本组件多行文本组件TextAreaTextArea多行文本组件主要用于显示或输入多行文本数据。使多行文本组件主要用于显示或输入多行文本数据。使用方法与标签组件用方法与标签组件Label类似。类似。Flex 4.0 RIA开发详解开发详解(第第2版版)14.5.6 14.5.6 输入框组件输入框组件TextInputTextInput输入框组件主要应用于输入单行数据。输入框组件主要应用于输入单行数据。Flex 4.0 RIA开发详解开发详解(第第2版版)14.5.7 14.5.7 文本编辑组件文本编
222、辑组件RichTextEditorRichTextEditorRichTextEditor组件是由多种其他根本组件构成的组组件是由多种其他根本组件构成的组件,主要用于文本的编辑。件,主要用于文本的编辑。Flex 4.0 RIA开发详解开发详解(第第2版版)14.6 14.6 小结小结本章主要介绍如何使用本章主要介绍如何使用Flex组件构建界面。组件构建界面。Flex组件组件可分为可见组件和非可见组件。可见组件用于界面的外观可分为可见组件和非可见组件。可见组件用于界面的外观设计,非可见组件为辅助应用程序的设计。例如,使用设计,非可见组件为辅助应用程序的设计。例如,使用非可见组件来存储数据,为一些
223、多值可见组件非可见组件来存储数据,为一些多值可见组件提供数据源,如下拉框组件。提供数据源,如下拉框组件。Flex 4.0 RIA开发详解开发详解(第第2版版)使用组件可快速、有效地开发应用程序界面。本章将使用组件可快速、有效地开发应用程序界面。本章将以实例的形式介绍不同组件的使用方法。实例中使用的组以实例的形式介绍不同组件的使用方法。实例中使用的组件都是件都是Flex 3.0中最经常使用的组件。中最经常使用的组件。Flex 4.0 RIA开发详解开发详解(第第2版版)15.1 15.1 登录框实例登录框实例登录作为检验合法用户身份的有效方法,被广泛应用登录作为检验合法用户身份的有效方法,被广泛
224、应用于于Web开发中。开发中。Flex作为新的互联网应用程序的开发方法,作为新的互联网应用程序的开发方法,登录模块也是应用程序必不可少的一局部。本实例将图文登录模块也是应用程序必不可少的一局部。本实例将图文并茂地为读者讲解登录框的制作过程。并茂地为读者讲解登录框的制作过程。Flex 4.0 RIA开发详解开发详解(第第2版版)15.1.1 15.1.1 制作登录框界面制作登录框界面登录模块制作的第一步是设计好界面,也就是登录框登录模块制作的第一步是设计好界面,也就是登录框的外观及其他的组件。本节主要涉及设计组件及组件属性,的外观及其他的组件。本节主要涉及设计组件及组件属性,代码编辑区中查看代码
225、编辑区中查看MXML代码等。代码等。Flex 4.0 RIA开发详解开发详解(第第2版版)15.1.2 15.1.2 使用按钮处理事件使用按钮处理事件1处理处理“登录事件登录事件2处理处理“重置事件重置事件3编译运行代码编译运行代码Flex 4.0 RIA开发详解开发详解(第第2版版)15.1.3 15.1.3 制作校验码制作校验码制作校验码的步骤如下。制作校验码的步骤如下。1新建生成校验码函数新建生成校验码函数GenerateCheckCode2在程序初始化时调用函数在程序初始化时调用函数GenerateCheckCode。Flex 4.0 RIA开发详解开发详解(第第2版版)15.1.4
226、15.1.4 验证合法用户验证合法用户合法用户登录的条件有三个:正确的用户名,正确的合法用户登录的条件有三个:正确的用户名,正确的密码和正确的校验码。本小节在之前的根底上完善登录验密码和正确的校验码。本小节在之前的根底上完善登录验证。主要的修改是:在证。主要的修改是:在“登录按钮的事件处理函数中添加登录按钮的事件处理函数中添加对校验码的判断。需要注意的是,用户输入的校验码可能对校验码的判断。需要注意的是,用户输入的校验码可能大小与标准的校验码不一致。此时可先将输入的校验码和大小与标准的校验码不一致。此时可先将输入的校验码和标准的槁攵甲标准的槁攵甲晃晃矗矗缓笈卸狭秸呤欠褚恢隆缓笈卸狭秸呤欠褚恢隆
227、址址为小写的方法是使用为小写的方法是使用String类的类的toLowerCase()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)15.1.5 15.1.5 合法用户进入主程序合法用户进入主程序合法用户在登录成功以后一般是跳转至合法用户在登录成功以后一般是跳转至“新页面。新页面。Flex 3.0中不能生成新页面,但是可以生成新状态中不能生成新页面,但是可以生成新状态State。Flex中的状态类似于中的状态类似于Flash中的场景概念。在新状态里用户中的场景概念。在新状态里用户可以全部或局部地移除之前的组件,也可以再参加新的组可以全部或局部地移除之前的组件,也可以再参加新
228、的组件。这样,状态就可看成是件。这样,状态就可看成是Flex中的中的“新页面。由于新页面。由于Flex的的“新页面并不是真正的新页面,整个新页面并不是真正的新页面,整个Flex应用程序还是应用程序还是在嵌套在浏览器的一个页面里,所以就不会有页面刷新的在嵌套在浏览器的一个页面里,所以就不会有页面刷新的问题。从而减小了效劳器端的压力。问题。从而减小了效劳器端的压力。Flex 4.0 RIA开发详解开发详解(第第2版版)15.2 15.2 菜单导航实例菜单导航实例互联网应用程序中常用菜单来实现导航效果。单击菜互联网应用程序中常用菜单来实现导航效果。单击菜单中的子项就切换到新的页面。本节主要介绍如何制
229、作菜单中的子项就切换到新的页面。本节主要介绍如何制作菜单导航条。涉及的组件包括单导航条。涉及的组件包括MenuBar组件、组件、XMLList组件、组件、State组件、组件、Transition组件等。在切换状态时添加过渡效果。组件等。在切换状态时添加过渡效果。Flex 4.0 RIA开发详解开发详解(第第2版版)15.2.1 15.2.1 制作菜单制作菜单制作菜单主要用到制作菜单主要用到MenuBar组件。组件。MenuBar组件与组件与ComboBox组件一样,属于多值组件,需要数据集来表示组件一样,属于多值组件,需要数据集来表示菜单的具体项和子项等。菜单的具体项和子项等。数据集可以由数
230、据集可以由XMLList组件提供。组件提供。XMLList组件与组件与XML组件几乎一样。不同的地方在于组件几乎一样。不同的地方在于XML组件中必须要有组件中必须要有根节点,而根节点,而XMLList组件中不需要有根节点。组件中不需要有根节点。XMLList组组件可表示的内容是件可表示的内容是XML组件表示内容的子集。组件表示内容的子集。Flex 4.0 RIA开发详解开发详解(第第2版版)15.2.2 15.2.2 设计状态设计状态菜单导航实例中单击每个菜单项都跳转至相应的状态。菜单导航实例中单击每个菜单项都跳转至相应的状态。在在Flex中一个新状态可看做是一个新页面。状态可基于其中一个新状
231、态可看做是一个新页面。状态可基于其他的状态,即可保存其父状态的所有组件。用户可根据需他的状态,即可保存其父状态的所有组件。用户可根据需要移除一些组件或参加新的组件形成新状态。这种机制可要移除一些组件或参加新的组件形成新状态。这种机制可最大限度地提高程序的可重用性。最大限度地提高程序的可重用性。Flex 4.0 RIA开发详解开发详解(第第2版版)15.2.3 15.2.3 菜单导航菜单导航在完成菜单和状态后,接下来要做的是将两者关联起在完成菜单和状态后,接下来要做的是将两者关联起来。当单击不同的菜单项时切换至不同的状态,从而起到来。当单击不同的菜单项时切换至不同的状态,从而起到导航效果。制作菜
232、单导航的步骤如下所示。导航效果。制作菜单导航的步骤如下所示。1在在MenuBar组件中添加组件中添加change事件。事件。2创立创立change事件的处理函数。事件的处理函数。Flex 4.0 RIA开发详解开发详解(第第2版版)15.2.4 15.2.4 制作状态切换时的过渡效果制作状态切换时的过渡效果用户有时为了美观,需要在状态切换时有过渡效果,用户有时为了美观,需要在状态切换时有过渡效果,如模糊、渐显、扭曲等。在如模糊、渐显、扭曲等。在Flex 4.0中核心类中已定义了很中核心类中已定义了很多有关效果的类,这些类包含在多有关效果的类,这些类包含在“mx.effects.*中。中。Fle
233、x 4.0 RIA开发详解开发详解(第第2版版)15.3 15.3 柱状图实例柱状图实例Flex 4.0中提供了丰富的统计图形控件,包括柱状图、中提供了丰富的统计图形控件,包括柱状图、折线图、饼图等。这些控件功能强大、操作方便且美观,折线图、饼图等。这些控件功能强大、操作方便且美观,适合做互联网应用程序中的统计局部。本小节以柱状图为适合做互联网应用程序中的统计局部。本小节以柱状图为例向读者介绍如何制作一个简单的柱状图。实例涉及的内例向读者介绍如何制作一个简单的柱状图。实例涉及的内容包括设计数据集、设计柱状图组件的显示方式以及数据容包括设计数据集、设计柱状图组件的显示方式以及数据绑定。绑定。Fl
234、ex 4.0 RIA开发详解开发详解(第第2版版)15.3.1 15.3.1 设计数据集设计数据集在开场柱状图制作之前需要先设计好数据集。所谓在开场柱状图制作之前需要先设计好数据集。所谓“车马未动,粮草先行,数据作为统计时最根底的内容,车马未动,粮草先行,数据作为统计时最根底的内容,也是最重要的局部之一。良好的数据集设计有利于统计组也是最重要的局部之一。良好的数据集设计有利于统计组件的绑定。件的绑定。本程序使用本程序使用ArrayCollection数据类型存储数据。数据类型存储数据。ArrayCollection类型是类型是ActionScript 3.0中的一种核心数据中的一种核心数据类型
235、。类型。ArrayCollection类型是数组类型类型是数组类型Array的子类型,即的子类型,即ArrayCollection数据可作为数据可作为Array类型的一局部内容。两者类型的一局部内容。两者的使用方法类似。的使用方法类似。Flex 4.0 RIA开发详解开发详解(第第2版版)15.3.2 15.3.2 设计柱状图界面及数据绑定设计柱状图界面及数据绑定在设计完数据集后,需要设计柱状图界面以及绑定数在设计完数据集后,需要设计柱状图界面以及绑定数据。据。1从组件面板中拖曳一个从组件面板中拖曳一个Panel组件至组件至MXML编辑编辑器。器。2从组件面板中拖曳从组件面板中拖曳Column
236、Chart组件至组件至Panel组组件上。件上。3在在MXML编辑器上单击编辑器上单击“Source按钮,切换至按钮,切换至代码模式。代码模式。Flex 4.0 RIA开发详解开发详解(第第2版版)15.3.2 15.3.2 设计柱状图界面及数据绑定设计柱状图界面及数据绑定4在代码模式下设计在代码模式下设计组件界面。组件界面。5单击单击MXML编辑器的编辑器的“Design按钮,切换至设按钮,切换至设计模式查看界面布局。计模式查看界面布局。6按下按下Ctrl+F11键编译运行程序。键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)15.4 15.4 文件目录浏览器实例文件目
237、录浏览器实例文件目录浏览器能浏览本地文件目录,类似于文件目录浏览器能浏览本地文件目录,类似于Windows的资源浏览器。在的资源浏览器。在Flex 3.0之前,之前,Adobe公司出于公司出于平安性考虑,一直没有提供访问本地文件的平安性考虑,一直没有提供访问本地文件的API函数及组函数及组件。件。Flex 3.0提供了可操作本地文件目录的组件。提供了可操作本地文件目录的组件。Flex 3.0中中也新增了也新增了File类,包含在类,包含在flash.filesystem.File中。中。Flex 3.0只只支持在支持在AIR工程中使用工程中使用File类及可操作本地文件的组件。传类及可操作本地
238、文件的组件。传统的统的Flex工程中并不支持对本地文件的操作。工程中并不支持对本地文件的操作。Flex 4.0 RIA开发详解开发详解(第第2版版)15.4.1 15.4.1 外观界面设计外观界面设计本实例属于本实例属于AIR工程,其外观界面设计步骤如下。工程,其外观界面设计步骤如下。1选择选择“文件文件|“新建新建|“Flex工程命令,弹出工程命令,弹出“创立创立Flex工程对话框。工程对话框。2在在“工程名文本框中输入工程名称。工程名文本框中输入工程名称。3在在“输出文件夹文本框中输入编译后输出的路输出文件夹文本框中输入编译后输出的路径径4在该对话框中,设置源路径、主文件夹等信息。在该对话
239、框中,设置源路径、主文件夹等信息。设置完成后,单击设置完成后,单击“完成完成“按钮。按钮。5单击单击MXML编辑器上的编辑器上的“Design按钮,切换至按钮,切换至设计模式。设计模式。6从左下角组件面板中拖曳可视组件到编辑区。从左下角组件面板中拖曳可视组件到编辑区。7单击单击MXML编辑器上方的编辑器上方的“Source按钮,切换按钮,切换至代码编辑区查看代码。至代码编辑区查看代码。Flex 4.0 RIA开发详解开发详解(第第2版版)15.4.2 15.4.2 文件系统组件的路径文件系统组件的路径文件系统组件都有一个文件系统组件都有一个directory属性,用以指明当前属性,用以指明当前
240、文件路径。文件路径。Flex 4.0 RIA开发详解开发详解(第第2版版)15.4.3 15.4.3 制作制作“后退效果后退效果“后退按钮的功能是返回到上一级目录。后退按钮的功能是返回到上一级目录。File类中的类中的parent属性表示上一级路径。属性表示上一级路径。Flex 4.0 RIA开发详解开发详解(第第2版版)15.5 AIR15.5 AIR程序集成网页实例程序集成网页实例Flex 3.0提供了一种新技术来整合现有的几乎所有的提供了一种新技术来整合现有的几乎所有的Web开发技术。例如,开发技术。例如,html、JavaScript、Ajax、Flash等。等。这种技术使得这种技术使
241、得Flex 3.0可开发出更加丰富的桌面应用程序。可开发出更加丰富的桌面应用程序。在在AIR程序中使用程序中使用组件可以很容易地将网页集组件可以很容易地将网页集成进来。本节将介绍如何集成网页,如何使用成进来。本节将介绍如何集成网页,如何使用ActionScript 3.0中新增的中新增的JavaScriptObject类型调用类型调用DOM,如何互相调,如何互相调用用JavaScript和和ActionScript 3.0。Flex 4.0 RIA开发详解开发详解(第第2版版)15.5.1 HTML组件集成网页组件集成网页Flex 4.0的的AIR工程中新增工程中新增组件,用于支组件,用于支持
242、嵌套网页。持嵌套网页。location属性表示当前的网址。对于绝对地址必须注明属性表示当前的网址。对于绝对地址必须注明“ :/,对于相对地址可省略,对于相对地址可省略“ :/。修改。修改location属性属性会自动触发会自动触发组件重新加载新网址。组件重新加载新网址。htmlText属属性表示网页的标题。性表示网页的标题。Flex 4.0 RIA开发详解开发详解(第第2版版)15.5.2 15.5.2 使用使用JavaScriptObjectJavaScriptObject类型调用类型调用DOMDOMDOM是以层次构造组织的节点或信息片断的集合。是以层次构造组织的节点或信息片断的集合。HTM
243、L网页以树状形式组织,包含网页以树状形式组织,包含、等标签,是典型的等标签,是典型的DOM对象。对象。JavaScriptObject类类型为型为Flex 3.0中新增的类型,可用于存储中新增的类型,可用于存储DOM对象。对象。Flex 4.0 RIA开发详解开发详解(第第2版版)Flex 4.0 RIA开发详解开发详解(第第2版版)15.6 15.6 文本编辑器实例文本编辑器实例桌面应用程序经常需要读写本地的文件资源。桌面应用程序经常需要读写本地的文件资源。Flex 3.0 AIR工程中新增可对本地文件操作的数据类型,如工程中新增可对本地文件操作的数据类型,如File、FileStream、
244、FileEvent等。本节将以简单文本编辑器实例等。本节将以简单文本编辑器实例介绍介绍AIR工程中如何进展文件的读写。涉及的主要技术包工程中如何进展文件的读写。涉及的主要技术包括对括对File类、类、FileStream类的操作。类的操作。Flex 4.0 RIA开发详解开发详解(第第2版版)15.6.1 15.6.1 设计文本编辑器界面设计文本编辑器界面文本编辑器的界面包括文件路径输入框、文本编辑器的界面包括文件路径输入框、“浏览按浏览按钮、文件内容编辑区等。设计文本编辑器界面的步骤如下。钮、文件内容编辑区等。设计文本编辑器界面的步骤如下。1创立创立AIR工程。工程。2从组件面板中拖曳相应的
245、可视组件至从组件面板中拖曳相应的可视组件至MXML编编辑器。辑器。3在属性面板中设置各组件的属性。在属性面板中设置各组件的属性。4单击单击MXML编辑器的编辑器的“Design按钮,切换至设按钮,切换至设计模式。计模式。Flex 4.0 RIA开发详解开发详解(第第2版版)15.6.2 15.6.2 选择文件选择文件在翻开文件前需要选择文件路径,即单击在翻开文件前需要选择文件路径,即单击“浏览浏览按钮时弹出选择文件对话框。使用按钮时弹出选择文件对话框。使用File类中的类中的browseForOpen()方法可弹出选择文件对话框。方法可弹出选择文件对话框。File类包含于类包含于“flash.
246、filesystem.*中。中。文件格式过滤是指对话框能选择的文件类型。文件格式过滤是指对话框能选择的文件类型。文件格式以文件格式以“*操作符接格式字符串表示。操作符接格式字符串表示。用户在选择文件对话框中按下用户在选择文件对话框中按下“确定按钮后会触发确定按钮后会触发“Event.SELECT状态,表示已确定文件路径。此时,选状态,表示已确定文件路径。此时,选择文件对话框会自动关闭,选择的文件路径存储于择文件对话框会自动关闭,选择的文件路径存储于File变量变量的的nativePath属性中。属性中。选择文件后立即开场读取文件,故需监听选择文件后立即开场读取文件,故需监听“Event.SEL
247、ECT状态。状态。Flex 4.0 RIA开发详解开发详解(第第2版版)15.6.3 15.6.3 读取文件读取文件AIR工程中使用工程中使用FileStream类型来读写文件。类型来读写文件。FileStream类型是一种文件流类型,用以操作文件流对象。类型是一种文件流类型,用以操作文件流对象。读取文件的步骤如下。读取文件的步骤如下。1创立一个创立一个FileStream实例。实例。2以读的方式翻开文件。以读的方式翻开文件。3以读的方式翻开文件后,数据已存储于以读的方式翻开文件后,数据已存储于FileStream实例中。实例中。Flex 4.0 RIA开发详解开发详解(第第2版版)15.6.
248、4 15.6.4 写文件写文件写文件的方法与读文件的方法相似,也是使用写文件的方法与读文件的方法相似,也是使用FileStream类。写文件的步骤如下。类。写文件的步骤如下。1创立一个创立一个FileStream实例。实例。2以写的方式翻开文件。以写的方式翻开文件。3以写的方式翻开文件后,可将数据通过文件流以写的方式翻开文件后,可将数据通过文件流写入到文件中。写入到文件中。按下按下Ctrl+F11编译运行程序。编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)15.7 15.7 组件数据拖曳实例组件数据拖曳实例在在Flex 3.0中组件中的数据允许被拖曳。例如,可将中组件中的
249、数据允许被拖曳。例如,可将DataGrid组件中的数据拖曳到组件中的数据拖曳到List组件中。组件中。Flex 3.0中局部组件包含了拖曳操作的内置支持,即组中局部组件包含了拖曳操作的内置支持,即组件中包含件中包含dragEnabled和和dropEnabled属性。默认情况下组属性。默认情况下组件的件的dragEnabled和和dropEnabled属性值都为属性值都为false,表示不,表示不允许拖曳。允许拖曳。Flex 3.0中允许数据拖曳的组件包括中允许数据拖曳的组件包括DataGrid组件、组件、PrintDataGrid组件、组件、Tree组件、组件、Menu组件、组件、List组
250、件、组件、HorizontalList组件、组件、TileList组件。组件。dragEnabled属性表示组件数据可被拖动,属性表示组件数据可被拖动,dropEnabled属性表示组件可承受其他数据的拖动。两个属属性表示组件可承受其他数据的拖动。两个属性经常同时设置为性经常同时设置为true或或false。Flex 4.0 RIA开发详解开发详解(第第2版版)15.8 15.8 小结小结本章主要以实例的形式为读者讲解常用的本章主要以实例的形式为读者讲解常用的Flex 4.0组件组件的使用。这些实例中使用的组件既有最常用的组件,如的使用。这些实例中使用的组件既有最常用的组件,如Panel组件、
251、按钮组件、输入框组件等,也有组件、按钮组件、输入框组件等,也有Flex 4.0新增新增的组件,如的组件,如FileSystemComboBox组件、组件、FileSystemTree组组件等。由于件等。由于Flex 4.0提供的组件众多,每种组件都有特殊的提供的组件众多,每种组件都有特殊的功能。本章不能一一介绍。但是通过本章的学习,读者可功能。本章不能一一介绍。但是通过本章的学习,读者可以掌握使用组件的普遍方法。结合实例的学习,能很好地以掌握使用组件的普遍方法。结合实例的学习,能很好地理解组件给程序开发带来的方便。理解组件给程序开发带来的方便。Flex 4.0 RIA开发详解开发详解(第第2版
252、版)第第1616章章 增强用户界面设计增强用户界面设计在设计应用程序模型时,默认的组件界面往往不能满在设计应用程序模型时,默认的组件界面往往不能满足用户的要求。足用户的要求。Flex 4.0组件支持自定义界面。从广义上讲,组件支持自定义界面。从广义上讲,美化界面不仅包括组件静态外观,也包括组件的动态效果。美化界面不仅包括组件静态外观,也包括组件的动态效果。Flex 4.0 RIA开发详解开发详解(第第2版版)16.1 16.1 自定义事件效果自定义事件效果自定义事件效果是指当组件的一个事件被触发,且这自定义事件效果是指当组件的一个事件被触发,且这个事件允许有效果,那么这个事件就可以应用自定义的
253、效个事件允许有效果,那么这个事件就可以应用自定义的效果。在果。在Flex里这种效果触发器叫做里这种效果触发器叫做“Behaviors。组件中一般都有许多效果触发器组件中一般都有许多效果触发器Behaviors。特定的组件都有其特殊的效果事件。特定的组件都有其特殊的效果事件。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2 Spark16.2 Spark组件库的效果组件新添加组件库的效果组件新添加相比较之前的相比较之前的Flex 3.0,在,在Flex4.0的的Spark组件库中,组件库中,新增加了很多丰富的效果组件新增加了很多丰富的效果组件各种效果组件都有各自独特的属性。定义效果
254、组件的各种效果组件都有各自独特的属性。定义效果组件的属性就可修改制作出满足用户要求的效果。属性就可修改制作出满足用户要求的效果。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.1 16.2.1 擦拭效果组件擦拭效果组件WipeWipeWipe组件实现的是从上、下、左、右不同方向的切换组件实现的是从上、下、左、右不同方向的切换显示效果。常用的属性是显示效果。常用的属性是duration属性,表示持续时间,属性,表示持续时间,单位为毫秒。单位为毫秒。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.2 16.2.2 旋转效果组件旋转效果组件RotateRotate组件
255、实现的是旋转效果。需要说明是的,组件实现的是旋转效果。需要说明是的,originX和和originY属性是指参照坐标系的坐标。属性是指参照坐标系的坐标。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.3 16.2.3 改变大小组件改变大小组件ResizeResize组件实现的是改变大小效果。需要说明是组件实现的是改变大小效果。需要说明是的,的,组件改变大小是一个动态效果,由组件改变大小是一个动态效果,由heightBy属性和属性和widthBy属性分别指明高度和宽度变化的速度。属性分别指明高度和宽度变化的速度。 Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.4
256、 16.2.4 移动组件移动组件MoveMove组件实现的是移动效果。组件实现的是移动效果。需要说明是的,需要说明是的,xBy属性和属性和yBy属性的意义分别为属性的意义分别为X坐坐标方向的移动速度和标方向的移动速度和Y坐标方向的移动速度。坐标方向的移动速度。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.5 16.2.5 移动移动3D3D组件组件Move3DMove3D组件实现的是组件实现的是3D移动效果,与移动效果,与Move不同不同的是,在属性中多了一个的是,在属性中多了一个zBy,表示,表示Z轴方向移动的像素,轴方向移动的像素,其他属性与其他属性与Move组件类似。组件
257、类似。按下按下Ctrl+F11编译运行程序。编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.6 16.2.6 渐显效果组件渐显效果组件FadeFade组件实现的是逐渐显示效果。组件实现的是逐渐显示效果。需要说明是的,需要说明是的,组件指明组件指明a;phaFrom和和alphaTo属性后可实现渐显或渐隐效果。属性后可实现渐显或渐隐效果。按下按下Ctrl+F11键编译运行程序。键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.7 16.2.7 穿插渐显组件穿插渐显组件CrossFadeCrossFade与与Fade组件不同的是,组件不同
258、的是,CrossFade组件在图片切换的组件在图片切换的时候,有一个很明显的穿插过度特效。时候,有一个很明显的穿插过度特效。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.8 Animate16.2.8 Animate在在Flex 4.0中,所有的新的特效组件类都是继承自中,所有的新的特效组件类都是继承自Animate类的,也就是说,类的,也就是说,Animate类是其他特效类的父类。类是其他特效类的父类。所以使用所以使用Animate类,可以实现其他特效类实现的效果。类,可以实现其他特效类实现的效果。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.9 Anim
259、ateColor16.2.9 AnimateColorAnimateColor组件是在组件是在Animate组件根底上,增加了组件根底上,增加了颜色变换的特效。颜色变换的特效。Flex 4.0 RIA开发详解开发详解(第第2版版)16.2.10 AnimateShaderTransition16.2.10 AnimateShaderTransitionAnimateShaderTransition组件是在组件是在Animate组件的根组件的根底上,添加了图形扭曲变形的过度转换特效。其中底上,添加了图形扭曲变形的过度转换特效。其中shaderCode属性表示扭曲变形的类型,一般是使用属性表示扭曲
260、变形的类型,一般是使用pbj格格式定义。式定义。Flex 4.0 RIA开发详解开发详解(第第2版版)16.3 16.3 自定义组件界面自定义组件界面自定义组件界面的方法有直接使用组件属性、使用自定义组件界面的方法有直接使用组件属性、使用setStyle()方法、使用方法、使用CSS样式样式3种。本节介绍前两种,种。本节介绍前两种,CSS样式内样式内容在后续章节中详细介绍。容在后续章节中详细介绍。Flex 4.0 RIA开发详解开发详解(第第2版版)16.3.1 16.3.1 使用组件属性改变界面使用组件属性改变界面自定义组件界面可直接使用组件属性。组件中有关样自定义组件界面可直接使用组件属性
261、。组件中有关样式的属性很多,也不尽一样,但方法是一致的。式的属性很多,也不尽一样,但方法是一致的。Flex 4.0 RIA开发详解开发详解(第第2版版)16.3.2 16.3.2 使用使用setStyle()setStyle()方法改变界面方法改变界面Flex组件中都有一个组件中都有一个setStyle()方法,用以动态修改组方法,用以动态修改组件界面。例如,按下按钮后修改其他组件的界面。件界面。例如,按下按钮后修改其他组件的界面。Flex 4.0 RIA开发详解开发详解(第第2版版)16.4 16.4 使用使用FilterFilter滤镜类滤镜类滤镜是对矢量图的特殊效果处理,在滤镜是对矢量图
262、的特殊效果处理,在PhotoShop等专等专业矢量图处理工具中经常使用。业矢量图处理工具中经常使用。Flex 3.0中提供少量的滤镜中提供少量的滤镜类,包含于类,包含于“flash.filter.*中。中。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5 FXG16.5 FXG图形格式新增图形格式新增FXG定义了定义了Flex的图形格式的描述标准。的图形格式的描述标准。FXG产生的产生的目的其实是为了不同平台之间的数据交换,以提供更好的目的其实是为了不同平台之间的数据交换,以提供更好的工作流程。工作流程。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.1 16.5
263、.1 使用使用FXGFXGFlash XML GraphicsFXG是在构建是在构建Flex应用程序应用程序时,定义的一种图形格式。使用时,定义的一种图形格式。使用FXG,Flex可以同其他的可以同其他的Adobe工具,如工具,如FlashCatalyst、Illustrator等交换数据。这等交换数据。这样可以大大简化整个设计和开发的工作流程。界面图形设样可以大大简化整个设计和开发的工作流程。界面图形设计师可以使用通过其他平面设计工具。开发工程师就可以计师可以使用通过其他平面设计工具。开发工程师就可以把把FXG文件直接在文件直接在Flex工程中应用。工程中应用。Flex 4.0 RIA开发详
264、解开发详解(第第2版版)16.5.2 16.5.2 路径路径PathPath类类在矢量图形中,路径就是由一系列的点组成的,最后在矢量图形中,路径就是由一系列的点组成的,最后再由线聚集成一个图像。再由线聚集成一个图像。在在Flex中,可以使用中,可以使用Path类,通过绘制线来定义一个类,通过绘制线来定义一个矢量图形。其中,矢量图形。其中,LineSegment,CubicBezierSegment,和,和QuadraticBezierSegment类,可以定义线的类型。在绘制类,可以定义线的类型。在绘制线或者图形之前,需要使用线或者图形之前,需要使用MoveSegment类定义起始位置。类定义
265、起始位置。标签是标签是FXG中比较常用的,定义了图形边中比较常用的,定义了图形边框样式,如颜色、粗细等。框样式,如颜色、粗细等。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.3 16.5.3 群组群组GroupGroup类类Group是所有容器组件中最根本的类,所有的容器组是所有容器组件中最根本的类,所有的容器组件都是继承件都是继承Group类的。相当于类的。相当于Flex 4之前版本的之前版本的Canvas组组件,但是新的件,但是新的Group要比要比Canvas更加的简洁、体积更加小。更加的简洁、体积更加小。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.
266、4 16.5.4 图形元素图形元素在在FXG中,所有的图形元素都是继承自中,所有的图形元素都是继承自IgraphicElement接口。接口。FXG中定义的根本图形元素有矩形、中定义的根本图形元素有矩形、椭圆形、线。矩形使用椭圆形、线。矩形使用标签绘制,椭圆形使用标签绘制,椭圆形使用标签绘制,线使用标签绘制,线使用标签绘制。标签绘制。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.5 16.5.5 文字布局文字布局在在Flex 4之前,官方已经推出了一个开源框架之前,官方已经推出了一个开源框架Text Layout Framework,该框架意在处理复杂的文字排列方式,该框架意
267、在处理复杂的文字排列方式,如横向排列。如横向排列。在在Flex 4中,已经集成了该框架的根本功能,而且在中,已经集成了该框架的根本功能,而且在文字显示的相关组件中,也添加了新的属性,使得可以更文字显示的相关组件中,也添加了新的属性,使得可以更加方便地使用。加方便地使用。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.6 16.5.6 填充图形填充图形使用使用标签,可以对图形进展颜色或者图像的填标签,可以对图形进展颜色或者图像的填充。填充的类型有单色填充充。填充的类型有单色填充SolidColor、放射性填充、放射性填充RadialGradient、线性填充、线性填充Linear
268、Gradient和图像填充和图像填充BitmapFill。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.7 16.5.7 位图位图BitmapImageBitmapImage标签标签可以使用可以使用标签把图像填充在一个规标签把图像填充在一个规那么的区域内。区域和图像的关系就如同系统的桌面和背那么的区域内。区域和图像的关系就如同系统的桌面和背景一样,可以重复平铺,可以适合区域的拉伸图像,也可景一样,可以重复平铺,可以适合区域的拉伸图像,也可以对图像剪裁。以对图像剪裁。Flex 4.0 RIA开发详解开发详解(第第2版版)16.5.8 16.5.8 遮罩特性遮罩特性FXG同样也支
269、持遮罩的特性。遮罩简单来说就是使得同样也支持遮罩的特性。遮罩简单来说就是使得组件元素以特定的方式局部呈现出来。组件元素以特定的方式局部呈现出来。FXG中提供了两种中提供了两种类型的遮罩呈现方式:类型的遮罩呈现方式:clipping和和alpha。clipping就是按照就是按照遮罩层的组件元素,区域呈现出来,而遮罩层的组件元素,区域呈现出来,而alpha那么是呈现的那么是呈现的透明度。透明度。Flex 4.0 RIA开发详解开发详解(第第2版版)16.6 16.6 小结小结本章主要介绍了本章主要介绍了Fex 4.0中如何自定义效果来美化界面。中如何自定义效果来美化界面。组件界面可直接使用样式属
270、性,也可使用组件界面可直接使用样式属性,也可使用setStyle()方法。方法。Flex 4.0中有丰富的效果组件,用户可通过组合多种效果组中有丰富的效果组件,用户可通过组合多种效果组件制定满足需要的效果。另外,件制定满足需要的效果。另外,Flex 4.0中也提供了少量的中也提供了少量的滤镜类,用以支持更特殊的效果。在本章后面内容中,详滤镜类,用以支持更特殊的效果。在本章后面内容中,详细介绍了细介绍了Flex 4新的特性新的特性FXG在开发中如何使用。在开发中如何使用。Flex 4.0 RIA开发详解开发详解(第第2版版)第第1717章章 CSS CSS美化界面美化界面CSS标准最早应用于网页
271、开发中,使得程序开发和界标准最早应用于网页开发中,使得程序开发和界面开发别离。面开发别离。Flex也支持使用也支持使用CSS。CSS由于其简单、方便由于其简单、方便的优点,逐渐成了的优点,逐渐成了Flex应用程序美化界面的最重要方法。应用程序美化界面的最重要方法。本章将为读者介绍本章将为读者介绍CSS的语法及的语法及Flex中如何使用中如何使用CSS美化界美化界面。面。Flex 4.0 RIA开发详解开发详解(第第2版版)17.1 CSS17.1 CSS简介简介CSS是一种层叠样式表,可以有效地对布局、字体、是一种层叠样式表,可以有效地对布局、字体、颜色、背景和其它效果进展准确的控制。颜色、背
272、景和其它效果进展准确的控制。属性名和属性值之间以属性名和属性值之间以“:符分隔。不同属性名间以符分隔。不同属性名间以“;符分隔。以下代码定义了两个样式符分隔。以下代码定义了两个样式“.myFontStyle、“.myButton。一个常见的一个常见的CSS定义包括样式名、属性、属性值。对定义包括样式名、属性、属性值。对于特殊的需求,需要其他语法支持,如单位、规那么等。于特殊的需求,需要其他语法支持,如单位、规那么等。下面将详细介绍下面将详细介绍CSS语法。语法。Flex 4.0 RIA开发详解开发详解(第第2版版)17.2 17.2 样式名样式名样式名是样式名是CSS定义的第一个元素,指明此定
273、义的第一个元素,指明此CSS定义的定义的名称。其他程序调用名称。其他程序调用CSS样式时以样式名为准,所以在同样式时以样式名为准,所以在同一一CSS文件中不能有同名的样式名。样式名可分为默认样文件中不能有同名的样式名。样式名可分为默认样式名、自定义样式名、分组样式名。式名、自定义样式名、分组样式名。Flex 4.0 RIA开发详解开发详解(第第2版版)17.2.1 17.2.1 默认样式名默认样式名默认样式名是指此样式名与默认样式名是指此样式名与Flex组件的名称一样。例组件的名称一样。例如,如,CSS文件中定义了一个名为文件中定义了一个名为“Button的样式,此样式的样式,此样式名与名与F
274、lex中的按钮组件同名。中的按钮组件同名。默认样式名的主要特点是默认样式名的主要特点是“一改全改,即定义默认一改全改,即定义默认样式后,样式后,Flex组件中相关的组件都使用此样式。这样就能组件中相关的组件都使用此样式。这样就能保证同一应用程序中组件的风格是统一的。保证同一应用程序中组件的风格是统一的。Flex 4.0 RIA开发详解开发详解(第第2版版)17.2.2 17.2.2 自定义样式名自定义样式名自定义样式名是指此样式是特殊的,用以定制一个或自定义样式名是指此样式是特殊的,用以定制一个或假设干个组件界面。假设干个组件界面。自定义样式以自定义样式以“.符开头,指明此样式为自定义的样符开
275、头,指明此样式为自定义的样式,后接样式名称。式,后接样式名称。自定义样式主要用于对某一个或某几个组件使用特殊自定义样式主要用于对某一个或某几个组件使用特殊的样式。的样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.2.3 17.2.3 分组样式名分组样式名假设某几种样式的定义内容完全一样,可使用分组样假设某几种样式的定义内容完全一样,可使用分组样式。这样可使得式。这样可使得CSS代码更简洁。代码更简洁。需要注意的是,分组样式中的不同样式都使用一样的需要注意的是,分组样式中的不同样式都使用一样的定义。不同样式名之间以定义。不同样式名之间以“,分隔。分隔。Flex 4.0 RIA开
276、发详解开发详解(第第2版版)17.3 17.3 属性属性CSS中的属性非常丰富,按用途大致可分为字体、文中的属性非常丰富,按用途大致可分为字体、文本、背景等本、背景等17类。本节将为读者详细介绍各种属性。类。本节将为读者详细介绍各种属性。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.1 17.3.1 字体字体FontFont字体类属性主要用于定义字体样式。字体类属性主要用于定义字体样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.2 17.3.2 文本文本TextText文本类属性主要用于定义文本样式,是文本类属性主要用于定义文本样式,是CSS属性中最属性
277、中最复杂的局部。复杂的局部。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.3 17.3.3 背景背景BackgroundBackground背景类属性主要用于定义背景样式。背景类属性主要用于定义背景样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.4 17.3.4 定位定位PositioningPositioning定位类属性主要用于定位。定位类属性主要用于定位。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.5 17.3.5 尺寸尺寸DimensionsDimensions尺寸类属性主要用于定义尺寸。尺寸类属性主要用于定义尺寸。Flex
278、4.0 RIA开发详解开发详解(第第2版版)17.3.6 17.3.6 布局布局LayoutLayout布局类属性主要用于定义布局。布局类属性主要用于定义布局。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.7 17.3.7 外补丁外补丁MarginsMargins外补丁类属性主要用于定义外补丁。外补丁类属性主要用于定义外补丁。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.8 17.3.8 边框边框BordersBorders边框类属性主要用于定义边框样式。边框类属性主要用于定义边框样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.9 17
279、.3.9 内补丁内补丁PaddingsPaddings内补丁类属性主要用于定义内补丁。内补丁类属性主要用于定义内补丁。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.10 17.3.10 列表列表ListsLists列表类属性主要用于定义列表样式。列表类属性主要用于定义列表样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.11 17.3.11 表格表格TableTable表格类属性主要用于定义表格样式。表格类属性主要用于定义表格样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.12 17.3.12 滚动条滚动条ScrollbarScrol
280、lbar滚动条类属性主要用于定义滚动条样式。滚动条类属性主要用于定义滚动条样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.13 17.3.13 打印打印PrintingPrinting打印类属性主要用于定义打印样式。打印类属性主要用于定义打印样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.3.14 17.3.14 声音声音AuralAural声音类属性主要用于定义声音样式。声音类属性主要用于定义声音样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.4 17.4 单位单位CSS语法中单位是最根底的元素。语法中单位是最根底的元素。CSS中定义
281、了长度、中定义了长度、颜色、角度、时间、频率五大类计量单位。本小节将为读颜色、角度、时间、频率五大类计量单位。本小节将为读者介绍每类计量单位。者介绍每类计量单位。Flex 4.0 RIA开发详解开发详解(第第2版版)17.4.1 17.4.1 长度长度LengthLengthCSS标准中长度单位包括相对长度单位和绝对长度单标准中长度单位包括相对长度单位和绝对长度单位。位。Flex 4.0 RIA开发详解开发详解(第第2版版)17.4.2 17.4.2 颜色颜色ColorColor1十六进制表示法十六进制表示法2RGB模型表示法模型表示法3英文名称表示法。英文名称表示法。Flex 4.0 RIA
282、开发详解开发详解(第第2版版)17.4.3 17.4.3 角度角度AngleAngleCSS标准中角度单位有标准中角度单位有deg、grad、rad 3种。种。117.4.4 时间时间Time和频率和频率FrequencyCSS标准中时间单位有标准中时间单位有s秒、秒、ms毫秒两种。毫秒两种。1s=1000ms。CSS标准中频率单位有标准中频率单位有HZ赫兹、赫兹、kHZ千赫两种。千赫两种。HZ和和kHZ都是声波的根本单位。都是声波的根本单位。1kHz=1000Hz。Flex 4.0 RIA开发详解开发详解(第第2版版)17.5 17.5 规那么规那么规那么是规那么是CSS标准中为使用特殊设备
283、而定义的方法。标准中为使用特殊设备而定义的方法。CSS中规那么都以中规那么都以“开头。本小节将为读者介绍常用的开头。本小节将为读者介绍常用的几种规那么。几种规那么。Flex 4.0 RIA开发详解开发详解(第第2版版)17.5.1 17.5.1 导入外部样式表导入外部样式表importimportimport规那么用以指定导入的外部样式表及目标设规那么用以指定导入的外部样式表及目标设备类型。备类型。此规那么其后的分号是必需的。如果省略了此分号,此规那么其后的分号是必需的。如果省略了此分号,外部样式表将无法正确导入,并会生成错误信息。外部样式表将无法正确导入,并会生成错误信息。“url(导入路径
284、导入路径)、设备类型都是可选的,但不能两者、设备类型都是可选的,但不能两者都默认。都默认。导入的外部样式表中的定义会被程序中的样式定义覆导入的外部样式表中的定义会被程序中的样式定义覆盖。盖。Flex 4.0 RIA开发详解开发详解(第第2版版)17.5.2 17.5.2 指定字符集指定字符集charsetcharsetcharset规那么用以指定该样式表使用的字符集。规那么用以指定该样式表使用的字符集。此规那么无默认值。此规那么无默认值。此规那么只能定义在外部样式表文件内。只允许定义此规那么只能定义在外部样式表文件内。只允许定义一次,且必须在样式表的最前面。一次,且必须在样式表的最前面。Fle
285、x 4.0 RIA开发详解开发详解(第第2版版)17.5.3 17.5.3 导入外部字体导入外部字体font-facefont-facefont-face规那么用以设置嵌入程序的外部字体。规那么用以设置嵌入程序的外部字体。此规那么无默认值。此规那么无默认值。此规那么可以使程序应用本地系统上没有的字体。此规那么可以使程序应用本地系统上没有的字体。Flex 4.0 RIA开发详解开发详解(第第2版版)17.5.4 17.5.4 指定设备指定设备mediamediamedia规那么用以指定样式表应用的设备类型。规那么用以指定样式表应用的设备类型。Flex 4.0 RIA开发详解开发详解(第第2版版)
286、17.6 17.6 静态滤镜静态滤镜静态滤镜是指为对象添加特殊的静态效果,如模糊效静态滤镜是指为对象添加特殊的静态效果,如模糊效果、发光效果、旋转效果等。静态滤镜效果是静态的,即果、发光效果、旋转效果等。静态滤镜效果是静态的,即经过滤镜处理后结果。本节将为读者介绍经过滤镜处理后结果。本节将为读者介绍CSS标准中常用标准中常用的几种静态滤镜效果。的几种静态滤镜效果。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.1 17.6.1 色彩层滤镜色彩层滤镜Gradient Gradient Gradient滤镜在对象的背景和内容之间显示定制的色滤镜在对象的背景和内容之间显示定制的色彩层
287、。彩层。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。startColorStr参数为可选项,类型为字符串参数为可选项,类型为字符串String。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.2 17.6.2 边界图片滤镜边界图片滤镜AlphaImageLoaderAlphaImageLoaderAlphaImageLoader滤镜在对象容器边界内,在对象的滤镜在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是改变尺寸的操作。如果载入的是
288、PNG格式,那么格式,那么0%-100%的透明度也被提供。的透明度也被提供。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.3 17.6.3 透明度滤镜透明度滤镜AlphaAlphalAlpha滤镜调整对象内容的透明度。滤镜调整对象内容的透明度。lenabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。lstyle参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。lopacity参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。lfinishOpacity参数为可选项,类型为整数值参数为可选项,类型为整数值Integ
289、er。用于设置或检索透明渐变的完毕透明度。取值范围为。用于设置或检索透明渐变的完毕透明度。取值范围为0-100。默认值为。默认值为0,即完全透明。,即完全透明。100为完全不透明。为完全不透明。lstartX参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。lstartY参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。lfinishX参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。lfinishY参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.4 17.
290、6.4 图片处理滤镜图片处理滤镜BasicImageBasicImageBasicImage滤镜用于色彩处理,图像旋转,或对象内滤镜用于色彩处理,图像旋转,或对象内容的透明度。容的透明度。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.5 17.6.5 模糊滤镜模糊滤镜BlurBlurBlur滤镜制作对象内容的模糊效果。滤镜制作对象内容的模糊效果。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。用于设置或检索滤镜是否激活。其值可为用于设置或检索滤镜是否激活。其值可为true、false。true默认值表示滤镜激活,默认值表示滤镜激活,false
291、表示滤镜被制止。表示滤镜被制止。makeShadow参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。pixelRadius参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。shadowOpacity参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.6 17.6.6 阴影滤镜阴影滤镜DropShadowDropShadowDropShadow滤镜制作对象的阴影效果。滤镜制作对象的阴影效果。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。color参数为
292、可选项,类型为字符串参数为可选项,类型为字符串String。offX参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。offY参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。positive参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.7 17.6.7 浮雕滤镜浮雕滤镜EmbossEmbossEmboss滤镜用灰度值为对象内容制作浮雕纹理效果。滤镜用灰度值为对象内容制作浮雕纹理效果。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。Bias
293、参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.8 17.6.8 发光滤镜发光滤镜GlowGlowGlow滤镜环绕对象内容边缘添加辉光制作发热效果。滤镜环绕对象内容边缘添加辉光制作发热效果。辉光将出现在对象边界内的内容的最外轮廓之外。辉光将出现在对象边界内的内容的最外轮廓之外。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.9 17.6.9 矩阵遮罩矩阵遮罩MatrixMatrixMatrix滤镜使用矩阵变形实现对象内容的改变尺寸、滤镜使用矩阵变形实现对象内容的改变尺寸、旋转、上下或左右反转。使用此
294、滤镜可以建立以下效果。旋转、上下或左右反转。使用此滤镜可以建立以下效果。左右反转。将左右反转。将M11和和M12的值取负。的值取负。上下反转。将上下反转。将M21和和M22的值取负。的值取负。改变尺寸。将改变尺寸。将M11和和M12和和M21和和M22的值乘以一样的值乘以一样的因数。的因数。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。SizingMethod参数为可选项,类型为字符串参数为可选项,类型为字符串String。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.9 17.6.9 矩阵遮罩矩阵遮罩MatrixMatrixlFilter
295、Type参数为可选项,类型为字符串参数为可选项,类型为字符串String。lDx参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。lDy参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。lM11参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。lM21参数为可选项,类型为浮点数参数为可选项,类型为浮点数Float。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.10 17.6.10 运动模糊滤镜运动模糊滤镜MotionBlurMotionBlurMotionBlur滤镜为对象内容制作运动模糊效果。滤镜为对象内容制作运动模糊效果。Flex
296、 4.0 RIA开发详解开发详解(第第2版版)17.6.11 17.6.11 波纹滤镜波纹滤镜WaveWaveWave滤镜为对象内容建立波纹扭曲效果。滤镜为对象内容建立波纹扭曲效果。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.12 X17.6.12 X光滤镜光滤镜XrayXrayXray滤镜以滤镜以X光效果显示对象内容。光效果显示对象内容。Flex 4.0 RIA开发详解开发详解(第第2版版)17.6.13 17.6.13 反相滤镜反相滤镜InvertInvertInvert滤镜反相显示对象内容。滤镜反相显示对象内容。Flex 4.0 RIA开发详解开发详解(第第2版版)1
297、7.7 17.7 转换滤镜转换滤镜转换滤镜是指为对象添加特殊的转换效果,如百叶窗转换滤镜是指为对象添加特殊的转换效果,如百叶窗效果、大风车效果、滚动条效果等。效果、大风车效果、滚动条效果等。CSS标准中定义了丰标准中定义了丰富的转换滤镜,根本能满足用户的要求。富的转换滤镜,根本能满足用户的要求。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.1 17.7.1 百叶窗效果滤镜百叶窗效果滤镜BlindsBlindsBlinds滤镜用百叶窗开关效果转换对象内容。滤镜用百叶窗开关效果转换对象内容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。dura
298、tion参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。bands参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.2 17.7.2 国际象棋棋盘效果滤镜国际象棋棋盘效果滤镜CheckerBoardCheckerBoardCheckerBoard滤镜用类似国际象棋棋盘的网格推拉效滤镜用类似国际象棋棋盘的网格推拉效果转换对象内容。果转换对象内容。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.3 17.7.3 渐隐效果滤镜渐隐效果滤镜FadeFadeFade滤镜用渐隐效果转换对象内容。
299、滤镜用渐隐效果转换对象内容。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.4 17.7.4 滚动渐隐效果滤镜滚动渐隐效果滤镜GradientWipeGradientWipeGradientWipe滤镜用滚动渐隐效果转换对象内容。滤镜用滚动渐隐效果转换对象内容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。duration参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。gradientSize参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。motion参数为可选项,类型为字符串参数为可选项,类型为字符串String
300、。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.5 17.7.5 对角扩张效果滤镜对角扩张效果滤镜InsertInsertInsert滤镜用对角扩张效果转换对象内容。滤镜用对角扩张效果转换对象内容。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.6 17.7.6 放射状擦除效果滤镜放射状擦除效果滤镜RadialWipeRadialWipeRadialWipe滤镜用放射状擦除效果转换对象内容,效滤镜用放射状擦除效果转换对象内容,效果类似汽车挡风玻璃的刮雨刀。果类似汽车挡风玻璃的刮雨刀。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.7 17.7.
301、7 随机线条效果滤镜随机线条效果滤镜RandomBarsRandomBarsRandomBars滤镜用随机发生的线条转换对象内容。滤镜用随机发生的线条转换对象内容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。duration参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。orientation参数为可读写,类型为字符串参数为可读写,类型为字符串String。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.8 17.7.8 随机像素溶解效果滤镜随机像素溶解效果滤镜RandomDissolveRandomDissolveRando
302、mDissolve滤镜用随机像素溶解效果转换对象内滤镜用随机像素溶解效果转换对象内容。容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。duration参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.9 17.7.9 拉伸缩变形效果滤镜拉伸缩变形效果滤镜StretchStretchStretch滤镜用拉伸缩变形效果转换对象内容。滤镜用拉伸缩变形效果转换对象内容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。duration参数为可选项,类型为浮点
303、数参数为可选项,类型为浮点数Real。stretchStyle参数可读写,类型为字符串参数可读写,类型为字符串String。Flex 4.0 RIA开发详解开发详解(第第2版版)17.7.10 17.7.10 风车叶轮旋转效果滤镜风车叶轮旋转效果滤镜WheelWheelWheel滤镜用风车叶轮旋转效果转换对象内容。滤镜用风车叶轮旋转效果转换对象内容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。duration参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。spokes参数可读写,类型为整数值参数可读写,类型为整数值Integer。Flex 4
304、.0 RIA开发详解开发详解(第第2版版)17.7.11 17.7.11 擦地板的效果滤镜擦地板的效果滤镜Zigzag Zigzag Zigzag滤镜用类似擦地板的效果转换对象内容。滤镜用类似擦地板的效果转换对象内容。enabled参数为可选项,类型为布尔值参数为可选项,类型为布尔值Boolean。duration参数为可选项,类型为浮点数参数为可选项,类型为浮点数Real。gridSizeX参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。gridSizeY参数为可选项,类型为整数值参数为可选项,类型为整数值Integer。Flex 4.0 RIA开发详解开发详解(第第2版
305、版)17.8 17.8 使用使用组件定义组件定义CSSCSSFlex 4.0应用程序中的应用程序中的CSS样式都是使用样式都是使用组组件定义的。定义的方式有两种:件定义的。定义的方式有两种:组件内部定义组件内部定义CSS,组件调用外部组件调用外部CSS。本小节将详细介绍如。本小节将详细介绍如何使用何使用组件定义组件定义CSS。Flex 4.0 RIA开发详解开发详解(第第2版版)17.8.2 17.8.2 组件调用外部组件调用外部CSSCSS外部外部CSS文件的后缀名为文件的后缀名为“.css,可使用任何文本编,可使用任何文本编辑器编写。辑器编写。Flex 4.0 RIA开发详解开发详解(第第
306、2版版)17.8.3 17.8.3 两种两种CSSCSS定义方式的比较定义方式的比较使用使用组件直接定义样式比较方便,且不需要组件直接定义样式比较方便,且不需要其他文本工具。缺点是样式的有效范围只在该其他文本工具。缺点是样式的有效范围只在该MXML文件。文件。其他其他MXML文件假设要应用一样的样式需重新定义。文件假设要应用一样的样式需重新定义。外部外部CSS文件调入的方法操作简单,且可重复使用。文件调入的方法操作简单,且可重复使用。另外,外部定义的另外,外部定义的CSS样式可在运行时动态编译,减小了样式可在运行时动态编译,减小了程序的大小。运行时加载样式将在下面章节中介绍。程序的大小。运行时
307、加载样式将在下面章节中介绍。综上所述,推荐使用综上所述,推荐使用组件调用外部组件调用外部CSS的方的方法。使用该方法后,整个应用程序只需要定义一个外部法。使用该方法后,整个应用程序只需要定义一个外部CSS文件。重用性高,且将样式设计与程序设计有效地别文件。重用性高,且将样式设计与程序设计有效地别离。离。Flex 4.0 RIA开发详解开发详解(第第2版版)17.9 Flex3StyleExplorer17.9 Flex3StyleExplorer工具辅助设计工具辅助设计CSSCSS样式样式Flex组件的样式属性有很多。用户使用时往往要查看组件的样式属性有很多。用户使用时往往要查看组件帮助,以了
308、解各种属性的作用。这种方式效率低且并组件帮助,以了解各种属性的作用。这种方式效率低且并不直观。这里推荐一个定制不直观。这里推荐一个定制Flex组件组件CSS样式的有用工具样式的有用工具Flex3StyleExplorer。在线版本的网址为。在线版本的网址为“ :/examples.adobe /flex3/consulting/styleexplorer/Flex3StyleExplorer.html。虽然是虽然是Flex 3.0版本的,但是由于在版本的,但是由于在CSS特性方面差异不大,特性方面差异不大,所有同样也具有极大的参考价值。所有同样也具有极大的参考价值。Flex 4.0 RIA开发
309、详解开发详解(第第2版版)17.10 Flex17.10 Flex组件应用组件应用CSSCSS样式样式前面介绍了如何定义前面介绍了如何定义CSS样式。定义样式。定义CSS样式后需要样式后需要指定指定Flex组件应用某种组件应用某种CSS样式。样式。Flex 3.0组件中都一个组件中都一个styleName属性,用以指定组件属性,用以指定组件使用的样式。关于样式名称需要说明的是,使用的样式。关于样式名称需要说明的是,“.符指明此符指明此样式为自定义的样式,并不是样式名的一局部,所以样式为自定义的样式,并不是样式名的一局部,所以styleName属性的值不应包含属性的值不应包含“.符。符。Flex
310、 4.0 RIA开发详解开发详解(第第2版版)17.11 17.11 运行时动态加载运行时动态加载CSSCSS样式样式运行时动态加载运行时动态加载CSS样式是指在程序运行时加载不同样式是指在程序运行时加载不同的的CSS样式。这种的需求经常存在。例如,程序中有两个样式。这种的需求经常存在。例如,程序中有两个按钮,单击第一个按钮应用第一种主题样式,单击第二个按钮,单击第一个按钮应用第一种主题样式,单击第二个按钮应用第二种主题样式。按钮应用第二种主题样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.11.1 17.11.1 调用调用SWFSWF样式文件。样式文件。调用调用SWF样式文
311、件使用样式文件使用StyleManager类的类的loadStyleDeclarations()方法。方法。StyleManager类包含于类包含于“mx.styles.StyleManager中。中。Flex 4.0 RIA开发详解开发详解(第第2版版)17.11.2 17.11.2 撤消撤消SWFSWF样式文件样式文件动态加载样式是通过动态加载样式是通过StyleManager类控制,在应用另类控制,在应用另外的样式前需要撤消外的样式前需要撤消SWF样式文件。使用样式文件。使用StyleManager类类的的unloadStyleDeclarations()方法可实现撤消样式。方法可实现撤
312、消样式。Flex 4.0 RIA开发详解开发详解(第第2版版)17.11.3 17.11.3 按钮控制应用样式按钮控制应用样式在在MXML编辑器中编写组件。编辑器中编写组件。Flex 4.0 RIA开发详解开发详解(第第2版版)17.11.4 17.11.4 完成剩余代码。完成剩余代码。程序剩余的代码包括定义菜单组件、设定应用程序的程序剩余的代码包括定义菜单组件、设定应用程序的背景和手形图标、在程序始初化处理函数中加载背景和手形图标、在程序始初化处理函数中加载“style1.swf样式、鼠标移动到菜单项的处理函数、鼠标移出菜单项样式、鼠标移动到菜单项的处理函数、鼠标移出菜单项的处理函数等。的处
313、理函数等。Flex 4.0 RIA开发详解开发详解(第第2版版)17.12 17.12 小结小结本章主要介绍了本章主要介绍了CSS样式的相关语法、样式的相关语法、Flex组件如何组件如何使用使用CSS美化界面、运行时动态加载美化界面、运行时动态加载CSS样式等内容。样式等内容。CSS定义时应特别注意其属性和属性值的意义。定义时应特别注意其属性和属性值的意义。Flex组件美化组件美化界面前需要使用界面前需要使用组件定义组件定义CSS样式。通过样式。通过Flex2StyleExplorer工具能可视化地设计组件界面,同时生工具能可视化地设计组件界面,同时生成相应的成相应的CSS代码。代码。Flex
314、 4.0 RIA开发详解开发详解(第第2版版)第第1818章章 Flex Flex美化应用美化应用第第17章中详细介绍了使用章中详细介绍了使用CSS美化界面的用法,本章美化界面的用法,本章将为读者介绍更多的美化应用,如自定义字体、自定义光将为读者介绍更多的美化应用,如自定义字体、自定义光标等。标等。Flex 4.0 RIA开发详解开发详解(第第2版版)18.1 18.1 自定义字体自定义字体在开发在开发Flex应用程序时,字体是最根底的内容之一。应用程序时,字体是最根底的内容之一。Flex 4.0支持有限的系统字体,用户假设要使用其他系统字支持有限的系统字体,用户假设要使用其他系统字体,需要导
315、入字体。另外,用户也可对字体的大小、颜色体,需要导入字体。另外,用户也可对字体的大小、颜色等常用属性进展更改,以满足特殊的需要。等常用属性进展更改,以满足特殊的需要。Flex 4.0 RIA开发详解开发详解(第第2版版)18.1.1 18.1.1 自定义字体概述自定义字体概述字体文件的格式为字体文件的格式为“.ttf,但同是,但同是TTF格式的字体文格式的字体文件也分为系统字体和非系统字体。件也分为系统字体和非系统字体。Flex 4.0现只能使用系统字体。对于非系统字体,只能现只能使用系统字体。对于非系统字体,只能采用图片形式。采用图片形式。Flex 4.0可以支持系统字体,但并非全部的可以支
316、持系统字体,但并非全部的系统字体都可直接使用。系统字体都可直接使用。Flex 4.0由于是英文版本,所以对中文字体的支持并不由于是英文版本,所以对中文字体的支持并不好。经测试,只有少量的中文字体可在好。经测试,只有少量的中文字体可在Flex中使用。中使用。Flex 4.0 RIA开发详解开发详解(第第2版版)18.1.2 18.1.2 使用使用FlexFlex支持的系统字体支持的系统字体Flex 4.0中支持的西文系统字体包括中支持的西文系统字体包括Arial、Times New Roman、Courier New、Georgia、Verdana等。等。Flex 4.0中中支持的中文系统字体包
317、括宋体、华文楷体、华文细黑、华支持的中文系统字体包括宋体、华文楷体、华文细黑、华文仿宋、华文中宋。文仿宋、华文中宋。Flex 4.0 RIA开发详解开发详解(第第2版版)18.1.3 18.1.3 使用使用FlexFlex不支持的系统字体不支持的系统字体假设用户需要使用特殊的系统字体,如假设用户需要使用特殊的系统字体,如nina、fences等,可先引用等,可先引用TTF文件。文件。src表示字体文件的路径,一般放于工程目录下。表示字体文件的路径,一般放于工程目录下。fontFamily表示用户自定义该种字体的名称。表示用户自定义该种字体的名称。Flex 4.0 RIA开发详解开发详解(第第2
318、版版)18.2 18.2 自定义提示文本自定义提示文本提示文本是指鼠标移动到该组件上时弹出的说明文本。提示文本是指鼠标移动到该组件上时弹出的说明文本。大局部组件都有大局部组件都有toolTip属性,用以定义提示的文本内容。属性,用以定义提示的文本内容。按下按下Ctrl+F11快捷键编译运行程序。快捷键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)18.3 18.3 自定义光标自定义光标Flex 4.0中提供的光标很少。只有普通箭头、忙时光标中提供的光标很少。只有普通箭头、忙时光标等少数几种。用户可以使用等少数几种。用户可以使用CursorManager类自定义光标。类自定
319、义光标。CursorManager类为光标的管理类,包含于类为光标的管理类,包含于“mx.managers.*中。中。Flex 4.0 RIA开发详解开发详解(第第2版版)18.4 18.4 自定义自定义AIRAIR程序窗口外观程序窗口外观AIR应用程序作为桌面应用程序与一般的应用程序作为桌面应用程序与一般的Flex程序略程序略有不同。有不同。AIR应用程序中每一个应用程序中每一个MXML文件都有一个与之文件都有一个与之同名的同名的XML文件。文件。AIR工程中每创立一个工程中每创立一个MXML文件,都文件,都会自动生成一个同名的会自动生成一个同名的XML文件。此文件。此XML文件记录了文件记
320、录了MXML文件生成应用程序时的外观及相关参数。其中,文件生成应用程序时的外观及相关参数。其中,标签与标签与AIR外观有比较大的关联。外观有比较大的关联。当然,用户也可自定义窗体的样式,包括当然,用户也可自定义窗体的样式,包括“最小化、最小化、“最大化、最大化、“关闭按钮等。关闭按钮等。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5 18.5 苹果风格界面实例苹果风格界面实例苹果风格以简洁大方而深受广阔用户喜爱。本小节将苹果风格以简洁大方而深受广阔用户喜爱。本小节将以实例介绍如何制作苹果风格的组件界面。涉及的技术主以实例介绍如何制作苹果风格的组件界面。涉及的技术主要是使用要是使
321、用CSS美化界面。美化界面。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.1 18.5.1 组件设计组件设计组件设计是指讲实例中需要用到的组件摆放到应用程组件设计是指讲实例中需要用到的组件摆放到应用程序中。本实例中的组件应用苹果风格的界面。方法是采用序中。本实例中的组件应用苹果风格的界面。方法是采用CSS样式定制组件外观。样式定制组件外观。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.2 CSS18.5.2 CSS美化组件界面美化组件界面使用使用CSS美化组件界面的步骤如下。美化组件界面的步骤如下。1新建名为新建名为“OSX.css的文件。的文件。2编写编写
322、CSS样式。样式。在在“OSX.css文件中编写不同组件的样式。从文件中编写不同组件的样式。从18.5.3节开场将要编写不同组件的样式了。节开场将要编写不同组件的样式了。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.3 ApplicationControlBar18.5.3 ApplicationControlBar组件样式组件样式ApplicationControlBar组件是应用程序控制条,常用组件是应用程序控制条,常用于作为菜单的容器。于作为菜单的容器。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.4 Application18.5.4 Applica
323、tion组件样式组件样式Application组件是最外层的组件,即为应用程序组件。组件是最外层的组件,即为应用程序组件。为为Application组件定义组件定义CSS也就是为应用程序定制整体风也就是为应用程序定制整体风格。格。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.5 MenuBar18.5.5 MenuBar组件样式组件样式MenuBar组件是菜单组件。组件是菜单组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.6 Panel18.5.6 Panel组件样式组件样式Panel组件是一种窗体容器,其他组件常放置于组件是一种窗体容器,其他组件常放置
324、于Panel组件上。组件上。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.7 18.5.7 自定义自定义“panelTitle“panelTitle样式样式“panelTitle样式用以定制样式用以定制Panel组件上的标题样式。组件上的标题样式。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.8 TextInput18.5.8 TextInput组件样式组件样式TextInput组件输入框组件。以下代码定义了组件输入框组件。以下代码定义了TextInput组件的字体大小、背景颜色。组件的字体大小、背景颜色。Flex 4.0 RIA开发详解开发详解(第第2版版
325、)18.5.9 Button18.5.9 Button组件样式组件样式Button组件是按钮组件。以下代码定义了组件是按钮组件。以下代码定义了Button组件组件的圆角度、高亮度、阴影效果、字体大小、按钮颜色等。的圆角度、高亮度、阴影效果、字体大小、按钮颜色等。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.10 18.5.10 自定义自定义“blueButton“blueButton样式样式“blueButton样式定义了蓝色的按钮样式。样式定义了蓝色的按钮样式。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.11 Accordion18.5.11 Accor
326、dion组件样式组件样式Accordion组件是一种导航组件。组件是一种导航组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.12 NumericStepper18.5.12 NumericStepper组件样式组件样式NumericStepper组件是数字微调器组件。组件是数字微调器组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.13 CheckBox18.5.13 CheckBox组件样式组件样式CheckBox组件是多项选择框组件。以下代码定义了组件是多项选择框组件。以下代码定义了CheckBox组件的高亮度、颜色、透明度、边框样式、字体组件的高
327、亮度、颜色、透明度、边框样式、字体大小等。大小等。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.14 RadioButton18.5.14 RadioButton组件样式组件样式RadioButton组件是单项选择项组件。组件是单项选择项组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.15 ComboBox18.5.15 ComboBox组件样式组件样式ComboBox组件是下拉框组件。组件是下拉框组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.16 TabNavigator18.5.16 TabNavigator组件样式组件样式T
328、abNavigator组件是导航组件的容器。组件是导航组件的容器。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.17 18.5.17 自定义自定义“selectedTab“selectedTab样式样式“selectedTab样式用以定义样式用以定义TabNavigator组件上的标组件上的标签被选择后的样式。签被选择后的样式。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.18 Tab18.5.18 Tab组件样式组件样式许多导航组件中包含许多导航组件中包含Tab组件,如组件,如TabNavigator组件。组件。Flex 4.0 RIA开发详解开发详解(第
329、第2版版)18.5.19 List18.5.19 List组件样式组件样式List组件是一种窗体容器,其他组件常放置于组件是一种窗体容器,其他组件常放置于List组件组件上。上。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.20 DataGrid18.5.20 DataGrid组件样式组件样式DataGrid组件是表格组件,以表格形式显示数据。组件是表格组件,以表格形式显示数据。Flex 4.0 RIA开发详解开发详解(第第2版版)18.5.21 DateChooser18.5.21 DateChooser组件样式组件样式DateChooser组件是日历组件。组件是日历组件。
330、Flex 4.0 RIA开发详解开发详解(第第2版版)18.6 Vista18.6 Vista风格界面实例风格界面实例Vista风格以美观、晶莹剔透而深受广阔用户喜爱。本风格以美观、晶莹剔透而深受广阔用户喜爱。本小节将以实例介绍如何制作小节将以实例介绍如何制作Vista风格的组件界面。涉及的风格的组件界面。涉及的技术主要包括使用技术主要包括使用CSS美化界面、使用图片更改组件等。美化界面、使用图片更改组件等。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.1 18.6.1 组件设计组件设计本实例中的组件应用本实例中的组件应用Vista风格的界面。方法是采用风格的界面。方法是采用
331、CSS样式定制界面。在应用样式定制界面。在应用CSS样式前用户需要设计组件,样式前用户需要设计组件,即将可视组件和非可视组件放置于即将可视组件和非可视组件放置于MXML程序中。程序中。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.2 CSS18.6.2 CSS美化组件界面美化组件界面使用使用CSS美化组件界面的步骤如下。美化组件界面的步骤如下。1新建名为新建名为“style.css的文件。的文件。2编写编写CSS样式。样式。在在“style.css文件中编写不同组件的样式。文件中编写不同组件的样式。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.3 18.6.
332、3 全局样式全局样式globalglobal“global样式用于定义应用程序全局性的样式,如背样式用于定义应用程序全局性的样式,如背景大小、主题颜色等。景大小、主题颜色等。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.4 AccordionHeader18.6.4 AccordionHeader组件样式组件样式“AccordionHeader样式用于定义样式用于定义Accordion组合标组合标题的样式。题的样式。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.5 Application18.6.5 Application组件样式组件样式Applicatio
333、n组件是最外层组件,即应用程序组件。组件是最外层组件,即应用程序组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.6 Button18.6.6 Button组件样式组件样式Button组件是按钮组件。组件是按钮组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.7 ButtonBar18.6.7 ButtonBar组件样式组件样式ButtonBar组件是一种按钮控制条,上面有假设干个组件是一种按钮控制条,上面有假设干个按钮。按钮。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.8 ColorPicker18.6.8 ColorPicker组
334、件样式组件样式ColorPicker组件是颜色选择器组件。组件是颜色选择器组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.9 ComboBox18.6.9 ComboBox组件样式组件样式ComboBox组件是下拉框组件。组件是下拉框组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.10 DataGrid18.6.10 DataGrid组件样式组件样式DataGrid组件以表格形式显示数据。组件以表格形式显示数据。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.11 DateChooser18.6.11 DateChooser组件样式组
335、件样式DateChooser组件是日历组件。组件是日历组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.12 ProgressBar18.6.12 ProgressBar组件样式组件样式ProgressBar组件是进度条组件。组件是进度条组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.13 Image18.6.13 Image组件样式组件样式Image组件是图片组件。组件是图片组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.14 MenuBar18.6.14 MenuBar组件样式组件样式MenuBar组件是菜单组件。组件是菜单组
336、件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.15 RadioButton18.6.15 RadioButton组件样式组件样式RadioButton组件是单项选择项组件。组件是单项选择项组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.16 CheckBox18.6.16 CheckBox组件样式组件样式CheckBox组件是多项选择项组件。组件是多项选择项组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.17 HSlider18.6.17 HSlider组件样式组件样式HSlider组件是横向滑动条组件。组件是横向滑动条组件。F
337、lex 4.0 RIA开发详解开发详解(第第2版版)18.6.18 TitleWindow18.6.18 TitleWindow组件样式组件样式TitleWindow组件是一种窗体组件。组件是一种窗体组件。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.19 18.6.19 调用自定义窗体调用自定义窗体使用使用PopUpManager类的类的createPopUp()方法可调用自方法可调用自定义窗体。定义窗体。PopUpManager类包含于类包含于“mx.managers.PopUpManager中。使用中。使用createPopUp()方方法创立的窗体可自由拖动。法创立的窗
338、体可自由拖动。Flex 4.0 RIA开发详解开发详解(第第2版版)18.6.20 18.6.20 调用调用“style.css“style.css文件文件定义好定义好“style.css样式后,需要在样式后,需要在“VistaBlue.mxml中调用。中调用。Flex 4.0 RIA开发详解开发详解(第第2版版)18.7 18.7 小结小结本章为读者讲解本章为读者讲解Flex美化界面的实例。内容包括自定美化界面的实例。内容包括自定义字体、自定义提示、自定义光标、自定义义字体、自定义提示、自定义光标、自定义AIR程序窗口程序窗口外观等。本章最后讲解了两个综合实例,分别应用苹果风外观等。本章最后
339、讲解了两个综合实例,分别应用苹果风格界面和格界面和Vista风格界面。通过本章的学习,读者能够理解风格界面。通过本章的学习,读者能够理解和掌握和掌握Flex中如何美化应用程序界面。中如何美化应用程序界面。Flex 4.0 RIA开发详解开发详解(第第2版版)第第1919章章 Flex Flex中的数据处理中的数据处理数据是程序处理的主要对象。在应用程序中最核心的数据是程序处理的主要对象。在应用程序中最核心的局部也是数据处理。本章将为读者介绍局部也是数据处理。本章将为读者介绍Flex 4.0中对数据的中对数据的处理,包括数据绑定、数据存储、数据验证、数据格式化处理,包括数据绑定、数据存储、数据验
340、证、数据格式化等内容。等内容。Flex 4.0 RIA开发详解开发详解(第第2版版)19.1 19.1 数据绑定数据绑定数据绑定是指用户可以将某个属性与其他的属性或变数据绑定是指用户可以将某个属性与其他的属性或变量相关联。这样,当被绑定的属性或变量发生改变时,绑量相关联。这样,当被绑定的属性或变量发生改变时,绑定项同时发生改变。数据绑定是定项同时发生改变。数据绑定是Flex技术中一项非常有用技术中一项非常有用的技术,可以有效地减少程序代码,提高运行效率。的技术,可以有效地减少程序代码,提高运行效率。Flex 4.0 RIA开发详解开发详解(第第2版版)19.1.1 19.1.1 简单绑定方式简
341、单绑定方式Flex 4.0中绑定数据最简单的方式是使用中绑定数据最简单的方式是使用“运算符。运算符。使用使用“Bindable关键字可指明变量或属性为可绑定。关键字可指明变量或属性为可绑定。组件的大局部属性都是可绑定的,因为在组件定义中组件的大局部属性都是可绑定的,因为在组件定义中属性一般都指明为属性一般都指明为“Bindable。对于要绑定的变量需要。对于要绑定的变量需要先声明为先声明为“Bindable。Flex 4.0 RIA开发详解开发详解(第第2版版)19.1.2 19.1.2 使用使用组件绑定数据组件绑定数据组件也可实现绑定数据。组件也可实现绑定数据。组件绑定方式完全可以用组件绑定
342、方式完全可以用“方式替代。方式替代。其中,其中,source属性指明的绑定源可在属性指明的绑定源可在“中的定义。中的定义。Flex 4.0 RIA开发详解开发详解(第第2版版)19.1.3 19.1.3 双向绑定新增双向绑定新增在在Flex 4之前只存在单向数据绑定的功能,之前只存在单向数据绑定的功能,Flex 4中新中新增了双向绑定。增了双向绑定。双向绑定有两种方法可以实现:通过控件的属性和双向绑定有两种方法可以实现:通过控件的属性和组件。组件。在需要绑定的组件的属性中,添加一个在需要绑定的组件的属性中,添加一个符号,就代符号,就代表了该属性的双向绑定。表了该属性的双向绑定。通过设置通过设置
343、组件组件“twoWay属性,可以实属性,可以实现双向绑定。现双向绑定。Flex 4.0 RIA开发详解开发详解(第第2版版)19.2 19.2 复杂数据的存储复杂数据的存储数据存储是指在编程过程中将数据以特定的形式存储。数据存储是指在编程过程中将数据以特定的形式存储。简单的数据模型可以用简单的数据类型存储,如简单的数据模型可以用简单的数据类型存储,如int型、型、String型、型、Array型。对于复杂的逻辑模型,需要将数据合型。对于复杂的逻辑模型,需要将数据合理的存储。理的存储。Flex 4.0提供了提供了、3种存储复杂的数据模型。种存储复杂的数据模型。Flex 4.0 RIA开发详解开发
344、详解(第第2版版)19.2.1 19.2.1 使用使用组件存储数据组件存储数据组件是组件是Flex 4.0中的数据模型组件,用于存中的数据模型组件,用于存储自定义的数据。储自定义的数据。以树型构造存储,类似以树型构造存储,类似XML数据定义。树型存储构造的优点是定位迅速、容易理解。数据定义。树型存储构造的优点是定位迅速、容易理解。Flex 4.0 RIA开发详解开发详解(第第2版版)19.2.2 19.2.2 使用使用组件存储数据组件存储数据组件是一种抽象的数据模型组件,可用于组件是一种抽象的数据模型组件,可用于定义复杂数据。定义复杂数据。组件使用属性来存储数据。一个组件使用属性来存储数据。一
345、个组件可看成为一行数据,多个组件可看成为一行数据,多个组件组件就组成了类似表格的复杂数据模型。就组成了类似表格的复杂数据模型。Flex 4.0 RIA开发详解开发详解(第第2版版)19.2.3 19.2.3 使用使用组件存储数据组件存储数据XML标准是国际通用标准,有非常广泛的应用。标准是国际通用标准,有非常广泛的应用。组件用于组件用于Flex应用程序中定义应用程序中定义XML数据。数据。组件的定义语法与组件的定义语法与组件定义语法相近,组件定义语法相近,都为树型数据定义。都为树型数据定义。Flex 4.0 RIA开发详解开发详解(第第2版版)19.3 19.3 数据验证数据验证数据验证是指应
346、用程序中对输入的数据进展某种方式数据验证是指应用程序中对输入的数据进展某种方式的校验。本章将详细介绍的校验。本章将详细介绍Flex 4.0数据验证的根本方法和自数据验证的根本方法和自定义方法。本章结尾还将提供一个用户注册的实例来帮助定义方法。本章结尾还将提供一个用户注册的实例来帮助读者掌握数据验证。读者掌握数据验证。Flex 4.0 RIA开发详解开发详解(第第2版版)19.3.1 19.3.1 数据验证组件概述数据验证组件概述数据验证组件是专门针对数据验证的特殊组件,包含数据验证组件是专门针对数据验证的特殊组件,包含一定规那么的验证及出错提示。使用数据验证组件使得对一定规那么的验证及出错提示
347、。使用数据验证组件使得对数据验证更加方便,摆脱了复杂的验证逻辑,有利于应用数据验证更加方便,摆脱了复杂的验证逻辑,有利于应用程序的开发。程序的开发。Flex 4.0中提供了一些常用的组件进展数据验证,这些中提供了一些常用的组件进展数据验证,这些组件能根本满足用户的要求。假设用户想自定义所需的数组件能根本满足用户的要求。假设用户想自定义所需的数据验证,可继承类型相近的验证组件,从而创立自定义的据验证,可继承类型相近的验证组件,从而创立自定义的数据验证组件。数据验证组件。Flex 4.0提供的数据验证组件,包括提供的数据验证组件,包括CreditCardValidator、CurrencyVali
348、dator、DateValidator等。这些组件中的可以有效地完成验证任务,出错提示也等。这些组件中的可以有效地完成验证任务,出错提示也很丰富。很丰富。Flex 4.0 RIA开发详解开发详解(第第2版版)19.3.2 19.3.2 如何使用数据验证组件如何使用数据验证组件指明指明source属性和属性和property属性表示验证组件针对某属性表示验证组件针对某一数据组件的特定属性进展验证。以下代码使用一数据组件的特定属性进展验证。以下代码使用组件对一个输入框中的文本组件对一个输入框中的文本进展进展 号码验证。号码验证。由于验证组件都不为可视化组件,所以不能放置于可由于验证组件都不为可视化
349、组件,所以不能放置于可视化组件内。视化组件内。Flex 4.0 RIA开发详解开发详解(第第2版版)19.3.3 19.3.3 验证触发方式验证触发方式1默认触发验证默认触发验证2任意动作触发验证任意动作触发验证Flex 4.0 RIA开发详解开发详解(第第2版版)19.3.4 19.3.4 验证失败处理验证失败处理验证失败时需要做错误的提示及处理。验证组件中提验证失败时需要做错误的提示及处理。验证组件中提供了丰富的错误类型,只是这些错误类型的提示是英文的,供了丰富的错误类型,只是这些错误类型的提示是英文的,用户可能需要改变提示。修改错误提示的方法是修改组件用户可能需要改变提示。修改错误提示的
350、方法是修改组件中相应的错误类型属性。中相应的错误类型属性。Flex 4.0 RIA开发详解开发详解(第第2版版)19.3.5 19.3.5 自定义验证组件自定义验证组件当验证组件不能满足用户的特殊验证需求时,用户可当验证组件不能满足用户的特殊验证需求时,用户可考虑自定义验证组件。一般来说,多条件复杂数据验证都考虑自定义验证组件。一般来说,多条件复杂数据验证都需要自定义验证组件。例如,字符串长度为需要自定义验证组件。例如,字符串长度为343,内容不,内容不能包含某些脏字。能包含某些脏字。Flex 4.0中自定义验证组件先继承功能最相近的验证组中自定义验证组件先继承功能最相近的验证组件,然后重写验
351、证组件中的件,然后重写验证组件中的doValidation方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)19.3.6 19.3.6 数据验证应用实例数据验证应用实例互联网应用程序中用户注册时经常需要数据验证,如互联网应用程序中用户注册时经常需要数据验证,如密码长度、电子邮箱等。本小节为读者详解用户注册实例。密码长度、电子邮箱等。本小节为读者详解用户注册实例。Flex 4.0 RIA开发详解开发详解(第第2版版)19.4 19.4 数据格式化数据格式化数据格式化是对某些特殊的数据的格式进展标准。例数据格式化是对某些特殊的数据的格式进展标准。例如,日期格式有很多种,可以为如,日
352、期格式有很多种,可以为“1990-1-2、“2/1/1990等。有时数据格式化是必须的,如货币的格式要统一。等。有时数据格式化是必须的,如货币的格式要统一。Flex 4.0 RIA开发详解开发详解(第第2版版)19.4.1 19.4.1 格式化组件概述格式化组件概述Flex 4.0中提供了几种常见的数据格式化组件,如中提供了几种常见的数据格式化组件,如DateFormatter、NumberFormatter、PhoneFormatter等。等。Flex 4.0 RIA开发详解开发详解(第第2版版)19.4.2 19.4.2 货币格式化组件货币格式化组件组件用以格式化货币。组件用以格式化货币。
353、Flex 4.0 RIA开发详解开发详解(第第2版版)19.4.3 19.4.3 日期格式化组件日期格式化组件组件用以格式化日期。组件用以格式化日期。Flex 4.0 RIA开发详解开发详解(第第2版版)19.4.4 19.4.4 数字格式化组件数字格式化组件组件用以格式化数字。组件用以格式化数字。Flex 4.0 RIA开发详解开发详解(第第2版版)19.4.5 19.4.5 格式化组件格式化组件组件用以格式化组件用以格式化 。Flex 4.0 RIA开发详解开发详解(第第2版版)19.4.6 19.4.6 格式化组件格式化组件组件用以格式化组件用以格式化 。Flex 4.0 RIA开发详解
354、开发详解(第第2版版)19.5 19.5 小结小结本章主要介绍了本章主要介绍了Flex 4.0中有关数据的操作与处理。内中有关数据的操作与处理。内容包括数据绑定、数据存储、数据验证、数据格式化等。容包括数据绑定、数据存储、数据验证、数据格式化等。其中,数据绑定在其中,数据绑定在Flex 4.0中应用很广泛。通过绑定的方法中应用很广泛。通过绑定的方法用户可以以最少的代码编写最有效的应用程序。用户可以以最少的代码编写最有效的应用程序。Flex 4.0中中有关复杂的数据可以存储于有关复杂的数据可以存储于组件、组件、组件或组件或组件。数据验证可用于标准数据的输入,组件。数据验证可用于标准数据的输入,从
355、而防止复杂的逻辑判断。数据格式化可对特殊的数据进从而防止复杂的逻辑判断。数据格式化可对特殊的数据进展格式化,从而使数据格式统一、标准。展格式化,从而使数据格式统一、标准。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2020章章 使用正那么表达式匹配字符串数据使用正那么表达式匹配字符串数据在应用程序中经常需要查找符合某种复杂规那么的字在应用程序中经常需要查找符合某种复杂规那么的字符串。例如,符串。例如, 号码字符串号码字符串“0577-23234312前四位为区号,前四位为区号,后八位为后八位为 号,中间以号,中间以“-相连。事实上,不同地区的相连。事实上,不同地区的 号号长度也不
356、尽一样。使用正那么表达式可高效地匹配查找字长度也不尽一样。使用正那么表达式可高效地匹配查找字符串数据。符串数据。Flex 4.0 RIA开发详解开发详解(第第2版版)20.1 20.1 正那么表达式概述正那么表达式概述正那么表达式是用于描述复杂规那么的工具。在许多正那么表达式是用于描述复杂规那么的工具。在许多应用程序中用户其实已经接触到了正那么表达式应用程序中用户其实已经接触到了正那么表达式使用正那么表达式的难点在于如何定义正确的正那么使用正那么表达式的难点在于如何定义正确的正那么表达式。不正确的正那么表达式不能准确地描述字符串规表达式。不正确的正那么表达式不能准确地描述字符串规那么。正那么表
357、达式错误有两种表现形式:规那么完全不那么。正那么表达式错误有两种表现形式:规那么完全不合逻辑、规那么不能满足全部要求。前者可能是开发者逻合逻辑、规那么不能满足全部要求。前者可能是开发者逻辑上的错误引起的。辑上的错误引起的。正那么表达式的定义有较多的语法,并且较长的正那正那么表达式的定义有较多的语法,并且较长的正那么表达式往往可读性不高。因此,对于初学正那么表达式么表达式往往可读性不高。因此,对于初学正那么表达式的读者会有一定的困难。的读者会有一定的困难。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2 20.2 正那么表达式的语法正那么表达式的语法正那么表达式是一种标准,并非正那
358、么表达式是一种标准,并非Flex特有。正那么表特有。正那么表达式的语法较多,由于本书篇幅有限,将只介绍入门级别达式的语法较多,由于本书篇幅有限,将只介绍入门级别的语法知识。但对于在的语法知识。但对于在Flex应用程序中使用正那么表达式应用程序中使用正那么表达式已经够用。已经够用。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.1 20.2.1 元字符元字符元字符是正那么表达式中最根本的元素,用于匹配最元字符是正那么表达式中最根本的元素,用于匹配最根本字符。根本字符。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.2 20.2.2 转义字符转义字符假设用户要匹配元
359、字符或其他有特殊意义的字符,如假设用户要匹配元字符或其他有特殊意义的字符,如“.、“、“(等,就需要使用转义字符。正那么表达式等,就需要使用转义字符。正那么表达式中的转义字符在字符前加反斜杠中的转义字符在字符前加反斜杠“,如,如“.、“、“(等。等。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.3 20.2.3 限定符限定符限定符用于确定重复方式。例如,限定符用于确定重复方式。例如,“*表示表示0个或多个或多个,个,“2表示表示2个。个。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.4 20.2.4 字符集合字符集合字符集合用于匹配集合内的字符,使用字符集合
360、用于匹配集合内的字符,使用“操作符表操作符表示。示。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.5 20.2.5 反义反义有时用户需要查找不属于某个能简单定义的字符,如有时用户需要查找不属于某个能简单定义的字符,如查找除数字外的其他任意字符。此时需要使用反义。查找除数字外的其他任意字符。此时需要使用反义。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.6 20.2.6 多规那么多规那么多规那么是指正那么表达式可有多种规那么,规那么多规那么是指正那么表达式可有多种规那么,规那么间以间以“|符分隔。例如,符分隔。例如,“d+|0-9a-z+表达匹配多个数字表达匹
361、配多个数字组成的字符串或由数字、小写字母混合的字符串。组成的字符串或由数字、小写字母混合的字符串。以下正那么表达式匹配两种以连字号以下正那么表达式匹配两种以连字号“-分隔的分隔的 号号码。一种是前码。一种是前3位区号,位区号,8位本地号,如位本地号,如011-43432423。另。另一种是前一种是前4位区号,位区号,7位本地号,如位本地号,如0343-4324246。Flex 4.0 RIA开发详解开发详解(第第2版版)20.2.7 20.2.7 子表达式子表达式前面章节中介绍如何重复单个字符,假设要重复多个前面章节中介绍如何重复单个字符,假设要重复多个字符就需要使用子表达式。子表达式用括号将
362、多个字符联字符就需要使用子表达式。子表达式用括号将多个字符联合起来,如合起来,如“(dwd)、“(da-z)等。子表达式是正那等。子表达式是正那么表达式中最常使用的语法之一。么表达式中最常使用的语法之一。Flex 4.0 RIA开发详解开发详解(第第2版版)20.3 20.3 使用使用Regex TesterRegex Tester工具测试正那么表达工具测试正那么表达式式由于正那么表达式表示复杂,也难免疏漏条件。由于正那么表达式表示复杂,也难免疏漏条件。Regex Tester是一款绿色、小巧的测试工具,用以测试正那是一款绿色、小巧的测试工具,用以测试正那么表达式是否正确。通过么表达式是否正确
363、。通过Regex Tester工具用户可以快速地工具用户可以快速地发现正那么表达式中的错误码并纠正。发现正那么表达式中的错误码并纠正。Flex 4.0 RIA开发详解开发详解(第第2版版)正那么表达式可用于匹配查找字符串中符合某种规那正那么表达式可用于匹配查找字符串中符合某种规那么的字符子串,也可使用正那么表达式来验证输入数据。么的字符子串,也可使用正那么表达式来验证输入数据。本节将介绍如何在本节将介绍如何在Flex 3.0中定义和使用正那么表达式。中定义和使用正那么表达式。Flex 4.0 RIA开发详解开发详解(第第2版版)20.4.1 20.4.1 使用使用RegExpRegExp类定义
364、正那么表达式类定义正那么表达式1使用使用“/符定义正那么表达式符定义正那么表达式2使用字符串定义正那么表达式使用字符串定义正那么表达式Flex 4.0 RIA开发详解开发详解(第第2版版)20.4.2 20.4.2 使用使用RegExpRegExp类匹配数据类匹配数据1使用使用RegExp类的类的exec()方法匹配数据方法匹配数据2使用使用RegExp类的类的test()方法匹配数据方法匹配数据3使用使用String类的类的match()方法匹配数据方法匹配数据Flex 4.0 RIA开发详解开发详解(第第2版版)20.4.3 Flex20.4.3 Flex中使用正那么表达式实例中使用正那么
365、表达式实例前面章节中介绍过使用验证组件来标准输入数据。使前面章节中介绍过使用验证组件来标准输入数据。使用正那么表达式也可完成此功能。正那么表达式相比验证用正那么表达式也可完成此功能。正那么表达式相比验证组件的优势在于,正那么表达式定义简单、灵活、方便。组件的优势在于,正那么表达式定义简单、灵活、方便。使用正那么表达式可以非常方便地标准任何条件的数据。使用正那么表达式可以非常方便地标准任何条件的数据。Flex 4.0 RIA开发详解开发详解(第第2版版)20.5 20.5 小结小结本章介绍了正那么表达式的定义语法,如何在本章介绍了正那么表达式的定义语法,如何在Flex中中使用正那么表达式。使用正
366、那么表达式可高效地匹配查找使用正那么表达式。使用正那么表达式可高效地匹配查找符合规那么的子串。正那么表达式可方便地定义复杂的规符合规那么的子串。正那么表达式可方便地定义复杂的规那么。对于复杂的规那么,假设采用代码来表示,会产生那么。对于复杂的规那么,假设采用代码来表示,会产生较多的代码行,并且逻辑复杂、容易出错。另外,使用正较多的代码行,并且逻辑复杂、容易出错。另外,使用正那么表达式远比自定义的算法效率要高。那么表达式远比自定义的算法效率要高。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2121章章 数据传输与交互数据传输与交互数据具有流动性,数据传输是指根据用户控制传递至数据具
367、有流动性,数据传输是指根据用户控制传递至指定目的地。数据交互是指指定目的地。数据交互是指Flex与其他程序进展数据交换,与其他程序进展数据交换,包括传递数据给其他程序和接收其他程序返回的数据。包括传递数据给其他程序和接收其他程序返回的数据。Flex 4.0 RIA开发详解开发详解(第第2版版)21.1 21.1 数据传输的方式数据传输的方式Flex 4.0中的数据传输方式包括内部数据传输、文件流中的数据传输方式包括内部数据传输、文件流方式传输、方式传输、XML方式传输、其他方式传输。应用程序内部方式传输、其他方式传输。应用程序内部的数据传输大多通过变量传递来实现。外部文件的数据可的数据传输大多
368、通过变量传递来实现。外部文件的数据可分为简单文本数据、分为简单文本数据、XML数据和复杂数据。对于简单的文数据和复杂数据。对于简单的文本数据可采用文件流方式传输。对于本数据可采用文件流方式传输。对于XML数据可采用数据可采用XML方式传输。对于复杂的数据,需要通过其他程序来辅助数方式传输。对于复杂的数据,需要通过其他程序来辅助数据传输。据传输。Flex 4.0 RIA开发详解开发详解(第第2版版)21.1.1 21.1.1 内部数据传输内部数据传输1直接赋值方式直接赋值方式2公有变量方式公有变量方式Flex 4.0 RIA开发详解开发详解(第第2版版)21.1.2 21.1.2 文件流方式传输
369、文件流方式传输文件流方式传输是指数据以二进制文件流的形式流动。文件流方式传输是指数据以二进制文件流的形式流动。简单的数据可存储于文本文件中,通过简单的数据可存储于文本文件中,通过Flex AIR工程中新工程中新增的增的File、FileStream等类可以方便地操作本地文件。等类可以方便地操作本地文件。Flex 4.0 RIA开发详解开发详解(第第2版版)21.1.3 XML21.1.3 XML方式传输方式传输XML优点是简单小巧、存储方便、检索快速。所以,优点是简单小巧、存储方便、检索快速。所以,XML常用于数据存储和数据交换。常用于数据存储和数据交换。Flex 4.0使用使用URLLoad
370、er类可方便地传输类可方便地传输XML数据。数据。Flex 4.0 RIA开发详解开发详解(第第2版版)21.1.4 21.1.4 其他方式传输其他方式传输除了上述介绍的数据外,除了上述介绍的数据外,Flex应用程序可能还会遇到应用程序可能还会遇到其他类型的外部数据。其他类型的外部数据。Flex 4.0不能直接接收这些数据,需不能直接接收这些数据,需要其他程序处理这些数据后以特定的类型,如数组型、要其他程序处理这些数据后以特定的类型,如数组型、XML型、型、Object型传递给型传递给Flex。另外,另外,Flex 4.0中新增了对本地数据库中新增了对本地数据库.db格式操格式操作的类,可用于
371、读取本地的数据库数据。新增了对作的类,可用于读取本地的数据库数据。新增了对PDF数数据操作的类,可用以读取据操作的类,可用以读取PDF数据。有关新增的特性将在数据。有关新增的特性将在后续章节中介绍。后续章节中介绍。Flex 4.0 RIA开发详解开发详解(第第2版版)21.2 21.2 使用使用组件与组件与HTTPHTTP程序程序交互交互组件可与所有的组件可与所有的HTTP程序交互。程序交互。例如,例如,ASP、ASP.Net、JSP、PHP等。等。网址带参方式的优点是传参简单,但缺点是参数必须网址带参方式的优点是传参简单,但缺点是参数必须先转化为字符串类型,因为网址中只能是字符串类型。另先转
372、化为字符串类型,因为网址中只能是字符串类型。另外,假设传递的参数较多,网址字符串就会变得很长。外,假设传递的参数较多,网址字符串就会变得很长。使用网址带参方式能把使用网址带参方式能把Flex应用程序中的数据传递给应用程序中的数据传递给HTTP程序。程序。HTTP程序接收数据后进展处理,并返回程序接收数据后进展处理,并返回Flex可识别的数据类型。可识别的数据类型。组件返回的数据存储于组件返回的数据存储于ResultEvent类中。使用类中。使用组件的组件的result事事件可处理件可处理HTTP程序返回的数据。程序返回的数据。Flex 4.0 RIA开发详解开发详解(第第2版版)21.3 21
373、.3 组件实例组件实例本节以实例讲解如何使用本节以实例讲解如何使用组件与组件与HTTP程序交互。实例实现的功能为:程序交互。实例实现的功能为:Flex客户端传递操作客户端传递操作数参数给数参数给ASP.Net程序,程序,ASP.Net程序计算全部参数的和,程序计算全部参数的和,并将结果返回给并将结果返回给Flex应用程序。应用程序。Flex 4.0 RIA开发详解开发详解(第第2版版)本实例的本实例的ASP.Net程序使用程序使用Visual Studio 2005简称简称VS 2005编写,创立步骤如下。编写,创立步骤如下。1双击翻开双击翻开VS 2005。2选择选择“文件文件|“新建新建|
374、“网站命令,翻开网站命令,翻开“新建新建网站对话框。网站对话框。3在在“模板区域选择模板区域选择“ASP.NET网站模板。在网站模板。在“位置文本框中输入网站的存放路径。单击位置文本框中输入网站的存放路径。单击“确定按钮完确定按钮完成网站的创立。成网站的创立。Flex 4.0 RIA开发详解开发详解(第第2版版)4编写编写ASP.Net代码。创立网站工程后自动生成了代码。创立网站工程后自动生成了“Default.aspx文件。按下文件。按下F7快捷键翻开快捷键翻开“Default.aspx.cs文件。文件。“Default.aspx.cs文件是文件是“Default.aspx网页的网页的后台代
375、码页。后台代码页。5在在“目标位置文本框中输入发布网站的本地路目标位置文本框中输入发布网站的本地路径,其他可默认。单击径,其他可默认。单击“确定按钮,完成发布网站。发布确定按钮,完成发布网站。发布网站的结果是生成不带后台文件网站的结果是生成不带后台文件.cs文件的网站。文件的网站。Flex 4.0 RIA开发详解开发详解(第第2版版)21.3.2 21.3.2 创立虚拟目录创立虚拟目录配置虚拟目录步骤如下。配置虚拟目录步骤如下。1选择选择“开场开场|“控制面板命令,翻开控制面板。控制面板命令,翻开控制面板。图图21-6 控制面板控制面板2双击双击“管理工具管理工具|“Internet信息效劳项
376、,翻开信息效劳项,翻开“Internet信息效劳对话框。信息效劳对话框。3在左侧树形列表中右击在左侧树形列表中右击“默认网站,选择默认网站,选择“新新建建|“虚拟目录命令,弹出虚拟目录命令,弹出“虚拟目录创立向导对话框。虚拟目录创立向导对话框。4单击单击“下一步按钮,弹出下一步按钮,弹出“虚拟目录创立向导虚拟目录创立向导第二步对话框。第二步对话框。Flex 4.0 RIA开发详解开发详解(第第2版版)21.3.2 21.3.2 创立虚拟目录创立虚拟目录5在在“别名文本框中输入虚拟目录别名。单击别名文本框中输入虚拟目录别名。单击“下一步按钮,弹出下一步按钮,弹出“虚拟目录创立向导第三步对话框。虚
377、拟目录创立向导第三步对话框。6在在“目录文本框中输入网站路径。单击目录文本框中输入网站路径。单击“下一下一步,弹出步,弹出“虚拟目录创立向导第四步对话框。虚拟目录创立向导第四步对话框。7根据需要选择工程,一般默认即可。单击根据需要选择工程,一般默认即可。单击“下一下一步按钮,完成虚拟目录的创立。步按钮,完成虚拟目录的创立。8在新建的虚拟目录中右击相应的网页,选择在新建的虚拟目录中右击相应的网页,选择“浏浏览命令测试网页是否运行正常。览命令测试网页是否运行正常。Flex 4.0 RIA开发详解开发详解(第第2版版)21.3.3 21.3.3 编写编写FlexFlex程序程序编写编写Flex程序的
378、步骤如下。程序的步骤如下。1新建新建Flex工程。工程。2设计外观模型。设计外观模型。3添加添加组件。组件。4编写按钮处理函数。编写按钮处理函数。5按下按下Ctrl+F11键编译运行程序。键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)21.4 21.4 使用使用组件与组件与WebServiceWebService程序交互程序交互Flex 4.0中的中的组件专门用于调用和处组件专门用于调用和处理理WebService。本节将介绍。本节将介绍WebService的相关知识及如何的相关知识及如何使用使用组件。组件。Flex 4.0 RIA开发详解开发详解(第第2版版)21.4
379、.1 WebService21.4.1 WebService概述概述WebService是一种在互联网中提供效劳的技术。是一种在互联网中提供效劳的技术。WebService技术标准由各大软件开发商制定,主要解决了技术标准由各大软件开发商制定,主要解决了不同开发语言间的沟通问题。例如,不同开发语言间的沟通问题。例如,.Net程序调用程序调用WebService效劳,而此效劳,而此WebService效劳是由效劳是由Java语言开发语言开发的。的。WebService具有通用性。不管用何种语言开发的具有通用性。不管用何种语言开发的WebService效劳,调用的结果都是一致的。这是因为效劳,调用的
380、结果都是一致的。这是因为WebService有自身的标准,与开发语言无关。用户可使用有自身的标准,与开发语言无关。用户可使用几乎任何语言调用几乎任何语言调用WebService效劳,只要能找到效劳,只要能找到WebService效劳并传递的参数正确。效劳并传递的参数正确。Flex 4.0 RIA开发详解开发详解(第第2版版)21.4.2 21.4.2 如何使用如何使用组件组件组件的使用方法与组件的使用方法与组件的使用方法大同小异。最主要的区组件的使用方法大同小异。最主要的区别在于参数的传递方式。别在于参数的传递方式。Flex 4.0 RIA开发详解开发详解(第第2版版)21.5 21.5 组件
381、实例组件实例本节的实例实现了如下功能:本节的实例实现了如下功能:Flex程序通过程序通过WebService获取获取SQL Server 2000数据库中的数据,并将数数据库中的数据,并将数据显示于据显示于DataGrid组件上。涉及的技术包括创立组件上。涉及的技术包括创立SQL Server 2000数据库、使用数据库、使用VS 2005编写编写WebService、使用、使用组件等。组件等。Flex 4.0 RIA开发详解开发详解(第第2版版)21.5.1 21.5.1 创立数据库创立数据库设计数据库名为设计数据库名为“Company。数据库中只有一张名。数据库中只有一张名为为“Emplo
382、yee的表。建立数据库步骤如下所示。的表。建立数据库步骤如下所示。1选择选择“开场开场|“所有程序所有程序|“Microsoft SQL Server|“查询分析器命令,翻开查询分析器,。查询分析器命令,翻开查询分析器,。2在查询分析器的编辑区中输入在查询分析器的编辑区中输入SQL语句。语句。3选择创立数据库选择创立数据库Company的全部的全部SQL语句到语句到第一个第一个“go为止。为止。4单击按钮执行单击按钮执行SQL语句。语句。Flex 4.0 RIA开发详解开发详解(第第2版版)21.5.1 21.5.1 创立数据库创立数据库5选择设置当前数据库为选择设置当前数据库为Company
383、的全部的全部SQL语语句从第一个句从第一个“go到第二个到第二个“go为止。为止。6单击按钮执行单击按钮执行SQL语句。语句。7选择剩余的选择剩余的SQL语句从第二个语句从第二个“go至最后。至最后。8单击按钮执行单击按钮执行SQL语句。语句。Flex 4.0 RIA开发详解开发详解(第第2版版)21.5.2 21.5.2 编写编写WebServiceWebService使用使用VS 2005编写编写WebService的步骤如下。的步骤如下。1选择选择“文件文件|“新建新建|“网站命令,弹出网站命令,弹出“新建新建网站对话框。网站对话框。2选择选择“ASP.Net Web效劳模板,在效劳模板
384、,在“位置文本位置文本框中输入工程路径。单击框中输入工程路径。单击“确定按钮,完成工程的创立。确定按钮,完成工程的创立。3编写编写WebService。在新建。在新建“ASP.Net Web效劳效劳工程后会自动生成一个名为工程后会自动生成一个名为“Service.asmx的文件。的文件。4按下按下Ctrl+F5快捷键,编译运行快捷键,编译运行WebService程序。程序。Flex 4.0 RIA开发详解开发详解(第第2版版)21.5.2 21.5.2 编写编写WebServiceWebService5单击单击“生成生成|“发布网站命令,发布发布网站命令,发布WebService网站。网站。6
385、为为WebService网站创立虚拟目录。创立步骤与网站创立虚拟目录。创立步骤与实例中一样。实例中一样。7在在IIS中右击中右击“Service.asmx文件,选择文件,选择“浏览浏览命令,测试命令,测试WebService。Flex 4.0 RIA开发详解开发详解(第第2版版)21.5.3 21.5.3 编写编写FlexFlex程序程序编写编写Flex程序的步骤如下。程序的步骤如下。1新建新建Flex工程。工程。2添加添加DataGrid组件。组件。3添加添加组件。组件。4完成剩余代码。完成剩余代码。5按下按下Ctrl+F11快捷键,编译运行程序。快捷键,编译运行程序。Flex 4.0 RI
386、A开发详解开发详解(第第2版版)上面章节中介绍了使用上面章节中介绍了使用组件与组件与ASP.Net网页进展交互。但这种方式的效率不如直接与网页进展交互。但这种方式的效率不如直接与ASP.Net类交互。类交互。Flex 4.0应用程序与应用程序与ASP.Net类交互的难点类交互的难点在于,两种语言的数据类型几乎完全不同,不能正常交互。在于,两种语言的数据类型几乎完全不同,不能正常交互。Flex 4.0 RIA开发详解开发详解(第第2版版)21.6.1 Fluorine21.6.1 Fluorine简介简介Fluorine是一种开源的是一种开源的AMFActionScript Messaging
387、Formatter网关,专门负责网关,专门负责Flex 4.0与与.Net交互时的数据类交互时的数据类型转换。型转换。Fluorine现支持现支持ActionScript 2.0和和ActionScript 3.0,所以,所以Fluorine也可作为也可作为Flash与与.Net交互时的交互时的AMF网关。网关。Fluorine开发团队将开发团队将Fluorine工程制作成工程制作成Virsual Stdio中的中的模板,方便用户安装和配置。模板,方便用户安装和配置。21.6.2 Fluorine的下载与安装的下载与安装1下载下载Fluorine2安装安装FluorineFlex 4.0 RI
388、A开发详解开发详解(第第2版版)21.6.3 21.6.3 第三方组件第三方组件RemoteObjectAMF0RemoteObjectAMF0的使用的使用方法方法使用使用RemoteObjectAMF0组件的步骤如下所示。组件的步骤如下所示。1将将RemoteObjectAMF0组件的源文件放置在工程组件的源文件放置在工程中。中。2引用引用RemoteObjectAMF0组件所在的包。组件所在的包。3MXML文件中定义文件中定义RemoteObjectAMF0组件。组件。4调用调用RemoteObjectAMF0组件中的方法。组件中的方法。Flex 4.0 RIA开发详解开发详解(第第2版版
389、)21.6.4 Fluorine21.6.4 Fluorine实例实例使用使用Fluorine网关与网关与ASP.Net类交互的步骤如下。类交互的步骤如下。1创立数据库。数据库名为创立数据库。数据库名为“School,表名为,表名为“Notes。2新建新建Fluorine工程。工程。3设计设计ASP.Net类。在自动生成的代码文件夹类。在自动生成的代码文件夹“App_Code下新建名为下新建名为“GetSQLServer2000Data.cs的的类文件。类文件。4在在VS 2005中按下中按下Ctrl+F5键编译运行程序。键编译运行程序。5选择选择“生成生成|“发布网站命令,发布网站。发布网站
390、命令,发布网站。6为网站设置虚拟目录。为网站设置虚拟目录。Flex 4.0 RIA开发详解开发详解(第第2版版)21.6.4 Fluorine21.6.4 Fluorine实例实例7在在IIS中,右击中,右击“Gateway.aspx文件,选择文件,选择“浏浏览命令,测量运行是否正常。览命令,测量运行是否正常。8复制复制RemoteObjectAMF0组件源文件至工程根目组件源文件至工程根目录下。录下。9引用引用RemoteObjectAMF0组件的包,并定义名称组件的包,并定义名称空间。空间。10定义定义RemoteObjectAMF0组件。组件。11设计外观模型。本程序中的可视化组件包括设
391、计外观模型。本程序中的可视化组件包括DataGrid组件、组件、Label组件、组件、TextInput组件、组件、Button组件组件等。等。12编写编写GetData()方法调用成功后的处理函数。方法调用成功后的处理函数。13完成剩余代码。完成剩余代码。Flex 4.0 RIA开发详解开发详解(第第2版版)21.7 21.7 小结小结本章详细地介绍了数据的传输与交互。数据传输按数本章详细地介绍了数据的传输与交互。数据传输按数据类型可分为内部数据传输、文件流方式传输、据类型可分为内部数据传输、文件流方式传输、XML方式方式传输、其他方式传输。使用传输、其他方式传输。使用组件可与组件可与HTT
392、P程序交互,如程序交互,如ASP、PHP、ASP.Net、JSP等。使用等。使用组件可与组件可与WebService交互。使用交互。使用Fluorine网关可与网关可与.Net类交互。通过本章的学习,读者能够掌握类交互。通过本章的学习,读者能够掌握Flex 4.0如何与其他程序交互。如何与其他程序交互。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2222章章 Cairngorm Cairngorm开发框架开发框架Cairngorm是一种开源框架,由是一种开源框架,由Adobe开发团队设计。开发团队设计。使用使用Cairngorm框架能快速地建立起框架能快速地建立起RIA应用程序,
393、适用于应用程序,适用于开发中大型开发中大型RIA应用程序。应用程序。Cairngorm框架不但能提高开发框架不但能提高开发效率,也有利于团队合作。本章将为读者介绍效率,也有利于团队合作。本章将为读者介绍Cairngorm框架的根底知识、运行原理和机制、使用方法等。框架的根底知识、运行原理和机制、使用方法等。Flex 4.0 RIA开发详解开发详解(第第2版版)22.1 Cairngorm22.1 Cairngorm简介简介Cairngorm框架是开发框架是开发RIA应用程序的轻量级的框架,应用程序的轻量级的框架,可应用于企业级的软件开发,也可结合可应用于企业级的软件开发,也可结合J2EE或或.
394、Net等开发等开发技术。技术。由于由于Flex 4.0技术是由事件驱动的,所以事件处理函数技术是由事件驱动的,所以事件处理函数很多。假设一个应用程序中存在大量事件,假设每个事件很多。假设一个应用程序中存在大量事件,假设每个事件的处理函数都定义于一个的处理函数都定义于一个MXML文件或文件或AS文件中,代码就文件中,代码就会很混乱、不利于修改。会很混乱、不利于修改。Cairngorm框架将每个事件处理框架将每个事件处理封装为一个类。这样,不但代码整洁了,而且也提高了重封装为一个类。这样,不但代码整洁了,而且也提高了重用性。用性。Flex 4.0 RIA开发详解开发详解(第第2版版)Flex 4.
395、0中添加中添加Cairngorm框架的步骤如下所示。框架的步骤如下所示。1在浏览器中输入在浏览器中输入“ :/labs.adobe /wiki/index.php/Cairngorm,翻开,翻开Cairngorm框架的下载框架的下载页面。页面。2单击单击“Downloads标签下的标签下的“here链接,下载链接,下载最新的最新的Cairngorm框架。框架。3解压缩解压缩Cairngorm包。包。4在需要添加在需要添加Cairngorm框架的框架的Flex工程上右击,工程上右击,弹出快捷菜单。弹出快捷菜单。Flex 4.0 RIA开发详解开发详解(第第2版版)5选择选择“Properties
396、命令,翻开工程属性对话框。命令,翻开工程属性对话框。6单击单击“Flex Build Path项下项下“Library Path标标签,翻开库设置页面。签,翻开库设置页面。7单击单击“Add SWC按钮,弹出选择按钮,弹出选择SWC文件文件对话框。对话框。8在文本框中输入在文本框中输入“Cairngorm.swc文件路径。文件路径。单击单击“OK按钮,完成添加按钮,完成添加Cairngorm框架。框架。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3 Cairngorm22.3 Cairngorm框架中的根底类框架中的根底类Cairngorm框架的运行机制是以类为根底,因为框架的
397、运行机制是以类为根底,因为Cairngorm框架是由框架是由ActionScript 3.0语言编写的,而语言编写的,而ActionScript 3.0语言是一种面向对象的语言。本小节将介语言是一种面向对象的语言。本小节将介绍绍Cairngorm框架中的根底类的作用和定义。大局部根底框架中的根底类的作用和定义。大局部根底类不能直接使用,用户需要继承根底类来完成特定的功能。类不能直接使用,用户需要继承根底类来完成特定的功能。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.1 22.3.1 类的文件组织构造类的文件组织构造Cairngorm框架中的类不是杂乱无章地存放,而是以框架中
398、的类不是杂乱无章地存放,而是以特定的文件组织构造存放。每个文件夹有特殊的含义,存特定的文件组织构造存放。每个文件夹有特殊的含义,存放不同意义的根底类。放不同意义的根底类。 “business文件夹中存放有关效劳器端的类。文件夹中存放有关效劳器端的类。“commands方件夹存放命令类。方件夹存放命令类。“control文件夹存放前文件夹存放前台控制器类。台控制器类。“model文件夹存放应用程序模型类;文件夹存放应用程序模型类;“view文件夹存放视图类及文件夹存放视图类及MXML文件;文件;“vo文件夹存放数文件夹存放数据模型类。据模型类。Flex 4.0 RIA开发详解开发详解(第第2版版
399、)22.3.2 22.3.2 处理正常或异常结果的处理正常或异常结果的ResponderResponder类类Responder类是一个接口类,用以处理正常或异常结类是一个接口类,用以处理正常或异常结果。果。Responder类定义了两个抽象的方法:类定义了两个抽象的方法:onResult()方法方法和和onFault()方法。方法。onResult()方法用于操作正常时的处理,方法用于操作正常时的处理,onFault()方法用于操作异常时的处理。方法用于操作异常时的处理。一般在一般在Command类中实现类中实现Responder接口类的两个方接口类的两个方法。有关法。有关Responder
400、接口类的实现将在后续章节中介绍。接口类的实现将在后续章节中介绍。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.3 22.3.3 查找效劳的查找效劳的ServiceLocatorServiceLocator类类ServiceLocator类用于查找效劳,如类用于查找效劳,如、等。等。ServiceLocator类可查找不同类型的效劳,因此每种类型的类可查找不同类型的效劳,因此每种类型的效劳都有对应的方法。效劳都有对应的方法。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.4 22.3.4 处理事件的处理事件的CommandCommand类类Command类继承于
401、类继承于ICommand接口类,用于处理某一接口类,用于处理某一事件。事件。ICommand类中定义了类中定义了execute抽象方法,用于执行抽象方法,用于执行相应处理。相应处理。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.5 22.3.5 创立新事件的创立新事件的CairngormEventCairngormEvent类类CairngormEvent类用于自定义用户事件。包含一个成类用于自定义用户事件。包含一个成员变量员变量data和一个构造函数。和一个构造函数。data变量可存储任何类型的变量可存储任何类型的数据。数据。Flex 4.0 RIA开发详解开发详解(第第2
402、版版)22.3.6 22.3.6 管理事件的管理事件的CairngormEventDispatcherCairngormEventDispatcher类类CairngormEventDispatcher类用于管理事件。类用于管理事件。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.7 22.3.7 监听事件的监听事件的FrontControllerFrontController类类FrontController类用于监听事件。一旦事件发生,前类用于监听事件。一旦事件发生,前台控制器找到事件的相应处理命令类执行。台控制器找到事件的相应处理命令类执行。Flex 4.0 RIA开发详
403、解开发详解(第第2版版)22.3.8 22.3.8 存储数据模型的存储数据模型的ModelLocatorModelLocator类类ModelLoacator类是一种接口类,用于应用程序的数类是一种接口类,用于应用程序的数据模型。可将应用程序需要显示的数据及状态变量都定义据模型。可将应用程序需要显示的数据及状态变量都定义于于ModelLocator类中。类中。ModelLocator类相当于应用程序的类相当于应用程序的“数据库,方便修改与删除。数据库,方便修改与删除。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.9 22.3.9 辅助操作视图的辅助操作视图的ViewHelpe
404、rViewHelper类类ViewHelper类用于辅助操作视图。使用类用于辅助操作视图。使用ViewHelper类类可在可在AS文件中修改其他文件中修改其他MXML文件中的视图。文件中的视图。ViewHelper类中定义了两个成员变量:类中定义了两个成员变量:view和和id。view变量为变量为Object类类型,存储了使用型,存储了使用ViewHelper类的类的MXML文件的全部组件视文件的全部组件视图。图。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.10 22.3.10 查找视图的查找视图的ViewLocatorViewLocator类类ViewLocator类用
405、以查找视图,即查找类用以查找视图,即查找ViewHelper类类实例。实例。Flex 4.0 RIA开发详解开发详解(第第2版版)22.3.11 22.3.11 定义数据模型的定义数据模型的ValueObjectValueObject类类ValueObject类继承于类继承于IValueObject类,而类,而IValueObject接口类,主要用于定义数据模型。例如,注册接口类,主要用于定义数据模型。例如,注册信息包括用户名和密码,用户可将用户名和密码封装在信息包括用户名和密码,用户可将用户名和密码封装在ValueObject类中。类中。Flex 4.0 RIA开发详解开发详解(第第2版版)
406、22.4 Cairngorm22.4 Cairngorm框架的运行原理框架的运行原理Cairngorm框架以事件为驱动,所以一个完整的运行框架以事件为驱动,所以一个完整的运行过程从事件触发开场。运行过程中的每一项处理都与根底过程从事件触发开场。运行过程中的每一项处理都与根底类息息相关。类息息相关。Flex 4.0 RIA开发详解开发详解(第第2版版)22.4.1 22.4.1 自定义事件自定义事件CairngormEventCairngormEvent类类CairngormEvent类用于自定义用户事件。类用于自定义用户事件。事件状态标识由用户定义的字符串,能唯一表示此事事件状态标识由用户定义
407、的字符串,能唯一表示此事件。件。由于由于CairngormEvent类中只有一个成员变量类中只有一个成员变量data,所,所以只能携带一个数据。假设用户需要携带多个数据,可继以只能携带一个数据。假设用户需要携带多个数据,可继承承CairngormEvent类,并新增成员变量。类,并新增成员变量。Flex 4.0 RIA开发详解开发详解(第第2版版)22.4.2 22.4.2 自定义命令自定义命令CommandCommand类类用户自定义命令实现用户自定义命令实现Command类中的类中的excute()方法。方法。excute()方法执行相应操作代码。方法执行相应操作代码。Flex 4.0 R
408、IA开发详解开发详解(第第2版版)22.4.3 22.4.3 前台控制器前台控制器FrontControllerFrontController类类监听事件监听事件FrontController类用以监听事件。其原理是判断相应类用以监听事件。其原理是判断相应的事件标识是否存在。使用的事件标识是否存在。使用addCommand()方法可监听事方法可监听事件,并为事件添加对应的处理函数。件,并为事件添加对应的处理函数。习惯上习惯上FrontController类中还将定义各种类中还将定义各种CairngormEvent事件的标识字符串。事件的标识字符串。Flex 4.0 RIA开发详解开发详解(第第
409、2版版)22.4.4 22.4.4 在效劳定位器在效劳定位器ServiceLocatorServiceLocator类类中寻找效劳中寻找效劳ServiceLocator类用于存储和查找效劳。类用于存储和查找效劳。Flex 4.0 RIA开发详解开发详解(第第2版版)22.4.5 22.4.5 在模型定位器在模型定位器ModelLocatorModelLocator类中类中存取数据存取数据ModelLocator类中存放应用程序的全部数据及状态。类中存放应用程序的全部数据及状态。这样做的好处是管理方便、操作统一。以下代码定义了一这样做的好处是管理方便、操作统一。以下代码定义了一个模型定位器个模型
410、定位器FlvModel。Flex 4.0 RIA开发详解开发详解(第第2版版)22.4.6 22.4.6 使用使用ViewHelperViewHelper类修改视图类修改视图使用使用ViewHelper类修改视图的步骤如下所示。类修改视图的步骤如下所示。1自定义类继承自定义类继承ViewHelper类。类。2将将ViewHelper类作为组件添加至类作为组件添加至MXML文件中。文件中。3调用自定义调用自定义ViewHelper类中的方法修改视图。类中的方法修改视图。Flex 4.0 RIA开发详解开发详解(第第2版版)22.4.7 22.4.7 使用使用ValueObjectValueObj
411、ect类自定义数据模型类自定义数据模型ValueObject类用以自定义数据模型。类用以自定义数据模型。Flex 4.0 RIA开发详解开发详解(第第2版版)22.5 Cairngorm22.5 Cairngorm实例实例本节以一个实例介绍如何使用本节以一个实例介绍如何使用Cairngorm框架开发应框架开发应用程序。用程序。实例的具体步骤如下。实例的具体步骤如下。1新建新建Flex工程。工程。2工程中添加工程中添加Cairngorm框架,即框架,即“Cairngorm.swc文件。文件。3编写编写“ContactVO.as文件。文件。4编写编写“AddContact.as文件。文件。5编写编
412、写“ModelLocator.as文件。文件。6编写编写“AddContactControl.as文件。文件。Flex 4.0 RIA开发详解开发详解(第第2版版)22.5 Cairngorm22.5 Cairngorm实例实例7编写编写“AddContactEvent.as文件。文件。8编写编写“AddContactCommand.as文件。文件。9编写编写“AddContactDelegate.as文件。文件。10编写编写“AddContactPanel.mxml文件。文件。AddContactPanel组件是自定义的组件,确定了应用程序的组件是自定义的组件,确定了应用程序的主要外观。主要
413、外观。11编写编写“ContactThumbnail.mxml文件。文件。12编写编写“Cairngorm实例实例.mxml文件。文件。13编写编写“style.css文件。文件。14按下按下Ctrl+F11键编译运行程序。键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)22.6 22.6 小结小结本章主要介绍了本章主要介绍了Cairngorm框架的根本知识,包括根框架的根本知识,包括根底类的简介、添加底类的简介、添加Cairngorm框架的方法、框架的方法、Cairngorm框架框架的运行原理、如何应用的运行原理、如何应用Cairngorm框架等。本章最后以一框架等。本
414、章最后以一个简单实例来详细介绍如何应用个简单实例来详细介绍如何应用Cairngorm框架。通过本框架。通过本章的学习,读者能够掌握章的学习,读者能够掌握Cairngorm框架的根本知识及使框架的根本知识及使用方法。用方法。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2323章章 AIR AIR平台应用平台应用AIR应用程序是一种桌面应用程序。因为要支持对本应用程序是一种桌面应用程序。因为要支持对本地资源的操作,所以地资源的操作,所以Flex 4.0中新增许多对本地资源的操作,中新增许多对本地资源的操作,如本地文件、如本地文件、PDF文件等。另外,文件等。另外,AIR应用程序支持版
415、本应用程序支持版本升级、集成网页、使用升级、集成网页、使用Ajax技术等。技术等。Flex 4.0 RIA开发详解开发详解(第第2版版)23.1 23.1 加载加载PDFPDF文件文件在在Flex 4.0中的中的AIR工程中新增工程中新增HTMLLoader类和类和HTMLPDFCapability类。通过这两个类可实现加载类。通过这两个类可实现加载PDF文文件,丰富了件,丰富了AIR应用程序的效果和功能。应用程序的效果和功能。Flex 4.0 RIA开发详解开发详解(第第2版版)23.1.1 23.1.1 加载加载PDFPDF文件前的准备文件前的准备加载加载PDF文件需要有两个条件:第一是必
416、须为文件需要有两个条件:第一是必须为AIR工工程,第二是系统已安装程,第二是系统已安装Adobe Reader 8.1以上版本。前者是以上版本。前者是因为因为Flex 4.0中只有在中只有在AIR工程中可引用工程中可引用HTMLLoader类和类和HTMLPDFCapability类。究其深层原因是类。究其深层原因是Adobe公司只允公司只允许桌面应用程序许桌面应用程序AIR访问本地资源。其他访问本地资源。其他Web工程出工程出于平安性考虑,不可直接访问本地资源。于平安性考虑,不可直接访问本地资源。Flex 4.0 RIA开发详解开发详解(第第2版版)23.1.2 23.1.2 使用使用HTM
417、LLoaderHTMLLoader类加载类加载PDFPDF文件文件HTMLLoader类是类是AIR中新增的类,用于加载中新增的类,用于加载PDF。HTMLLoader类中只有一个属性类中只有一个属性pdfCapability。此属。此属性存储了性存储了PDF文件与文件与Adobe Reader版本间的关系。在版本间的关系。在HTMLLoader类的类的load()方法执行后,自动得到版本信息。方法执行后,自动得到版本信息。Flex 4.0 RIA开发详解开发详解(第第2版版)23.1.3 23.1.3 使用使用HTMLPDFCapabilityHTMLPDFCapability类检测类检测A
418、dobe Adobe ReaderReader版本版本HTMLPDFCapability类定义了加载的类定义了加载的PDF文件与文件与Adobe Reader版本间的关系,使用状态字符串表示,如版本间的关系,使用状态字符串表示,如“ERROR_INSTALLED_READER_NOT_FOUND。Flex 4.0 RIA开发详解开发详解(第第2版版)23.1.4 23.1.4 加载加载PDFPDF文件实例文件实例加载加载PDF文件的步骤如下所示。文件的步骤如下所示。1新建新建AIR工程。工程。2确定系统中已安装确定系统中已安装Adobe Reader 8.1以上版本。以上版本。3编写编写MXM
419、L文件。文件。4按下按下Ctrl+F11键,编译运行程序。键,编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2 23.2 使用本地使用本地SQLSQL数据库数据库SQL数据库是指可使用标准的数据库是指可使用标准的SQL语句进展操作的数语句进展操作的数据库。本地据库。本地SQL数据库是指操作系统支持的数据库是指操作系统支持的SQL数据库,数据库,如如“.db格式的数据库。格式的数据库。AIR应用程序中新增了一些类在应用程序中新增了一些类在“flash.data.*包中,用以支持对本地包中,用以支持对本地SQL数据库的操作。数据库的操作。对对SQL数据库的根本操作包括数
420、据库的根本操作包括Select读取数据、读取数据、Insert插入数据、插入数据、Update修改数据、修改数据、Delete删除数据删除数据。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.1 23.2.1 使用使用SelectSelect语句读取数据语句读取数据Select语句用以读取表中的数据。语句用以读取表中的数据。l列名是指表中的列的名称。列名是指表中的列的名称。l用户可为列名取别名。用户可为列名取别名。l条件是指对数据的约束。条件是指对数据的约束。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.2 23.2.2 使用使用InsertInsert语句添
421、加数据语句添加数据lInsert语句用以向表中添加数据。语句用以向表中添加数据。l列名必须是表中存在的列的名称。列名必须是表中存在的列的名称。l数值顺序对应列名顺序,如数值数值顺序对应列名顺序,如数值1赋值给列名赋值给列名1。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.3 23.2.3 使用使用UpdateUpdate语句修改数据语句修改数据Update语句用以修改表中的数据。语句用以修改表中的数据。需要注意的是,需要注意的是,SQL语句中判断相等的操作符为语句中判断相等的操作符为“=,而不是而不是“=。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.4 2
422、3.2.4 使用使用DeleteDelete语句删除数据语句删除数据lDelete语句用以删除表中的数据。语句用以删除表中的数据。lDelete语句可删除单条记录或多条记录,方法是控制语句可删除单条记录或多条记录,方法是控制条件范围。以下代码使用条件范围。以下代码使用Delete语句删除语句删除“高三高三5班学生信班学生信息。息。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.5 23.2.5 使用使用SQLConnectionSQLConnection类连接数据库类连接数据库SQLConnection类用于连接数据库。对于要操作的数类用于连接数据库。对于要操作的数据库都应新建
423、据库都应新建SQLConnection类实例。类实例。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.6 23.2.6 使用使用SQLStatementSQLStatement类执行类执行SQLSQL语句语句SQLStatement类用于执行类用于执行SQL语句,是操作语句,是操作SQL数据数据库的重要类。库的重要类。1定义定义SQLStatement类实例。类实例。2指向其使用的数据库。指向其使用的数据库。3为为SQLStatement实例定义实例定义SQL语句。语句。4执行执行SQLStatement实例。实例。5为为SQLStatement实例添加监听。实例添加监听。6获
424、取返回数据集。获取返回数据集。Flex 4.0 RIA开发详解开发详解(第第2版版)23.2.7 23.2.7 操作本地操作本地SQLSQL数据库实例数据库实例本节以实例为读者讲解如何使用本节以实例为读者讲解如何使用SQL语句操作数据库语句操作数据库1设计数据库设计数据库“School。“School数据库中只有数据库中只有一张表一张表“Notes,用以存储通知信息。,用以存储通知信息。2新建新建AIR工程。工程。3设计应用程序的外观模型。设计应用程序的外观模型。4连接连接“School数据库。数据库。5创立创立“Notes表。表。6获得数据集并显示于获得数据集并显示于DataGrid组件中。
425、组件中。7向数据库中插入数据。向数据库中插入数据。8完成剩余代码。完成剩余代码。9按下按下Ctrl+F11键编译运行程序。键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)23.3 23.3 升级升级AIRAIR应用程序应用程序AIR桌面应用程序可导出为桌面应用程序可导出为air文件。双击此文件就能文件。双击此文件就能开场安装应用程序。假设系统中已安装旧版的开场安装应用程序。假设系统中已安装旧版的AIR应用程应用程序,双击序,双击air文件时会提示更新文件时会提示更新AIR应用程序。这种方式是应用程序。这种方式是非程序性的方式。非程序性的方式。Flex 4.0中新增中新增U
426、pdate类,用以升级类,用以升级AIR应用程序。应用程序。Flex 4.0 RIA开发详解开发详解(第第2版版)23.3.1 23.3.1 升级前的准备升级前的准备1导出导出AIR应用程序应用程序2定义版本信息文件定义版本信息文件Flex 4.0 RIA开发详解开发详解(第第2版版)23.3.2 23.3.2 检查版本信息检查版本信息用户可使用用户可使用FileStream类加载版本信息文件,从而获类加载版本信息文件,从而获得当前得当前AIR应用程序的版本号。假设当前的版本号小于最应用程序的版本号。假设当前的版本号小于最新的版本号,说明新的版本号,说明AIR应用程序需要更新。应用程序需要更新
427、。Flex 4.0 RIA开发详解开发详解(第第2版版)23.3.3 23.3.3 使用使用FileStreamFileStream类下载最新版本类下载最新版本在更新在更新AIR应用程序前,需要下载最新版本的应用程序前,需要下载最新版本的AIR安安装包。使用装包。使用FileStream类可下载任何格式的文件。类可下载任何格式的文件。Flex 4.0 RIA开发详解开发详解(第第2版版)23.3.4 23.3.4 使用使用UpdaterUpdater类升级类升级AIRAIR应用程序应用程序在下载完成最新版本的在下载完成最新版本的AIR安装包后,可使用安装包后,可使用Updater类的类的upd
428、ate()方法升级应用程序。方法升级应用程序。Flex 4.0 RIA开发详解开发详解(第第2版版)23.3.5 23.3.5 升级升级AIRAIR应用程序实例应用程序实例本实例中假设最新导出的本实例中假设最新导出的AIR安装包为安装包为1.3版本,并放版本,并放置于工程置于工程“bin文件夹下。文件夹下。升级升级AIR应用程序实例的步骤如下。应用程序实例的步骤如下。1新建新建AIR工程。工程。2在在“bin文件夹下的文件夹下的“Preferences文件夹下创文件夹下创立立“version.txt文件。文件。3编写检查版本号函数编写检查版本号函数checkVersion。4编写下载最新版本函
429、数编写下载最新版本函数loaded。5编写更新编写更新AIR应用程序代码。应用程序代码。6完成剩余代码。完成剩余代码。7按下按下Ctrl+F11键,编译运行程序。键,编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)23.4 23.4 在在AIRAIR平台中使用平台中使用AjaxAjax技术技术在前面章节里曾介绍过在前面章节里曾介绍过Flex 4.0中如何使用其他中如何使用其他Web开开发技术,但未涉及发技术,但未涉及Ajax技术。技术。Ajax技术是一种非常流行的技术是一种非常流行的Web开发技术,其主要特点是无刷新性。本章将介绍开发技术,其主要特点是无刷新性。本章将介绍A
430、jax技术的根底知识,及如何在技术的根底知识,及如何在Flex 4.0中使用中使用Ajax技术。技术。Flex 4.0 RIA开发详解开发详解(第第2版版)23.4.1 Ajax23.4.1 Ajax技术简介技术简介Ajax技术具体包括如下技术具体包括如下5种技术。种技术。使用使用XHTML+CSS的表示样式。的表示样式。使用使用DOMDocument Object Model进展动态显示进展动态显示及交互。及交互。使用使用XML和和XSLT进展数据交换及相关操作。进展数据交换及相关操作。使用使用XMLHttpRequest类进展异步数据查询、检索。类进展异步数据查询、检索。使用使用JavaS
431、cript整合所有技术。整合所有技术。Flex 4.0 RIA开发详解开发详解(第第2版版)23.4.2 23.4.2 使用使用组件调用组件调用AjaxAjax技术技术在在Flex 4.0中使用中使用组件可加载包含组件可加载包含Ajax技技术的网页。术的网页。组件在加载网页时,加载网页中的全部组件在加载网页时,加载网页中的全部内容,包括内容,包括javascriptjavascript是是Ajax技术实现的关键。技术实现的关键。Flex 4.0 RIA开发详解开发详解(第第2版版)23.4.3 Flex23.4.3 Flex应用程序结合应用程序结合AjaxAjax技术实例技术实例Ajax技术已
432、广为应用于互联网的开发。许多无刷新的技术已广为应用于互联网的开发。许多无刷新的网页或有动态效果网页都使用了网页或有动态效果网页都使用了Ajax技术。其中,应用技术。其中,应用Ajax技术最成功的例子是技术最成功的例子是Google的地图搜索。的地图搜索。Flex 4.0结合结合Ajax技术实例的步骤如下。技术实例的步骤如下。1新建新建AIR工程。工程。2编写编写“yahoo.html文件。文件。3编写编写Flex应用程序的外观模型。应用程序的外观模型。4添加搜索地图的添加搜索地图的ActionScript 3.0代码。代码。5编写函数编写函数takeSnapshot。6编写函数编写函数copy
433、ToClipboard。7完成剩余代码。完成剩余代码。8按下按下Ctrl+F11快捷键编译运行程序。快捷键编译运行程序。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5 23.5 使用使用Flex-Ajax BridgeFlex-Ajax Bridge技术控制技术控制FlexFlex应应用程序用程序上一节中介绍在上一节中介绍在Flex中如何调用中如何调用Ajax技术。反之,也技术。反之,也可使用可使用Ajax技术控制技术控制Flex应用程序。应用程序。JavaScript程序通过程序通过Flex-Ajax Bridge技术可控制技术可控制Flex应用程序组件及外观。应用程序组件及
434、外观。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.1 Flex-Ajax Bridge23.5.1 Flex-Ajax Bridge技术简介技术简介Flex-Ajax Bridge技术是技术是Adobe公司提供的一种效劳技公司提供的一种效劳技术。此技术为术。此技术为Ajax技术和技术和Flex技术建立起特殊的联系。通技术建立起特殊的联系。通过过Flex-Ajax Bridge技术可到达控制技术可到达控制Flex应用程序的效果。应用程序的效果。例如,单击网页中的按钮,例如,单击网页中的按钮,Flex应用程序中新增一个按钮应用程序中新增一个按钮组件。组件。Flex-Ajax B
435、ridge技术包括一个技术包括一个“FABridge.as文件和文件和“FABridge.js文件。文件。“FABridge.as文件中定义了文件中定义了Flex客客户端的各种属性和方法。户端的各种属性和方法。“FABridge.js文件定义了文件定义了JavaScript客户端的各种属性和方法。有关客户端的各种属性和方法。有关“FABridge.as文件和文件和“FABridge.js文件的相关内容将在后续章节中介绍。文件的相关内容将在后续章节中介绍。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.2 Flex-Ajax Bridge23.5.2 Flex-Ajax Brid
436、ge技术的运行原理技术的运行原理Flex-Ajax Bridge技术只包含两个源文件:技术只包含两个源文件:“FABridge.as文件和文件和“FABridge.js文件。通过定义两个文件。通过定义两个不同客户端不同客户端Flex客户端和客户端和JavaScript客户端的对应属性客户端的对应属性和方法,实现不同客户端间的相互调用。和方法,实现不同客户端间的相互调用。“FABridge.as类继承类继承EventDispatcher类,同时实现类,同时实现IMXMLObject接口。其主要功能是存储各种接口。其主要功能是存储各种Flex组件的属组件的属性和方法,为各种方法添加对应的调用名称。
437、性和方法,为各种方法添加对应的调用名称。“FABridge.as类中最重要的实现方法为类中最重要的实现方法为initializeCallbacks()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.3 23.5.3 使用使用getCompenentID()getCompenentID()方法获取组件方法获取组件Flex-Ajax Bridge技术中使用技术中使用getCompenentID()方法获方法获取组件。取组件。getCompenentID并不是确定的方法名,而表示并不是确定的方法名,而表示“get字符串连接组件字符串连接组件id字符串。例如,字符串。例如,
438、Flex应用程序中定应用程序中定义了名为义了名为“myPanel的组件,那么获取该组件的方法名为的组件,那么获取该组件的方法名为“getMyPanel。需要注意的是,组件。需要注意的是,组件id字符串的第一个字字符串的第一个字母大写。母大写。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.4 23.5.4 使用使用getPropertyName()getPropertyName()方法获取属方法获取属性值性值getPropertyName()方法用以获取组件的属性值。与方法用以获取组件的属性值。与getCompenentID()方法一样,方法一样,getPropertyName
439、()方法也不是确定的方法名,方法也不是确定的方法名,而是而是“get字符串连接组件属性字符串。字符串连接组件属性字符串。在使用在使用getCompenentID()方法获取组件后,可使用方法获取组件后,可使用getPropertyName()方法获取组件属性。方法获取组件属性。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.5 23.5.5 使用使用setPropertyName()setPropertyName()方法设置属方法设置属性值性值setPropertyName()方法用以设置组件的属性值。与方法用以设置组件的属性值。与getCompenentID()方法一样,方法
440、一样,setPropertyName()方法也不是确定的方法名,方法也不是确定的方法名,而是而是“set字符串连接组件属性字符串。字符串连接组件属性字符串。在使用在使用getCompenentID()方法获取组件后,可使用方法获取组件后,可使用setPropertyName()方法设置组件属性。方法设置组件属性。与与getCompenentID()方法一样,组件属性字符串的第方法一样,组件属性字符串的第一个字母大写。一个字母大写。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.6 23.5.6 为组件添加监听事件为组件添加监听事件Flex-Ajax Bridge技术也可为组件添
441、加监听事件。技术也可为组件添加监听事件。使用使用getCompenentID()方法获取组件后,可直接调用方法获取组件后,可直接调用组件的所有方法包括组件的所有方法包括addEventListenner()方法。方法。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.7 23.5.7 调用调用FlexFlex程序中的函数程序中的函数由于由于“FABridge.example.root()语句指向的是语句指向的是Flex应应用程序本身,所以可直接调用用程序本身,所以可直接调用Flex程序的函数。程序的函数。Flex 4.0 RIA开发详解开发详解(第第2版版)23.5.8 Flex
442、-Ajax Bridge23.5.8 Flex-Ajax Bridge技术控制技术控制FlexFlex程序程序实例实例本实例的效果为:在网页中操作按钮或下拉框组件,本实例的效果为:在网页中操作按钮或下拉框组件,Flex应用程序的视图变化。应用程序的视图变化。Flex-Ajax Bridge技术控制技术控制Flex程序实例的步骤如下所程序实例的步骤如下所示。示。1新建新建Flex工程工程“Flex-AjaxBridgeExample。2在工程根目录中添加在工程根目录中添加“bridge文件夹。文件夹。3在工程根目录中添加在工程根目录中添加“image文件夹。文件夹。Flex 4.0 RIA开发详
443、解开发详解(第第2版版)23.5.8 Flex-Ajax Bridge23.5.8 Flex-Ajax Bridge技术控制技术控制FlexFlex程序实例程序实例4编写编写“main.mxml文件。文件。5按下按下Ctrl+F11快捷键,编译运行程序。快捷键,编译运行程序。6在工程的在工程的“bin文件夹下新建文件夹下新建“FABridgeExample.html文件。文件。7保存保存“FABridgeExample.html文件后,使用浏文件后,使用浏览器翻开此文件。览器翻开此文件。Flex 4.0 RIA开发详解开发详解(第第2版版)23.6 23.6 小结小结本章以实例的形式介绍了一些
444、本章以实例的形式介绍了一些Flex 4.0新特性的应用。新特性的应用。由于本书篇幅有限,不能一一介绍新特性。但本章介绍的由于本书篇幅有限,不能一一介绍新特性。但本章介绍的新特性均为实用的、有代表性的特性,包括加载新特性均为实用的、有代表性的特性,包括加载PDF文件、文件、使用本地使用本地SQL数据库、升级数据库、升级AIR应用程序、集成应用程序、集成Ajax技术技术等。等。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2424章章 FLV FLV播放器播放器FLV播放器是一种专用于播放播放器是一种专用于播放FLV格式视频的播放器。格式视频的播放器。FLV格式是时下最流行的播放格式,
445、其特点是压缩比高、格式是时下最流行的播放格式,其特点是压缩比高、文件容量小、支持渐进式缓冲播放等。文件容量小、支持渐进式缓冲播放等。Flex 4.0中的中的VideoDisplay组件专用于播放组件专用于播放FLV格式视频。本章将介绍如格式视频。本章将介绍如何制作何制作FLV播放器。涉及的技术包括使用播放器。涉及的技术包括使用VideoDisplay组件组件控制视频、使用控制视频、使用Cairngorm框架等。框架等。Flex 4.0 RIA开发详解开发详解(第第2版版)24.1 24.1 前期准备前期准备在制作在制作FLV播放器前需要作一些前期准备,包括组织播放器前需要作一些前期准备,包括组
446、织文件构造和导入文件构造和导入Cairngorm框架。框架。Flex 4.0 RIA开发详解开发详解(第第2版版)24.1.1 24.1.1 组织文件构造组织文件构造组织文件构造是指将不同类型的源代码存储于不同的组织文件构造是指将不同类型的源代码存储于不同的文件夹下。使用文件夹下。使用Cairngorm框架的工程可仿照框架的工程可仿照Cairngorm框框架的文件组织构造,如架的文件组织构造,如“business文件夹、文件夹、“commands文件夹、文件夹、“control文件夹等。合理地组织文件构造可使得文件夹等。合理地组织文件构造可使得源代码更简洁、更易管理。源代码更简洁、更易管理。F
447、lex 4.0 RIA开发详解开发详解(第第2版版)24.1.2 24.1.2 导入导入CairngormCairngorm框架框架导入导入Cairngorm框架的方法是在工程中添加框架的方法是在工程中添加“Cairngorm.swc文件。具体做法请参看文件。具体做法请参看Cairngorm框架框架章节。章节。Flex 4.0 RIA开发详解开发详解(第第2版版)24.2 24.2 使用使用FlvModelFlvModel类存储数据、状态及资源类存储数据、状态及资源FlvModel类继承于类继承于Cairngorm框架的框架的ModelLocator类,类,用以存储数据、状态和资源。例如,当前
448、播放的视频地址、用以存储数据、状态和资源。例如,当前播放的视频地址、是否为全屏状态、图片资源等都存储于是否为全屏状态、图片资源等都存储于FlvModel类中。类中。Flex 4.0 RIA开发详解开发详解(第第2版版)24.3 24.3 使用使用FlvControlFlvControl类监听事件类监听事件FlvControl类继承类继承Cairngorm框架的框架的FrontController类,类,用以监听用以监听CairngormEvent事件。习惯上,事件。习惯上,CairngormEvent事件的标识字符串也存储于前台控制器中。事件的标识字符串也存储于前台控制器中。Flex 4.0
449、RIA开发详解开发详解(第第2版版)24.4 24.4 创立创立OpenVideoEventOpenVideoEvent事件事件OpenVideoEvent类继承于类继承于Cairngorm框架的框架的CairngormEvent类,用以表示翻开视频事件。类,用以表示翻开视频事件。Flex 4.0 RIA开发详解开发详解(第第2版版)24.5 24.5 创立创立OpenVideoCommandOpenVideoCommand命令命令OpenVideoCommand类实现了类实现了Cairngorm框架中的框架中的Command类,用以对事件进展具体处理。类,用以对事件进展具体处理。OpenVi
450、deoCommand命令类的主要功能是加载命令类的主要功能是加载FLV格式视格式视频。频。Flex 4.0 RIA开发详解开发详解(第第2版版)24.6 24.6 使用使用UtilsUtils类格式化时间类格式化时间Utils类中定义了时间格式化处理函数类中定义了时间格式化处理函数formatVideoTime,用以将单位为毫秒的小数转换为形如,用以将单位为毫秒的小数转换为形如“12:33:33 321的时间格式字符串。的时间格式字符串。Flex 4.0 RIA开发详解开发详解(第第2版版)24.7 24.7 使用使用FlvPlayViewHelperFlvPlayViewHelper类修改类
451、修改MXMLMXML组组件件FlvPlayViewHelper类继承类继承Cairngorm框架的框架的ViewHelper类,用于修改类,用于修改MXML组件。组件。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8 24.8 编写编写“FlvPlay.mxml“FlvPlay.mxml主程序主程序“FlvPlay.mxml文件是应用程序的主程序,实现了播文件是应用程序的主程序,实现了播放器实例的大局部功能和组件。本小节将介绍放器实例的大局部功能和组件。本小节将介绍“FlvPlay.mxml主程序的不同功能局部。主程序的不同功能局部。Flex 4.0 RIA开发详解开发详解(第第
452、2版版)24.8.1 24.8.1 设计外观模型设计外观模型FLV播放器实例的外观模型包括播放器实例的外观模型包括VideoDisplay组件、组件、菜单组件、各种控制按钮等。菜单组件、各种控制按钮等。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.2 24.8.2 实现菜单功能实现菜单功能FLV播放器实例中使用播放器实例中使用组件添加菜单。组件添加菜单。单击菜单子项时根据内容执行相应的操作。单击菜单子项时根据内容执行相应的操作。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.3 VideoPlayer24.8.3 VideoPlayer组件说明组件说明1播放位
453、置属性播放位置属性playheadTime 2VideoPlayer组件的常用方法说明组件的常用方法说明Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.4 24.8.4 实现实现“播放播放/ /暂停功能暂停功能“播放播放/暂停功能只需要调用暂停功能只需要调用VideoPlayer组件的组件的play()方法和方法和pause()方法就可实现。另外,本例中在暂停时,方法就可实现。另外,本例中在暂停时,视频组件的中间显示一个暂停图标。视频组件的中间显示一个暂停图标。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.5 24.8.5 实现实现“停顿功能停顿功能“停顿功能
454、只需要调用停顿功能只需要调用VideoPlayer组件的组件的stop()方法方法可实现。可实现。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.6 24.8.6 实现实现“静音功能静音功能由于由于VideoPlayer组件的组件的volume属性绑定在属性绑定在id为为videoVolume的的HSlider组件上,所以控制组件上,所以控制HSlider组件的值组件的值就能控制视频的音量。就能控制视频的音量。“静音功能只需要将静音功能只需要将HSlider组件组件的的value值设置为值设置为0即可。即可。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.7 2
455、4.8.7 实现实现“全屏全屏/ /退出全屏功能退出全屏功能实现实现“全屏全屏/退出全屏功能前需要在退出全屏功能前需要在FlvModel类中定类中定义一个布尔类型变量义一个布尔类型变量isFullSrceen,用以表示当前状态是否,用以表示当前状态是否为全屏状态。为全屏状态。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.8 24.8.8 拖曳滑动条改变播放进度拖曳滑动条改变播放进度由于由于id为为videoSlider的的HSlider组件的组件的value属性绑定至属性绑定至VideoDisplay组件的组件的playheadTime属性上,所以属性上,所以HSlider组
456、组件能实时显示播放进度。假设要拖曳滑动条改变播放进度,件能实时显示播放进度。假设要拖曳滑动条改变播放进度,只需要修改只需要修改VideoDisplay组件的组件的playheadTime属性。属性。Flex 4.0 RIA开发详解开发详解(第第2版版)24.8.9 24.8.9 实现键盘快捷键功能实现键盘快捷键功能实例中为实例中为FLV播放器添加了键盘的快捷键。例如,单播放器添加了键盘的快捷键。例如,单击空格键实现击空格键实现“播放播放/暂停功能。暂停功能。要实现键盘快捷键效果需要监听键盘按下事件。要实现键盘快捷键效果需要监听键盘按下事件。Flex 4.0 RIA开发详解开发详解(第第2版版)
457、24.8.10 24.8.10 完成完成“FlvPlay.mxml“FlvPlay.mxml主程序的剩主程序的剩余代码余代码“FlvPlay.mxml主程序的剩余代码包括引用类、拖动主程序的剩余代码包括引用类、拖动条放开事件处理函数、拖动条显示提示处理函数等。条放开事件处理函数、拖动条显示提示处理函数等。Flex 4.0 RIA开发详解开发详解(第第2版版)24.9 24.9 小结小结本章介绍了如何制作一个本章介绍了如何制作一个FLV播放器。由于此播放器。由于此FLV播播放器是放器是AIR应用程序,所以可以翻开本地的应用程序,所以可以翻开本地的FLV文件播放。文件播放。FLV播放器实例是较综合
458、的应用程序,涉及的技术包括:播放器实例是较综合的应用程序,涉及的技术包括:常用组件的用法、绑定数据、翻开本地资源、常用组件的用法、绑定数据、翻开本地资源、VideoDisplay组件的用法、组件的用法、Cairngorm框架开发过程。框架开发过程。Flex 4.0 RIA开发详解开发详解(第第2版版)第第2525章章 经典实例经典实例CairngormStoreCairngormStore的分析的分析CairngormStore实例是实例是Adobe开发团队提供的一个关开发团队提供的一个关于如何应用于如何应用Cairngorm框架的实例。对于初学框架的实例。对于初学Flex开发和开发和Cair
459、ngorm框架的人员有很大的帮助。框架的人员有很大的帮助。Flex 4.0 RIA开发详解开发详解(第第2版版)25.1 CairngormStore25.1 CairngormStore实例简介实例简介CairngormStore实例实现的是一个在线商店网站,功实例实现的是一个在线商店网站,功能包括浏览货物、购置货物、统计金额等。能包括浏览货物、购置货物、统计金额等。CairngormStore实例流行很广,有较多版本,最新版本为实例流行很广,有较多版本,最新版本为CairngormStore2.2。本节将简要介绍。本节将简要介绍CairngormStore实例实例的工作原理及文件组织构造。
460、的工作原理及文件组织构造。CFlex 4.0 RIA开发详解开发详解(第第2版版)25.2 25.2 如何运行如何运行CairngormStoreCairngormStore实例实例CairngormStore实例由于结合实例由于结合Java与与Flex技术,所以技术,所以需要进展环境配置。涉及的配置包括需要进展环境配置。涉及的配置包括Java运行平台、运行平台、LiveCycle Data Services效劳器、源代码本身的修改等。本效劳器、源代码本身的修改等。本小节将详细介绍如何运行小节将详细介绍如何运行CairngormStore实例。实例。Flex 4.0 RIA开发详解开发详解(第
461、第2版版)25.2.1 25.2.1 架设架设JavaJava运行平台运行平台Java运行平台用以编译运行运行平台用以编译运行Java程序,可安装程序,可安装J2SEJava 2 Standard Edition1.4.2以上版本。以上版本。Flex 4.0 RIA开发详解开发详解(第第2版版)25.2.2 25.2.2 架设架设AMFAMF网关网关LiveCycle Data LiveCycle Data ServicesServicesLiveCycle Data Services是是Adobe公司推出的公司推出的AMF网关网关效劳器,负责效劳器,负责Java数据类型与数据类型与Actio
462、nScript数据类型的相互数据类型的相互转换。本书使用的版本为转换。本书使用的版本为LiveCycle Data Services ES 2.5.1。Flex 4.0 RIA开发详解开发详解(第第2版版)25.2.3 25.2.3 编译运行前的准备编译运行前的准备编译运行编译运行CairngormStore实例前需要下载实例前需要下载CairngormStore实例、修改配置文件等。实例、修改配置文件等。Flex 4.0 RIA开发详解开发详解(第第2版版)25.2.4 25.2.4 编译编译CairngormStoreCairngormStore实例实例在架设在架设Java运行平台、运行平
463、台、LiveCycle Data Services后,只后,只需要新建工程并编译运行需要新建工程并编译运行CairngormStore实例即可。实例即可。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3 CairngormStore25.3 CairngormStore实例的代码分析实例的代码分析CairngormStore实例的代码比较多,这是因为实例的代码比较多,这是因为Adobe开发团队提倡的开发团队提倡的Cairngorm框架本身的构造层次就比较多,框架本身的构造层次就比较多,再加上作者模块化编程习惯所致。本章将详细分析再加上作者模块化编程习惯所致。本章将详细分析Cair
464、ngormStore实例中一些重要的类和文件。读者通过分实例中一些重要的类和文件。读者通过分析这些类和文件,将有助于理解和学习析这些类和文件,将有助于理解和学习CairngormStore实实例。例。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.1 25.3.1 使用使用ProductVOProductVO类建立商品数据模型类建立商品数据模型CairngormStore实例实现的是一个在线购物的网站,实例实现的是一个在线购物的网站,所以商品是最重要的数据之一。所以商品是最重要的数据之一。CairngormStore实例中使实例中使用用ProductVO类建立商品数据模型。类建
465、立商品数据模型。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.2 25.3.2 使用使用ShoppingCartElementShoppingCartElement类建立购类建立购物条目数据模型物条目数据模型购物车中有消费者选购的每个商品的购置信息,如商购物车中有消费者选购的每个商品的购置信息,如商品数量、此商品总金额等信息。品数量、此商品总金额等信息。CairngormStore实例中使实例中使用用ShoppingCartElement类建立购物条目数据模型。类建立购物条目数据模型。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.3 25.3.3 使用使用S
466、hoppingCartShoppingCart类建立购物车数据类建立购物车数据模型模型购物车数据模型包括多个购物条目、总金额等信息。购物车数据模型包括多个购物条目、总金额等信息。CairngormStore实例中使用实例中使用ShoppingCart类建立购物车数类建立购物车数据模型。据模型。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.4 25.3.4 使用使用ShopModelLocatorShopModelLocator类建立应用程类建立应用程序数据模型序数据模型ShopModelLocator类定义了整个应用程序的数据模型,类定义了整个应用程序的数据模型,包括购物车实
467、例、当前选择的商品、货币格式、各种状态包括购物车实例、当前选择的商品、货币格式、各种状态变量等。变量等。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.5 25.3.5 使用使用ShopControllerShopController类监听事件类监听事件ShopController类继承类继承Cairngorm框架的框架的FrontController类,用以监听类,用以监听CairngormEvent事件。事件。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.6 25.3.6 在在ServiceLocatorServiceLocator类中定义效劳类中定义效劳
468、CairngormStore实例中使用实例中使用组件组件调用调用Java类。类。Cairngorm框架中建议在框架中建议在ServiceLocator类中类中定义各种效劳,这样通过定义各种效劳,这样通过ServiceLocator类的类的getService()方方法就可在任何文件中调用效劳。法就可在任何文件中调用效劳。ServiceLocator类通常在类通常在MXML文件中被定义为组件。文件中被定义为组件。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.7 25.3.7 创立自定义事件创立自定义事件CairngormStore实例中定义了不少事件。本节以实例中定义了不少事件
469、。本节以GetProductsEvent事件为例,介绍如何创立自定义事件。事件为例,介绍如何创立自定义事件。其他事件的定义大同小异。其他事件的定义大同小异。GetProductsEvent类继承于类继承于Cairngorm框架的框架的CairngormEvent类,用以表示获得商品数据事件。类,用以表示获得商品数据事件。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.8 25.3.8 创立自定义命令创立自定义命令命令一般对应一个事件,所以两者的取名很相似。例命令一般对应一个事件,所以两者的取名很相似。例如,如,GetProductsEvent事件的对应命令为事件的对应命令为Ge
470、tProductsCommand。命令类必须实现命令类必须实现Cairngorm框架的框架的ICommand接口类,接口类,但不一定要实现但不一定要实现IResponder接口类。假设命令执行后有返接口类。假设命令执行后有返回结果或后续动作,那么需要实现回结果或后续动作,那么需要实现Responder接口类。假设接口类。假设命令执行后没有返回结果或后续动作,那么只需要实现命令执行后没有返回结果或后续动作,那么只需要实现ICommand接口类。接口类。Flex 4.0 RIA开发详解开发详解(第第2版版)25.3.9 25.3.9 视图外观分析视图外观分析CairngormStore实例的视图外
471、观实例的视图外观MXML文件存储文件存储于于“view文件夹中。不同视图外观根据功能又存储于不文件夹中。不同视图外观根据功能又存储于不“assets文件夹存放了图标资源。文件夹存放了图标资源。“checkout文件夹文件夹存放了用户结算时视图。存放了用户结算时视图。Flex 4.0 RIA开发详解开发详解(第第2版版)25.4 25.4 如何添加和调用新效劳如何添加和调用新效劳上面详细分析了上面详细分析了CairngormStore实例的主要代码。在实例的主要代码。在理解了理解了CairngormStore实例的运行原理后,本小节将介绍实例的运行原理后,本小节将介绍如何扩展此应用程序,其中最重
472、要的是如何添加和调用新如何扩展此应用程序,其中最重要的是如何添加和调用新效劳。效劳。Flex 4.0 RIA开发详解开发详解(第第2版版)25.5 25.5 小结小结本章详细介绍了本章详细介绍了CairngormStore实例的安装部署和代实例的安装部署和代码分析。码分析。CairngormStore实例涉及的技术包括实例涉及的技术包括Flex技术、技术、Java技术、技术、Cairngorm框架等,是应用框架等,是应用Flex技术开发中大型技术开发中大型应用程序的经典范例。通过本章实例的学习,读者能够举应用程序的经典范例。通过本章实例的学习,读者能够举一反三地应用一反三地应用Flex技术开发中大型应用程序,同时也能更技术开发中大型应用程序,同时也能更好地理解好地理解Flex如何与如何与Java进展通信。进展通信。Thank You !不尽之处,恳请指正!不尽之处,恳请指正!