《Adobe Flex 3高级编程》PDF下载

  • 购买积分:30 如何计算积分?
  • 作  者:(加)班得逊,(美)海德著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:7302262503
  • 页数:1218 页
图书介绍:

第Ⅰ部分 Flex概述 3

第1章 使用Flex的理由 3

1.1 Flex的含义 3

1.2 RIA的含义 3

1.3 受欢迎的Flex 6

1.3.1 揭秘Flash和Flex 7

1.3.2 用户喜爱Flex的十大理由 11

1.4 本章小结 14

第2章 Flex 3生态系统 15

2.1 Flex历史简介 15

2.2 Adobe Flex 3生态系统 17

2.2.1 运行时 17

2.2.2 语言 23

2.2.3 框架和API 26

2.2.4 数据通信 28

2.2.5 服务器 29

2.3 Adobe Flex RIA工作流程 31

2.3.1 设计与开发 32

2.3.2 运行 32

2.3.3 通信 33

2.3.4 基本设施 33

2.4 Flex生态系统未来的扩展 33

2.5 本章小结 34

第3章 ActionScript 3.0基础 35

3.1 核心语言概念 35

3.1.1 基本语法 35

3.1.2 保留关键字 36

3.1.3 变量和数据类型 37

3.2 控制结构 37

3.2.1 条件语句 37

3.2.2 循环 39

3.3 使用类和数据类型 40

3.3.1 值类型 40

3.3.2 数字型 41

3.3.3 字符串 42

3.3.4 数组 43

3.3.5 向量 45

3.3.6 对象 45

3.3.7 类型转换 46

3.3.8 自检 47

3.4 面向对象编程 49

3.4.1 Obiect类 50

3.4.2 包和类 50

3.4.3 类特性 51

3.4.4 类成员 51

3.4.5 接口和继承 56

3.5 本章小结 57

第4章 运用ActionScript 3.0 58

4.1 Flash平台框架 58

4.2 显示编程 59

4.3 事件模型 59

4.3.1 事件类和类型 60

4.3.2 事件进程 60

4.3.3 事件流 62

4.3.4 EventDispatcher类 62

4.4 Flash Player API 63

4.4.1 Display API 63

4.4.2 Flash AIR的API 67

4.4.3 Flash 10的API 68

4.5 本章小结 72

第5章 Flex Builder 3 73

5.1 Flex Builder入r 73

5.1.1 Flex Builder和Eclipse 74

5.1.2 学习Flex和获取帮助 74

5.2 Flex Builder 3工作台 78

5.2.1 工作区 79

5.2.2 创建和交换工作区 79

5.2.3 工作区配置 79

5.2.4 编辑器 80

5.2.5 视图 80

5.2.6 透视图 81

5.2.7 创建自定义透视图 84

5.3 Flex Builder 3中的新内容 84

5.3.1 新向导 84

5.3.2 设计模式的增强 84

5.3.3 开发功能的增强 84

5.3.4 CS3套件的整合 85

5.4 本章小结 85

第Ⅱ部分 使用Flex 3开发应用程序第6章 使用Flex Builder 3 89

6.1 Flex编译过程 89

6.1.1 开发 89

6.1.2 编译 90

6.1.3 发布 91

6.2 关于项目 91

6.3 创建Flex应用程序 93

6.3.1 创建一个Flex项目 93

6.3.2 使用设计模式 95

6.3.3 使用数据绑定 100

6.3.4 使用触发器和特效 101

6.3.5 编译应用程序 101

6.4 创建ActionScript应用程序 102

6.4.1 创建ActionScript项目 102

6.4.2 比较文件大小 105

6.5 非正式的SWF元数据标记 105

6.6 本章小结 107

第7章 MXML基础 108

7.1 语言原则 108

7.1.1 MXML是XML 108

7.1.2 命名约定 108

7.1.3 MXML语法 109

7.1.4 显示层次 109

7.1.5 MXML名称空间 110

7.2 使用MXML 113

7.2.1 MXML标签 113

7.2.2 MXML属性 115

7.2.3 使用MXML和CSS 119

7.2.4 使用MXML和ActionScript 120

7.3 本章小结 127

第8章 使用Flex Builder 3进行开发 128

8.1 项目管理 128

8.1.1 项目属性 128

8.1.2 导出项目 132

8.1.3 导入项目 132

8.1.4 导航项目 134

8.2 创建应用程序 139

8.2.1 创建调试版本 139

8.2.2 创建导出版本 140

8.2.3 激活源视图 141

8.3 语言智能 144

8.3.1 编辑代码 144

8.3.2 代码参数 146

8.3.3 代码自检 146

8.3.4 键盘快捷键 148

8.4 本章小结 149

第9章 自定义Flex Builder 3 150

9.1 优化Flex Builder性能 150

9.1.1 项目开发的最佳实践 150

9.1.2 Eclipse的性能管理 152

9.2 定制工作台 156

9.2.1 编辑工作区列表 156

9.2.2 使用自定义快捷方式 157

9.2.3 高效的布局 158

9.2.4 管理工作区首选项 159

9.3 使用Flex Builder代码库 160

9.3.1 使用本地历史数据 160

9.3.2 用于Subversion源代码管理的Subclipse插件 162

9.3.3 分离本地项目 177

9.4 本章小结 181

第Ⅲ部分 使用组件 185

第10章 组件的生命周期和类的层次结构 185

10.1 Flex应用程序中Flash的作用 185

10.2 Flex框架的生命周期 186

10.2.1 逐帧 186

10.2.2 生命周期 187

10.3 Flex类的层次 189

10.3.1 Flash和Flex类的程序包 189

10.3.2 UIComponent 189

10.3.3 容器类 191

10.3.4 List类 192

10.3.5 Formatters类、Validators类和Collection类 192

10.3.6 框架的功能和事件 194

10.4 本章小结 195

第11章 数据绑定和事件的使用 196

11.1 使用花括号{} 196

11.2 [Bindable]元数据 199

11.3 事件 200

11.3.1 捕获阶段 201

11.3.2 目标阶段 201

11.3.3 冒泡处理阶段 202

11.4 终止事件 202

11.5 事件侦听器 203

11.5.1 使用MXML 204

11.5.2 使用ActionScript 204

11.6 事件类型 205

11.7 自定义事件 205

11.7.1 创建自定义事件 205

11.7.2 [Event]元数据 206

11.7.3 使用自定义事件的策略 207

11.8 本章小结 208

第12章 用户接口控件与容器 209

12.1 静态控件 209

12.1.1 mx.controls.Label与mx.controls.Text 209

12.1.2 mx.controls.Image 209

12.1.3 mx.controls.SWFLoader 210

12.1.4 mx.controls.HRule和mx.controls.VRule 211

12.1.5 mx.controls.ProgressBar 211

12.2 输入控件 212

12.2.1 mx.controls.Button和mx.controls.LinkButton 212

12.2.2 mx.controls.TextInput与mx.controls.TextArea 212

12.2.3 mx.controls.NumericStepper 213

12.2.4 mx.controls.DateChooser and mx.controls.DateField 213

12.2.5 mx.controls.CheckBox 214

12.2.6 mx.controls.ComboBox 214

12.2.7 mx.controls.RadioButton and mx.controls.RadioButton-Group 215

12.2.8 mx.controls.HSlider和mx.controls.VSlider 216

12.2.9 mx.controls.RichTextEditor 216

12.2.10 mx.controls.PopUpButton 217

12.2.11 mx.controls.PopUpMenuButton 218

12.2.12 mx.controls.ColorPicker 218

12.3 布局容器 219

12.3.1 mx.containers.Canvas 219

12.3.2 mx.container.VBox和mx.container.HBox 220

12.3.3 mx.containers.HDividedBox和mx.containersVDividedBox 220

12.3.4 mx.core.Application、mx.containers.Panel以及mx.containers.TitleWindow 221

12.3.5 mx.containers.Grid 222

12.3.6 mx.containers.Tile 224

12.3.7 mx.containers.Form 225

12.3.8 mx.containers.ControlBar 226

12.3.9 mx.containers.Application-ControlBar 226

12.4 导航组件 227

12.4.1 创建策略 227

12.4.2 mx.containers.Accordion 227

12.4.3 mx.containers.TabNavigator 228

12.4.4 mx.containers.ViewStack 229

12.4.5 mx.controls.LinkBar 230

12.4.6 mx.controls.TabBar 230

12.4.7 mx.containers.MenuBar与mx.controls.Menu 230

12.4.8 mx.controls.ButtonBar和mx.controls.ToggeButtonBar 231

12.5 列表控件 232

12.6 本章小结 233

第13章 布局策略 234

13.1 坐标定位 234

13.2 约束定位 234

13.3 用百分比定位 236

13.4 对齐定位 237

13.5 高级约束 238

13.5.1 ConstraintColumns(列约束) 239

13.5.2 ConstraintRows(行约束) 240

13.5.3 ActionScript中的约束 240

13.5.4 约束规格 241

13.6 使用includeInLayout 241

13.7 性能注意事项 242

13.8 本章小结 242

第14章 用户界面的整合 243

14.1 创建表单 243

14.1.1 提交表单内容 246

14.1.2 使用Flex Builder设计视图构建表单 247

14.1.3 设置表单上的defaultButton(默认按钮) 247

14.2 自定义提示条 248

14.3 构建弹出控件 250

14.3.1 警告 250

14.3.2 使用PopUpManager 252

14.3.3 与弹出式控件交互 254

14.4 自定义光标 256

14.4.1 光标管理 256

14.4.2 忙碌状态的光标 256

14.4.3 手形光标 257

14.4.4 自定义光标 257

14.5 本章小结 258

第15章 AIR入门 259

15.1 AIR的用途 259

15.1.1 使用AIR的原因 260

15.1.2 使用AIR构建的应用程序 260

15.1.3 AIR的需求 260

15.2 构建AIR应用程序 262

15.2.1 IntroToAIR.mxml文件 262

15.2.2 IntroToAIR-app.xml描述文件 263

15.3 AIR配置文件 264

15.4 创建一个AIR应用程序(第Ⅱ部分) 268

15.4.1 修改IntroToAIR.mxml窗口 268

15.4.2 MainWindow.mxml文件 270

15.4.3 IntroToAIR-app.xml描述文件 271

15.5 本章小结 273

第Ⅳ部分 高级组件开发 277

第16章 自定义ActionScript组件 277

16.1 企业商标示例 278

16.1.1 UIComponent和IUIComponent 278

16.1.2 CompanyLogo.as 278

16.2 组件结构 280

16.2.1 组件属性和Flex框架生命周期 281

16.2.2 无效函数 281

16.2.3 添加子组件 282

16.2.4 使用invalidateProperties()函数并且将属性应用到组件中 283

16.2.5 测量组件 284

16.2.6 组件布局 285

16.2.7 为组件选择基类 287

16.2.8 设置子组件的大小 288

16.3 RockerSwitch示例 290

16.4 本章小结 297

第17章 自定义MXML组件 298

17.1 MXML与ActionScript组件 298

17.2 定制布局 299

17.2.1 重写updateDisplayList()函数 299

17.2.2 重写layoutChrome()函数 301

17.2.3 创建元数据标签 302

17.3 构建模板组件 303

17.3.1 DefaultProperty元标签 304

17.3.2 构建自定义子组件 305

17.4 扩展MXML组件 305

17.5 本章小结 306

第18章 扩展Flex组件 307

18.1 复合组件浅析 307

18.2 构建复合组件 308

18.2.1 属性 308

18.2.2 事件 309

18.2.3 布局 311

18.3 扩展现有组件 311

18.3.1 扩展Button 311

18.3.2 扩展TextInput 313

18.3.3 扩展UIComponent与标准组件 314

18.3.4 外观和行为 314

18.4 自定义容器 315

18.4.1 应用Flex组件生命周期 316

18.4.2 标签云 316

18.4.3 自定义复合组件 318

18.5 本章小结 320

第19章 高级事件编程 321

19.1 自定义事件与标准事件 321

19.1.1 继承标准事件 323

19.1.2 一个与多个 323

19.2 向AS类和MXML文件添加元数据 323

19.2.1 为自定义组件添加自定义事件 324

19.2.2 处理事件运行时错误 324

19.3 事件流 325

19.3.1 事件优先级 325

19.3.2 阻止或更改默认行为 325

19.3.3 转发事件 326

19.4 自定义数据绑定 328

19.4.1 使用可绑定的元数据标签 328

19.4.2 自定义数据绑定与可绑定的元数据标签 328

19.5 使用BindingUtils 331

19.5.1 ActionScript中自定义的数据绑定 331

19.5.2 ChangeWatcher 332

19.6 本章小结 332

第20章 状态管理 334

20.1 状态的概念 334

20.2 添加States属性 335

20.2.1 使用Flex Builder的Design View创建States属性 335

20.2.2 更改States属性 337

20.2.3 测试示例 337

20.3 MXML标签 338

20.3.1 添加组件 338

20.3.2 删除组件 339

20.3.3 消失,但却没有销毁 339

20.3.4 设置和更改属性与样式 340

20.3.5 更改事件处理程序 340

20.3.6 数据绑定 341

20.4 在ActionScript中创建状态 341

20.5 真实的状态管理 343

20.6 常见问题 343

20.6.1 States与ViewStack 343

20.6.2 优化 344

20.7 本章小结 345

第21章 库的应用 347

21.1 ActionScript库 347

21.1.1 Flash Player库 347

21.1.2 Flex库 348

21.2 SWC和SWF 348

21.3 使用Flex Builder创建库 349

21.3.1 创建库项目 349

21.3.2 添加资源 350

21.3.3 创建SWC 350

21.4 使用COMPC创建库 351

21.4.1 COMPC选项 352

21.4.2 添加资源 352

21.4.3 指定清单文件 352

21.5 针对组件库的最佳实践 353

21.5.1 共享源目录 353

21.5.2 建立后进行销售 354

21.6 应用库 354

21.6.1 libs文件夹 354

21.6.2 构建路径 354

21.6.3 利用库中的资源 355

21.6.4 使用SWC文件 356

21.7 本章小结 356

第Ⅴ部分 可视化效果与多媒体 359

第22章 样式 359

22.1 CSS样式 359

22.1.1 内联样式与CSS 359

22.1.2 组件样式 361

22.1.3 基于约束的CSS布局 363

22.1.4 CSS样式和类继承 365

22.1.5 CSS样式和子组件 366

22.2 本章小结 369

第23章 皮肤与主题 370

23.1 皮肤的含义 370

23.1.1 嵌入式资源 370

23.1.2 编程皮肤 371

23.1.3 应用皮肤 371

23.1.4 为每个对象定义皮肤 372

23.1.5 在样式表中定义皮肤 373

23.1.6 缩放和九宫网格 374

23.1.7 在运行时更改样式 376

23.2 主题 378

23.2.1 默认的Flex 3主题 379

23.2.2 应用主题 379

23.2.3 创建主题 380

23.2.4 分离主题到库中 380

23.3 本章小结 381

第24章 视觉特效 382

24.1 Flex特效 382

24.1.1 内置的Flex特效 384

24.1.2 应用特效 391

24.1.3 数据特效 392

24.1.4 缓和功能 394

24.1.5 复合特效 394

24.1.6 转场效果 399

24.1.7 特效事件 401

24.1.8 3D特效 402

24.1.9 Flex 4的特效 402

24.2 本章小结 402

第25章 动态皮肤和绘图API 404

25.1 绘图API 404

25.2 可编程的皮肤 413

25.3 额外的绘图API功能 416

25.3.1 遮罩 417

25.3.2 过滤器 418

25.3.3 混合模式 419

25.3.4 Degrafa 419

25.4 本章小结 420

第26章 Flash集成 421

26.1 Flash平台的开发流 421

26.2 Flash-Flex工作流 423

26.3 在Flash中创建Flex组件的皮肤 424

26.4 剥离自定义Flex组件的皮肤 429

26.4.1 规划自定义Flex组件 429

26.4.2 构建Flex组件 430

26.4.3 构建Flash皮肤 432

26.4.4 Flex组件的皮肤 436

26.5 本章小结 439

第27章 加载外部资源 440

27.1 加载图像 440

27.2 SWFLoader类 443

27.3 Loader类 443

27.4 运行时的共享库 448

27.5 本章小结 448

第28章 视频和声音 449

28.1 引进媒体的方法 449

28.1.1 可用的文件格式 449

28.1.2 整合媒体内容 450

28.2 渐进性加载和流 454

28.2.1 Sound类 455

28.2.2 SoundLoaderContext类 455

28.2.3 播放和控制声音 456

28.2.4 访问ID3信息 460

28.2.5 SoundMixer类 462

28.2.6 Microphone类 463

28.3 视频 463

28.3.1 视频类和组件 463

28.3.2 VideoDisplay组件 470

28.3.3 提示点 472

28.3.4 Camera类 472

28.3.5 未存档的视频类 473

28.3.6 Flash Player MovieStar Update 473

28.4 本章小结 477

第29章 高级Flash集成 478

29.1 将Flex类应用到Flash中 478

29.1.1 通过RSL导入Flex自定义类 478

29.1.2 导入本地Flex类 479

29.2 将Flash加载到Flex中 480

29.2.1 适合Flash CS3的Flex Component Kit 480

29.2.2 向Flex中导入Flash本地组件 484

29.2.3 Flex组件的自定义状态和转场效果 488

29.3 本章小结 498

第Ⅵ部分 数据管理 501

第30章 处理数据 501

30.1 XML 501

30.1.1 快速的XML入门 501

30.1.2 XML和ActionScript:在E4X之前 503

30.1.3 XML和ActionScript 3.0:使用E4X 505

30.2 集合API 511

30.2.1 IList 511

30.2.2 ICollectionView 511

30.2.3 ListCollectionView 514

30.3 关联数组/词典 517

30.3.1 使用字符串作为关键字 518

30.3.2 使用对象作为关键字 518

30.4 Repeater 520

30.4.1 执行过程中 520

30.4.2 执行后 521

30.4.3 交互处理 522

30.4.4 不使用Repeater 522

30.5 本章小结 523

第31章 格式化程序与验证器 524

31.1 概述 524

31.2 格式化程序 524

31.2.1 使用标准格式化程序 525

31.2.2 如何处理输入数据错误 528

31.3 验证器 529

31.3.1 使用标准验证器 530

31.3.2 更改默认的错误消息 532

31.3.3 触发验证 533

31.4 ActionScript 3中的正则表达式 534

31.4.1 通用正则表达式用例 534

31.4.2 正则表达式入门 535

31.5 RegExpValidator:验证器的验证器 535

31.6 定制和集中格式化程序、验证器 536

31.6.1 集中格式化程序 536

31.6.2 集中验证器 537

31.7 本章小结 539

第32章 使用列表组件 540

32.1 ListBase无处不在 540

32.2 使用List类 544

32.2.1 列表的项编辑功能 544

32.2.2 子列表 545

32.3 Menu类 546

32.3.1 创建Menu对象 546

32.3.2 使用Menu类 547

32.4 TileBase类 547

32.4.1 HorizontalList类 547

32.4.2 TileList类 548

32.5 List、HorizontalList和TileList优化内存消耗 548

32.6 本章小结 549

第33章 高级数据控件 550

33.1 概述 550

33.2 树型结构 550

33.2.1 给树添加数据 551

33.2.2 改变树的外观 552

33.2.3 应用树型控件 553

33.3 DataGrid 555

33.3.1 填充DataGrid 555

33.3.2 使用列 556

33.3.3 处理事件 557

33.4 定制呈现器 558

33.4.1 定制单元格 558

33.4.2 标题 562

33.5 AdvancedDataGrid 563

33.5.1 实现AdvancedDataGrid 563

33.5.2 在AdvancedDataGrid中对数据分组 564

33.5.3 AdvancedDataGrid中的分层数据 565

33.6 OLAPDataGrid 566

33.6.1 OLAP简介 566

33.6.2 使用OLAPDataGrid 566

33.7 本章小结 570

第34章 Flex中的拖放操作 571

34.1 概述 571

34.2 处理支持拖放的组件 571

34.2.1 使列表能够进行拖放操作 573

34.2.2 移动项 574

34.2.3 避免复制 574

34.3 处理拖放事件 574

34.4 对不支持拖放的组件添加拖放支持 575

34.4.1 将组件设置为拖放初始器 576

34.4.2 将组件设置为释放目标对象 577

34.5 另外一些有关拖放的提示 578

34.5.1 自定义DragSource格式 578

34.5.2 自定义拖动代理 578

34.5.3 保留信息类型 579

34.6 本章小结 579

第35章 在AIR中的拖放 580

35.1 AIR拖放概述 580

35.1.1 Clipboard 580

35.1.2 The NativeDragManager 583

35.2 从AIR应用程序中拖动数据 585

35.2.1 图像中的剪贴板数据 585

35.2.2 延迟数据 588

35.3 向AIR应用程序中拖动文件 588

35.4 本章小结 592

第36章 使用图表组件 593

36.1 理解图表 593

36.1.1 为图表分配数据 593

36.1.2 图表类型 594

36.1.3 图表坐标轴 602

36.1.4 图系列 603

36.1.5 图表数据提示 604

31.1.6 图例 605

36.2 运行时的图表交互 605

36.2.1 处理用户交互 605

36.2.2 编程交互 606

36.3 定制图表的外观 606

36.3.1 自定义渲染器 606

36.3.2 设置样式 607

36.3.3 效果 607

36.4 本章小结 608

第37章 资源包和数据的本地化 609

37.1 概述 609

37.2 使用属性文件的L10n 610

37.2.1 理解属性文件 610

37.2.2 字符编码处理 611

37.2.3 在Flex项目中构建区域设置 612

37.3 在Flex 3中实现i18n 614

37.4 在运行时加载资源 617

37.4.1 资源模块 617

37.4.2 以编程方式生成ResourceBundle 618

37.4.3 资源与模块配对 618

37.5 全球化AIR应用程序 618

37.6 本章小结 619

第Ⅶ部分 客户端通信 623

第38章 Flex中的浏览器通信 623

38.1 了解Web上下文 623

38.2 使用flashVars将数据传递到Flex中 623

38.3 链接到外部页面URL 626

38.4 与JavaScript交互 626

38.4.1 从Flex中调用JavaScript 626

38.4.2 从JavaScript函数调用ActionScript函数 627

38.4.3 在ActionScript和JavaScript之间传递数据 628

38.5 使用Flex-Ajax桥 636

38.6 禁用浏览器集成 637

38.7 本章小结 638

第39章 HTML与AIR的混合 639

39.1 在AIR应用程序中嵌入HTML的理由 639

39.2 YouTube示例 640

39.3 在AIR中显示HTML 640

39.3.1 加载远程内容 640

39.3.2 加载内存中的内容 642

39.3.3 加载本地文件的内容 642

39.4 与JavaScript交互 644

39.4.1 从ActionScript调用嵌入式JavaScript 644

39.4.2 从JavaScript调用ActionScript 646

39.4.3 从ActionScript控制HTML DOM 647

39.5 本章小结 647

第40章 深链接 649

40.1 Web上的深链接 649

40.2 深链接与Flex 649

40.3 Flex 3对深链接的支持 651

40.3.1 使用BrowserManager API 651

40.3.2 在后台:Flex中的深链接如何工作 655

40.4 真实的深链接:空间图像浏览器 656

40.4.1 示例2:使用导航状态 657

40.4.2 实例3:更复杂的图像浏览器 659

40.5 搜索引擎索引和优化 663

40.6 相关的技术和工具 664

40.6.1 SWFAddress 664

40.6.2 UrlKit 665

40.6.3 历史记录管理器 665

40.7 本章小结 666

第41章 Flex中的系统交互 667

41.1 检测客户端系统性能 667

41.2 全屏显示 672

41.3 启用上下文菜单 675

41.3.1 添加和删除上下文菜单选项 675

41.3.2 上下文菜单中的调用操作 678

41.4 系统交互的局限性 681

41.4.1 全屏模式的局限性 681

41.4.2 自定义上下文菜单的局限性 681

41.5 本章小结 682

第42章 利用AIR技术实现本地桌面支持 683

42.1 处理窗口 683

42.1.1 构建本地窗口 683

42.1.2 Native Window Explorer 688

42.2 本地菜单 689

42.2.1 上下文菜单 689

42.2.2 窗口级别与应用程序级别的菜单 695

42.3 与System Tray/Dock交互 697

42.4 检测用户状态 699

42.5 监视网络连接 700

42.6 AIR的性能与Flash运行库 701

42.7 启用全屏模式 702

42.8 本章小结 702

第43章 Local Connection与共享对象 703

43.1 概述 703

43.2 LocalConnection类 703

43.2.1 SWF之间的通信 703

43.2.2 跨域边界 705

43.2.3 使用数据 707

43.2.4 在40KB限制下正常工作 707

43.2.5 标准的LocalConnection错误 707

43.3 使用本地共享对象 708

43.3.1 创建或检索本地共享对象 708

43.3.2 在本地共享对象中存储数据 708

43.3.3 从本地共享对象检索数据 708

43.3.4 显式保存本地共享对象 709

43.3.5 删除属性和销毁本地共享对象 710

43.3.6 补充信息 710

43.3.7 序列化自定义类 713

43.4 本章小结 714

第44章 Flex的文件管理 715

44.1 概述 715

44.2 使用FileReference类 716

44.2.1 处理FileReference类的事件 716

44.2.2 文件上传 717

44.2.3 用FileReference类下载文件 719

44.2.4 取消文件的上传或下载 720

44.3 使用多个文件 720

44.4 服务端需考虑的事项 721

44.5 本章小结 722

第45章 AIR的本地文件管理 723

45.1 文件操作 723

45.1.1 引用目录 723

45.1.2 引用文件 724

45.1.3 导航路径 724

45.2 同步和异步API 725

45.2.1 同步复制文件 726

45.2.2 异步复制文件 727

45.3 其他的文件和目录操作 728

45.3.1 检查存在性 728

45.3.2 删除文件和目录 728

45.3.3 移动文件和目录 729

45.3.4 枚举目录 729

45.3.5 创建临时目录和文件 730

45.4 使用本地文件对话框 730

45.4.1 本地目录浏览器 730

45.4.2 用于打开对话框的本地浏览器 732

45.4.3 打开多个对话框的本地浏览器 733

45.4.4 本地文件保存对话框 734

45.5 读取和写入文件数据 735

45.5.1 将位图数据另存为JPEG文件 735

45.5.2 从文件中读取XML数据 737

45.6 文件系统控件 737

45.7 加密本地数据 739

45.7.1 写入数据 740

45.7.2 读取数据 740

45.7.3 删除数据 740

45.8 本章小结 741

第Ⅷ部分 服务器集成 745

第46章 RPC服务简介 745

46.1 概述 745

46.2 mx.rpc库 746

46.2.1 MXML与ActionScript类之间的差异 747

46.2.3 参数绑定与显式参数传递 748

46.3 使用HTTPService组件 748

46.4 使用WebService组件 750

46.4.1 在MXML中使用WebService 751

46.4.2 把WSDL操作转换为MXML请求 752

46.4.3 在ActionScript中调用WebService 753

46.5 调试远程服务调用 755

46.5.1 网络数据包探查 755

46.5.2 mx.rpc库中的调试跟踪 755

46.6 选择协议与服务器实现 759

46.7 AMF的另一种服务器实现方案 759

46.8 本章小结 760

第47章 错误处理 761

47.1 通过同步代码处理异常 761

47.1.1 Flash Debug Player与Release Player 761

47.1.2 Try/Catch/Finally 762

47.1.3 异常冒泡 764

47.1.4 自定义错误类型 766

47.1.5 THROW 766

47.1.6 函数中的错误处理 767

47.2 事件的异步错误处理 768

47.2.1 重要的错误事件 768

47.2.2 Debug Player中的异步事件 769

47.3 本章小结 770

第48章 Flex和Flash媒体服务器 771

48.1 使用FMS视频流的好处 771

48.2 安装应用程序和了解实例 773

48.3 在Flex中开发FMS 773

48.4 基于FMS理解Netstream类 778

48.5 缓存控制 779

48.6 发布视频 779

48.7 数据流 782

48.8 本章小结 784

第49章 Flex和Zend框架下的REST风格的Web服务 785

49.1 REST风格的Web服务 785

49.2 REST风格的路由示例API 786

49.2.1 设置服务器和开发环境 787

49.2.2 可能需要的客户端软件 789

49.3 Zend框架的工作原理 790

49.4 Flex示例应用程序 792

49.4.1 从一个REST风格的服务中检索数据 793

49.4.2 使用REST风格的服务创建和更新数据 798

49.4.3 从REST风格的服务中删除数据 800

49.5 本章小结 800

第50章 集成Flex和Java 801

50.1 Routes Web Service简介 801

50.2 设置服务器和开发环境 802

50.2.1 服务器端软件需求 802

50.2.2 可能需要的客户端软件 803

50.3 Grails Routes Web Service 804

50.4 Flex示例应用程序 807

50.4.1 RouteService.as服务类 807

50.4.2 使用IResponder 807

50.4.3 使用自定义的服务器端错误 810

50.5 本章小结 814

第51章 .NET与Flex环境下的Web服务 815

51.1 Routes Web Service简介 815

51.2 设置服务器和开发环境 816

51.2.1 服务端软件需求 816

51.2.2 可能需要的客户端软件 817

51.3 .NET Routes Web Service 817

51.4 Flex示例应用程序 821

51.4.1 Import Web Service(WSDL)工具 821

51.4.2 访问Web服务 823

51.4.3 处理自定义的服务器端错误 824

51.5 本章小结 826

第52章 通过AIR访问离线数据 827

52.1 SQLite简介 827

52.2 同步与异步 828

52.3 创建数据库 828

52.3.1 异步打开一个数据库 829

52.3.2 同步打开一个数据库 830

52.3.3 使用数据定义语言 831

52.4 使用数据 833

52.4.1 创建数据 833

52.4.2 检索数据 836

52.4.3 更新数据 836

52.4.4 删除数据 838

52.5 使用事务导入数据 839

52.6 使在线数据可脱机访问 841

52.6.1 向SQLite数据库导入XML 841

52.6.2 为SQLite导入程序改进XML 845

52.7 使用第三方SQLite数据库管理应用程序 846

52.8 本章小结 846

第Ⅸ部分 数据服务 849

第53章 LCDS简介 849

53.1 LCDS概述 849

53.2 理解LCDS 850

53.2.1 数据服务解决方案 851

53.2.2 客户端架构 851

53.2.3 服务器架构 853

53.2.4 服务类型 854

53.2.5 通信通道 856

53.2.6 动作消息格式(AMF) 857

53.3 使用Flex Builder创建LCDS项目 857

53.3.1 新的Flex项目向导 858

53.3.2 配置应用服务器 860

53.4 故障排除 862

53.4.1 日志 862

53.4.2 服务器端调试 863

53.5 本章小结 863

第54章 LCDS与ColdFusion 864

54.1 ColdFusion 8与集成的LCDS 864

54.1.1 LCDS特定ColdFusion安装窗口 864

54.1.2 LCDS特定ColdFusion管理员窗口 866

54.2 事件网关 867

54.2.1 DataServicesMessaging 868

54.2.2 DataManagement 868

54.3 数据管理 868

54.4 本章小结 869

第55章 消息服务 870

55.1 消息服务概述 870

55.2 消息服务技术简介 870

55.2.1 发布与订阅 871

55.2.2 生产者与使用者 871

55.2.3 通过通道传递消息 871

55.2.4 从服务器发布消息 871

55.3 使用消息服务 871

55.3.1 在服务器上配置目标地址 872

55.3.2 在客户端上创建消息 873

55.3.3 发送消息 875

55.3.4 接收消息 876

55.3.5 在MXML中声明生产者和使用者 877

55.3.6 过滤消息 877

55.3.7 检测连接性 878

55.3.8 从服务器发布 879

55.4 消息服务应用程序 881

55.4.1 示例1:聊天室 881

55.4.2 示例2:股票价格监控系统 884

55.4.3 示例3:生成PDF文档 888

55.5 本章小结 894

第56章 数据管理服务 896

56.1 概述 896

56.2 为什么要使用DMS 896

56.2.1 关于域建模 896

56.2.2 创建、读取、更新、删除 897

56.2.3 用户之间的数据共享 897

56.2.4 大数据集的分页 897

56.2.5 偶尔的连接性 898

56.3 眼见为实:Six-Line Demo 898

56.3.1 第1行:声明一个数据服务 899

56.3.2 第2行:为托管数据声明一个集合 899

56.3.3 第3行:为数据网格提供托管数据 900

56.3.4 第4行:填充集合 900

56.3.5 第5行:提交更改和同步客户端 900

56.3.6 第6行:撤销更改 900

56.3.7 后台操作 900

56.4 DMS技术解释 901

56.4.1 客户端组件和服务器组件 901

56.4.2 托管数据 901

56.4.3 托管关系 902

56.4.4 客户端编程 902

56.4.5 服务器集成 904

56.4.6 客户端与服务器端的协作 905

56.5 应用程序示例:DMS Fleet Tracker 905

56.5.1 域建模 905

56.5.2 DMS的配置 908

56.5.3 自定义汇编程序 911

56.5.4 客户端编码 914

56.5.5 进一步的思考 917

56.6 本章小结 917

第57章 高级数据管理服务 918

57.1 DMS概述 918

57.2 概要到细节建模 918

57.3 克服项挂起的错误 920

57.4 管理共享和用户特定的数据 921

57.4.1 一个简单的即时消息系统 921

57.4.2 创建新的MessageDetails项 922

57.4.3 创建和传递用户消息 922

57.4.4 到NIO端点的流式AMF 924

57.5 深入学习 925

57.6 本章小结 926

第58章 Data Service Stress Testing Framework 927

58.1 概述 927

58.2 数据管理服务应用程序的压力测试 928

58.2.1 先决条件 929

58.2.2 编写测试应用程序 929

58.2.3 配置服务器 931

58.2.4 配置和启动浏览器服务器 934

58.2.5 编译Test Administrator 934

58.2.6 运行压力测试 935

58.3 深入讨论 936

58.3.1 参数化测试应用程序 936

58.3.2 预先配置Test Administrator 936

58.3.3 创建定制的测试报告 937

58.4 本章小结 938

第59章 使用BlazeDS 939

59.1 概述 939

59.2 BlazeDS的功能 939

59.2.1 服务器和客户端组件 940

59.2.2 通信通道 941

59.2.3 集成点 941

59.3 开发BlazeDS项目 941

59.3.1 安装BlazeDS即用版 942

59.3.2 创建组合的Flex/Java项目 943

59.3.3 使用远程对象 945

59.3.4 HTTP和Web服务 952

59.4 本章小结 956

第Ⅹ部分 使用Cairngorm 959

第60章 MVC框架 959

60.1 什么是MVC 959

60.2 MVC组件 959

60.2.1 了解数据模型 960

60.2.2 了解视图 960

60.2.3 了解控制器 961

60.2.4 把三者组合在一起 961

60.3 为什么使用MVC 962

60.3.1 抽象 962

60.3.2 组件重用 962

60.3.3 分布式开发 962

60.3.4 维护 963

60.3.5 有最权威的MVC吗 963

60.4 组件架构的MVC方法 963

60.5 本章小结 964

第61章 Cairngorm简介 965

61.1 概述 965

61.2 Cairngorm交互的步骤 965

61.2.1 用户动作 966

61.2.2 分派一个事件 966

61.2.3 命令执行 968

61.2.4 委托业务功能 969

61.2.5 定位和调用一个服务 970

61.2.6 模型的定位和更新 971

61.2.7 变化在视图中的反映 973

61.3 本章小结 975

第62章 Cairngorm应用 976

62.1 概述 976

62.2 主要角色 977

62.3 前端控制器 982

62.3.1 前端控制器的内部构造 982

62.3.2 ShopController 983

62.3.3 声明前端控制器 984

62.4 Caimgorm事件 984

62.4.1 事件类 985

62.4.2 事件类型 985

62.4.3 事件作为参数对象 986

62.4.4 自分派事件 987

62.4.5 Cairngorm命令 987

62.4.6 业务委托 990

62.4.7 在命令中使用业务委托 990

62.4.8 创建业务委托 991

62.4.9 服务定位器 992

62.4.10 值对象 994

62.5 本章小结 997

第63章 高级Cairngorm 998

63.1 表示模型模式 998

63.1.1 使用Caimgorm表示模型 999

63.1.2 Cairngorm表示模型的示例应用程序 1000

63.1.3 域模型 1003

63.1.4 进一步讨论 1003

63.2 组织Caimgorm项目 1003

63.2.1 小型Cairngorm项目 1004

63.2.2 大型Cairngorm项目 1004

63.3 Caimgorm的反模式 1005

63.3.1 胖控制器 1005

63.3.2 废物处理定位器模型 1007

63.3.3 依赖的链 1008

63.4 自定义Cairngorm 1009

63.4.1 记录Cairngorm事件和命令 1009

63.4.2 安排异步命令的执行时间 1010

63.4.3 将依赖性注入命令中 1012

63.4.4 存根服务层 1013

63.4.5 分散控制器 1014

63.4.6 可释放的控制器 1015

63.5 本章小结 1016

第Ⅺ部分 应用程序开发策略 1019

第64章 最佳实践 1019

64.1 编码标准 1019

64.1.1 一致性 1019

64.1.2 清晰性 1019

64.1.3 整洁性 1020

64.2 面向对象的原则 1026

64.2.1 封装 1026

64.2.2 使用公有/私有/受保护的/最终函数 1027

64.2.3 继承 1028

64.2.4 代码隐藏 1035

64.3 本章小结 1036

第65章 安全模型 1037

65.1 了解安全沙箱 1037

65.2 什么是crossdomain.xml 1038

65.2.1 allow-access-from 1039

65.2.2 allow-http-request-headers-from 1040

65.2.3 site-control和元策略 1041

65.3 本地沙箱 1042

65.3.1 local-with-filesystem 1042

65.3.2 local-with-networking 1043

65.3.3 local-trusted 1043

65.4 本章小结 1044

第66章 模块化应用程序开发 1045

66.1 概述 1045

66.2 为什么要进行模块化开发 1046

66.3 构建组件 1046

66.4 运行时共享库 1046

66.5 使用Module类和ModuleLoader类 1047

66.5.1 跨模块通信 1050

66.5.2 跨模块数据访问 1055

66.6 本章小结 1061

第67章 应用程序性能策略 1062

67.1 理解对象的创建策略 1062

67.2 针对性能构建数据 1063

67.2.1 延迟加载数据 1063

67.2.2 多重服务调用的影响 1064

67.3 管理事件侦听器和数据绑定 1064

67.3.1 集合事件 1065

67.3.2 清理无用的事件侦听器 1066

67.3.3 弱引用事件侦听器 1066

67.3.4 手动清理事件侦听器 1067

67.4 关联数组和字典 1068

67.5 使用图形 1069

67.5.1 帧率 1070

67.5.2 使用位图缓存 1070

67.5.3 管理外部SWF内容 1070

67.5.4 对象缓存和回收 1071

67.6 本章小结 1072

第68章 使用ASDoc创建项目文档 1073

68.1 什么是ASDoc 1073

68.2 使用ASDoc 1074

68.3 ASDoc注释和格式 1074

68.3.1 ASDoc标记 1075

68.3.2 类 1076

68.3.3 函数 1076

68.3.4 属性 1077

68.3.5 getter和setter函数 1078

68.3.6 元数据 1080

68.3.7 HTML格式 1080

68.3.8 引用外部元素 1081

68.3.9 排除生成的输出中的类 1082

68.3.10 应用自定义模板 1083

68.4 本章小结 1083

第69章 使用AIR部署桌面 1084

69.1 代码签名和证书 1084

69.1.1 获取证书 1085

69.1.2 在Flex Builder中创建和签名AIR包 1087

69.1.3 使用开发人员证书添加代码签名 1088

69.2 使用命令行打包和为AIR应用程序添加签名 1090

69.3 发布AIR应用程序 1090

69.3.1 Web页面徽章安装 1091

69.3.2 使用Web Badge SDK 1091

69.3.3 自动安装 1094

69.4 更新AIR应用程序 1094

69.5 本章小结 1095

第70章 针对Flex和AIR进行双重部署 1097

70.1 通过接口编码 1097

70.1.1 优点 1099

70.1.2 缺点 1099

70.1.3 构建FlexBuilder项目 1099

70.1.4 引用MainAppEntryPoint组件 1100

70.1.5 使用IApplicationPersistence接口 1102

70.1.6 使用Application-PersistenceFactory 1103

70.2 使用条件编译 1105

70.2.1 优点 1105

70.2.2 缺点 1106

70.2.3 条件编译方法概述 1106

70.2.4 查看ApplicationPersistence文件 1106

70.2.5 配置Flex编译器 1107

70.3 本章小结 1108

第Ⅻ部分 测试和调试 1111

第71章 调试Flex应用程序 1111

71.1 概述 1111

71.2 Flash Debug Player 1111

71.3 Flex Builder调试透视图 1112

71.3.1 设置断点 1112

71.3.2 在Debug模式下启动应用程序 1114

71.3.3 单步调试代码 1115

71.3.4 检查应用程序的状态 1117

71.4 命令行调试器 1120

71.5 额外的调试技术 1120

71.5.1 调试Java服务器代码 1120

71.5.2 Internet流量监控 1122

71.5.3 特定于应用程序的调试 1123

71.5.4 最大程度地利用日志 1124

71.5.5 调试绑定 1124

71.5.6 Adobe公用的bug数据库和问题报告系统 1126

71.6 本章小结 1129

第72章 使用Flex概要分析器 1130

72.1 概述 1130

72.2 准备工作 1130

72.3 概要分析的基础知识 1131

72.3.1 概要分析和优化最佳实践 1131

72.3.2 内存概要分析基础知识 1132

72.3.3 性能概要分析基础 1132

72.3.4 采样概要分析器基础 1133

72.4 Flex Builder 3的概要分析 1133

72.4.1 概要分析透视图 1133

72.4.2 启动概要分析器 1134

72.4.3 使用内存概要分析器 1137

72.4.4 使用性能概要分析器 1144

72.4.5 在概要分析器中过滤 1147

72.4.6 保存和加载概要分析数据 1148

72.4.7 其他有用的功能 1149

72.5 概要分析器的应用 1151

72.5.1 使用概要分析器来检测内存泄漏 1151

72.5.2 使用概要分析器来优化算法 1155

72.6 创建自己的概要分析器 1159

72.7 本章小结 1160

第73章 使用FlexUnit的单元测试与测试驱动开发 1161

73.1 概述 1161

73.2 为什么编写测试 1162

73.2.1 从一开始预防bug 1162

73.2.2 获得重构的信心 1162

73.2.3 设计中的驱动改进 1162

72.2.4 编写可测试软件 1162

73.2.5 快乐的开发人员和轻松制作的文档 1163

73.3 技术和术语 1163

73.3.1 FlexUnit库 1163

73.3.2 单元测试、测试用例和测试套件 1163

73.3.3 运行测试 1164

73.4 测试驱动开发的示例 1164

73.4.1 准备单元测试 1165

73.4.2 创建测试用例 1165

73.4.3 组装测试套件 1166

73.4.4 测试未能通过 1167

73.4.5 准备、调用、断言 1168

73.4.6 快乐和不快乐的路径 1171

73.4.7 安装和卸载 1173

73.4.8 测试中的白色区域 1175

73.5 高级主题 1175

73.5.1 组织测试套件 1175

73.5.2 删除与模拟对象的依赖关系 1176

73.5.3 Ant和Maven的持续集成 1180

73.5.4 重要的测试用例 1180

73.5.5 测试覆盖 1181

73.5.6 行为驱动开发 1181

73.6 本章小结 1181

第74章 日志框架 1183

74.1 概述 1183

74.2 使用日志框架 1183

74.2.1 创建日志目标 1183

74.2.2 获得正确的记录器 1184

74.2.3 在不同级别进行日志记录 1185

74.2.4 过滤日志语句 1185

74.2.5 只在必要时进行日志记录 1186

74.3 定制日志框架 1187

74.3.1 实现远程日志目标 1187

74.3.2 实现Java远程记录器 1188

74.3.3 创建进行远程日志记录的客户端 1190

74.4 深入主题 1191

74.4.1 嵌入式日志查看器 1191

74.4.2 Stopwatch日志记录 1193

74.4.3 使用ThunderBolt把日志记录到Firebug中 1195

74.4.4 从生产代码中删除日志 1197

74.5 本章小结 1198

第75章 自动化框架 1199

75.1 概述 1199

75.2 自动化框架的定义 1199

75.2.1 记录和重放 1200

75.2.2 自动化库 1201

75.2.3 运行时或编译时自动化 1201

75.2.4 组件标识 1201

75.3 一个简单应用程序的自动化 1202

75.3.1 安装一个自动化工具 1202

75.3.2 创建一个可测试的应用程序 1203

75.3.3 编译自动化 1203

75.3.4 记录一个测试脚本 1204

75.3.5 重放测试脚本 1207

75.4 高级主题 1208

75.4.1 自动化自定义组件 1208

75.4.2 创建自定义代理 1208

75.5 本章小结 1209

附录A ActiorScript语言对比 1211