目    录
          第Ⅰ部分  应用程序基础知识
         第1章  认识Flex 3
         1.1  Web应用程序为何大行其道 3
         1.2  RIA解决方案 5
         1.2.1  他们什么都想要 5
         1.2.2  RIA的解决之道 6
         1.2.3  RIA的工作原理 6
         1.3  RIA的竞争技术 6
         1.3.1  Adobe公司的Flex 7
         1.3.2  Microsoft公司的Silverlight 7
         1.3.3  Sun公司的JavaFX 8
         1.3.4  AJAX——终点站 8
         1.4  熟悉Flex 10
         1.4.1  利用Adobe Flash的优势 11
         1.4.2 Flex与JavaScript可以一起
         使用 11
         1.4.3 Flex技术体系 12
         1.5 Flex的工作原理 14
         1.5.1  Flex语言 14
         1.5.2 事件驱动的环境 16
         1.5.3  Flex的局限 17
         1.6 Flex 4的新功能 18
         1.7 小结 19
         第2章  从零开始 21
         2.1 经济的Flex开发方式 21
         2.1.1 建立编译环境 22
         2.1.2 建立编辑环境 23
         2.1.3 第三步(但愿读者还感兴趣) 24
         2.2 使用Flash Builder做真正的
         开发 24
         2.2.1 产品和价格表 25
         2.2.2 获得Flash Builder 26
         2.3 探索Flash Builder 26
         2.4 视图与视角 28
         2.4.1 预定义的视角 28
         2.4.2 切换视角 28
         2.4.3 自定义视角 29
         2.5 第一个项目——HelloWorld 30
         2.5.1 创建项目 30
         2.5.2 输入代码 32
         2.5.3 编译和运行 32
         2.5.4 查看实际效果 33
         2.6 使用设计模式 33
         2.7 内置的参考和API文档 34
         2.7.1 面向对象语言及其API 35
         2.7.2 访问API参考 35
         2.7.3 研读API参考 36
         2.8 MXML与ActionScript速写 37
         2.8.1 MXML的结构 37
         2.8.2 MXML与ActionScript的
         关系 38
         2.8.3 事件由ActionScript处理 39
         2.9 小结 41
         第3章  使用ActionScript 43
         3.1 注释 43
         3.1.1 行内注释 44
         3.1.2 多行注释 44
         3.2 变量 44
         3.2.1 变量名 44
         3.2.2 严格数据类型 44
         3.2.3 静态类型检查与动态类型
         检查 45
         3.2.4 顶级类 45
         3.2.5  特殊数据类型 46
         3.3 循环 46
         3.3.1 for(初始值;条件;递增) 47
         3.3.2 for(属性名in数组/对象) 47
         3.3.3 for each(项in数组/对象) 48
         3.3.4 while(条件) 48
         3.3.5 do while(条件) 49
         3.4 条件语句(if和switch) 49
         3.4.1 if…else 49
         3.4.2 switch语句 51
         3.5 数组 52
         3.5.1 索引数组 53
         3.5.2 关联数组 55
         3.6 ActionScript特色语法 56
         3.6.1 花括号 57
         3.6.2 逻辑操作符及快捷方式 57
         3.7 函数、类和包简介 59
         3.7.1 创建函数 59
         3.7.2 将ActionScript代码保存在
         单独的文件中 63
         3.8 简单的数据绑定 64
         3.8.1 不使用绑定 64
         3.8.2 添加绑定 64
         3.8.3  绑定标签 65
         3.8.4  使ActionScript变量可被
         绑定 66
         3.9 小结 67
         第4章  布局和容器 69
         4.1  Spark与Halo(MX) 69
         4.2 绝对布局 70
         4.3 基于约束的布局 72
         4.3.1 基本约束 73
         4.3.2 增强的约束 74
         4.4 自动布局 79
         4.4.1  使用布局类 79
         4.4.2  需要空间 81
         4.5 可变大小和固定大小 82
         4.5.1 可变大小 82
         4.5.2 固定大小 82
         4.6 容器 82
         4.6.1 Application容器 83
         4.6.2 Canvas容器 84
         4.6.3  基于Group的容器和
         SkinnableContainer 84
         4.6.4  Panel容器 87
         4.6.5  ApplicationControlBar容器 87
         4.6.6  DataGroup和
         SkinnableDataContainer 88
         4.6.7 DividedBox、HDividedBox
         和VDividedBox容器 91
         4.6.8 Form容器 92
         4.6.9 Grid容器 93
         4.7 小结 94
         第5章  显示表单与捕获用户输入 95
         5.1 id特性 96
         5.2 Flex控件分类 97
         5.2.1  Text控件 97
         5.2.2 Date控件 99
         5.2.3 Numeric控件 101
         5.2.4 Flex的按钮组件 103
         5.2.5 选单控件 108
         5.3 访问控件的值 110
         5.3.1 向函数传递值 111
         5.3.2 向函数传递事件 111
         5.3.3 直接访问属性 112
         5.3.4 应该选择哪种方式 114
         5.4 小结 114
         第6章  验证用户输入 115
         6.1 验证简介 115
         6.2 内置验证器 116
         6.2.1 Validator 117
         6.2.2 StringValidator 118
         6.2.3 NumberValidator 119
         6.2.4 DateValidator 120
         6.2.5 EmailValidator 122
         6.2.6 CreditCardValidator 123
         6.2.7 CurrencyValidator 124
         6.2.8 PhoneNumberValidator 125
         6.2.9 RegExpValidator 125
         6.2.10 SocialSecurityValidator 127
         6.2.11 ZipCodeValidator 128
         6.3 实时验证 129
         6.4 提交值验证 130
         6.5 通过性验证 130
         6.6 脚本式验证 131
         6.7 验证技巧 132
         6.7.1 验证器是否总是检查所有
         条件 132
         6.7.2 控制由什么来触发验证
         操作 133
         6.8 小结 133
         第7章  格式化数据 135
         7.1 内置格式化程序 136
         7.1.1 Formatter 136
         7.1.2 NumberFormatter 136
         7.1.3 CurrencyFormatter 138
         7.1.4 DateFormatter 139
         7.1.5 PhoneFormatter 142
         7.1.6 ZipCodeFormatter 144
         7.1.7 SwitchSymbolFormatter 145
         7.2 实时格式化 146
         7.3 脚本式格式化 147
         7.3.1 结合使用函数与格式化
         程序组件 147
         7.3.2 结合使用函数与格式化
         程序类 148
         7.4 处理格式化错误 149
         7.5 小结 150
         第8章  MX DataGrid、列表和树 151
         8.1 基于列表的一系列MX组件 151
         8.1.1 ListBase和AdvancedList
         Base的属性 152
         8.1.2 MX ListBase事件 153
         8.2 集合与dataProvider 153
         8.2.1 填充dataProvider 154
         8.2.2 集合的类型 154
         8.2.3 集合的使用者 154
         8.3 集合的初始化 155
         8.4 集合的填充 156
         8.4.1 List组件 156
         8.4.2 HorizontalList组件 159
         8.4.3 TileList组件 160
         8.4.4 DataGrid组件 162
         8.4.5 Tree组件 166
         8.5 与基于List的MX组件交互 168
         8.5.1 列表事件 168
         8.5.2 向函数传递事件 168
         8.5.3 向函数中传递数据 170
         8.5.4 直接访问被选定的行 171
         8.5.5 绑定到被选定的行 171
         8.6 小结 172
         第9章  使用Spark列表控件 173
         9.1  基于SparkList的一系列
         组件 173
         9.1.1  使用名称空间标识合适的
         组件 173
         9.1.2  使用基于List的Spark
         控件的项渲染器 174
         9.2  基于List的Spark控件 174
         9.2.1  ButtonBar控件 175
         9.2.2  SparkList控件 176
         9.2.3  DropDownList控件 177
         9.3  与基于List的Spark组件的
         交互 179
         9.3.1  选择项目时默认分发事件 179
         9.3.2  IndexChangedEvent对象 179
         9.4  理解Flex 4基于List的组件
         架构 180
         9.4.1  类层次结构 180
         9.4.2  新的基于List的Spark
         组件类 181
         9.5  在Spark架构中构建基于
         List的自定义组件 181
         9.5.1  理解Group和
         SkinnableContainer类 182
         9.5.2  构建自定义SparkList组件 182
         9.6  小结 186
         第10章  自定义列表 187
         10.1  自定义数据显示 187
         10.1.1  labelField属性 187
         10.1.2  标签函数 188
         10.1.3  标签函数的类型 189
         10.1.4  使用多列标签函数 190
         10.1.5  标签函数的用途 192
         10.1.6  从全局考虑 192
         10.2  项渲染器 192
         10.2.1  Spark MXML项
         渲染器 193
         10.2.2  在Spark中对MX组件
         使用MXML项渲染器 194
         10.2.3  创建行内项渲染器 198
         10.2.4  使用混入项渲染器 198
         10.3  项编辑器 200
         10.3.1  启用项编辑功能 200
         10.3.2  创建项编辑器 202
         10.3.3  项编辑事件 204
         10.3.4  合二为一:
         rendererIsEditor 205
         10.4  高级项渲染器 205
         10.4.1  AdvancedDataGridRenderer
         Provider 206
         10.4.2  引用列 207
         10.4.3  跨列使用 208
         10.4.4  实现通行显示 208
         10.5  滤镜函数 210
         10.6  小结 211
         第Ⅱ部分  应用程序流与结构
         第11章  事件 215
         11.1  事件系统 215
         11.1.1  事件系统——好莱坞
         原则 217
         11.1.2  事件发送系统 217
         11.2  发送和接收事件 218
         11.2.1  使用ActionScript添加
         事件监听器 220
         11.2.2  绑定事件 222
         11.2.3  移除事件监听器 225
         11.3  自定义事件 227
         11.3.1  分派自定义事件类型 227
         11.3.2  创建自定义事件 228
         11.3.3  向自定义分派器中添加
         事件元数据 232
         11.3.4  停止事件传播 234
         11.4  小结 236
         第12章  应用程序导航 237
         12.1  准备菜单数据 237
         12.1.1  嵌套的数组 238
         12.1.2  嵌套的数组集合 238
         12.1.3  模型 240
         12.1.4  XML组件和类 241
         12.1.5  XMLList组件 242
         12.1.6  XMLListCollection
         组件及类 242
         12.2  使用菜单 244
         12.2.1  创建菜单 245
         12.2.2  定位菜单 246
         12.2.3  自定义菜单项 246
         12.2.4  与菜单交互 248
         12.3  使用菜单栏 250
         12.3.1  创建菜单栏 250
         12.3.2  定位菜单栏 251
         12.3.3  自定义菜单栏中的项 251
         12.3.4  处理用户与菜单栏的
         交互 252
         12.4  使用ViewStack 254
         12.4.1  创建ViewStack 255
         12.4.2  为ViewStack添加导航
         功能 257
         12.4.3  处理用户与ViewStack的
         交互 260
         12.5  TabNavigator 261
         12.5.1  创建TabNavigator 261
         12.5.2  处理用户与TabNavigator
         的交互 262
         12.6  Accordion 263
         12.6.1  创建Accordion 263
         12.6.2  填充Accordion 264
         12.6.3  处理用户与Accordion的
         交互 265
         12.7  小结 265
         第13章  弹出式窗口简介 267
         13.1  创建首个弹出式窗口 267
         13.1.1  首先创建标题窗口 267
         13.1.2  使用PopUpManager打开
         窗口 268
         13.1.3  关闭弹出式窗口 270
         13.2  控制窗口位置 270
         13.2.1  使用centerPopUp()方法 271
         13.2.2  计算窗口的位置 271
         13.3  弹出式窗口与数据的结合 274
         13.3.1  从弹出式窗口中取得
         数据 277
         13.3.2  发送包含数据的自定义
         事件 277
         13.3.3  取出数据 278
         13.3.4  向窗口中发送数据 279
         13.4  使用警告窗口 282
         13.4.1  创建简单的警告窗口 282
         13.4.2  挖掘警告窗口的潜力 282
         13.4.3  高级警告窗口 283
         13.4.4  修饰警告窗口 284
         13.5  小结 286
         第14章  实现视图状态 287
         14.1  理解视图状态 287
         14.2  Flex中的视图状态 288
         14.2.1  使用属性 290
         14.2.2  使用事件处理程序 293
         14.2.3  使用状态组 295
         14.2.4  添加和移除组件 297
         14.2.5  更改组件的父组件 302
         14.2.6  状态事件 304
         14.3  综合运用 306
         14.4  小结 307
         第15章  使用数据服务 309
         15.1  访问服务器端数据 309
         15.1.1  使用HTTPService对象 310
         15.1.2  通过WebService组件
         使用Web服务 312
         15.2  活动消息格式 313
         15.2.1  开源AMF 314
         15.2.2  AMF与PHP 314
         15.2.3  AMF和ColdFusion 314
         15.2.4  BlazeDS 314
         15.2.5  LiveCycle Data Service 315
         15.2.6  其他技术 315
         15.3  使用Flash Builder构建以
         数据为中心的应用程序 315
         15.3.1  建立正确的环境 315
         15.3.2  与服务器建立连接 316
         15.4  使用ColdFusion进行以
         数据为中心的Flex 322
         15.5  使用Java EE和BlazeDS
         进行以数据为中心的Flex
         开发 324
         15.6  把模型绑定到视图上 325
         15.6.1  拖放式数据绑定 325
         15.6.2  生成一个大纲-细节表单 326
         15.6.3  检查Flash Builder代码 327
         15.7  小结 329
         第16章  对象和类 331
         16.1  用5分钟的时间理解OO
         理论 331
         16.1.1  对象和类的关系 331
         16.1.2  对象拥有属性和方法 332
         16.1.3  继承 333
         16.1.4  封装和耦合 334
         16.2  操作对象 335
         16.2.1  进一步了解对象 335
         16.2.2  对象的方法 336
         16.2.3  方法的参数 337
         16.2.4  方法返回信息 337
         16.3  创建类 338
         16.3.1  创建类文件 338
         16.3.2  指定包 339
         16.3.3  类修饰符 339
         16.3.4  超类:扩展类 339
         16.3.5  接口 340
         16.3.6  分析类 340
         16.4  操作属性 341
         16.4.1  添加属性 341
         16.4.2  添加getter/setter方法 342
         16.5  创建类的方法 343
         16.6  小结 346
         第17章  自定义组件 347
         17.1  理解Flex 4组件 347
         17.1.1  Spark组件架构 348
         17.1.2  自定义组件的种类 349
         17.2  创建简单的自定义组件 352
         17.2.1  构建简单的ComboBox 352
         17.2.2  简单的Spark组件 354
         17.3  使用Spark Skin对象进行
         换肤 355
         17.3.1  使用元数据绑定组件
         皮肤 356
         17.3.2  自定义组件视图状态 356
         17.3.3  定义皮肤部件 357
         17.3.4  声明host 358
         17.4  复合组件 358
         17.4.1  比较Halo与Spark 359
         17.4.2  Spark布局类 360
         17.4.3  创建MXML复合组件 361
         17.5  创建高级Flex 4组件 363
         17.5.1  使用ActionScript构建州
         选择器 363
         17.5.2  确定何时重写 364
         17.6  组件的通信 368
         17.6.1  使用getter和setter作为
         属性代理 369
         17.6.2  将变量绑定到组件
         属性 370
         17.6.3  使用事件传递数据 371
         17.7  小结 373
         第18章  创建可重用组件 375
         18.1  利用可重用性 375
         18.1.1  Reveal组件的背景 376
         18.1.2  Spark可重用性的理论和
         概念 376
         18.1.3  创建Reveal组件 378
         18.1.4  为第一个Reveal实现
         添加皮肤 380
         18.2  Reveal的新外观 383
         18.3  运行时共享库 387
         18.3.1  理解SWC文件 387
         18.3.2  RSL的类型 387
         18.3.3  在Flex应用程序中
         使用RSL 388
         18.4  小结 390
         第19章  架构设计模式 391
         19.1  Flex驱动的设计模式 392
         19.1.1  模型-视图-控制器模式 392
         19.1.2  开发自己的架构 393
         19.2  微架构简介 398
         19.2.1  微架构的简单定义 398
         19.2.2  使用微架构的原因 399
         19.2.3  第一代微架构 399
         19.2.4  第二代微架构 400
         19.2.5  控制反转和依赖注入 401
         19.3  使用Robotlegs框架 402
         19.3.1  使用Robotlegs注入
         依赖 402
         19.3.2  使用Robotlegs映射实用
         工具来配置依赖注入 403
         19.4  使用Robotlegs MVCS创建
         应用程序 408
         19.4.1  设置Robotlegs项目 409
         19.4.2  使用Context类引导
         应用程序 409
         19.4.3  对视图使用中介 411
         19.4.4  使用Robotlegs命令进行
         控制 416
         19.4.5  服务是通往外界的大门 417
         19.4.6  使用模型来管理数据
         和状态 420
         19.5  小结 422
         第Ⅲ部分  高级应用
         第20章  自定义体验 425
         20.1  用户体验设计的原则 425
         20.1.1  围绕用户故事进行构建 425
         20.1.2  考虑上下文 427
         20.1.3  VIBE模型 429
         20.2  视觉吸引力 429
         20.2.1  创建并使用主题 430
         20.2.2  使用CSS设置Flex 4
         应用程序的样式 433
         20.3  交互式体验 437
         20.3.1  使用FXG和Flash Catalyst
         CS5进行声明性设计 437
         20.3.2  使用效果增强用户体验 439
         20.4  业务优化 441
         20.4.1  使用最佳实践改进
         体验 441
         20.4.2  通过单元测试改进用户
         体验 442
         20.4.3  概要分析Flex 4中的
         应用程序 443
         20.5  可扩展性 444
         20.5.1  可扩展性与用户体验的
         间接关系 444
         20.5.2  可扩展性与用户体验的
         直接关系 445
         20.5.3  编写干净的代码以实现
         易用性 445
         20.6  小结 447
         第21章  使用效果 449
         21.1 效果的含义 449
         21.1.1 可用的效果 449
         21.1.2 合成效果 451
         21.2 使用效果 451
         21.2.1  创建效果的方式 451
         21.2.2  由事件触发的效果 451
         21.2.3 以编程方式应用效果 453
         21.2.4  使用状态过渡来触发
         效果 457
         21.3 创建合成效果 458
         21.3.1 串行效果 458
         21.3.2 并行效果 459
         21.3.3 组合合成效果 460
         21.4 探索效果 461
         21.4.1 Animate效果 462
         21.4.2  使用AnimateFilter设置
         滤镜的动画 469
         21.4.3  使用AnimateTransition
         Shader设置像素着色器
         动画 472
         21.4.4  自定义效果缓动 476
         21.4.5  在播放动画时显示
         文本 478
         21.4.6  创建声音效果 480
         21.5  小结 481
         第22章  拖放 483
         22.1 拖放过程 483
         22.2 在Flex组件中实现拖放 486
         22.2.1  内置支持拖放的组件 486
         22.2.2 在列表中启用拖放 486
         22.2.3 移动与复制 488
         22.2.4 使用拖放实现用户控制的
         排序 489
         22.2.5 多项拖放 490
         22.2.6 双向拖放 491
         22.3 使用DragManager 493
         22.3.1 DragManager的属性和
         方法 493
         22.3.2 接受或拒绝放置 494
         22.3.3 应用自定义放置方式 496
         22.4 为非列表组件添加拖放
         行为 499
         22.4.1 设置示例 499
         22.4.2 启动拖动 500
         22.4.3 使用自定义的拖动代理 502
         22.4.4 处理放置 504
         22.5 自定义拖放体验 508
         22.5.1 修改拖动代理图标 508
         22.5.2  用于拖放的List组件
         换肤 509
         22.5.3  在Spark和Halo之间混合
         拖放 510
         22.6 小结 511
         第23章  探索Flex图表 513
         23.1 图表简介 513
         23.1.1 图表的构成 514
         23.1.2 图表类型简介 514
         23.2 准备系列和数据 515
         23.3 创建图表 516
         23.3.1 调用图表 516
         23.3.2 添加图例 517
         23.3.3 改变图表类型 518
         23.3.4  过滤图表数据 520
         23.4 堆叠图表 521
         23.5 探索图表类型 522
         23.5.1 面积图 522
         23.5.2 条形图和柱状图 523
         23.5.3 折线图 525
         23.5.4 气泡图 526
         23.5.5 烛台图和HLOC图 528
         23.5.6 饼图 530
         23.5.7 散点图 533
         23.6 自定义图表 535
         23.6.1 系列笔触 535
         23.6.2 系列填充 536
         23.7 小结 538
         第24章  调试与测试 539
         24.1 调试 539
         24.1.1 安装Flash Debug Player 540
         24.1.2 使用trace()函数 540
         24.1.3  使用Flash Builder
         调试器 542
         24.1.4  监视网络活动 546
         24.2  Flex概要分析器 547
         24.3  使用自动化工具测试
         应用程序 549
         24.3.1  单元测试 550
         24.3.2  功能测试 555
         24.4 小结 557
         第25章  项目收尾 559
         25.1 自定义HTML包装器 559
         25.1.1 包装器文件 560
         25.1.2 HTML模板 560
         25.1.3  SWFObject 2 561
         25.2  部署 563
         25.2.1 创建生产版本 564
         25.2.2 放置客户端文件 565
         25.2.3 放置服务器端文件 565
         25.2.4 测试应用程序 565
         25.3 小结 566
      · · · · · ·     (
收起)