第1章 认识Flex 3 1
1.1 Flex简介 2
1.1.1 什么是Flex 2
1.1.2 Flash和Flex的区别 2
1.2 熟悉Flex Builder 3开发环境 3
1.2.1 系统要求 3
1.2.2 了解Flex Builder 3 4
1.3 如何配置Flex Builder 3 5
1.3.1 自定义界面 6
1.3.2 编译参数设置 7
1.4 MXML语言概述 8
1.4.1 MXML语言标签 8
1.4.2 标签属性 8
1.4.3 使用ActionScript 3 9
1.5 项目类型概述 10
1.5.1 Flex项目 10
1.5.2 ActionScript项目 16
1.5.3 Library项目 18
1.5.4 AIR项目 24
1.6 命令行编译项目 27
1.7 使用项目和简单调试 29
1.7.1 导入项目 29
1.7.2 关闭/删除项目 31
1.7.3 项目的历史记录 32
1.7.4 运行时调试 33
1.7.5 断点管理 34
1.7.6 观察变量 35
1.8 本章小结 36
第2章 ActionScript 3入门及面向对象基础 37
2.1 变量和运算符 38
2.1.1 变量 38
2.1.2 变量的作用域 39
2.1.3 变量的默认值 43
2.1.4 运算符 43
2.1.5 算术运算符 44
2.1.6 赋值运算符 45
2.1.7 关系运算符 45
2.2 数据类型 46
2.2.1 基本数据类型 46
2.2.2 数据类型转换 47
2.3 字符串 49
2.3.1 创建字符串 50
2.3.2 字符串比较 51
2.3.3 连接字符串 52
2.3.4 字符串的查找和替换 52
2.3.5 字符串转换大小写 54
2.4 数组 55
2.4.1 数组的定义 55
2.4.2 数组的访问 56
2.4.3 数组常用函数 57
2.4.4 多维数组 59
2.5 条件语句 60
2.5.1 关系运算和逻辑运算 60
2.5.2 if…else语句 61
2.5.3 if…else if语句 61
2.5.4 switch语句 62
2.5.5 ?:操作符 63
2.6 循环控制 63
2.6.1 for语句 63
2.6.2 for…in语句 64
2.6.3 for each...in 64
2.6.4 while语句 65
2.6.5 do…while语句 65
2.7 函数 66
2.7.1 函数的基本概念 66
2.7.2 函数的参数 67
2.7.3 函数的返回值 69
2.7.4 函数的递归调用 69
2.8 良好的编程习惯 70
2.8.1 变量的使用 71
2.8.2 语句的注意事项 73
2.8.3 编写函数的规则 76
2.9 面向对象编程简介 76
2.10 类 77
2.10.1 类的定义 78
2.10.2 类属性 79
2.10.3 构造函数 80
2.11 属性和方法 81
2.11.1 属性与方法的抽象 81
2.11.2 属性和方法的访问属性 81
2.11.3 属性的访问方法 82
2.11.4 静态成员 83
2.12 接口 84
2.12.1 定义接口 84
2.12.2 实现接口 85
2.13 继承 86
2.13.1 基类和派生类 86
2.13.2 方法的重载 87
2.13.3 不能继承静态属性 88
2.14 类的实例化 89
2.15 HelloAS代码分析 89
2.16 本章小结 91
第3章 Flex 3中的事件 93
3.1 事件概述 94
3.1.1 Flex事件概述 94
3.1.2 Flex事件一览 97
3.2 事件机制 98
3.2.1 事件注册 98
3.2.2 事件触发 99
3.2.3 事件传递 100
3.2.4 事件的默认行为 102
3.2.5 绑定基础 105
3.3 鼠标事件 106
3.3.1 使用鼠标事件 106
3.3.2 鼠标事件的关联 109
3.3.3 右击及双击事件 111
3.3.4 鼠标事件的触发顺序 113
3.4 键盘事件 116
3.4.1 使用键盘事件 116
3.4.2 关于keyCode 118
3.4.3 键盘事件的优先级 119
3.5 自定义事件 121
3.5.1 如何自定义事件 121
3.5.2 在MXML中自定义事件 123
3.6 本章小结 126
第4章 容器与组件 127
4.1 使用组件 128
4.1.1 使用Label、Text、TextInput和TextArea组件 128
4.1.2 使用RichTextEditor文本编辑组件 130
4.1.3 使用ComboBox下拉列表组件 131
4.1.4 使用Alert对话框 133
4.1.5 使用RadioButton和RadioButtonGroup组件 135
4.1.6 使用ProgressBar进度条组件 136
4.1.7 使用PopUpButton和PopUpMenuButton组件 138
4.1.8 使用List、HorizontalList和TileList列表组件 140
4.1.9 使用Menu和MenuBar组件 143
4.1.10 使用DataGrid组件 147
4.1.11 使用Tree组件 148
4.1.12 使用ColorPicker颜色选择器 151
4.1.13 使用Repeater组件 153
4.2 使用容器 155
4.2.1 定位和布局 155
4.2.2 导航容器 158
4.3 本章小结 164
第5章 数据绑定与数据模型 165
5.1 数据绑定 166
5.1.1 使用[Bindable]元数据标签 166
5.1.2 MXML中常用的绑定方式 169
5.1.3 使用ActionScript进行绑定 172
5.1.4 绑定动态类型数据 178
5.2 数据模型 180
5.2.1 使用外部XML文件 181
5.2.2 将数据绑定到数据模型 181
5.2.3 使用ActionScript创建数据模型 183
5.3 本章小结 186
第6章 用户输入验证 187
6.1 输入验证基础 188
6.1.1 第1个验证的例子 188
6.1.2 验证事件 189
6.1.3 标准验证器 191
6.2 正则表达式验证器 195
6.2.1 正则表达式基础 195
6.2.2 正则表达式语法 198
6.2.3 使用正则表达式验证器 201
6.3 高级验证 203
6.3.1 自定义验证器 204
6.3.2 多字段验证 207
6.4 错误提示的样式 210
6.5 本章小结 211
第7章 控制管理器 213
7.1 系统管理器SystemManager 214
7.1.1 应用创建过程 214
7.1.2 加载进度条 215
7.1.3 管理顶级显示对象 216
7.2 模块管理器ModuleManager 218
7.3 拖放管理器DragManager 224
7.3.1 传统拖放实现 224
7.3.2 使用DragManager实现拖放 226
7.3.3 使用DragSource 228
7.3.4 使用List 中的拖放支持 231
7.4 光标管理器CursorManager 232
7.5 弹出窗口管理器PopUpManager 235
7.5.1 Alert弹出窗口 235
7.5.2 使用PopUpManager定制弹出窗口 237
7.5.3 弹出窗口的层次 242
7.6 提示管理器ToolTipManager 243
7.6.1 关于ToolTip 243
7.6.2 管理ToolTip的ToolTipManager 246
7.6.3 创建自定义提示 250
7.7 浏览器管理器BrowserManager 252
7.8 资源管理器ResourceManager 256
7.9 焦点管理器FocusManager 266
7.10 本章小结 268
第8章 使用元数据标签 269
8.1 常用的元数据标签 270
8.1.1 [ArrayElementType]元数据标签 270
8.1.2 [Bindable]元数据标签 271
8.1.3 [DefaultProperty]元数据标签 271
8.1.4 [Deprecated]元数据标签 272
8.1.5 [Effect]元数据标签 273
8.1.6 [Embed]元数据标签 273
8.1.7 [Event]元数据标签 279
8.1.8 [Exclude]元数据标签 279
8.1.9 [ExcludeClass]元数据标签 280
8.1.10 [IconFile]元数据标签 280
8.1.11 [Inspectable]元数据标签 281
8.1.12 [InstanceType]元数据标签 283
8.1.13 [NonCommitting ChangeEvent]元数据标签 283
8.1.14 [RemoteClass]元数据标签 284
8.1.15 [Style]元数据标签 284
8.1.16 [Transient]元数据标签 285
8.2 特殊的元数据标签 285
8.2.1 [AccessibilityClass]元数据标签 285
8.2.2 [ChangeEvent]元数据标签 286
8.2.3 [CollapseWhiteSpace]元数据标签 287
8.2.4 [Frame]元数据标签 287
8.2.5 [Mixin]元数据标签 292
8.2.6 [PercentProxy]元数据标签 293
8.2.7 [ResourceBundle]元数据标签 294
8.2.8 [SWF]元数据标签 294
8.3 自定义元数据标签 295
8.3.1 创建自定义metadata标签 295
8.3.2 通过反射机制使用自定义元数据标签 299
8.4 本章小结 306
第9章 行为与动画效果 307
9.1 什么是行为 308
9.1.1 触发器与效果 308
9.1.2 简单效果组件 309
9.1.3 复合效果组件 316
9.2 使用行为 317
9.2.1 控制效果播放 318
9.2.2 通过Style添加行为 319
9.2.3 使用缓动函数 321
9.2.4 自定义缓动函数 323
9.2.5 使用位图缓存策略 324
9.3 自定义行为 325
9.3.1 自定义效果 325
9.3.2 自定义触发器 330
9.4 使用视图状态 332
9.4.1 视图状态简介 332
9.4.2 添加状态过渡 336
9.4.3 创建自定义覆盖类 338
9.5 本章小结 340
第10章 样式和皮肤 341
10.1 Flex中的CSS 342
10.2 皮肤 346
10.2.1 应用皮肤 346
10.2.2 制作图形皮肤 347
10.3 在Flex设计模式下使用样式 348
10.4 使用嵌入字体 351
10.4.1 嵌入字体文件 351
10.4.2 使用高级抗锯齿功能 353
10.4.3 设定嵌入字符范围 354
10.4.4 通过SWF文件嵌入字体 355
10.5 主题 359
10.5.1 使用主题 359
10.5.2 创建主题 360
10.6 样式编程 360
10.6.1 使用样式管理器 360
10.6.2 运行时载入样式 363
10.6.3 字体管理 365
10.6.4 可编程皮肤 367
10.7 本章小结 375
第11章 高级组件开发 377
11.1 组件的生命周期 378
11.2 扩展UIComponent组件 380
11.2.1 UIComponent中的高级方法 380
11.2.2 使用ActionScript创建自定义组件 382
11.3 列表类组件 386
11.3.1 ItemRenderer项目渲染器 386
11.3.2 ItemEditor项目编辑器 397
11.3.3 IFactory接口与ClassFactory类 407
11.4 使用延迟技术 410
11.4.1 延迟创建组件 410
11.4.2 按顺序实例化容器 413
11.4.3 向Application创建队列中动态添加容器 414
11.4.4 使用callLater()方法 416
11.4.5 使用IDeferredInstance接口 419
11.5 代码分离形式的自定义组件 422
11.6 本章小结 426
第12章 外部数据交互 427
12.1 与封装器页面通信 428
12.1.1 从页面获取数据 429
12.1.2 与JavaScript交互 431
12.2 Flex-Ajax桥 434
12.2.1 建立Flex-Ajax桥 434
12.2.2 使用Flex-Ajax桥 438
12.3 使用LocalConnection 441
12.4 使用URLLoader 443
12.4.1 加载文件 444
12.4.2 后台数据交互 446
12.5 HTTPService 449
12.5.1 通过MXML使用HTTPService 450
12.5.2 通过ActionScript使用HTTPService 451
12.6 WebService 453
12.6.1 通过MXML使用WebService 453
12.6.2 通过ActionScript使用WebService 456
12.7 使用FileReference和FileReferenceList 458
12.7.1 上传文件 458
12.7.2 下载文件 462
12.8 Socket入门 464
12.8.1 Socket简介 465
12.8.2 使用Socket读取外部数据的实例 465
12.8.3 XMLSocket类 468
12.9 本章小结 469
第13章 使用Remoting 471
13.1 AMFPHP 472
13.1.1 安装配置AMFPHP 472
13.1.2 打个招呼 474
13.1.3 使用对象映射 478
13.1.4 连接数据库 481
13.1.5 使用ActionScript代替MXML标签 487
13.1.6 使用NetConnection 489
13.2 WebORB 490
13.2.1 创建支持WebORB的ASP.NET网站 491
13.2.2 创建Flex工程 492
13.2.3 使用WebORB 494
13.2.4 数据映射 496
13.3 FluorineFx 498
13.3.1 创建支持Fluorine的ASP.NET网站 498
13.3.2 创建Flex工程 500
13.3.3 使用FluorineFx 502
13.4 本章小结 503
第14章 模块编程 505
14.1 模块简介 506
14.2 第1个模块应用 507
14.3 模块加载和卸载 514
14.4 模块数据共享 517
14.5 实例:图表模块应用 524
14.6 本章小结 530
第15章 运行时共享库RSLs 531
15.1 运行时共享库简介 532
15.1.1 什么是运行时共享库 532
15.1.2 运行时共享库和模块编程 533
15.2 创建并使用库文件SWC 533
15.2.1 创建SWC 534
15.2.2 SWC文件结构 534
15.2.3 静态引用SWC 534
15.3 使用SWC作为RSLs 538
15.3.1 动态引用 538
15.3.2 跨域使用 542
15.3.3 框架RSLs 543
15.4 选择使用RSLs 545
15.5 本章小结 545
第16章 共享对象 547
16.1 共享对象基础 548
16.1.1 什么是共享对象 548
16.1.2 共享对象的操作 551
16.1.3 共享对象的安全 552
16.2 使用本地共享对象 553
16.2.1 单一应用使用 554
16.2.2 多个应用使用 556
16.3 使用远程共享对象 558
16.3.1 服务器端技术 558
16.3.2 实例:共同控制的对象 571
16.3.3 实例:聊天大厅 573
16.4 自定义数据类型 576
16.5 本章小结 579
第17章 Cairngorm框架 581
17.1 单例模式 582
17.2 Cairngorm体系 583
17.2.1 值对象(ValueObject) 583
17.2.2 视图层(View) 584
17.2.3 数据模型(Model) 584
17.2.4 控制器(Control) 585
17.2.5 命令(Commands) 587
17.2.6 业务逻辑(Business) 588
17.3 创建Flickr图片搜索工具 592
17.3.1 准备工作 592
17.3.2 使用Adobe提供的flickr库 593
17.3.3 工作流程及结构设计 595
17.3.4 代码编写 596
17.3.5 项目发布 613
17.4 本章小结 613
第18章 PureMVC框架 615
18.1 基本结构 616
18.1.1 整体结构 616
18.1.2 模块结构 618
18.2 模块功能 618
18.2.1 Model和Proxy 618
18.2.2 View和Mediator 620
18.2.3 Controller和Command 626
18.2.4 Facade 628
18.3 应用实例:天气预报 630
18.3.1 构建框架 630
18.3.2 View设计 631
18.3.3 Model设计 639
18.3.4 Controller设计 643
18.3.5 完成Facade 645
18.4 其他框架 647
18.5 本章小结 648
第19章 留言板实例 649
19.1 界面和功能需求 650
19.2 Flex架构设计 651
19.3 程序分析 652
19.3.1 vo文件夹 652
19.3.2 model文件夹 655
19.3.3 events文件夹 657
19.3.4 service文件夹 659
19.3.5 controller文件夹 661
19.3.6 view文件夹 665
19.3.7 DiaboLab应用程序 677
19.4 项目发布 680
19.5 本章小结 681
附录A ActionScript与.NET类型转换表 683
附录B Flash Player的安全机制 687
B.1 安全沙箱 688
B.2 Security.sandboxType属性 688
B.3 跨域策略文件crossdomain.xml 689
B.4 跨脚本访问 690
B.5 设置管理器 690