ActionScript 3.0权威指南
作者: 乔珂
译者: 无
定 价: 89.00元(含光盘1张)
页码: 840
出版时间: 2008-07
ISBN号: 9787121068522
内容简介:
本书将ActionScript 3.0作为一种全新的、独立的、具有自己特色的语言,系统全面地介绍了此语言的结构和概念。
全书以培养实际开发能力为目的,将语言的基本语法、核心概念及新增功能统一起来。根据知识点在语言逻辑体系和实际应用中的权重,对语法和概念重新进行分级和组织。结合Flash网络应用和脚本开发的实际,围绕面向对象的开发思想,深入阐述了ActionScript 3.0的自身逻辑。不仅解决了应该如何做的问题,还回答了为何如此的疑问。引领读者体会语法表象之内的深层美感,培养ActionScript 3.0开发思维,使读者能流畅地编写代码。
本书内容由浅入深平缓过渡,适用于各种程度的读者。即使读者没有相关知识背景,也能轻松阅读本书,并最终掌握ActionScript 3.0。对于有开发经验的读者,阅读本书有助于脱离惯性思维,重新认识这种语言。
序
美妙的语言
借阅读《ActionScript 3.0权威指南》书稿的机会,我不禁重新审视ActionScript——这门独具魅力的语言,一个广阔思想的展台。
ActionScript最初设计用于Flash交互与控制动画。当开发者可以快速地建立动画,配合音效,并根据浏览者的意图来产生互动时,是多么令人振奋!越来越多的人开始使用Flash创建属于自己的个人网站,在互联网上展示自己。网络上随处可见五彩缤纷的Flash作品、游戏,使我看到了许多让人赞叹的精彩创意。
自2.0以后ActionScript类库的更新,标志着ActionScript已经成为一门面向对象语言,随着越来越多的Flash作为前端RIA(Rich Internet application)应用的出现,宣告了ActionScript进入新的时代。直到Micromedia被Adobe公司收购以后,ActionScript遇到了一个不大不小的变革。说大,是因为语言结构发生了很大的变化;说小,是因为虽然类的组织进行了更加完善的架构,而根本的思想还是从之前的体系演化而来的。当然,在这个过程中,ActionScript的能力得到了进一步的强化,也吸引了很多从事Java或C++的程序员进来,于是,Flash被更加明确地分成了两类:界面动画图形设计与交互程序。不可否认,ActionScript 3核心的类库做出了大幅度的重构,并且在语法上也和ActionScript 2存在着较大的分歧。然而,要注意的是,虽然这个改动导致了很多从事ActionScript 2开发者难以适应,但是,新的架构体系与其说是改变了很多东西,还不如说是提炼了很多东西,它以更规范、更高效的形态来逐步改变开发者的思想。令人欣慰的是,本书作者乔珂也清楚看到了ActionScript的变化脉络,在这部800多页的专著中,他用易于理解的思路和语言详细阐述了ActionScript作为一门日趋丰满的面向对象语言的独特魅力,并结合自身开发经验为读者提供了丰富的案例来借鉴学习。
我一直认为,无论是Flash IDE也好,Flex Builder也好,或者什么都好,作为开发环境而言,并没有优劣之分。直到现在,还有很多朋友在提出类似到底哪一个更好的问题。其实,无论是RIA何种应用,游戏,网站,动画展示等,无非都是以“swf”为后缀的文件,用Flash Player解析呈现而已,这是Flash在终端所展示的形态。现在,你既可以用Flash轻松加入喜爱的图片、音乐,并有序地组织好这些资源,也可以使用Flex快速创建应用程序,通过调用别的后台语言,如PHP、JSP、ColdFusion等获取数据,再使用合理的逻辑把数据和界面组织起来。如果你熟悉了ActionScript,在这个平台里,你可以尽情地按照你的想象来发挥,我相信现在的ActionScript 3有着非常优秀的架构体系和宽广的应用面,也相信会有更多的朋友加入到这个充满活力的阵营中来。
感谢Adobe开发组的所有成员,奉献和创造了如此美妙的语言。
希望看到本书的读者,不要错过领悟美妙的ActionScript的机会。
“蓝色理想”网站站长 曾沐阳
目录
第1篇 ActionScript 3.0的外围知识
第1章 ActionScript 3.0综述 2
本章从脚本语言的基础知识开始,逐步介绍了ActionScript 3.0的发展过程和运行原理。不仅涉及ActionScript 3.0,FlashPlayer和AVM2等周边知识,也深入介绍了Flash SWF文件的结构和ActionScript 3.0在SWF文件中的作用。对于ActionScript 3.0的编译和执行,本章也有详细的介绍。
1.1 脚本语言基础知识 2
1.1.1 脚本语言的概念 2
1.1.2 脚本和程序 3
1.1.3 脚本语言的特性 3
1.2 Flash和ActionScript 4
1.2.1 LEGO设计模式 5
1.2.2 Flash和Action的起源 5
1.2.3 发展历程 7
1.2.4 ActionScript 3.0的进步 8
1.2.5 通用性 10
1.2.6 FlashLite 11
1.2.7 ActionScript 3.0编程工具 12
1.3 Flash的内部机制 14
1.3.1 Flash应用的生命流程 14
1.3.2 SWF文件的Tag结构 16
1.3.3 Tag结构存储实例 17
1.3.4 编译解析 18
1.3.5 AVM2的解析 19
1.3.6 执行时序 20
1.4 AS3同RIA开发 21
1.4.1 交互程序的进化 22
1.4.2 软件系统体系结构 23
1.4.3 RIA的诞生及其优势 24
1.4.4 Adobe AIR简介 26
1.4.5 ActionScript 3.0与Adobe AIR开发 27
1.4.6 AIR学习步骤 28
1.5 小结 29
第2章 配置开发环境 30
本章主要介绍了ActionScript 3.0开发常用的三种环境:Adobe官方的Flash CS IDE,FlexBuilder 2,以及第三方软件FlashDevelop 3.0。经过本章的学习,读者应该在自己的PC上构建至少一种开发环境,以方便学习后面的编程章节时上机实践。
2.1 Flash CS3开发环境 30
2.1.1 选择Flash版本 30
2.1.2 安装Flash CS3 31
2.1.3 配置Adobe AIR环境 32
2.1.4 Flash CS3的代码编辑器 33
2.1.5 快捷工具栏 34
2.1.6 专家工具 35
2.1.7 代码调整工具 36
2.1.8 分页式代码标签 37
2.1.9 自定义代码编辑器 37
2.1.10 自动套用格式 38
2.2 Adobe Flex Builder开发环境 39
2.2.1 系统要求 39
2.2.2 安装准备 40
2.2.3 安装模式 40
2.2.4 安装Flex Builder 2 41
2.2.5 Flash Player 9 Debug版 41
2.2.6 完成Flex Builder 2的安装 42
2.2.7 Flex Builder 2集成开发环境 42
2.2.8 Navigator文件浏览器 43
2.2.9 Flex Builder中的代码编辑器 43
2.2.10 Outline提纲浏览器 44
2.2.11 嵌入式Outline窗口 45
2.2.12 添加调试面板 46
2.2.13 Flex Builder 2设计辅助环境 47
2.2.14 自定义Flex Builder 2 48
2.3 FlashDevelop开发环境 50
2.3.1 FlashDevelop 3.0的特色 50
2.3.2 安装FlashDevelop 51
2.3.3 项目编译测试 52
2.3.4 自定义代码编辑器 53
2.3.5 优化中文字符显示 54
2.3.6 全局自定义类库 55
2.3.7 项目自定义类库 56
2.3.8 设置项目输出 56
2.4 小结 57
第3章 创建“Hello World”程序 59
本章围绕创建“Hello World”程序,向读者介绍了ActionScript程序的开发过程,以及常用开发软件的具体使用方法。本章的内容安排本着由简单到复杂,由表面到本质的原则。介绍了如何脱离开发软件,手工实现代码管理和程序编译。帮助读者建立对ActionScript 3.0开发流程的整体认识,为进一步研究语言本身打下了基础。
3.1 Flash CS3创建“Hello World”程序 59
3.1.1 创建ActionScript 3.0项目 59
3.1.2 确定代码位置 60
3.1.3 输入ActionScript 3.0脚本 61
3.1.4 测试“Hello World”影片 61
3.1.5 使用舞台元件 62
3.1.6 舞台元件与脚本访问 62
3.1.7 控制舞台文本 63
3.1.8 动态创建类型实例 64
3.1.9 操作显示列表 65
3.1.10 ActionScript 3.0的灵活性 66
3.2 Flex Builder 2创建“Hello World”程序 67
3.2.1 Flex程序的构成 67
3.2.2 MXML的结构 68
3.2.3 MXML的命名空间 70
3.2.4 MXML创建和定义组件 71
3.2.5 用户界面同脚本逻辑的分离 72
3.2.6 MXML的专用组件 72
3.2.7 创建Flex项目 73
3.2.8 分析自动代码 74
3.2.9 使用Flex快速编写代码 74
3.2.10 编译MXML结构的“Hello World”程序 75
3.2.11 在MXML中使用ActionScript 3.0 76
3.2.12 添加标签事件响应 78
3.2.13 MXML和Action Script的执行逻辑 78
3.2.14 ActionScript的内联、级联和外联 79
3.2.15 使用外联函数 80
3.2.16 可视化MXML编辑器 82
3.2.17 复杂代码的编译 84
3.2.18 贯彻MXML的分置原则 84
3.3 使用FlashDevelop 3.0编写程序 85
3.3.1 新建FlashDevelop项目 85
3.3.2 创建MXML应用文件 86
3.3.3 代码输入技巧 87
3.3.4 编译和执行MXML应用 88
3.3.5 创建外联脚本文件 89
3.3.6 按钮控件及事件响应 90
3.3.7 项目编译和交互测试 91
3.3.8 数字密码输入器 92
3.3.9 界面分析 92
3.3.10 新建项目 94
3.3.11 创建密码框 94
3.3.12 创建按钮 95
3.3.13 建立ActionScript 3.0函数 96
3.3.14 整合表示层和逻辑层文件 97
3.3.15 编译和运行程序 98
3.4 手工编译 100
3.4.1 Flex编译器 100
3.4.2 配置全局路径 102
3.4.3 创建代码文件 104
3.4.4 命令行手工编译 104
3.4.5 手工编译项目 105
3.5 小结 106
第2篇 ActionScript 3.0的语言要素
第4章 语法基础结构 108
ActionScript 3.0是一种基于ECMA-262规范的脚本语言,其基本语法构成包括:标识符、关键字、数据类型、运算符和分隔符。这5种元素有着不同的语法含义和组成规则,它们互相配合,共同完成ActionScript 3.0语言的语意表达。通过本章的学习,可以认识ActionScript 3.0中的标识符、关键字、数据类型、运算符和分隔符等语法基础结构。
4.1 标识符 108
4.1.1 标识符的概念 108
4.1.2 标识符命名的技术规则 109
4.1.3 命名约定 111
4.2 关键字 114
4.2.1 表达式 114
4.2.2 语句控制 114
4.2.3 定义 115
4.2.4 属性关键字 116
4.2.5 编译指令 117
4.2.6 区分IMPORT和INCLUDE关键字 117
4.2.7 类的长名称 119
4.3 数据类型 120
4.3.1 数据类型的概念 120
4.3.2 基元值和复杂值 121
4.3.3 数据类型的对象封装 122
4.3.4 Boolean数据类型 123
4.3.5 int数据类型 124
4.3.6 Null数据类型 124
4.3.7 Number数据类型 125
4.3.8 String数据类型 127
4.3.9 uint数据类型 127
4.3.10 void数据类型 128
4.3.11 无类型数据类型 129
4.3.12 复杂数据类型 130
4.4 变量和常量 131
4.4.1 字面值 131
4.4.2 变量及其声明 132
4.4.3 变量的赋值 133
4.4.4 变量的默认值 134
4.4.5 Number变量和NaN 134
4.4.6 变量的作用域 135
4.4.7 变量的后置声明 137
4.4.8 常量 138
4.5 运算符和功能符 140
4.5.1 加法算术运算符 140
4.5.2 乘法算术运算符 142
4.5.3 一元运算符++和-- 144
4.5.4 左移位运算符<< 145
4.5.5 右移位运算符>>和>>> 147
4.5.6 与、或、非的位操作 148
4.5.7 位操作与特征位 151
4.5.8 特征位的赋值 153
4.5.9 特征位的开关操作 154
4.5.10 “^”位异或操作符 156
4.5.11 高级开关控制 157
4.5.12 逻辑运算符 158
4.5.13 比较运算符 162
4.5.14 赋值运算符 164
4.5.15 组合赋值运算符 166
4.5.16 功能符 167
4.6 类型转换和类型检查 170
4.6.1 隐式类型转换 170
4.6.2 显式类型转换 171
4.6.3 失效转换 172
4.6.4 静态类型语法 173
4.6.5 语法检查 174
4.6.6 编译时类型检查 176
4.6.7 运行时类型检查 177
4.6.8 数据类型成员的检测 178
4.6.9 as运算符 179
4.6.10 强制类型转换 180
4.6.11 运算符与隐式类型转换 181
4.6.12 数值类型的转换 183
4.6.13 布尔类型的转换 186
4.6.14 字符串的转换 187
4.7 小结 188
第5章 流程控制与函数 189
函数在程序的设计和开发过程中居于极其重要的地位,而使用流程图可以将复杂问题简单化,令抽象过程直观化。本章重点讲解了ActionScript 3.0中流程控制和函数使用的相关知识,并介绍了流程图的作用和画法。
5.1 条件流程 189
5.1.1 条件流程的概念 189
5.1.2 if()语句 190
5.1.3 if()...else...语句 191
5.1.4 三元运算符 193
5.1.5 多级条件流程 195
5.1.6 if()…else if()…语句 197
5.1.7 switch语句基础用法 199
5.1.8 switch语句常见错误 200
5.1.9 条件流程的逻辑控制 203
5.2 循环流程 204
5.2.1 for循环 204
5.2.2 for()语句执行逻辑 206
5.2.3 for…in循环 207
5.2.4 for each…in循环 209
5.2.5 while循环 211
5.2.6 do…while循环 212
5.2.7 break和continue 213
5.2.8 label标签与循环嵌套 215
5.2.9 非循环标签 217
5.2.10 标签嵌套 218
5.2.11 循环与作用域 220
5.3 函数 221
5.3.1 函数的基本概念 222
5.3.2 函数定义语句 224
5.3.3 调用函数 226
5.3.4 作用范围和定义位置 227
5.3.5 使用参数 228
5.3.6 可选参数 229
5.3.7 参数的传递 230
5.3.8 函数输出 232
5.3.9 使用返回值 234
5.3.10 函数表达式 235
5.3.11 函数表达式的缺点 238
5.3.12 函数表达式的内存优势 239
5.3.13 函数表达式与编译提升 240
5.3.14 嵌套函数 242
5.3.15 使用arguments对象 244
5.3.16 arguments的方法 246
5.3.17 arguments与递归函数 248
5.3.18 arguments与函数重载 251
5.3.19 可变参数 253
5.3.20 函数作用域链 254
5.3.21 函数封包 256
5.3.22 函数对象 257
5.4 流程图 259
5.4.1 程序流程图的概念 259
5.4.2 程序流程图的作用 261
5.4.3 分级流程图体系 263
5.4.4 步骤列表 263
5.4.5 伪代码 264
5.4.6 经典数据流程图的构成 265
5.4.7 指向线与执行框(矩形框) 266
5.4.8 判别框(菱形框) 267
5.4.9 起始框和终止框(圆圈) 267
5.4.10 流程图设计原则 269
5.4.11 常见流程图结构 271
5.4.12 嵌套结构的流程图 272
5.5 小结 274
第6章 面向对象编程 276
本章围绕OOP这一核心内容,从面向对象编程的基础概念入手,逐步深入。在内容组织上,通用概念和具体实现交织,抽象机制同实际代码并存。先后介绍了Action Script 3.0对类的支持和实现,原型对象与抽象类,命名空间和权限控制,包和类文件的管理,类和对象的操作语法等内容。
6.1 对象和类 276
6.1.1 编程模式 276
6.1.2 模式进化 277
6.1.3 OOP与模块化 279
6.1.4 OOP开发过程 280
6.1.5 类设计策略 284
6.1.6 类元素的属性定义 286
6.1.7 术语记法 287
6.1.8 类的构造函数 287
6.1.9 继承:父类和子类 288
6.1.10 覆盖和重载 290
6.1.11 多态 293
6.1.12 嵌套类和动态类 294
6.2 面向对象的脚本实现 296
6.2.1 原型对象机制 296
6.2.2 操作原型对象 297
6.2.3 原型链 298
6.2.4 原型继承 300
6.2.5 原型机制下的抽象类 301
6.2.6 抽象类继承 302
6.2.7 操作AS3原型对象 304
6.2.8 灵活选择继承机制 306
6.2.9 命名空间的概念 307
6.2.10 创建命名空间 308
6.2.11 应用命名空间 309
6.2.12 引用命名空间 310
6.2.13 关键字AS3 311
6.3 自定义类 313
6.3.1 自定义类的作用 313
6.3.2 定义ActionScript 3.0类 314
6.3.3 类属性关键字 316
6.3.4 类体 317
6.3.5 属性和方法 318
6.3.6 创建类成员 319
6.3.7 成员属性 321
6.3.8 static成员属性 323
6.3.9 静态属性 324
6.3.10 静态方法 326
6.3.11 实例方法 327
6.3.12 交叠访问 328
6.3.13 this与覆盖继承 330
6.3.14 构造函数 331
6.3.15 构造初始化 332
6.3.16 get和set存取器 334
6.3.17 set/get存取器与属性覆盖 336
6.3.18 方法的封装 337
6.4 类的继承 339
6.4.1 继承成员 339
6.4.2 直接执行语句 340
6.4.3 创建和使用包 342
6.4.4 包与命名空间 345
6.4.5 利用包组织代码 346
6.4.6 继承访问控制 348
6.4.7 方法的继承覆盖 349
6.4.8 属性的继承与覆盖 349
6.4.9 关键字super 351
6.4.10 多态 353
6.4.11 静态成员与作用域链 354
6.5 面向对象进阶 356
6.5.1 联合继承 357
6.5.2 接口的概念 358
6.5.3 接口的作用 359
6.5.4 定义接口 361
6.5.5 实现接口 362
6.5.6 接口实例 363
6.5.7 接口检测 364
6.5.8 联合接口的实现 366
6.5.9 接口使用技巧 367
6.5.10 抽象类的内部机制 369
6.5.11 构造者对象 373
6.5.12 类对象的类型检查 375
6.5.13 traits对象与效率提升 376
6.5.14 动态类的概念 377
6.5.15 动态属性 378
6.5.16 动态方法 380
6.5.17 成员检查 382
6.5.18 成员删除 383
6.5.19 动态静态成员 384
6.6 小结 386
第7章 AS3常用对象 387
本章将选取编程中常用的类和对象,介绍其用法。这些常见的类和对象包括数组,字符串,形状、按钮等具有实际载体的对象,还包括时间、事件、显示列表等抽象的对象。这些对象虽然分散于ActionScript各个包中,但是几乎任何程序开发都不能脱离这几种对象。
7.1 数组和枚举 387
7.1.1 数组的概念 388
7.1.2 创建索引数组 389
7.1.3 索引数组的插入与删除 391
7.1.4 索引数组的插入与删除 393
7.1.5 索引数组的排序 395
7.1.6 属性排序 397
7.1.7 数组的输出 399
7.1.8 关联数组的概念 401
7.1.9 创建关联数组 403
7.1.10 字典 407
7.1.11 数组的循环遍历 409
7.1.12 数组的复制 410
7.1.13 多维数组 412
7.2 字符串 414
7.2.1 创建字符串 414
7.2.2 字符串的值 415
7.2.3 字符串的长度 416
7.2.4 拼接和转换 416
7.2.5 字符大小 417
7.2.6 搜索 418
7.2.7 截取和分割 419
7.2.8 替换 421
7.3 时间 422
7.3.1 创建Date对象 422
7.3.2 利用毫秒创建Date 423
7.3.3 “Date()”参数列表 423
7.3.4 使用日期字符串 424
7.3.5 设置与读取 425
7.3.6 访问属性 426
7.3.7 日期运算 427
7.3.8 时区运算 427
7.4 显示列表 428
7.4.1 显示对象 428
7.4.2 显示对象容器 429
7.4.3 显示列表的概念 430
7.4.4 显示列表的优势 431
7.4.5 创建显示对象 432
7.4.6 添加显示对象 433
7.4.7 显示对象排序 435
7.4.8 删除显示对象 437
7.4.9 调整显示对象 438
7.5 小结 439
第3篇 语言应用
第8章 脚本动画基础 442
本章详细介绍了Flash脚本动画的基础知识。通过本章的学习,读者不仅理解了脚本动画的构成机制和定时器类的用法,还可以自行创建脚本实现位移、淡入淡出、旋转、伸缩形变等基础动画效果。本章由浅入深地讲解了ActionScript 3.0中的矩阵类,深刻分析了矩阵类的机制,为实现复杂的应用夯实基础。
8.1 动画定时器 442
8.1.1 动画要素 442
8.1.2 Timer类 443
8.1.3 使用定时器 443
8.1.4 精确性 444
8.2 位置和大小 444
8.2.1 基本原理 445
8.2.2 实例演示 445
8.2.3 Matrix类 446
8.2.4 应用实例 446
8.2.5 实例分析 447
8.2.6 斜切变形 448
8.3 颜色和透明度 449
8.3.1 操作透明度 449
8.3.2 ColorTransform类 449
8.3.3 实例应用 450
8.3.4 代码分析 451
8.3.5 调色技巧 451
8.3.6 闪动动画 452
8.3.7 实现闪动效果 453
8.3.8 状态检查 455
8.4 淡入和淡出 455
8.4.1 数学模型 455
8.4.2 脚本实现 456
8.4.3 模块的封装 457
8.4.4 淡入淡出模块 458
8.4.5 渐变闪动 459
8.4.6 透明度渐变 461
8.5 位移运动 462
8.5.1 直线运动 462
8.5.2 创建程序实例 463
8.5.3 位移 464
8.5.4 运动阶段 464
8.5.5 重复运动 465
8.5.6 位移速度 466
8.5.7 计算点距离 466
8.5.8 调整运动阶段 467
8.5.9 代码实现 468
8.5.10 速度 469
8.5.11 行程 470
8.5.12 匀速位移动画 471
8.6 变形矩阵 472
8.6.1 矩阵基础知识 473
8.6.2 矩阵的运算 473
8.6.3 矩阵与空间变换 474
8.6.4 旋转变换矩阵 475
8.6.5 仿射变形 476
8.6.6 仿射变形的次序 477
8.6.7 Matrix类的本质 477
8.6.8 矩阵变形方法 478
8.6.9 矩阵算法原理 480
8.7 旋转变形 482
8.7.1 旋转和坐标系 482
8.7.2 旋转变形 484
8.7.3 相对坐标系 484
8.7.4 伸缩和映射 487
8.7.5 内建伸缩方法 487
8.7.6 自定义伸缩方法 488
8.7.7 分析映射逻辑 490
8.7.8 多次变形 491
8.7.9 位移向量运算 492
8.7.10 改变内建行为 493
8.8 小结 494
第9章 动画进阶和脚本仿真 495
本章通过实例,介绍了ActionScript 3.0代码在动画中的高级应用。内容不仅涉及到波形运动,重力模拟和变速控制,还详细讨论了诸如倒影,弹性,斜切等特殊效果的实现。通过学习,读者可加深ActionScript 3.0动画编程的理解,对具有一定复杂性的动画也能轻松驾驭。
9.1 创建波形位移运动 495
9.1.1 波形运动的分解 495
9.1.2 创建进阶动画场景 496
9.1.3 建立脚本框架和动画入口 497
9.1.4 创建波动函数 498
9.1.5 改变波的角度 499
9.1.6 波的折线形 500
9.2 运动对象的实时倒影 501
9.2.1 实时倒影的原理 502
9.2.2 实现垂直映射 502
9.2.3 完善水平映射 504
9.2.4 在动画中应用倒影 506
9.2.5 让倒影更加真实 507
9.3 力学模拟和加速减速 508
9.3.1 力和加速度的关系 508
9.3.2 加速度的代码描述 509
9.3.3 力的分解 510
9.3.4 力学模拟游戏 512
9.3.5 增强游戏效果 513
9.3.6 模拟昆虫的飞行 514
9.3.7 昆虫飞行代码分析 515
9.3.8 强化效果及数据采样 516
9.4 重力和弹性 518
9.4.1 抛物线的力学分析 518
9.4.2 简单抛物过程的代码实现 519
9.4.3 落地检测 520
9.4.4 弹跳的力学原理 521
9.4.5 弹跳过程的算法 522
9.4.6 用AS3实现弹跳函数 523
9.4.7 碰撞形变和弹跳形变 524
9.4.8 弹性形变的逻辑流程 525
9.4.9 计算形变因子 526
9.4.10 编写弹性形变函数 528
9.4.11 代码流程分析 530
9.4.12 形变代码分析 532
9.4.13 纳尔逊设计模式 533
9.5 斜切变形 534
9.5.1 斜切的原理 534
9.5.2 斜切的代码实现 536
9.5.3 简单斜切动画 537
9.5.4 斜切的仿真应用 538
9.5.5 加速斜切变形 539
9.5.6 减速斜切与振荡变形 540
9.5.7 减速斜切函数 541
9.5.8 变速斜切的改良 543
9.5.9 改良函数分析 545
9.6 小结 547
第10章 影片剪辑与图形图像 548
本章讨论了Flash开发中的影片剪辑控制、绘图API、位图操作、文本、遮罩和滤镜等实用技术。经过本章的学习,读者可以采用编程方式,对显示对象和位图进行操作,应用滤镜,创建遮罩,并将其显示在舞台之上,创建优质的用户界面。
10.1 影片剪辑控制 548
10.1.1 影片剪辑与时间轴 548
10.1.2 创建影片剪辑 550
10.1.3 自定义影片剪辑 551
10.1.4 控制影片剪辑 552
10.1.5 逆序播放 553
10.1.6 帧标签 554
10.1.7 FrameLabel类 555
10.1.8 剪辑容器 556
10.1.9 影片剪辑属性 556
10.1.10 嵌套剪辑 557
10.2 绘图API 558
10.2.1 矢量图与点阵图 558
10.2.2 绘图API概述 558
10.2.3 绘制直线线条 559
10.2.4 线条样式 561
10.2.5 绘制曲线 563
10.2.6 绘制不规则形状 564
10.2.7 形状填充 564
10.2.8 绘制常见形状 566
10.3 操作位图 568
10.3.1 位图基本知识 568
10.3.2 基本图像格式 569
10.3.3 使用Loader加载外部图像 571
10.3.4 检测加载事件 572
10.3.5 BitmapData类与Bitmap类 573
10.3.6 构建BitmapData 575
10.3.7 使用“draw()”方法 577
10.3.8 创建随机位图 579
10.3.9 Perlin纹理 581
10.3.10 操作位图像素 584
10.3.11 操作块像素 585
10.3.12 像素检测 587
10.3.13 克隆位图 588
10.3.14 蒙版复制 589
10.3.15 操作通道 591
10.3.16 锁定与解锁 593
10.4 文本 593
10.4.1 文本操作基本知识 594
10.4.2 修改静态文本 595
10.4.3 TextSnapshot类 597
10.4.4 创建动态文本 600
10.4.5 嵌入图片 601
10.4.6 文本滚动 601
10.4.7 文本格式 602
10.4.8 TextRenderer与反锯齿 605
10.4.9 级联样式表 607
10.4.10 字段选择 609
10.4.11 输入文本 610
10.5 调整显示对象 611
10.5.1 遮罩 611
10.5.2 位图缓存与性能优化 613
10.5.3 Alpha通道遮罩 614
10.5.4 自动背景 615
10.5.5 显示对象的混合 616
10.5.6 调整颜色 618
10.5.7 滤镜的原理 620
10.5.8 常见滤镜 621
10.5.9 使用滤镜 622
10.5.10 位图滤镜 625
10.6 小结 626
第11章 事件与交互 627
本节主要介绍了ActionScript 3.0中事件的运行机制,内容围绕事件机制展开,着重阐述事件机制的原理、事件流的不同阶段和事件对象的派发过程。本章还介绍了如何实现对象间通信,捕获和处理异常,以及利用鼠标键盘同用户进行交互。
11.1 事件响应与异常处理 627
11.1.1 事件响应机制 627
11.1.2 事件流 629
11.1.3 Event类 630
11.1.4 Event扩展类 632
11.1.5 IEventDispatcher接口 633
11.1.6 管理事件侦听器 633
11.1.7 操作事件对象 634
11.1.8 自定义事件 635
11.1.9 编写自定义事件类 636
11.1.10 对象的事件通信 638
11.1.11 操作下行事件流 640
11.1.12 侦听顺序 642
11.1.13 操作上行事件流 642
11.1.14 管理事件目标 643
11.2 异常处理 645
11.2.1 异常 645
11.2.2 错误类 646
11.2.3 try…catch语句 647
11.2.4 抛出异常 647
11.2.5 捕获异常 648
11.2.6 异常甄别 649
11.2.7 异步错误的概念 650
11.2.8 错误事件 650
11.2.9 处理异步错误 652
11.2.10 try…catch流控制 652
11.2.11 Flash Player与调试 653
11.3 用户交互 654
11.3.1 交互对象类 654
11.3.2 键盘输入 655
11.3.3 键盘事件流 657
11.3.4 鼠标事件 657
11.3.5 鼠标本地化 659
11.3.6 鼠标的移动 660
11.3.7 拖拽 661
11.4 系统交互 663
11.4.1 System类概述 663
11.4.2 设置文本编码 663
11.4.3 操作剪贴板 663
11.4.4 查询环境信息 664
11.4.5 获取系统分辨率 665
11.4.6 输入法控制 665
11.5 小结 667
第12章 使用外部数据 668
本章介绍了如何在Flash程序中与外部环境的数据进行数据交换,包括读取和写入这两种类型的操作。本章不仅介绍了如何使用数据共享对象,还讲述了套接字连接的用法和网络异步操作的相关知识,以帮助不同层次的读者认识ActionScript 3.0提供的低端类和高端类。
12.1 媒体资源数据 668
12.1.1 加载视频资源 669
12.1.2 控制视频播放 670
12.1.3 自定义播放界面 671
12.1.4 加载和播放声音 672
12.1.5 追踪音频进度 673
12.1.6 追踪音频进度 674
12.1.7 控制音量 675
12.1.8 加载和显示图像 676
12.1.9 加载和显示图像 676
12.1.10 加载对象的删除 677
12.1.11 加载SWF影片 679
12.2 文本与XML 680
12.2.1 URLLoader类 680
12.2.2 加载外部文本 680
12.2.3 追踪加载进度 681
12.2.4 URLVariables类 682
12.2.5 处理URL字符串文本 683
12.2.6 XML类 684
12.2.7 加载XML文件 685
12.2.8 修改XML加载项 686
12.2.9 XML特殊访问 687
12.2.10 URLStream类 688
12.2.11 加载流数据 688
12.3 存储数据 689
12.3.1 数据共享对象 689
12.3.2 创建共享对象 690
12.3.3 访问路径和安全 690
12.3.4 双重存储机制 691
12.3.5 操作共享数据 692
12.3.6 共享数据 693
12.3.7 遍历数据项 694
12.3.8 删除数据项 694
12.4 网络通信 695
12.4.1 套接字连接 696
12.4.2 Socket套接字类 696
12.4.3 读写Socket 696
12.4.4 XMLSocket类 697
12.4.5 使用XMLSocket 698
12.4.6 接收XML数据 699
12.4.7 上传文件 699
12.4.8 下载文件 701
12.4.9 多文件上传 702
12.5 小结 702
第4篇 实战篇
第13章 编写交互游戏 704
知识点之间的交叉贯通和灵活搭配是ActionScript 3.0开发的难点。本章综合运用ActionScript 3.0开发知识,引导读者建立一个拼图交互游戏,涉及ActionScript 3.0开发中所有的主要知识,包括流程控制、数组操作、外部数据加载、面向对象开发、图形图像操作等。在自由运用这些知识的基础上,最终完成交互游戏的程序开发。
13.1 程序分析 704
13.1.1 游戏功能 704
13.1.2 操作分析 705
13.1.3 模块划分 705
13.1.4 执行过程 705
13.2 编写游戏原型 705
13.2.1 创建游戏舞台 706
13.2.2 图块类的划分 707
13.2.3 ImgSlot类 708
13.2.4 创建位图图块 708
13.2.5 GameSlot类 709
13.2.6 创建屏幕画板 710
13.2.7 判断画板位置 711
13.3 游戏场景 712
13.3.1 分析游戏场景 712
13.3.2 场景基础 712
13.3.3 建立图块数组 714
13.3.4 图块分割 715
13.3.5 建立线性随机序列 716
13.3.6 创建画板数组 717
13.3.7 装载位图 719
13.3.8 舞台空位 720
13.3.9 组装游戏场景 720
13.4 完善游戏功能 722
13.4.1 控制模式 722
13.4.2 侦听鼠标事件 723
13.4.3 侦测目标画板 724
13.4.4 执行屏幕交换 725
13.4.5 游戏胜利判定 726
13.4.6 测试鼠标控制 727
13.4.7 侦听键盘控制 728
13.4.8 搜寻热点画板 729
13.4.9 发送虚拟消息 729
13.5 小结 730
第14章 RSS新闻阅读器 732
本章创建了一个RSS新闻阅读器,涉及远程文件访问、XML文件操作、fl包组件、数据源、数据共享对象等实用内容。本章内容着眼于程序的架构和模块。通过构建模块,带动程序的整体开发,培养读者对复杂应用的宏观控制能力。本章还介绍了一些高级话题,例如:事件机制的高级应用、自定义按钮类,以及Tween动画的使用技巧。
14.1 开发目标 732
14.1.1 基本功能 732
14.1.2 程序界面 732
14.1.3 功能模块 733
14.1.4 执行流程 734
14.1.5 临时调试项目 735
14.2 RSS结构剖析 735
14.2.1 RSS概述 735
14.2.2 应用领域 736
14.2.3 Flash RSS的优势 737
14.2.4 RSS版本 738
14.2.5 RSS 2.0基本格式 738
14.2.6 channel标签 739
14.2.7 item标签 740
14.2.8 样例RSS源 741
14.3 登录界面 743
14.3.1 创建login类 743
14.3.2 接收登录输入 744
14.3.3 创建自定义按钮 745
14.3.4 按钮状态类 746
14.3.5 添加登录按钮 747
14.3.6 布置登录界面 748
14.3.7 绘制登录框 749
14.3.8 显示登录界面 749
14.3.9 界面测试 751
14.4 用户管理 751
14.4.1 登录事件 752
14.4.2 用户ID取存器 752
14.4.3 验证登录信息 753
14.4.4 创建用户 754
14.4.5 密码验证 754
14.4.6 消息输出 755
14.4.7 登录框恢复 757
14.4.8 功能整合 757
14.4.9 编写测试项目 758
14.4.10 类关系分析 758
14.4.11 测试用户管理 760
14.5 RSS源列表 761
14.5.1 创建frame类 761
14.5.2 绘制背景框 762
14.5.3 导入Button组件 763
14.5.4 RSS订阅 764
14.5.5 发送订阅事件 766
14.5.6 响应订阅事件 767
14.5.7 DataProvider数据源 769
14.5.8 List列表组件 770
14.5.9 创建RSS源列表 770
14.6 RSS阅读器整合 771
14.6.1 创建RSS阅读器项目 771
14.6.2 创建全局对象 772
14.6.3 添加侦听器 773
14.6.4 登录状态切换 773
14.6.5 Tween动画 774
14.6.6 登录交互动画 774
14.6.7 用户登录 776
14.6.8 添加RSS源 777
14.6.9 频道简介 778
14.6.10 浏览RSS新闻 778
14.7 小结 779
第15章 全屏幕FLV视频播放器 780
本章介绍了介绍了Video类、NetConnection类和NetStram类的用法。围绕视频回放这一核心任务,分别阐述了如何控制FLV视频的读取,如何全屏幕回放FLV视频,如何控制视频流,如何读取FLV元数据,以及如何使用Slider控件追踪播放进度。本章还根据全屏模式的特点,讨论了相应的控制方法。
15.1 视频播放器概述 780
15.1.1 基本功能 780
15.1.2 模块分析 780
15.1.3 构建方式 781
15.1.4 视频播放器向导 782
15.1.5 Video类 783
15.2 视频回放 783
15.2.1 视频回放原理 783
15.2.2 NetConnection网络连接对象 784
15.2.3 NetStream数据流对象 784
15.2.4 使用Video对象 784
15.2.5 基本操作步骤 785
15.2.6 自定义视频回放类 786
15.2.7 创建自定义方法 786
15.2.8 使用flvvideo类 788
15.3 视频控制 789
15.3.1 创建回放控制类 789
15.3.2 换肤功能 790
15.3.3 视频的播放和暂停 790
15.3.4 添加控制组件 791
15.3.5 控制按钮与事件侦听 792
15.3.6 创建控制面板实例 793
15.3.7 调整播放位置 794
15.3.8 视频流的停止和关闭 796
15.4 回放进度与流缓冲 796
15.4.1 获取视频元数据 796
15.4.2 绑定回调函数 797
15.4.3 跟踪播放进度 799
15.4.4 使用Slider组件 800
15.4.5 回放进度的交互 802
15.4.6 设置视频缓冲 803
15.4.7 数据加载进度 803
15.5 全屏模式 803
15.5.1 播放器版本支持 804
15.5.2 全屏模式 804
15.5.3 屏幕坐标与缩放模式 805
15.5.4 舞台对齐 806
15.5.5 区域全屏 806
15.5.6 切换屏幕模式 806
15.6 小结 808