书系统地讲解了作为RIA(Rich Interactive Application,丰富的交互应用程序)开发手段之一的Flex技术。前3章介绍了Flex技术的基础知识、Flex开发环境的配置以及MXML语言的语法规则;第4到第8章详细阐述了作为Flex开发核心部分的ActionScript 3的语法及其面向对象的语言特性;第9到第18章介绍了Flex开发中的常用内容;第19和20章介绍了一些常用的ActionScript类型和用于运行Flex程序的Flash Player的安全性问题。
本书适用于希望系统地学习Flex的读者,也可供正在使用Flex进行软件开发的程序员参考。书中包含了大量的代码实例,读者可通过运行这些实例程序来加深对Flex技术的了解。随书光盘中含有书中的源代码。
目 录
出版说明
前言
第1章 Flex概述 1
1.1 什么是Flex 1
1.2 Flex可运行于什么环境 1
1.3 Flex应用程序的开发语言 1
1.4 Flex与Flash的关系 2
第2章 Flex基础知识 3
2.1 配置Flex SDK开发环境 3
2.1.1 安装JDK 3
2.1.2 安装Flex SDK 3
2.1.3 配置系统环境变量 3
2.2 Flex Framework 4
2.2.1 Flex SDK的目录结构 4
2.2.2 Flex程序的生命周期 5
2.2.3 Flex在运行时和Flash Player的
关系 5
2.2.4 编译Flex程序常用的指令 6
第3章 MXML 8
3.1 MXML文件的命名规则 8
3.2 第一个Flex应用程序:你好,
Flex 8
3.3 XML的编码 9
3.4 编译Flex程序 10
3.5 在MXML中使用ActionScript 10
3.5.1 使用标签 10
3.5.2 包含外部的ActionScript文件 11
3.5.3 导入外部ActionScript的类文件 12
第4章 ActionScript基础 14
4.1 数据类型 14
4.2 变量 14
4.2.1 变量名的命名规则 14
4.2.2 变量的声明 15
4.2.3 变量的赋值 15
4.2.4 变量的作用范围 16
4.2.5 特殊的变量——常量 17
4.3 类与引用 17
4.3.1 类的概念和对象的概念 17
4.3.2 引用的概念 18
4.3.3 类的定义方式 18
4.4 包和命名空间 19
4.4.1 包 19
4.4.2 命名空间 20
4.5 语法规则 22
4.6 操作符 25
4.6.1 操作符的优先级 25
4.6.2 主操作符 26
4.6.3 一元操作符 28
4.6.4 乘除运算符和加减运算符 31
4.6.5 位移操作符 31
4.6.6 关系操作符 32
4.6.7 相等操作符 33
4.6.8 位逻辑运算符 35
4.6.9 逻辑操作符 35
4.6.10 三元条件运算符 36
4.6.11 赋值运算符 37
4.7 流程控制 37
4.7.1 条件语句 37
4.7.2 循环语句 40
4.7.3 label语句 44
4.7.4 break语句 44
4.7.5 continue语句 45
4.8 函数 47
4.8.1 函数的基本概念 47
4.8.2 函数的参数 49
4.8.3 函数对象 53
4.9 事件机制 53
4.9.1 事件机制介绍 53
4.9.2 事件机制举例 54
4.10 错误处理机制 54
4.10.1 同步错误处理机制 55
4.10.2 异步错误处理机制 58
4.10.3 自定义错误 58
4.11 使用XML 59
4.11.1 创建XML 59
4.11.2 操作XML 60
第5章 ActionScript的面向对象特
性——类 61
5.1 类的定义方式 61
5.1.1 public修饰符 61
5.1.2 internal修饰符 61
5.1.3 dynamic修饰符 61
5.1.4 final修饰符 62
5.1.5 类定义修饰符的组合方式 62
5.2 类封装的属性和方法 62
5.2.1 属性定义的修饰符 62
5.2.2 方法定义的修饰符 63
5.2.3 方法 63
第6章 ActionScript的面向对象
特性——接口 67
6.1 定义接口 67
6.2 接口内的方法声明 67
6.3 接口的实现 67
6.4 如何定义接口的内容 68
6.5 接口的多重实现 68
6.6 接口是不能被实例化的 69
第7章 ActionScript的面向对象
特性——继承 70
7.1 如何实现继承 70
7.2 继承的内容 70
7.3 重载方法 71
7.3.1 何谓重载方法 71
7.3.2 重载方法的定义方式 72
7.3.3 super引用 73
7.3.4 final 75
7.4 多态 75
7.5 接口的继承 76
7.6 继承只能单一继承 77
第8章 ActionScript的面向对象
特性——类型之间的关系 78
8.1 类型的概念 78
8.2 类型间的关系 78
8.2.1 拥有关系 78
8.2.2 是关系 78
8.3 typeof、instanceof、is、as
操作符 79
8.3.1 typeof 79
8.3.2 instanceof 80
8.3.3 is 80
8.3.4 as 81
8.4 类型转换 82
8.4.1 上溯转换 82
8.4.2 下溯转换 82
8.4.3 使用API转换类型 83
第9章 Flex中的可视化组件 84
9.1.1 容器控件 85
9.1.2 通用控件 102
9.1.3 按钮控件 122
9.1.4 文本控件 129
9.1.5 日期控件 134
9.1.6 载入控件 136
9.1.7 菜单控件 142
9.1.8 重复控件——Repeater 148
第10章 效果 150
10.1.1 Blur 150
10.1.2 Dissolve 151
10.1.3 Fade 152
10.1.4 Glow 153
10.1.5 Iris 153
10.1.6 Move 154
10.1.7 Rotate 155
10.1.8 Zoom 155
10.1.9 WipeDown、WipeLeft、WipeRight
和WipeUp 156
10.1.10 SoundEffect 157
10.1.11 Resize 158
10.1.12 Parallel 158
10.1.13 Sequence 159
10.1.14 AnimateProperty 160
10.1.15 Pause 160
10.1.16 效果播放的速率 161
10.1.17 Effect的filter属性 162
第11章 状态和过渡 163
11.1 状态 163
11.1.1 定义状态 163
11.1.2 应用状态 164
11.1.3 状态事件 168
11.2 过渡 169
11.2.1 使用过渡 169
11.2.2 应用于过渡顺序的效果 170
第12章 Flex中的数据 172
12.1 使用数据模型 172
12.1.1 以MXML方式定义数据模型 172
12.1.2 以ActionScript方式定义数据
模型 173
12.2 数据绑定 174
12.2.1 {}方式 174
12.2.2 方式 175
12.2.3 BindingUtils方式 175
12.2.4 监听绑定属性变化的事件 176
12.2.5 自定制的绑定数据 177
12.2.6 深入绑定机制 178
12.3 验证数据 180
12.3.1 使用Flex内置的验证器 182
12.3.2 自定制验证器 186
12.4 格式化数据 187
12.4.1 使用Flex内置的格式化控件 187
12.4.2 自定制的格式化控件 190
第13章 定制用户界面 192
13.1 使用样式和显示过滤器 192
13.2 使用皮肤 200
13.2.1 图片重置的方式构造皮肤 201
13.2.2 编程的方式构造皮肤 201
13.3 使用主题 204
13.3.1 创建主题 204
13.3.2 应用主题 204
13.4 使用字体 204
13.4.1 系统字体 204
13.4.2 设备字体 205
13.4.3 嵌入字体 205
13.4.4 设定字符范围 208
13.5 自定制载入进度条 210
13.5.1 继承DownloadProgressBar 210
13.5.2 继承Sprite并且实现
IPreloaderDisplay接口 212
第14章 使用提示和指针 215
14.1 使用提示 215
14.1.1 创建提示 215
14.1.2 使用ToolTipManager 218
14.1.3 自定制提示信息 219
14.1.4 使用错误提示 222
14.2 使用指针管理器 223
14.2.1 使用指针 223
14.2.2 使用忙碌指针 224
第15章 使用鼠标的拖曳功能 226
15.1 List、Tree和DataGrid控件
默认的拖曳功能 226
15.2 通过编程方式实现的控件
拖曳功能 229
第16章 客户端数据通信 232
16.1 使用LocalConnection进行
本地通信 232
16.2 在客户端使用共享对象存储
信息 234
16.3 Flex与浏览器的交互 236
16.3.1 从浏览器向Flex应用程序传递
参数 236
16.3.2 Flex应用程序与浏览器脚本的
交互 238
16.3.3 全局的navigateToURL方法 244
第17章 Flex中常用的元数据标签 249
17.1 ArrayElementType标签 249
17.2 Bindable标签 250
17.3 DefaultProperty标签 251
17.4 Embed标签 251
17.5 Event标签 253
17.6 Effect标签 254
17.7 IconFile标签 255
17.8 Inspectable标签 255
17.9 NonCommittingChangeEvent
标签 256
17.10 RemoteClass标签 257
17.11 Style标签 258
第18章 Flex的其他常用功能 259
18.1 使用打印 259
18.1.1 构建简单打印程序 259
18.1.2 使用PrintDataGrid打印 261
18.1.3 设置打印多页 263
18.2 创建模块化程序 267
18.2.1 如何创建模块化程序 267
18.2.2 使用模块化程序的事件机制 269
18.3 本地化Flex应用程序 271
18.3.1 使用资源文本 272
18.3.2 使用资源类 274
18.4 使用历史管理器 277
18.4.1 支持历史管理器的组件 277
18.4.2 通过编程方式支持历史
管理器 281
18.5 自定制基于列表控件的数据
呈现方式和编辑方式 282
18.5.1 Drop-in方式实现的定制数据
呈现方式和编辑方式 283
18.5.2 内嵌的数据呈现方式和编辑
方式 284
18.5.3 自定制组件的数据呈现方式和
编辑方式 287
18.5.4 编辑方式时发生的事件 291
第19章 ActionScript 3中的常用
类型 294
19.1 日期和时间 294
19.1.1 日期类——Date 294
19.1.2 计时器类——Timer 296
19.2 操作字符串 297
19.2.1 创建字符串 297
19.2.2 确定字符串的长度 299
19.2.3 操作字符串内的字符 299
19.2.4 字符串的比较 300
19.2.5 转换字符串 300
19.2.6 连接字符串 301
19.2.7 查找字符串内的字符 302
19.2.8 字符串的大小写转换 304
19.3 数组 305
19.3.1 索引数组 305
19.3.2 联合数组 314
19.3.3 多维数组 318
19.3.4 数组的克隆 320
19.3.5 数组的继承 322
19.4 正则表达式 322
19.4.1 正则表达式介绍 322
19.4.2 正则表达式语法 323
19.4.3 应用正则表达式的方法 335
19.5 XML编程 335
19.5.1 XML的基本知识 335
19.5.2 XML对象 337
19.5.3 XMLList对象 340
19.5.4 初始化XML对象 341
19.5.5 组合XML数据 343
19.5.6 访问XML的数据内容 345
19.5.7 命名空间的操作 348
19.5.8 XML、XMLList和String类之间
的转换 349
第20章 Flash Player的安全性 352
20.1 权限控制 353
20.1.1 系统管理员用户控制 353
20.1.2 指定用户控制 354
20.1.3 网络访问控制(策略文件) 355
20.1.4 编码控制 356
20.2 安全沙箱 356
20.2.1 远程沙箱 356
20.2.2 本地沙箱 356
20.3 限制网络访问的API 357
20.4 全屏模式的安全问题 358
20.5 关于LocalConnection的
安全性 361
20.6 其他 362
附录 ActionScript内置的错误类型 363
参考文献 365
前 言
Flex是Adobe公司新推出的一种用来开发RIA的解决方案。开发者使用Flex可以迅速创建具有丰富组件内容、特殊的可视化效果并且高效运行的客户端体验式应用程序。许多国外的大公司已经开始应用这项技术,譬如eBay、Amazon、Yahoo!等。
随着Flash技术的发展,Flash的应用也逐渐演化成动画设计和交互设计两个方向。Flex的出现可以说是把交互设计从Flash应用中剥离出来,开拓了一片更为专业、更为有效的交互设计的新天地。
RIA这个概念已经出现了一段时间。起初,RIA被Adobe公司定义为Rich Internet Application(丰富的Internet应用程序),后来微软公司又将RIA定义为Rich Interactive Application(丰富的交互应用程序)。作为一种创建RIA的工具或者手段,Flex技术可以说既能够满足互联网应用又能够满足交互应用。
RIA时代的到来是计算机世界发展的大势所趋,随着网络、计算机硬件和软件的发展,传统的基于浏览器的互联网应用程序必将被新一代的RIA取代,而在这场演变中的一个重要角色之一就是Flex技术。
事实上,以Flex编写的程序并不仅仅只能运行于基于互联网的浏览器中。2007年初,Adobe公司再次重拳出击推出了AIR技术。该技术让那些运用Web技术语言的开发者可以使用同样的语言编写跨操作系统的桌面式应用程序。这些网络技术包括Flash、Flex、HTML、Java Script和AJAX。开发者编写一次就可将该程序以桌面程序的方式运行于Windows或者Mac这些不同的操作系统上。为了达到出色的界面布局和交互性能,创建AIR应用程序首推Flex技术。
而对于非PC终端的手机来说,目前已经有很多手机支持Flash播放,也就是说以Flex编写的程序同样可以运行于手机客户端中。例如,2007年最有名的手机iphone上的许多界面都是Flex编写的。
当我第一次接触到Flex技术时,我的第一印象是,这个基于浏览器的应用程序真是太酷了。随着对这门技术的深入了解,我发现Flex技术正是我一直都在追寻的东西,于是撰写了此书。本书适用于那些希望系统学习Flex、MXML和ActionScript的读者,同样它也可供具有Flex开发经验的读者参考。书中的实例源代码可在随书光盘中找到。
由于编写时间仓促,书中难免有不足和疏漏,恳请读者指正。
谨以此书献给我的妻子秦臻,感谢她对我的支持和鼓励。同样感谢我的父母和姐姐。
王 睿
2007年9月
无封面