第1篇 Flex 3.0基础篇
第1章 Flex概述 3
1.1 RIA概述 4
1.2 Flex概观 4
1.2.1 Flex应用技术 4
1.2.2 Flex组成元素 6
1.2.3 Flex技术与传统网页技术的对比 7
1.2.4 Flex的工作原理 8
第2章 Flex Builder介绍 11
2.1 配置Flex Builder开发环境 12
2.1.1 下载并安装Flex Builder 3 12
2.1.2 运行Flex Builder 3 14
2.2 Flex Builder简介 14
2.3 Flex Builder模式(perspective) 15
2.3.1 Flex Builder开发模式中的代码视图 15
2.3.2 Flex Builder中的代码提示帮助 16
2.3.3 Flex Builder开发模式中的设计视图 17
2.3.4 Flex Builder调试(Debug)模式 18
2.3.5 编译应用程序 20
2.3.6 运行和调试应用程序 21
2.3.7 其他信息 21
2.4 学习使用文本编辑器(Editor) 21
2.5 学习建立第一个应用程序“Hello World!” 22
2.5.1 建立第一个应用程序“Hello World!” 22
2.5.2 Flex Builder 的生成文件 26
第2篇 Flex编程基础
第3章 MXML编程 29
3.1 MXML概述 30
3.1.1 使用MXML的好处 30
3.1.2 一个简单的MXML应用程序 30
3.2 MXML标签和ActionScript类之间的相互关系 31
3.3 MXML基本语法 31
3.3.1 MXML文件名 31
3.3.2 设置组件的属性 31
3.3.3 使用常数来设置组件的属性值 32
3.3.4 使用斜线“\”来定义字符串属性值 32
3.3.5 设定样式属性 33
3.3.6 定义URL值 33
3.3.7 使用编译标签 33
3.3.8 MXML标签规则 34
3.4 MXML与其他相关的标准 34
第4章 ActionScript编程 37
4.1 ActionScript 3.0概观 38
4.2 ActionScript语言特点 38
4.2.1 字母(Literals) 38
4.2.2 分号(;) 39
4.2.3 括号(()) 39
4.2.4 注解(Comments) 39
4.2.5 关键词和保留词(reserved words) 39
4.2.6 大小写敏感 40
4.2.7 点(.) 40
4.3 变量 41
4.3.1 了解变量作用范围 41
4.3.2 变量默认值 42
4.3.3 常量(Constants) 42
4.3.4 数组 43
4.4 数据类型 43
4.4.1 类型检查 43
4.4.2 is操作符 44
4.4.3 as操作符 44
4.4.4 类型转换 44
4.5 语法:操作符(Operators) 45
4.5.1 操作符的优先权(precedence)和关联(associativity) 46
4.5.2 原始操作符 47
4.5.3 后缀操作符 47
4.5.4 一元操作符 47
4.5.5 乘法操作符 48
4.5.6 加法操作符 48
4.5.7 位移操作符 48
4.5.8 关系操作符 49
4.5.9 等式操作符 49
4.5.10 位操作符 49
4.5.11 逻辑操作符 50
4.5.12 条件操作符 50
4.5.13 赋值操作符 50
4.6 ActionScript语句 51
4.6.1 条件语句(Conditionals) 51
4.6.2 循环语句(Looping) 53
4.7 函数(Functions) 55
4.7.1 引用函数 55
4.7.2 函数声明 55
4.7.3 函数文字 55
4.7.4 函数返回值 56
4.7.5 嵌套的函数 56
4.7.6 函数的参数 57
4.8 对象和类 57
4.9 包和命名空间 58
4.9.1 文件包 58
4.9.2 建立文件包 59
4.9.3 输入文件包 59
4.9.4 命名空间 59
4.10 如何在Flex中应用ActionScript 60
4.10.1 在MXML文件中使用ActionScript代码 60
4.10.2 包含(inculding)ActionScript代码和输入(importing)ActionScript代码 61
4.10.3 在ActionScript代码中引用Flex组件 61
4.11 创建ActionScript组件 62
第5章 Flex组件(Components) 63
5.1 组件简介 64
5.1.1 组件的特点 64
5.1.2 组件的类继承 64
5.1.3 在MXML和ActionScript中使用组件 65
5.2 组件的大小(Sizing Components) 65
5.2.1 定义组件大小的方式 65
5.2.2 如何使用组件默认值 66
5.2.3 设置组件绝对值大小 66
5.2.4 设置组件相对值大小 67
5.2.5 使用约束布局定义组件大小 67
5.3 组件的定位(Positioning Components) 68
5.3.1 使用自动定位 68
5.3.2 使用绝对值定位 69
5.3.3 使用约束布局定位 70
第6章 Flex控件(Controls) 71
6.1 控件简介(Controls) 72
6.1.1 直接控件拖放 72
6.1.2 书写代码 72
6.1.3 实例演示 73
6.1.4 控件的分类 76
6.1.5 定义控件大小(Sizing Controls) 77
6.1.6 控件定位(Positioning Controls) 79
6.2 按钮控件(Button Control) 79
6.2.1 基本按钮控件概述 80
6.2.2 建立一个按钮控件示例 80
6.2.3 改变按钮外观 82
6.3 弹出按钮控件(PopUpButton Control) 83
6.3.1 弹出按钮控件概述 84
6.3.2 建立一个弹出按钮控件示例 84
6.4 按钮条和开关按钮条控件(ButtonBar
and ToggleButtonBar Controls) 86
6.4.1 按钮条和开关按钮条控件概述 87
6.4.2 建立一个按钮条控件示例 87
6.4.3 建立一个开关按钮条控件示例 89
6.5 复选框控件(CheckBox Control) 90
6.5.1 复选框控件概述 90
6.5.2 建立一个复选框控件示例 91
6.6 单选按钮控件(RadioButton Control) 93
6.6.1 单选按钮控件概述 93
6.6.2 建立一个单选按钮控件示例 93
6.7 链接按钮控件(LinkButton Control) 95
6.7.1 链接按钮控件概述 95
6.7.2 建立一个链接按钮控件 95
6.8 链接条控件(LinkBar Control) 97
6.8.1 链接条控件概述 97
6.8.2 建立一个链接条控件示例 97
6.9 标签条控件(TabBar Control) 99
6.9.1 标签条控件概述 99
6.9.2 建立一个标签条控件 100
6.10 进度条控件(ProgressBar Control) 101
6.10.1 进度条控件概述 101
6.10.2 进度条控件模式 101
6.10.3 建立一个进度条控件 102
6.11 滚动条控件(ScrollBar Control) 103
6.11.1 滚动条控件概述 104
6.11.2 建立一个垂直滚动条控件示例 104
6.12 水平滑杆和垂直滑杆控件(HSlider and VSlider Control) 106
6.12.1 水平滑杆和垂直滑杆控件概述 106
6.12.2 建立一个水平滑杆示例 107
6.13 水平尺和垂直尺控件(HRule and VRule Control) 108
6.13.1 水平尺和垂直尺控件概述 108
6.13.2 建立一个水平尺和垂直尺控件示例 109
6.14 标签控件(Label Control) 110
6.14.1 标签控件概述 110
6.14.2 建立一个标签控件示例 111
6.15 文本条控件(TextInput Control) 111
6.15.1 文本条控件概述 111
6.15.2 建立一个文本条控件示例 112
6.16 文本控件(Text Control) 113
6.16.1 文本控件概述 113
6.16.2 建立一个文本控件示例 113
6.17 文本区域控件(TextArea Control) 114
6.17.1 文本区域控件概述 115
6.17.2 建立一个文本区域控件示例 115
6.18 富文本编辑器控件(RichTextEditor Control) 116
6.18.1 富文本编辑器控件概述 116
6.18.2 建立一个富文本编辑器控件示例 117
6.19 菜单控件(Menu Control) 118
6.19.1 菜单控件概述 118
6.19.2 建立一个菜单控件示例 119
6.20 菜单条控件(MenuBar Control) 121
6.20.1 菜单条控件概述 121
6.20.2 建立一个菜单条控件示例 122
6.21 弹出菜单按钮控件(PopUpMenuButton Control) 123
6.21.1 弹出菜单按钮控件概述 123
6.21.2 建立一个弹出菜单按钮控件示例 123
6.22 列表控件(List Control) 125
6.22.1 列表控件概述 125
6.22.2 建立一个列表控件示例 126
6.23 水平列表控件(HorizontalList Control) 129
6.23.1 水平列表控件概述 129
6.23.2 建立一个水平列表控件示例 129
6.24 排列列表控件(TileList Control) 131
6.24.1 排列列表控件概述 131
6.24.2 建立一个排列列表控件示例 132
6.25 下拉列表控件(ComboBox Control) 134
6.25.1 下拉列表控件概述 135
6.25.2 建立一个下拉列控件示例 135
6.26 数据表格控件(DataGrid Control) 137
6.26.1 数据表格控件概述 137
6.26.2 建立一个数据表格表控件示例 138
6.27 树结构控件(Tree Control) 140
6.27.1 树结构控件概述 140
6.27.2 建立一个树结构控件示例 141
6.28 计数器控件(NumbericStepper Control) 142
6.28.1 计数器控件概述 143
6.28.2 建立一个计数器控件示例 143
6.29 日期选择器和日期条控件(DateChooserand DateField Controls) 144
6.29.1 日期选择器控件概述 144
6.29.2 建立一个日期选择器控件示例 145
6.29.3 日期条控件概述 146
6.29.4 建立一个日期条控件示例 147
6.30 图像控件(Image Control) 148
6.30.1 图像控件概述 148
6.30.2 建立一个图像控件示例 148
6.31 SWF加载器控件(SWFLoader Control) 149
6.31.1 SWF加载器控件概述 149
6.31.2 建立一个SWF加载器控件示例 150
6.32 音像控件(VideoDisplay Control) 151
6.32.1 音像控件概述 151
6.32.2 建立一个音像显示控件示例 151
6.33 选色器控件(ColorPicker Control) 152
6.33.1 选色器控件概述 152
6.33.2 建立一个默认的选色器控件示例 153
6.33.3 建立一个用户自定义的选色器控件示例 154
6.34 警告控件(Alert Control) 156
6.34.1 警告控件概述 156
6.34.2 建立一个警告控件示例 157
第3篇 Flex设计篇
第7章 基础知识:容器(Container) 161
7.1 什么是容器 162
7.1.1 容器简介 162
7.1.2 Flex容器的定位方式 162
7.1.3 Flex的分类 162
7.2 应用容器(Application Container) 163
7.2.1 应用容器简介 163
7.2.2 应用对象简介 164
7.3 布局容器(Layout Container) 165
7.3.1 画布布局容器(Canvas Layout Container) 165
7.3.2 盒子、水平盒子、垂直盒子布局容器(Box、Hbox and VBox Layout Container) 167
7.3.3 控制条布局容器(ControlBar Layout Container) 169
7.3.4 应用控制条布局容器(ApplicationControlBar Layout Container) 170
7.3.5 分离盒、水平分离盒、垂直分离盒容器(Divided Box,HdividedBoxand VDividedBox) 172
7.3.6 表单、表单头、单元格布局容器(Form, FormHeading and FormItem Layout Container) 174
7.3.7 格栅布局容器(Grid Layout Container) 180
7.3.8 面板布局容器(Panel Layout Container) 183
7.3.9 排列模板布局容器(Tile Layout Container) 184
7.3.10 标题窗口布局容器(TitleWindow Layout Container) 186
7.4 导航容器(Navigator Container) 188
7.4.1 视窗堆栈导航容器(ViewStack Navigator Container) 188
7.4.2 列表导航容器(TabNavigator Container) 191
7.4.3 折叠导航容器(Accordion navigator Container) 193
第8章 约束版面布局(Constraint-based Layout) 197
8.1 约束版面布局(Constraint-based Layout)概观 198
8.2 插入和定位组件 198
8.3 定义约束定位的布局 200
第9章 行为控制(Behavior) 203
9.1 行为控制 204
9.1.1 行为控制效果 204
9.1.2 工厂类和实体类(Factory and Instance Classes) 205
9.1.3 Flex支持的效果 206
9.1.4 Flex的触发器(triggers) 211
9.2 使用行为控制 212
9.2.1 在MXML中使用数据绑定来实现行为控制 213
9.2.2 在MXML中使用样式来实现行为控制 213
9.2.3 使用setStyle()和getStyle()函数在MXML中定义的行为效果 213
9.3 在ActionScript中实现行为控制 214
9.3.1 倒序显示控件的行为效果 216
9.3.2 终止/暂停行为效果 216
9.3.3 建立一个可以重复使用的行为效果 217
9.3.4 在ActionScript使用样式应用行为效果 218
9.3.5 使用Effect.target和Effect.targets属性应用行为效果 222
9.4 行为效果技巧 224
9.4.1 设定行为效果存在的时间 224
9.4.2 使用嵌入的字体显示行为效果 225
9.4.3 使用组合行为效果 226
9.4.4 使用动画属性(AnimateProperty)行为效果 228
9.4.5 重复(Repeating)行为效果 229
9.4.6 延迟(Delaying)行为效果的发生 230
9.4.7 使用遮罩(Mask)行为效果 231
第10章 样式(Style)和主题(Theme) 233
10.1 样式概观 234
10.1.1 Flex使用样式的方法 234
10.1.2 样式的继承特性 234
10.2 MXML使用样式表单 234
10.2.1 使用外部的样式表单文件 235
10.2.2 使用本地的样式定义 236
10.2.3 使用组件标签内部属性样式 239
10.3 在ActionScript中使用样式表单 240
10.3.1 使用StyleManager类 240
10.3.2 使用CSSStyleDeclaration类 241
10.3.3 使用getStyle()和setStyle()方法 242
10.3.4 在运行时使用样式表单 244
10.4 样式值的格式 245
10.4.1 长度(Length)格式 245
10.4.2 时间(Time)格式 248
10.4.3 颜色(Color)格式 248
10.4.4 使用数组定义样式属性 249
10.5 使用Cascading Style Sheets(CSS)样式表单文件 252
10.5.1 CSS概述 252
10.5.2 属性和选择器(selector)名称 252
10.5.3 CSS中的继承 253
10.5.4 Flex中的CSS 253
10.5.5 类选择器(Class selector) 253
10.5.6 类型选择器(Type selector) 254
10.5.7 使用混合的选择器 256
10.5.8 选择器的优先权 257
10.5.9 所支持的CSS属性 259
10.5.10 在样式中嵌入数据源 260
10.6 样式的继承 261
10.6.1 样式继承顺序 261
10.6.2 继承异议(exceptions) 264
10.6.3 支持的样式 264
10.6.4 主题色彩属性 265
10.7 主题概观 265
10.7.1 使用主题 266
10.7.2 Flex包含的主题文件 266
10.7.3 利用格式化文件编译主题SWC件 267
第11章 皮肤(Skin) 269
11.1 皮肤的构成 270
11.2 建立图形皮肤 271
11.2.1 使用setStyle()方法 271
11.2.2 使用CSS表单 272
11.2.3 使用标签内部定义方法 273
11.3 建立程序皮肤 274
11.4 建立状态皮肤 275
11.5 子组件的皮肤 277
第12章 条目渲染器(Item Renderer) 279
12.1 条目渲染器概观 280
12.1.1 默认的条目渲染器 280
12.1.2 用户自定义的条目渲染器 280
12.1.3 条目渲染器的应用布局 281
12.2 建立用户自定义条目渲染器 281
12.2.1 建立标签内部(drop-in)条目渲染器和选项编辑器 281
12.2.2 建立程序内部的条目渲染器和选项编辑器 285
12.2.3 使用Flex组件文件作为条目渲染器和选项编辑器 289
12.2.4 使用ActionScript类文件作为条目渲染器 292
第13章 工具条提示(ToolTips) 297
13.1 工具条提示概观 298
13.2 建立工具条提示 298
13.2.1 使用ToolTip属性建立提示 298
13.2.2 子容器工具条提示显示原则 298
13.2.3 提示信息的换行显示 300
13.2.4 设定工具条提示的样式 301
13.2.5 设定工具条提示的宽度 302
13.2.6 使用工具条提示事件 303
13.3 使用工具条提示管理(ToolTip Manager) 304
13.3.1 激活和禁用工具条提示 304
13.3.2 延迟工具条提示时间 305
13.3.3 在工具条提示上使用行为效果 307
13.3.4 建立动态的工具条提示 308
13.3.5 建立用户自定义工具条提示 308
13.4 使用错误信息的工具条提示 310
13.5 重写工具条提示的皮肤 312
第14章 光标管理器(Cursor Manager) 315
14.1 使用CursorManager光标管理器 316
14.2 使用忙碌光标 318
14.2.1 设定忙碌光标 318
14.2.2 使用忙碌光标属性 320
14.2.3 使用手形光标 320
第15章 Flex应用程序本地化(Localizing) 321
15.1 本地化概观 322
15.1.1 资源包(Resource Bundle)和属性文件(Properties File) 322
15.1.2 本地化工作流程 322
15.2 建立本地化应用程序 323
第16章 动态重复控件和容器(Repeating) 327
16.1 动态重复控件和容器(Repeating)简介 328
16.2 建立重复控件 328
16.2.1 建立基本静态的重复控件 329
16.2.2 建立动态循环的重复控件 332
16.3 引用重复控件 333
16.3.1 引用重复的子类控件 335
16.3.2 引用嵌套的重复控件 335
16.3.3 重复控件的事件处理 336
16.4 使用用户自定义MXML重复控件 337
16.5 使用重复控件的注意事项 339
第17章 视窗状态(View States) 341
17.1 视窗状态概观 342
17.1.1 简单的登录表格示例 342
17.1.2 使用视窗状态控制布局 344
17.1.3 对比视窗状态和导航 346
17.2 建立和使用视窗状态 346
17.2.1 使用Flex Builder中建立新的视窗状态 346
17.2.2 在Action Script代码中建立新的视窗状态 349
17.3 定义新的视窗状态 352
17.3.1 重写组件属性 352
17.3.2 重写组件样式 353
17.3.3 增加和减少组件 354
17.3.4 在事件处理中设定重写 356
第18章 过渡(Transition) 359
18.1 在登录表格上使用过渡 360
18.2 定义过渡 362
18.2.1 定义多个过渡 364
18.2.2 定义效果目标 365
18.2.3 定义效果起始和终止值 365
18.3 在过渡中使用行为效果 365
18.4 过滤过渡(Filtering T) 368
18.5 使用过渡效果的提示 370
第19章 拖放行为(Drag and Dorp) 371
19.1 拖放行为概观 372
19.2 在列表类控件上使用拖放行为 372
19.2.1 实现基本的列表类控件拖放行为 372
19.2.2 两个方向的拖放行为 374
19.2.3 在同一个控件上的拖放行为 376
19.2.4 列表类控件的拖动放置属性 378
19.3 人为添加拖放行为 378
19.3.1 用来定义拖放操作的类 379
19.3.2 手工拖放实现原理 380
19.3.3 手工拖放操作示例 380
19.4 拖放行为示例 383
19.4.1 使用容器作为放置目标示例 384
19.4.2 设定拖动代理 385
19.4.3 对放置目标的dragOver和dragExit事件进行管理 387
19.5 移动和复制数据 391
19.5.1 移动和复制 391
19.5.2 在列表控件和数据列表控件之间移动或复制数据 391
19.5.3 在非列表类控件之间移动或复制数据 394
第20章 嵌入外部资源(Embedding Assets) 399
20.1 嵌入外部资源概观 400
20.2 嵌入参数 401
20.3 嵌入资源类型 402
第4篇 Flex数据篇
第21章 Flex与外部通信 407
21.1 获得环境信息 408
21.2 传递数据到Flex应用程序 410
21.3 从Flex应用程序接触外部JavaScript函数 412
21.3.1 使用ExternalInterface API获得JavaScript 412
21.3.2 使用navigateToURL()方法获得JavaScript 415
21.4 从JavaScript应用程序获得Flex 416
第22章 共享对象(Shared Objects) 419
22.1 共享对象概观 420
22.2 使用共享对象 420
22.2.1 在共享对象中增加数据和删除共享对象 421
22.2.2 使用共享对象的示例 421
第23章 数据获取和联系(Data Access and Interconnectivity) 427
23.1 从Flex中获得服务器的数据 428
23.1.1 使用HTTPService组件 428
23.1.2 使用WebService组件 430
23.1.3 使用RemoteObject组件 432
23.2 表达数据(Representing Data) 437
23.3 数据绑定(Data Binding) 438
23.3.1 数据绑定的3种方法 439
23.3.2 使用“{}”绑定数据到数据模型(Data Models) 440
23.3.3 绑定一个数据源到多个目标属性 441
23.3.4 绑定多个数据源到一个目标属性的示例 442
23.3.5 定义双向的绑定示例 442
23.3.6 使用Bindable元数据标签 443
23.4 数据存储(Data Storing) 444
23.4.1 定义一个数据模型 444
23.4.2 在数据模型中使用数据确证 445
23.4.3 绑定数据到XML数据模型 447
23.5 数据确证(Data Validating) 447
23.5.1 事件触发确证行为示例 448
23.5.2 程序触发确证行为示例 449
23.5.3 激活和失活validator 450
23.5.4 确证必须的输入项 451
23.5.5 使用数据绑定来定义validator 452
23.6 数据格式化(Data Formatting) 453
23.6.1 使用数据格式化 453
23.6.2 使用CurrencyFormatter类示例 453
23.6.3 使用NumberFormatter类示例 454
23.6.4 使用PhoneFormatter类示例 455
23.6.5 使用ZipCodeFormatter类示例 456
23.6.6 使用DateFormatter类示例 457
第24章 图表组件
(Charting Components) 461
24.1 图表组件概览 462
24.1.1 使用图表组件 462
24.1.2 序列类、坐标轴类和图表事件 463
24.2 图表组件概览 463
24.2.1 面积图表(Area Chart)示例 463
24.2.2 条形图表(Bar Chart)示例 466
24.2.3 气泡图表(Bubble Chart)示例 468
24.2.4 蜡烛图表(Candlestick Chart)示例 473
24.2.5 圆柱图表(Column Chart)示例 475
24.2.6 HighLowOpenClose图表
(HighLowOpenCloseChart)示例 477
24.2.7 折线图表(Line Chart)示例 478
24.2.8 圆饼图表(Pie Chart)示例 480
24.2.9 散点图表(Plot Chart)示例 481
24.2.10 使用多个数据序列示例 483
第5篇 Flex综合实例篇
第25章 查询天气系统——基于
Cairngorm框架 487
25.1 Cairngorm框架概览 488
25.2 查询天气系统分析 489
25.2.1 整体结构 489
25.2.2 数据来源 489
25.2.3 建立项目 490
25.3 值对象 491
25.3.1 查询信息值对象QueryItemVO.as 491
25.3.2 城市信息值对象CityInfoVO.as 492
25.4 视图代码 493
25.4.1 查询信息视图QueryPanel.mxml 493
25.4.2 城市信息视图
CityInfoPanel.mxml 495
25.4.3 天气预报数据格栅视图
WeatherResultPanel.mxml 496
25.4.4 温度折线图表视图
WeatherResultChart.mxml 499
25.5 模型定位器代码 502
25.5.1 模型定位器ModelLocator.as 502
25.5.2 模型变量类GetWeather.as 503
25.6 事件程序
GetWeatherByCityEvent.as 504
25.7 控制器程序GetWeatherBy
CityControl.as 504
25.8 命令程序
GetWeatherByCityCommand.as 505
25.9 服务层代码 507
25.9.1 服务程序Services.mxml 507
25.9.2 服务委托程序ServicesDelegate.as 508
25.10 主程序
WeatherForeCastExample.mxml 509
25.11 运行和测试 512