Flex 4实战
编辑推荐
《Flex 4实战》由Flex业界的几位重量级人物(Tariq Ahmed、Dan Orlando、John C. Bland II和Joel Hooks)编写而成,具有很高的质量。
《Flex 4实战》是亚马孙畅销书《Flex 3实战》的又一升级版,它对上一版做了全面更新,可以帮助读者深入理解Flex 4。
基本信息
- 作者: (美)Tariq Ahmed Dan Orlando John C. Bland II Joel Hooks
- 译者: 郭俊凤
- 出版社:清华大学出版社
- ISBN:9787302270416
- 上架时间:2012-1-9
- 出版日期:2012 年1月
内容简介
flex已经从原来构建flash应用程序的一种方式发展成为一个丰富的体系。flex 4中引入了新的ui组件,提供了更好的性能监控,并且大大提高了编译速度。
《flex 4实战》是一本全面的指南,为web设计人员和开发人员提供了flex的详细介绍。《flex 4实战》从基础讲起,介绍了有关表单和数据的知识,然后逐渐过渡到核心概念,如导航、拖放和事件。即使读者刚刚接触flex,在阅读本书之后也可以使用新增的spark组件、数据服务、图表设计、特殊效果等,使自己的应用程序广受欢迎。本书的读者需要具备基本的开发技能,但是不要求以前使用过flex。
主要内容
◆如何设计并制作应用程序
◆使用图表构建交互式仪表板
◆使用网络监控和单元测试提高工作效率
◆使用主题和皮肤使应用程序具有独特的外观
《flex 4实战》是一本全面的指南,为web设计人员和开发人员提供了flex的详细介绍。《flex 4实战》从基础讲起,介绍了有关表单和数据的知识,然后逐渐过渡到核心概念,如导航、拖放和事件。即使读者刚刚接触flex,在阅读本书之后也可以使用新增的spark组件、数据服务、图表设计、特殊效果等,使自己的应用程序广受欢迎。本书的读者需要具备基本的开发技能,但是不要求以前使用过flex。
主要内容
◆如何设计并制作应用程序
◆使用图表构建交互式仪表板
◆使用网络监控和单元测试提高工作效率
◆使用主题和皮肤使应用程序具有独特的外观
目录
《flex 4实战》
第ⅰ部分 应用程序基础知识
第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和advancedlistbase的属性 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
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和advancedlistbase的属性 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