第1篇 基础知识篇 3
第1章 走进Flex世界 3
1.1 RIA与Flex 3
1.2 Flex特点与应用领域 3
1.3 选择Flex 3还是Flex 4 11
第2章 Flex基础知识 12
2.1 Flex基本概念 12
2.1.1 Flash与Flex 12
2.1.2 Flash、Flex语言版本与开发环境 13
2.1.3 Flash播放器种类和版本 13
2.1.4 Flex SDK与frameworks 14
2.1.5 swf格式和swc格式 14
2.2 Flex Builder 3使用技巧 14
2.2.1 常用的快捷键 14
2.2.2 更换运行的浏览器 16
2.2.3 Clean清理命令 16
2.2.4 发布Flex工程 16
2.2.5 设置编译参数 17
2.2.6 向工程中添加库文件 17
2.2.7 添加新版本SDK 18
2.2.8 安装插件 18
2.2.9 使用历史记录恢复以前的版本 19
2.3 第一个Flex程序 19
2.3.1 创建Flex工程 19
2.3.2 添加组件 21
2.3.3 编写代码 22
2.3.4 创建并添加自定义组件 24
第3章 语言基础 26
3.1 MXML基础知识 26
3.2 ActionScript基础知识 27
3.2.1 字符集与保留字 27
3.2.2 变量定义 28
3.2.3 基本数据类型 29
3.2.4 注释 29
3.2.5 语句与块 30
3.3 算术运算与逻辑运算 30
3.3.1 算术运算 30
3.3.2 增量和减量 31
3.3.3 关系与逻辑运算 31
3.4 过程化控制语句 32
3.4.1 if-else 32
3.4.2 switch-case 32
3.4.3 循环 33
第4章 数据基础 34
4.1 XML与XMLList 34
4.1.1 XML与XMLList概述 34
4.1.2 使用XML/XMLList 34
4.1.3 读取外部XML/XMLList 45
4.2 Array与ArrayCollection 46
4.2.1 概述 46
4.2.2 使用Array/ArrayCollection 47
4.2.3 将XML转换为ArrayCollection 52
4.2.4 将ArrayCollection转换为XML 59
4.3 数据绑定 60
4.3.1 数据绑定的基本用法 60
4.3.2 函数作绑定源 61
4.3.3 用ActionScript实现绑定 62
4.3.4 自定义绑定事件 63
4.3.5 使用对象作绑定源 64
第5章 Flex事件驱动 66
5.1 事件驱动的原理 66
5.2 为组件注册事件监听 69
5.3 阻止事件流的传递 70
5.4 自定义事件 72
5.4.1 使用自定义类型Event对象 72
5.4.2 创建自定义的事件类 73
5.5 为自定义事件创建标签式监听 74
第2篇 视觉设计篇 79
第6章 Flex皮肤设计 79
6.1 使用CSS设计皮肤 79
6.1.1 Flex中使用CSS更改风格 79
6.1.2 样式设计器的使用 81
6.1.3 CSS要点归纳 82
6.2 使用图片设计皮肤 85
6.2.1 九宫格缩放原理 85
6.2.2 使用CSS设计模式制作皮肤 87
6.2.3 Flex与Photoshop CS3结合制作皮肤 88
6.3 使用Flash设计皮肤 92
6.3.1 制作单独的组件皮肤 92
6.3.2 与Flash结合高效设计皮肤 96
6.3.3 创建动画效果皮肤 100
6.4 动态加载和更换皮肤 106
6.4.1 StyleManager使用 106
6.4.2 使用StyleManager动态更换皮肤 107
6.5 使用[Style]元标签创建自定义CSS样式 112
6.5.1 创建自定义样式名称 112
6.5.2 创建自定义样式选择器 114
第7章 特效effect和状态state 116
7.1 特效与效果触发器 116
7.1.1 为组件添加特效 116
7.1.2 效果组件的使用 117
7.1.3 为效果组件添加TweenEffect(补间效果) 118
7.1.4 效果组合应用 119
7.1.5 效果触发器的使用 119
7.1.6 自定义效果触发器 122
7.1.7 自定义效果 123
7.2 状态 126
7.2.1 什么是状态 126
7.2.2 在可视环境下创建多状态 126
7.2.3 为状态转换添加特效 129
7.2.4 使用AddChildAction、RemoveChild-Action和SetPropertyAction 130
第8章 Flex与Flash无缝衔接 133
8.1 加载swf格式文件 133
8.1.1 使用SWFLoader加载swf格式文件 133
8.1.2 Flex通过SWFLoader引用swf中的元件 134
8.2 Flash组件的开发 135
8.2.1 创建并使用Flash组件 135
8.2.2 Flex中完全控制Flash组件 137
8.3 Flash组件的事件 141
8.3.1 在Flash组件的标签中监听事件 141
8.3.2 Flash组件标签监听事件并传递参数 143
8.3.3 Flash组件关键帧处自定义事件监听 146
8.4 制作Flash容器组件 148
第9章 综合演练:实现仿Office 2007风格的界面 152
9.1 相关知识准备 152
9.1.1 掌握Flex组件的基本用法 152
9.1.2 第三方组件的使用 153
9.2 仿Office 2007风格界面的实现 154
9.2.1 制作登录界面 154
9.2.2 制作主界面 156
9.2.3 实现登录功能 156
第3篇 组件高级技法篇 161
第10章 PopUpManager与ToolTipManager 161
10.1 使用PopUpManager 161
10.1.1 创建一个基本的弹出窗口 161
10.1.2 实现组件的可拖动功能 163
10.1.3 为组件添加自定义标签事件 168
10.2 改变弹出窗口外观 169
10.2.1 为弹出窗口添加动画效果 169
10.2.2 更改半透明的层样式 171
10.3 Alert组件 172
10.3.1 Alert组件的基本用法 172
10.3.2 获取Alert的引用 174
10.3.3 使用PopUpManager控制警告框 175
10.3.4 设置警告框弹出效果 176
10.3.5 实现警告框文字不可选 176
10.4 ToolTip组件 177
10.4.1 为提示信息添加动画效果 177
10.4.2 使用toolTipShown事件灵活控制提示信息 178
10.4.3 使用ToolTipManager创建提示信息 180
10.4.4 实现自定义的ToolTip 181
第11章 Form组件与基本表单元素 183
11.1 Form组件 183
11.2 FocusManager的应用 184
11.2.1 使用单击以外的方式让组件获得焦点 184
11.2.2 处于焦点时改变背景色 185
11.2.3 去除文本框的焦点 186
11.2.4 密码输入框处于焦点时变明文 187
11.2.5 文本框的焦点效果设置 187
11.3 Button组件 188
11.3.1 按钮常用属性 188
11.3.2 按住按钮时不断重复事件 189
11.4 CheckBox组件 190
11.4.1 为CheckBox设置宽度 190
11.4.2 自定义CheckBox样式 190
11.4.3 为CheckBox添加提示信息 191
11.5 RadioButton组件 192
11.6 ComboBox组件 193
11.6.1 标签文字过长的处理方法 193
11.6.2 允许下拉列表显示多行文本 194
11.6.3 为下拉列表添加图标 195
11.6.4 创建联动的ComboBox 196
11.6.5 其他常用特性的应用 197
11.7 DateField与DateChooser组伯 198
11.7.1 获得两个选择器所选日期的间隔 198
11.7.2 控制可选日期范围 199
11.7.3 控制DateField日期显示格式 200
11.7.4 自定义日期控件图标 201
11.7.5 日期控件的其他常用特性 202
11.8 ProgressBar组件 202
11.8.1 使用ProgressBar显示加载进度 202
11.8.2 使用ProgressBar控制输入字数 204
11.9 HSlide与VSlider组件 205
11.9.1 使用滑动条 205
11.9.2 鼠标移上显示轨迹 206
11.9.3 自定义样式 207
第12章 文本、图像与多媒体 209
12.1 文本(Label、Text、htmlText等) 209
12.1.1 使用外部字体 209
12.1.2 设置字体的常用样式 210
12.1.3 对文字应用滤镜 212
12.1.4 将Label显示为密码模式 212
12.1.5 处理文字链接事件 213
12.1.6 修饰部分文本 214
12.1.7 使用html文本插入图片和Flash 215
12.1.8 使用网页用的CSS修饰html文本 215
12.1.9 RichTextEditor的使用 216
12.2 Image组件 219
12.2.1 引入图片方法 219
12.2.2 创建和使用BitmapData对象 220
12.2.3 将图片转换为ByteArray和Base64格式数据 221
12.2.4 将ByteArray和Base64格式数据转换为图片 223
12.2.5 创建图片快照 225
12.2.6 在图片上取色 226
12.2.7 结合ArrayCollection进行图像复制 227
12.2.8 实现图片的截取 228
12.3 开发漂亮的MP3播放器 229
12.3.1 声音控制的基本知识 229
12.3.2 开发播放器 230
12.4 实现简单的视频播放器 240
12.4.1 视频控制的基本知识 240
12.4.2 视频播放器的实现 240
第13章 容器与导航 243
13.1 容器的定位和布局 243
13.2 HDividedBox与VDividedBox组件 244
13.2.1 让拖曳时产生动画效果 244
13.2.2 用拖曳以外的方式改变容器尺寸 245
13.2.3 实现不可拖动的竖条分隔条 246
13.2.4 自定分隔条上的鼠标样式 246
13.3 容器的滚动条 247
13.3.1 horizontalScrollPosition与verticalScrollPosition的使用 247
13.3.2 滚动条的scrollTipFunction用法 250
13.4 Repeater组件 251
13.5 Accordion组件 253
13.5.1 Accordion常用属性 253
13.5.2 使用头部渲染器将Accordion头部变为Button组件 255
13.5.3 使用头部渲染器禁用头部导航 256
13.5.4 自定义展开的动画 258
13.6 选项卡 259
13.6.1 自定义选项卡图标 259
13.6.2 TabBar的itemClick事件用法 260
13.6.3 使用TabBar与ViewStack构建选项卡 261
13.6.4 实现ToggleButtonBar初始无选中的按钮 262
13.6.5 选项卡切换添加动画效果 263
13.7 菜单 264
13.7.1 创建并弹出Menu菜单 264
13.7.2 创建复杂的菜单项 265
13.7.3 使用PopUpButton弹出Menu菜单 267
13.7.4 使用PopUpMenuButton弹出Menu菜单 271
13.7.5 使用MenuBar创建菜单栏 271
第14章 数据容器组件 273
14.1 DataGrid组件基本使用 273
14.1.1 使用单层级XMLListCollection作数据源 273
14.1.2 使用多层级XMLListCollection作数据源 274
14.1.3 使用普通ArrayCollection作数据源 276
14.1.4 使用由对象构成的ArrayCollection作数据源 277
14.1.5 使用selectedItem 278
14.1.6 动态增加DataGrid的列 279
14.1.7 使用HTTPService调用外部数据 281
14.1.8 DataGrid锁定行与列 281
14.1.9 DataGrid外观常规设置 283
14.2 DataGrid组件的数据操作 284
14.2.1 自定义排序 284
14.2.2 过滤数据 288
14.2.3 查找数据 293
14.3 AdvancedDataGrid组件的使用 295
14.3.1 使用AdvancedDataGrid进行多列排序 295
14.3.2 使用AdvancedDataGrid任意选择行与列 296
14.3.3 创建树形表格 298
14.3.4 数据分组 302
14.4 List组件的使用 304
14.4.1 List增加或删除项目时设置特效 304
14.4.2 List处理稀疏数组的显示方式 306
14.4.3 设置List子项的图标 307
14.4.4 去除List默认的皮肤 309
14.4.5 为List创建编辑器 309
14.4.6 自定义编辑器实现编辑时的动画效果 310
14.5 Tree组件的使用 312
14.5.1 Tree组件常用特性的应用 312
14.5.2 展开Tree组件的任意节点 314
第15章 图表组件 316
15.1 了解Flex图表 316
15.2 使用Flex图表 317
15.2.1 AreaChart区域图 317
15.2.2 BarChart条状图 318
15.2.3 BubbleChart气泡图 319
15.2.4 CandlestiekChart烛台图 321
15.2.5 ColumnChart柱状图 322
15.2.6 HLOCChart 324
15.2.7 LineChart曲线图 326
15.2.8 PieChart饼状图 328
15.2.9 PlotChart散点图 330
15.3 Flex图表事件 331
15.4 自定义图例与DataTip的字体 335
第16章 专题知识 338
16.1 Application与stage 338
16.1.1 捕捉浏览器窗口尺寸改变事件 338
16.1.2 取得应用的尺寸 339
16.1.3 随时查看生成的swf体积 340
16.1.4 全屏显示Flex应用 341
16.1.5 检测鼠标是否在Flex应用上 342
16.2 鼠标拖曳专题 343
16.2.1 创建基本拖曳 343
16.2.2 自定义拖曳代理图像 345
16.2.3 数据容器间的拖曳 347
16.2.4 使用拖曳删除DataGrid数据 349
16.3 渲染器专题 350
16.3.1 创建简单渲染器 350
16.3.2 自定义渲染类 351
16.3.3 运行时改变渲染器 353
16.3.4 创建表头带有CheckBox的DataGrid 357
16.3.5 创建带有CheckBox的List 361
16.4 时间专题 363
16.4.1 创建定时器 363
16.4.2 创建计时器 364
16.5 共享对象专题 366
16.5.1 共享对象基础 366
16.5.2 使用共享对象的实例 367
16.6 键盘与鼠标 371
16.6.1 监听键盘单击事件 371
16.6.2 使用键盘的Tab键来激活组件 372
16.6.3 自定义鼠标右键菜单 373
16.6.4 自定义鼠标样式 376
第4篇 性能优化篇 381
第17章 Module机制 381
17.1 Module简介 381
17.2 使用ModuleLoader加载Module和卸载Module 381
17.3 Module间的通信 385
17.4 使用ModuleManager 390
17.5 Module事件 393
17.6 为加载Module添加进度条 394
第18章 RSL运行时共享库 395
18.1 什么是运行时共享库 395
18.2 将Flex框架作为RSL 395
18.3 将swc资源库作为RSL 396
第5篇 Flex通信篇 403
第19章 与JavaScript/AJAX通信 403
19.1 Flex与浏览器通信 403
19.1.1 窗口跳转 403
19.1.2 Flex中更改浏览器标题 404
19.1.3 获取网址信息 405
19.2 Flex与JavaScript方法互调 406
19.2.1 Flex调用JavaScript中的方法 406
19.2.2 在JavaScript中调用Flex中的方法 407
19.3 FABridge技术 409
19.3.1 FABridge技术简介 409
19.3.2 使用FABridge技术进行通信 412
第20章 Flex与PHP通信 416
20.1 搭建环境并创建模板 416
20.1.1 安装xampp 416
20.1.2 创建数据库 417
20.1.3 创建基于PHP语言的Flex工程 417
20.1.4 使用数据连接创建模板 418
20.2 使用模板创建自己的Flex应用 419
20.2.1 读取数据表 419
20.2.2 修改数据表 421
20.2.3 为数据表添加新记录 424
20.2.4 删除数据表的记录 425
20.3 数据增删改综合应用 427
第21章 Flex与Java EE通信 433
21.1 使用HTTP Service实现简单通信 433
21.2 BlazeDS技术简介 435
21.2.1 什么是BlazeDS 435
21.2.2 采用数据中间层技术 435
21.2.3 数据中间层技术主要特点 436
21.2.4 选择使用BlazeDS还是LiveCycle Data Service 436
21.3 BlazeDS技术的使用 436
21.3.1 安装BlazeDS 436
21.3.2 创建基于BlazeDS的Flex项目 438
21.3.3 使用BlazeDS创建HTTP服务 440
21.3.4 使用BlazeDS创建RemoteObject服务 441
21.3.5 传递强类型参数 443
21.4 消息服务应用 446
21.4.1 消息服务简介 446
21.4.2 创建基于消息机制的Flex应用 446