Flex 3 Cookbook中文版
Flex 3 Cookbook中文版
Joshua Noble, Todd Anderson
出版时间:2009年04月
推介一门强大技术的最好方式就是展示其在解决现实问题中所能发挥的作用,而本书正是使用这种方式来展示Adobe Flex 3技术的。
《Flex 3 Cookbook》包含了300余个行之有效的解决方案,涉及范围广泛的技术点并非常实用,有助于开发交互式富互联网应用和Web 2.0站点。能够从中找到用于操作可视化组件和进行数据访问的,从Flex基本概念到解决方案的所有内容,以及关于应用开发、单元测试和使用Adobe AIR的各种技巧。
你也可以从本书获取来自开发社区的各种新想法。在Adobe的Flex Cookbook网站(www.adobe.com/devnet/)上,众多开发者发布了他们自己在使用Flex 3过程中所用到的一些解决方案,而其中最好最有用的解决方案以及作者们所提供的大量独创的技巧,也都被引用到本书中。
本书的每一节都为一个常见问题提供了一种解决方案,并解释了该方案如何起作用,以及为什么适用于该问题,同时,提供了示例代码供你即时使用。本书讨论的内容包括:
* 容器和对话框
* 集合、数组和DataProvider
* 数据驱动组件
* 数据绑定
* DataGrid和Advanced DataGrid
* 验证、格式化和正则表达式
* 项目渲染器和编辑器
* 服务和数据访问
* 图像、位图、视频与声音
* RSL和模块
* CSS、样式和皮肤
* Adobe AIR
* 状态和效果
无论你是热衷于Flex技术的开发,还是对该技术仍处于试用评估阶段,你都能从本书介绍的技巧中即时获益。建议你从下一个Web应用开始就使用这些技巧。
Joshua Noble,RIA与互联网工程顾问,是《ActionScript 3 Bible》(Wiley)一书的合著者。他一直致力于在各种平台上的广泛应用中使用Flex和Flash技术。
Todd Anderson是Infrared5的高级软件工程师。Todd在 RIA和游戏开发领域中具有5年多的Flash平台开发经验,为很多公司(例如McGraw-Hill、Thomson、Motorola和Condé Nast)实现了多个Web和桌面解决方案。
  1. 前言 I
  2. 第1章 Flex与ActionScript基础 1
  3. 1.1 在Flex Builder中创建Flex项目 2
  4. 1.2 在Flex Builder中创建Flex 类库项目 7
  5. 1.3 创建ActionScript项目 9
  6. 1.4 在Flex Builder中为MXML编译器设置编译器选项 11
  7. 1.5 抛开Flex Builder编译Flex项目 14
  8. 1.6 在MXML中添加事件监听器 16
  9. 1.7 用ActionScript为MXML中定义的子对象设置属性 18
  10. 1.8 定义数组和对象集 20
  11. 1.9 设置ActionScript中变量的作用域 21
  12. 1.10 用ActionScript创建组件 24
  13. 1.11 使用事件冒泡 26
  14. 1.12 使用Code-Behind模式分离MXML和ActionScript 28
  15. 1.13 使组件的属性可绑定 29
  16. 1.14 使用自定义事件并随事件调度数据 30
  17. 1.15 监听键盘事件 32
  18. 1.16 为方法定义可选参数 33
  19. 1.17 确定对象的类型 34
  20. 1.18 定义和实现接口 35
  21. 第2章 菜单和控件 39
  22. 2.1 监听按钮点击 39
  23. 2.2 创建一套开关按钮 42
  24. 2.3 使用ColorPicker设置画布颜色 45
  25. 2.4 使用SWFLoader加载SWF 46
  26. 2.5 为组件设置Tab索引 46
  27. 2.6 为控件设置labelFunction 47
  28. 2.7 为菜单提供数据 48
  29. 2.8 动态构造菜单 50
  30. 2.9 为基于菜单的控件创建事件处理器 52
  31. 2.10 在应用程序中显示警告 53
  32. 2.11 通过日历控件选取日期 55
  33. 2.12 显示并定位多个弹出窗口 56
  34. 2.13 为弹出窗口创建自定义边界 59
  35. 2.14 处理focusIn和focusOut事件 60
  36. 第3章 容器 63
  37. 3.1 使用布局管理定位子对象 63
  38. 3.2 通过百分比定位设置容器的位置和尺寸 65
  39. 3.3 追踪不同坐标系中的鼠标位置 66
  40. 3.4 在容器中动态添加和删除子对象 67
  41. 3.5 对容器应用基于约束的布局 69
  42. 3.6 为容器内的子对象设置最大和最小尺寸 70
  43. 3.7 为容器指定约束行和约束列 71
  44. 3.8 使用约束为文本创建布局流 73
  45. 3.9 控制容器中的滚动显示和溢出 75
  46. 3.10 控制Box组件的布局 77
  47. 3.11 使用容器作初始化 78
  48. 3.12 创建TitleWindow 79
  49. 3.13 通过LinkBar控制ViewStack 80
  50. 3.14 将ViewStack选定项目的索引绑定到变量 81
  51. 3.15 使用延时实例化加快启动时间 83
  52. 3.16 创建和控制尺寸可调的容器 84
  53. 3.17 在TabNavigator中创建、启用和禁用TabControl 85
  54. 3.18 创建含有可关闭标签的TabNavigator 87
  55. 3.19 创建并控制Alert 88
  56. 3.20 基于调用对话框的组件对对话框进行尺寸调节和定位 90
  57. 3.21 管理多个弹出对话框 91
  58. 3.22 滚动显示到容器中特定的子对象 93
  59. 3.23 使用IDeferredInstance创建模板 94
  60. 3.24 手工为容器布局 97
  61. 3.25 度量并改变容器尺寸 101
  62. 3.26 控制子对象的可见性和布局 102
  63. 3.27 创建能够简单重新组织布局的Tile容器 104
  64. 3.28 设置HBox的背景图和圆角 106
  65. 3.29 控制子对象组件的定位和滚动 107
  66. 第4章 Text型组件 111
  67. 4.1 正确设置Text对象的值 111
  68. 4.2 为TextInput绑定值 113
  69. 4.3 创建带有提示信息的TextInput 114
  70. 4.4 创建就地编辑器 115
  71. 4.5 获取用户计算机上安装的所有字体 116
  72. 4.6 创建自定义的TextInput 118
  73. 4.7 为文本范围设置样式属性 119
  74. 4.8 在HTML中显示图像和SWF 120
  75. 4.9 在搜索字段中高亮显示用户输入的文本 121
  76. 4.10 将字符作为单个图形进行操作 123
  77. 4.11 为TextField中的HTML指定样式 126
  78. 4.12 使用RichTextEditor 127
  79. 4.13 在HTML中应用嵌入字体 128
  80. 4.14 在Text组件中为文本添加阴影 129
  81. 4.15 找到TextArea中最后显示的字符 131
  82. 第5章 List型、Tile型和Tree型组件 133
  83. 5.1 创建可编辑的列表 133
  84. 5.2 为列表中的项目设置图标 135
  85. 5.3 为列表添加效果以显示变化 136
  86. 5.4 为TileList设置基本的项目渲染器 138
  87. 5.5 为Tree设置XML数据 140
  88. 5.6 为Tree创建项目渲染器 141
  89. 5.7 在Tree控件中使用复杂数据对象 143
  90. 5.8 只允许列表中的某些项目是可选的 148
  91. 5.9 对添加到列表项目编辑器中的数据进行格式化和验证 151
  92. 5.10 追踪TileList中所有选中的子对象 153
  93. 5.11 在项目渲染器中使用并显示Null项目 156
  94. 5.12 为列表创建右键菜单 157
  95. 5.13 为列表的选中内容自定义外观 159
  96. 第6章 DataGrid和Advanced DataGrid控件 161
  97. 6.1 为DataGrid创建自定义列 161
  98. 6.2 为DataGrid列指定排序函数 164
  99. 6.3 使DataGrid支持多列排序 166
  100. 6.4 在DataGrid中过滤项目 168
  101. 6.5 为AdvancedDataGrid创建自定义标题 170
  102. 6.6 处理DataGrid/AdvancedDataGrid的事件 173
  103. 6.7 在AdvancedDataGrid中选中多个项目 176
  104. 6.8 使DataGrid支持拖放操作 179
  105. 6.9 编辑DataGrid中的项目 180
  106. 6.10 在DataGrid中搜索并自动滚动定位到匹配的项目 182
  107. 6.11 使用GroupingCollection为平面数据生成摘要 184
  108. 6.12 为GroupingCollection创建异步刷新 187
  109. 第7章 渲染器和编辑器 193
  110. 7.1 创建你自己的渲染器 193
  111. 7.2 使用ClassFactory生成渲染器 196
  112. 7.3 访问包含渲染器的组件 200
  113. 7.4 创建单一组件用作渲染器和编辑器 203
  114. 7.5 创建项目编辑器来处理含有多个字段的数据 205
  115. 7.6 通过使用项目渲染器将SWF对象显示为菜单中的项目 207
  116. 7.7 选中带有CheckBox标题渲染器的DataGrid列 209
  117. 7.8 创建在DataGrid中使用的自包含的CheckBox项目渲染器 212
  118. 7.9 有效设置渲染器中的图像 214
  119. 7.10 对itemRenderer和itemEditor应用运行时样式设置 217
  120. 7.11 对itemEditor应用State和Transition 219
  121. 7.12 创建一个CheckBox树型控件 221
  122. 7.13 调整List中渲染器的大小 226
  123. 第8章 图像、位图、视频、声音 229
  124. 8.1 加载并显示图像 230
  125. 8.2 实现视频显示 231
  126. 8.3 播放和暂停MP3文件 232
  127. 8.4 为声音文件创建进度条 234
  128. 8.5 调和两个图像 235
  129. 8.6 对图像应用卷积滤波器 238
  130. 8.7 通过摄像机发送视频到FMS实例 240
  131. 8.8 访问用户的麦克风并实现声音播放 242
  132. 8.9 对Flex应用程序中播放的视频进行平滑处理 244
  133. 8.10 检测像素级冲突 245
  134. 8.11 读取并保存用户的摄像头图像 248
  135. 8.12 对多个图像使用混合模式 250
  136. 8.13 处理FLV数据中的提示点 251
  137. 8.14 创建视频进度条 253
  138. 8.15 读取MP3文件中的ID3数据 255
  139. 8.16 加载图像时显示自定义加载器 257
  140. 8.17 用Flex实现图像上传 258
  141. 8.18 比较两幅位图 260
  142. 第9章 皮肤与样式 263
  143. 9.1 用CSS定义组件样式 264
  144. 9.2 覆盖默认的应用程序样式 266
  145. 9.3 用CSS嵌入样式 268
  146. 9.4 覆盖基本样式属性 269
  147. 9.5 在运行时自定义样式 270
  148. 9.6 运行时加载CSS 272
  149. 9.7 运行时声明样式 274
  150. 9.8 为组件创建自定义样式属性 276
  151. 9.9 在同一个应用程序中应用多种主题 279
  152. 9.10 编译主题SWC 280
  153. 9.11 使用嵌入字体 283
  154. 9.12 嵌入SWF文件中的字体 285
  155. 9.13 用嵌入图像设置皮肤 289
  156. 9.14 应用SWF文件中的皮肤 291
  157. 9.15 编程实现对组件的皮肤设置 295
  158. 9.16 编程实现对有状态控件的皮肤设置 299
  159. 9.17 创建SWF文件中的动态皮肤 302
  160. 9.18 自定义下载进度条 306
  161. 第10章 拖放操作 313
  162. 10.1 使用DragManager类 313
  163. 10.2 指定拖拽代理 317
  164. 10.3 在List内部进行拖放 319
  165. 10.4 在List之间进行拖放 322
  166. 10.5 启用和禁用放置操作 323
  167. 10.6 自定义列表类控件的拖拽图像 326
  168. 10.7 自定义列表类控件的拖动指示符 329
  169. 第11章 状态 333
  170. 11.1 在状态中设置样式和属性 334
  171. 11.2 创建进入和离开状态的过渡 335
  172. 11.3 使用AddChildAction和RemoveChildAction 337
  173. 11.4 筛选过渡影响的特定类型子项 339
  174. 11.5 对特定子项应用部分过渡 341
  175. 11.6 基于其他状态创建State 344
  176. 11.7 视图状态和HistoryManagement集成 345
  177. 11.8 在状态中使用延迟实例工厂 347
  178. 11.9 使用数据绑定状态中新增的对象 349
  179. 11.10 在状态改变时添加和删除事件监听器 351
  180. 11.11 为Flash组件添加视图状态 352
  181. 11.12 使用状态变化事件 355
  182. 11.13 动态生成和使用新的状态及过渡 357
  183. 11.14 创建状态中的自定义行为 358
  184. 第12章 效果 361
  185. 12.1 在MXML和ActionScript中调用效果 362
  186. 12.2 构造自定义效果 363
  187. 12.3 创建并行或排序方式效果 365
  188. 12.4 暂停、倒退和重启效果 366
  189. 12.5 创建自定义效果触发器 367
  190. 12.6 创建补间(Tween)效果 368
  191. 12.7 在Flex效果中使用DisplacementMapFilter滤镜 371
  192. 12.8 创建AnimateColor效果 375
  193. 12.9 使用卷积滤镜创建补间效果 376
  194. 第13章 集合 381
  195. 13.1 在ArrayCollection中添加、排序和获取数据 381
  196. 13.2 对ArrayCollection进行过滤处理 384
  197. 13.3 判定ArrayCollection中的项目何时被修改 385
  198. 13.4 创建一个GroupingCollection 386
  199. 13.5 为控件创建一个分层结构的数据源 387
  200. 13.6 遍历集合对象并保存当前位置 392
  201. 13.7 创建一个HierarchicalViewCollection对象 394
  202. 13.8 对XMLListCollection过滤和排序 396
  203. 13.9 对集合中的多个字段排序 398
  204. 13.10 按日期对集合排序 399
  205. 13.11 创建ArrayCollection的深度拷贝 400
  206. 13.12 为数据对象应用唯一IDs 402
  207. 第14章 数据绑定 405
  208. 14.1 绑定到属性 406
  209. 14.2 绑定到函数 408
  210. 14.3 创建双向绑定 410
  211. 14.4 用ActionScript绑定到属性 411
  212. 14.5 使用可绑定属性链 415
  213. 14.6 用E4X将XML绑定到属性上 417
  214. 14.7 创建自定义的可绑定属性 419
  215. 14.8 绑定到一个通用对象 423
  216. 14.9 绑定到动态类中的属性 425
  217. 第15章 验证、格式化和正则表达式 431
  218. 15.1 对TextInput和TextArea控件应用验证器和格式化器 432
  219. 15.2 创建自定义的格式化器 434
  220. 15.3 使用正则表达式创建国际邮政编码验证器 436
  221. 15.4 创建一个用于验证UPC码的验证器 438
  222. 15.5 验证组合框和单选按钮组 440
  223. 15.6 使用表单中的ToolTip显示验证错误信息 443
  224. 15.7 使用正则表达式查找电子邮件地址 446
  225. 15.8 使用正则表达式匹配信用卡号码 446
  226. 15.9 使用正则表达式验证ISBNs 447
  227. 15.10 用显式字符类创建正则表达式 447
  228. 15.11 在正则表达式中使用字符类型 448
  229. 15.12 使用子表达式匹配有效的IP地址 450
  230. 15.13 使用正则表达式作不同类型的匹配 451
  231. 15.14 用正则表达式匹配行的开头和结尾 453
  232. 15.15 使用反向引用 453
  233. 15.16 使用顺序环视或逆序环视 455
  234. 第16章 应用服务和服务器端通信 457
  235. 16.1 配置HTTPService 458
  236. 16.2 在Flex应用程序之间使用RESTful通信 460
  237. 16.3 配置并连接到RemoteObject] 461
  238. 16.4 使用Flex Remoting与AMFPHP1.9通信 464
  239. 16.5 使用IExternalizable接口实现自定义序列化 468
  240. 16.6 追踪多个同时发生的服务调用的结果 470
  241. 16.7 使用发布/订阅消息机制 471
  242. 16.8 在Flex应用程序中注册服务器端数据类型 472
  243. 16.9 与WebService通信 474
  244. 16.10 向发送到WebService的请求中添加SOAP头信息 476
  245. 16.11 解析WebService返回的SOAP响应 477
  246. 16.12 使用SecureAMFChannel实现AMF的安全通信 479
  247. 16.13 由二进制套接字发送和接收二进制数据 480
  248. 16.14 使用XMLSocket通信 482
  249. 第17章 浏览器通信 483
  250. 17.1 链接到外部URL 483
  251. 17.2 使用FlashVars 484
  252. 17.3 在Flex中调用JavaScript函数 486
  253. 17.4 在JavaScript中调用ActionScript函数 487
  254. 17.5 用BrowserManager修改HTML页标题 489
  255. 17.6 用BrowserManager解析URL 490
  256. 17.7 用BrowserManager深度链接数据 492
  257. 17.8 用BrowserManager深度链接容器 493
  258. 17.9 实现自定义历史管理 496
  259. 第18章 模块和运行时共享库 499
  260. 18.1 创建运行时共享库 500
  261. 18.2 使用跨域的运行时共享库 503
  262. 18.3 使用Flex Framework作为运行时共享库 505
  263. 18.4 优化运行时共享库 507
  264. 18.5 创建基于MXML的模块 508
  265. 18.6 创建基于ActionScript的模块 510
  266. 18.7 使用ModuleLoader加载模块 512
  267. 18.8 使用ModuleManager加载模块 514
  268. 18.9 从其他服务器加载模块 516
  269. 18.10 与模块进行通信 518
  270. 18.11 用URL参数为模块传递数据 523
  271. 18.12 使用连接报告优化模块 526
  272. 第19章 Adobe集成运行环境API 529
  273. 19.1 用Flex Framework创建AIR应用程序 530
  274. 19.2 理解AIR命令行工具 532
  275. 19.3 打开并管理本地窗口 537
  276. 19.4 创建本地菜单 541
  277. 19.5 读写文件 544
  278. 19.6 序列化对象 546
  279. 19.7 使用加密的本地存储 551
  280. 19.8 浏览文件 553
  281. 19.9 使用AIR文件系统控件 555
  282. 19.10 使用本地拖放API 558
  283. 19.11 结合使用操作系统剪贴板 562
  284. 19.12 添加HTML内容 564
  285. 19.13 ActionScript和JavaScript之间的跨脚本调用 567
  286. 19.14 结合使用本地SQL数据库 570
  287. 19.15 检测并监控网络连接 575
  288. 19.16 检测用户在线状态 577
  289. 19.17 创建系统托盘和停靠栏应用程序 578
  290. 第20章 使用FlexUnit进行单元测试 581
  291. 20.1 创建使用FlexUnit Framework的应用程序 582
  292. 20.2 创建应用程序运行FlexUnit测试 582
  293. 20.3 创建FlexUnit测试用例 584
  294. 20.4 将测试用例添加到测试套件中 587
  295. 20.5 在每个测试前后运行指定代码 588
  296. 20.6 在测试用例之间共享测试数据 590
  297. 20.7 处理测试用例中的事件 592
  298. 20.8 用FlexUnit测试可视化组件 596
  299. 20.9 安装和配置Antennae 605
  300. 20.10 生成自动化的测试套件 607
  301. 第21章 编译和调试 611
  302. 21.1 抛开Flex Builder使用Trace语句 611
  303. 21.2 使用组件编译器 612
  304. 21.3 安装Flex Ant任务 614
  305. 21.4 在Flex Ant任务中使用compc和mxmlc任务 615
  306. 21.5 编译和部署使用RSL的Flex应用程序 616
  307. 21.6 在Flex Builder调试器中创建和监控表达式 618
  308. 21.7 在独立安装的Flex Builder中安装Ant视图 620
  309. 21.8 为自动执行通用任务创建Ant Build文件 621
  310. 21.9 使用mxmlc和Ant编译Flex应用程序 622
  311. 21.10 使用ASDoc和Ant生成文档 624
  312. 21.11 使用Rake编译Flex应用程序 625
  313. 21.12 在应用程序中使用ExpressInstall 626
  314. 21.13 使用Flex Builder 3的内存剖析查看内存快照 628
  315. 第22章 配置、国际化和打印 631
  316. 22.1 为应用程序添加国际化字符集 631
  317. 22.2 使用资源集本地化应用程序 633
  318. 22.3 在本地化中使用ResourceManager 637
  319. 22.4 在本地化中使用资源模块 639
  320. 22.5 支持IME设备 642
  321. 22.6 探测屏幕阅读器 644
  322. 22.7 为无障碍应用创建Tab读取顺序 645
  323. 22.8 打印应用程序中选中的项目 646
  324. 22.9 为打印输出格式化应用程序内容 647
  325. 22.10 控制跨多页打印未知长度的内容 649
  326. 22.11 打印时添加页眉和页脚 650
  327. 索引 655
书名:Flex 3 Cookbook中文版
国内出版社:中国电力出版社
出版时间:2009年04月
书号:978-0-596-52985-7
原版书出版商:O'Reilly Media
Joshua Noble
 
Joshua Noble是一位交互设计师和开发者。除本书外,他还是《Flex 4 Cookbook》(O’Reilly出版社,2010年5月)一书的第一作者。他致力于为公共空间、技术和微型计算的交叉领域设计人性化的产品和服务,目前正在研究人们如何参与真实和虚拟的
社区。
 
 
Todd Anderson
 
Todd Anderson是Infrared5的高级软件工程师。Todd在 RIA和游戏开发领域中具有5年多的Flash平台开发经验,为很多公司(例如McGraw-Hill、Thomson、Motorola和Condé Nast)实现了多个Web和桌面解决方案。