ACTIONSCRIPT
™
3.0 编程
编程
©
2007 Adobe Systems Incorporated.
保留所有权利。
ActionScript
™
3.0
编程
如果本指南是随包括最终用户协议的软件分发的,那么,本指南及其所描述的软件将按照该许可协议提供,而且必须遵照
该许可协议的条款来使用或复制。除非该许可协议允许,否则,未经
Adobe Systems Incorporated 书面许可,不得以任
何形式或任何方法 (电子、机械、录制或其它方法)对本指南中的任何部分进行复制、存储到检索系统中或者进行传播。
请注意,本指南中的内容受版权法保护,即使它不随包括最终用户许可协议的软件一起分发也是如此。
本指南的内容仅供参考,如有更改恕不另行通知,而且不应被理解为
Adobe Systems Incorporated
的承诺。对于本指南
的信息内容中可能出现的任何错误或不确切之处,
Adobe Systems Incorporated 不承担任何责任。
请注意,您可能希望包括在您的项目中的现有插图或图像可能受版权法的保护。如果在未经授权的情况下将这些材料包括
到您的新作品中,则可能会侵害版权所有者的权利。请确保从版权所有者那里获得了任何必需的许可。
在范例模板中对公司名称的任何引用都仅用于演示目的,而绝不涉及任何实际的组织。
Adobe、Adobe 徽标、Flex、Flex Builder 和 Flash Player 是 Adobe Systems Incorporated 在美国和 / 或其它国家(地
区)的注册商标或商标。
ActiveX
和
Windows
是
Microsoft Corporation
在美国和其它国家 (地区)的注册商标或商标。
Macintosh
是
Apple
Inc.
在美国和其它国家 (地区)的注册商标。其它所有商标都是其各自所有者的财产。
语音压缩和解压缩技术已得到
Nellymoser, Inc. (www.nellymoser.com)
的许可。
Sorenson
™
Spark
™
视频压缩和解压缩技术得到了
Sorenson Media, Inc.
的许可。
Opera
® 浏览器版权所有
©
1995-2002 Opera Software ASA
及其提供商。保留所有权利。
Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA
美国政府最终用户须知。本软件和文档是 “商业制品”(本术语在
48 C.F.R.
第
2.101
条中定义),包含 “商业计算机
软件”和“商业计算机软件文档”(这两个术语在
48 C.F.R.
第
12.212
条或
48 C.F.R.
第
227.7202
条中用到,以适用
者为准)。与
48 C.F.R. §12.212 或 48 C.F.R. §§227.7202-1 到 227.7202-4(如果适用)保持一致,商业计算机软件
和商业计算机软件文档将以如下方式授权给美国政府最终用户:
(a)
仅作为商业制品
(b)
仅具有依照本协议中的条款和条
件授予所有其他最终用户的权利。依据美国版权法保留未公布的权限。
Adobe Systems Incorporated, 345 Park Avenue,
San Jose, CA 95110-2704, USA.
对于美国政府最终用户,Adobe 同意遵守所有适用的平等机会法规,其中包括(如果
适用的话)
Executive Order 11246
(修订版)、
1974
年的
Vietnam Era Veterans Readjustment Assistance Act
第
402
部分
(38 USC 4212)
、
1973
年
Rehabilitation Act
(修订版)第
503
部分的规定以及
41 CFR
中第
60-1
到
60-60
、
60-250 和 60-741 部分的规则。前一句中提到的确定性行动条款和规则可以引用至本协议。
3
目
录
关于本手册
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
使用本手册 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
访问 ActionScript 文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ActionScript 学习资源. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
第
1
章
:ActionScript3.0
简介
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
关于 ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
ActionScript 3.0 的优点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
ActionScript 3.0 中的新增功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
核心语言功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Flash Player API 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
与早期版本的兼容性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
第
2
章
:ActionScript
快速入门
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
编程基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
计算机程序的用途 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
变量和常量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
数据类型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
处理对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
事件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
基本事件处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
了解事件处理过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
事件处理示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
创建对象实例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
常用编程元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
示例:动画公文包片段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
使用 ActionScript 构建应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
用于组织代码的选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
选择合适的工具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
ActionScript 开发过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
4 目 录
创建自己的类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
类设计策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
编写类的代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
有关组织类的一些建议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
示例:创建基本应用程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
运行后续示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
第
3
章
: ActionScript
语言及其语法
. . . . . . . . . . . . . . . . . . . . . . . . . 55
语言概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
对象和类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
包和命名空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
包. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
命名空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
类型检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
动态类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
数据类型说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
条件语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
循环 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
函数的基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
函数参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
函数作为对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
函数作用域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
第
4
章
:ActionScript
中面向对象的编程
. . . . . . . . . . . . . . . . . . . . . 115
面向对象的编程基础知识. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
类定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
类属性 (property) 的属性 (attribute) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
类的枚举 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
嵌入资源类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
继承 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
高级主题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
示例:GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
目 录 5
第
5
章
:
处理日期和时间
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
日期和时间基础知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
管理日历日期和时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
控制时间间隔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
示例:简单的模拟时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
第
6
章
:
处理字符串
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
字符串基础知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
创建字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
length 属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
处理字符串中的字符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
比较字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
获取其它对象的字符串表示形式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
连接字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
在字符串中查找子字符串和模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
在大小写之间转换字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
示例:ASCII 字符图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
第
7
章
:
处理数组
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
数组基础知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
索引数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
关联数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
多维数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
克隆数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
高级主题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
示例:PlayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
第
8
章
:
处理错误
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
错误处理基础知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
错误类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
ActionScript 3.0 中的错误处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
ActionScript 3.0 错误处理的构成元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
错误处理策略. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
处理 Flash Player 的调试版 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
在应用程序中处理同步错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
创建自定义错误类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
响应错误事件和状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
比较错误类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
ECMAScript 核心错误类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
ActionScript 核心错误类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
flash.error 包的错误类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
示例:CustomErrors 应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236