第1课 理解RIA 1
1.1理解计算机应用程序的演化过程 1
1.2超越基于页面的架构 3
1.3明确RIA的优势 4
1.3.1企业经理 4
1.3.2 IT组织 5
1.3.3终端用户 5
1.4各种RIA技术 5
1.4.1Ajax 5
1.4.2 Flash 6
1.4.3 Flex 7
1.4.4 WPF、 XAML、Silverlight和Expression 8
1.5学习收获 8
第2课 开始 9
2.1开始Flex应用程序开发 10
2.2创建项目和MXML应用程序 10
2.3理解Flex Builder 3工作平台 14
2.4运行应用程序 16
2.5创建第二个应用程序页面,然后进入设计模式 22
2.6准备下一课 26
2.7学习收获 27
第3课 布置界面 28
3.1学习容器相关知识 29
3.2用设计模式布置电子商务应用程序 30
3.3使用基于约束条件的布局 35
3.3.1使用相对父容器的约束条件 35
3.3.2使用增强型约束条件 39
3.4使用视图状态 42
3.5在源码模式中布置应用程序 45
3.6学习收获 51
第4课 使用简单的控件 52
4.1简单控件简介 53
4.2显示图片 54
4.3建立详细信息视图 57
4.4使用数据绑定将数据结构链接到简单的控件 60
4.5使用Form布局容器布置简单的控件 61
4.6将单选按钮和数据字段添加到Dashboard 65
4.7学习收获 67
第5课 处理事件和数据结构 68
5.1理解事件处理 69
5.1.1理解一个简单的例子 69
5.1.2用ActionScript函数处理事件 70
5.1.3调用事件处理函数时传递数据 71
5.2当creationComplete事件发生时建立数据结构 72
5.3使用来自事件对象的数据 75
5.4建立一个自定义的ActionScript类 78
5.5建立一个方法来创建对象 83
5.6建立购物车类 85
5.7学习收获 88
第6课 为控件使用远程XML数据 89
6.1从HTTPService中获取XML数据 91
6.1.1创建HTTPService对象 91
6.1.2调用send()方法 91
6.1.3使用返回的数据 91
6.1.4理解安全问题 93
6.2通过HTTPService获取XML数据 93
6.3将HTTPService数据填入ArrayCollection 95
6.3.1使用ArrayCollection 95
6.3.2使用Collection作为数据提供者 96
6.4将数据填入ComboBox控件并用编程方法添加选项 98
6.5在Tree控件中使用XML数据 100
6.5.1理解E4X运算符 1
6.5.2将XML数据填入Tree控件 105
6.6获取XML数据并将这些数据转换为自定义类型的ArrayCollection 110
6.7对复杂数据结构使用数据绑定 114
6.8操作购物车数据 115
6.8.1将项目添加到购物车 115
6.8.2对ArrayCollection中的项目进行排序 116
6.8.3添加项目或者更新数量 118
6.8.4使用光标定位ShoppingCartItem 119
6.9添加Remove按钮 126
6.10学习收获 127
第7课 用MXML创建组件 128
7.1介绍MXML组件 129
7.1.1理解创建自定义组件的基础知识 130
7.1.2一步步创建自定义组件 131
7.1.3在应用程序架构中使用自定义组件 132
7.2创建可更新/删除商品的组件,并将它实例化 133
7.3单击Update和Delete按钮时弹出商品信息 136
7.4创建另一个值对象 141
7.5为三个应用程序都创建数据管理器组件 143
7.6使用新的数据管理器组件 148
7.7实现添加商品的功能 152
7.8为Dashboard应用程序创建并使用组件 152
7.9学习收获 154
第8课 使用控件和Repeater控制数据集 155
8.1使用数据集 156
8.1.1理解HorizontalList和TileList组件 157
8.1.2实现labelFuntcion 158
8.1.3实现itemRenderer 159
8.2使用HorizontalList和itemRenderer显示类别信息 160
8.3基于选中的类别显示商品 163
8.3.1使用Repeater遍历数据集 164
8.3.2从重复的组件中获取数据 165
8.3.3定位Repeater建立的组件 166
8.3.4理解TileList和Repeater的性能差异 167
8.3.5基于类别显示商品 168
8.4编写状态以显示商品信息详情 173
8.5将商品放入购物车 175
8.6学习收获 177
第9课 使用自定义事件 178
9.1理解松耦合架构的优势 180
9.2分发事件 180
9.3为组件声明事件 181
9.4明确对自定义事件类的需求 182
9.5建立并使用CategoryEvent 183
9.6创建并使用ProductEvent类 186
9.6.1使用ProductEvent从购物车中移除商品 189
9.6.2使用ProductEvent向购物车添加商品 191
9.7理解事件流和事件冒泡 193
9.8学习收获 197
第10课 用ActionScript 3.0创建自定义组件 198
10.1用ActionScript构建组件 199
10.2创建类的基本结构 199
10.3重写createChildren()方法 202
10.3.1在ActionScript中创建Button 203
10.3.2使用addChild()方法向组件添加Button 203
10.3.3理解边饰和rawChildren 204
10.3.4使用rawChildren上的addChild()向边饰部分添加元素 204
10.4在Flex中定位和调整组件大小 207
10.5理解measure()方法 208
10.6重写updateDisplayList()方法 209
10.7学习收获 214
第11课 使用DataGrid与项目呈现器 215
11.1介绍DataGrid和项目呈现器 217
11.2向ChartPod添加通用的DataGrid 217
11.3向Dashboard中添加HTTPService调用 218
11.4用DataGrid显示购物车 221
11.4.1为DataGridColumn添加内联的编辑控件 223
11.4.2创建MXML的项目呈现器以显示商品 224
11.4.3创建内联的MXML项目呈现器用于显示Remove按钮 226
11.4.4使用set和get函数更新ShoppingCartItem 230
11.5使用AdvancedDataGrid 231
11.5.1为AdvancedDataGrid排序 231
11.5.2以专家模式进行排序 232
11.5.3设置AdvancedDataGrid的样式 233
11.5.4对数据进行分组 237
11.5.5显示摘要数据 241
11.6学习收获 248
第12课 使用拖放 249
12.1介绍拖放操作管理器 250
12.2在两个DataGrid之间拖放 251
12.3在DataGrid和List之间拖放 254
12.4用不可以直接拖曳组件上实现拖放操作 257
12.5将商品拖进购物车 261
12.6学习收获 265
第13课 实现导航 266
13.1导航 267
13.2在DataEntry程序中使用TabNavigator 270
13.3在电子商务应用程序中添加主页和结账页面 272
13.4创建由ViewStack显示的结账过程的第一步 275
13.5使用ViewStack完成结账过程 280
13.6学习收获 285
第14课 使用格式器和验证器 286
14.1介绍格式器和验证器 287
14.2用格式器类显示电子商务应用程序的货币信息 288
14.3使用验证器类 291
14.4用正则表达式来验证数据(第一部分) 293
14.5用正则表达式来验证数据(第二部分) 295
14.6构建自定义验证器类 297
14.7学习收获 300
第15课 实现历史管理和深度链接 301
15.1历史管理简介 302
15.2实现Navigator容器的历史管理 304
15.3构建自定义的历史管理器 305
15.4介绍深度链接 309
15.4.1实现Flex 3的深度链接 309
15.4.2为程序添加深度链接 309
15.5学习收获 313
第16课 自定义Flex应用程序的外观 314
16.1用样式和皮肤来设计 315
16.2使用样式 315
16.2.1用标签的属性设置样式 316
16.2.2理解样式继承 318
16.2.3用<mX: Style>标签设置样式 318
16.2.4用Flex Builder工具来编写CSS 320
16.2.5用CSS文件来设置样式 322
16.3在运行时修改CSS 330
16.3.1运行时修改CSS的优点 330
16.3.2从CSS文件创建SWF 331
16.3.3用StyleManager加载CSS的SWF 331
16.3.4使用加载的CSS覆盖样式 331
16.4皮肤组件 332
16.4.1图形皮肤 332
16.4.2导入CS3创建的皮肤 332
16.4.3可编程的皮肤 335
16.5学习收获 339
第17课 使用Web服务 340
17.1服务器通信介绍 342
17.2使用远程服务器调用的事件模型 342
17.3配置应用程序在本地运行 343
17.4在Dashboard中使用Web服务 344
17.4.1处理Web服务的结果 346
17.4.2调用Web服务方法 348
17.5在DataEntry程序里使用Web服务 350
17.6使用Web Service Introspection向导 355
17.7在应用程序中使用生成代码 356
17.8用Flex Builder重构 358
17.9完成生成代码的集成 359
17.10更新和删除商品 359
17.11学习收获 361
第18课 访问服务器端对象 362
18.1向服务器上传文件 363
18.2用RemoteObject来保存订单 368
18.2.1更新Flex编译器命令 369
18.2.2在结账过程分发订单确认事件 370
18.2.3创建和调用远程对象 371
18.2.4把ShoppingCart传入Checkout组件 374
18.2.5改变程序状态以将其返回Welcome页面 374
18.3把ActionScript对象映射到服务器对象 374
18.4 Flex Builder数据向导 377
18.5学习收获 380
第19课 可视化数据 381
19.1探索Flex图表组件 382
19.1.1图表类型 383
19.1.2图表软件包 383
19.1.3图表的组成部分 383
19.2布置最初的图表 384
19.3填充图表 385
19.3.1指定图表的系列 386
19.3.2向折线图和柱状图添加横轴和纵轴 391
19.4向图表添加图例 396
19.5限制轴上显示的标识数量 397
19.6与图表交互 399
19.6.1鼠标经过事件 399
19.6.2单击事件 399
19.6.3选中事件 399
19.7添加图表事件 399
19.8向图表添加动画 403
19.9用样式自定义图表外观 404
19.10学习收获 407
第20课 创建模块化的程序 408
20.1介绍Flex 3的模块化程序 409
20.2使用Flex模块 410
20.2.1使用Module类 410
20.2.2用ModuleLoader标签来代替Checkout代码 412
20.3理解RSL 413
20.4使用Flex框架RSL缓存 415
20.4.1理解框架缓存的目的 416
20.4.2使用有签名的RSL与没有签名的RSL 416
20.4.3检查程序的当前大小 416
20.4.4配置程序使用框架RSL 417
20.4.5检查框架RSL带来的差别 418
20.5创建库项目 418
20.5.1把类和资源加入库 419
20.5.2在FlexGrocer程序中使用FlexGrocerLibrary 419
20.6学习收获 420
第21课 部署Flex应用程序 421
21.1编译应用程序的部署版本 422
21.2用AIR摆脱浏览器 423
21.2.1开始AIR 423
21.2.2安装AIR 423
21.2.3安装第一个程序 424
21.3创建AIR应用程序 424
21.3.1创建新的AIR项目 425
21.3.2使Dashboard程序成为AIR应用程序 426
21.3.3用Application.xml文件定制程序 427
21.3.4导出AIR文件 429
21.4学习收获 434
第22课 创建过渡和行为 435
22.1介绍行为和过渡 436
22.1.1在组件上使用行为 436
22.1.2在视图状态上使用过渡 437
22.2在组件上实现效果 439
22.3为视图状态添加效果 440
22.4学习收获 441
第23课 Flex的打印功能 442
23.1介绍Flex的打印功能 443
23.2第一次使用Flex的打印功能 444
23.3在不可见容器中使用PrintDataGrid 445
23.4在单独的组件中构建打印视图 448
23.5调整打印输出的缩放比例 451
23.6从结账过程打印收据 453
23.7学习收获 456
第24课 使用共享对象 457
24.1介绍共享对象 458
24.1.1创建共享对象 459
24.1.2读取共享对象 460
24.2构建SharedObject来保存购物车数据 460
24.3从已有的共享对象中读取数据 463
24.4学习收获 465
第25课 调试Flex应用程序 466
25.1调试技术简介 466
25.2观察客户端与服务器端的数据交换 467
25.3学习更多调试器相关知识 468
25.3.1学习设置断点的更多相关细节 469
25.3.2在调试器中检查变量及其相关值 469
25.4使用try-catch处理错误 474
25.4.1使用try-catch语法 475
25.4.2理解错误类型 477
25.4.3使用多个catch块 477
25.4.4使用一个catch块的示例 477
25.4.5在第一个catch块中使用基类Error的不良做法示例 478
25.4.6使用finally语句 478
25.4.7使用throw语句 479
25.4.8创建自己的错误类 480
25.5学习收获 482
第26课 对Flex应用程序进行剖析 483
26.1 Flash Player的内存使用 484
26.1.1 Flash Player的内存分配 484
26.1.2按引用传递和按值传递 484
26.1.3 Flash Player的垃圾收集 485
26.1.4垃圾收集 488
26.2对Flex应用程序进行内存剖析 490
26.2.1审查ProfilerTest应用程序 490
26.2.2剖析ProfilerTest应用程序 492
26.2.3修复ImageDisplay类 496
26.3对Flex应用程序进行性能剖析 496
26.3.1剖析ProfilerTest应用程序 497
26.3.2修复ProfilerTest类 498
26.4学习收获 499
附录A 安装指南 500