Adobe
产品
Acrobat
Creative Cloud
创意套装
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
更多产品
解决方案
数字营销
数字媒体
教育
金融服务业
政府部门
网页体验管理
更多解决方案
学习帮助下载公司
商店
在线商店
批量许可
查找经销商
搜索
 
信息 登录
欢迎,我的支持
我的帐户
注销
为何登录?登录后可以管理您的帐户,访问试用版下载、产品扩展和社区区域等。
Adobe
产品 分类 购买   搜索  
解決方案 公司
学习
登录 注销 我的货物 我的支持
Date Date
Qty:
Subtotal
Checkout
Adobe 开发者中心 / Flash 开发人员中心 /

Flash ActionScript 2.0 学习指南

作者 Macromedia Instructional Media Development(IMD)

Macromedia Instructional Media Development(IMD)
  • Macromedia 文档

作者 Jen deHaan

Jen deHaan
  • Adobe
  • flashthusiast.com

Content

  • 关于 Script 辅助
  • ActionScript 2.0 语言的详细信息
  • 了解数据
  • 关于语法和语句
  • 处理事件
  • 面向对象编程
  • 下一步工作

创建日期

12 September 2005

页面工具

在 Facebook 上共享
在 Twitter 上共享
在 LinkedIn 上共享
书签
打印

Tags

要求

必备知识

要求基本熟悉 Flash, 并了解 Flash 工作空间的基础知识。如果您是第一次使用 Flash, 请查看入门学习指南。

用户级别

初级

必需产品

  • Flash Basic
  • Flash Professional (Download trial)

注意: 该学习指南介绍了 Flash 中的 ActionScript, 并为您提供了培养技能的工具。Flash 产品文档是这些材料中很多材料的来源, 学习使用这些新功能时, 始终要咨询 Flash 帮助, 或先访问 LiveDocs。

ActionScript 是 Macromedia Flash 使用的脚本语言。它能够使您的 Flash 内容具有交互性。ActionScript 提供了一个在 Flash 中进行操作的更有效的方法, 从创建简单的动画到设计复杂的、数据丰富的交互应用程序界面。作为 Macromedia Flash 的脚本语言, ActionScript 通过多个版本以增量方式进行了演变。有两个版本的 ActionScript: ActionScript 1.0 和 ActionScript 2.0。

ActionScript 1.0 是 ActionScript 不太正式的版本, 它对于大多数一般的用途来说是不错的;当您使用旧版本的 Flash Player 时, 该产品也可以胜任。想在用户单击按钮时产生一些简单的交互性?想为移动设备创建应用程序?请使用 ActionScript 1.0。但是要创建较复杂的代码, ActionScript 2.0 更合适一些。

ActionScript 2.0 是一种面向对象的编程语言, 它支持全类继承以及开发人员要求成熟语言具备的所有功能。它为您提供了一个更加灵活的编程环境以及出色的调试能力。ActionScript 2.0 的核心是面向对象编程 OOP 的一个正式、熟悉的方法, 包括对类、继承、接口和其他通用 OOP 概念的全部支持。ActionScript 2.0 还包括增强 ActionScript 编程的功能, 如变量数据类型、功能参数和返回类型以及全面的调试信息。ActionScript 2.0 鼓励使用更好的编程结构, 并减少了编码和维护时间, 从而使开发人员受益。希望使用功能更强大的正式编程语言编写代码吗?请使用 ActionScript 2.0。

想要知道是 ActionScript 2.0 适合您的项目, 还是 ActionScript 1.0 是更简单、更快速的解决方案, 请检查以下资源, 这样您就可以做出决定, 从而使执行每个项目的效率都达到最高。

  • 如果您还不了解 ActionScript, 请先阅读 LiveDocs中提供的该语言的语法和基础知识。选择“在 Flash 中学习 ActionScript 2.0”并阅读以下两节: 数据和数据类型以及语法和语言基础知识。
  • 要了解 ActionScript 1.0 和 2.0 之间的差别, 请先阅读 在 ActionScript 1.0 和 2.0 之间做出选择 和 移植到 ActionScript 2.0。
  • 要比较 ActionScript 1.0 和 2.0 之间面向对象编码的优点, 请阅读以下内容:
    • 对于 ActionScript 1.0, 请阅读 LiveDocs 的“学习 ActionScript 2.0 一节中, 用 ActionScript 1.0 进行面向对象编程。
    • 对于 ActionScript 2.0, 请阅读下面的 面向对象编程 一节, 以及 LiveDocs 中“学习 ActionScript 2.0”的“类”一节。

本指南为您介绍了 ActionScript 2.0 和面向对象编程的一些基本概念。下面几节定义了常见术语, 向您展示了如何建立 Flash 应用程序的结构、如何学习 ActionScript 语言、如何在 Flash 中编写脚本, 以及可以在哪里找到详细信息和示例。

如果您还不熟悉 ActionScript 语言, 请再看一下 Flash LiveDocs 中“学习 ActionScript 2.0 手册”的“语法和语言基础知识”一节, 了解有关 ActionScript 的介绍。如果您熟悉 ActionScript, 想开始用 ActionScript 2.0 创建类, 请看相同手册的“类”一节中的“编写自定义的类”示例。

注意: 对于 Flash 8 用户来说, 这只是一个学习指南。如果您正在使用 Flash MX 2004, 请参见 Flash ActionScript 学习指南的上一版。

关于 Script 辅助

如果您在编写 ActionScript 代码或语法时感到不顺手, 则可能想使用“操作”面板 “窗口” › “操作” 中的脚本辅助模式。脚本辅助有助于创建脚本: 在“操作”面板中做出选择, 填充文本字段, 然后自动在“脚本”窗格中创建语句。对于较大的应用程序, 尽管您通常不会使用脚本辅助, 但对于向 Flash 应用程序中添加互连性、模仿原型等, 它还是非常有用的。

脚本辅助能够使您通过从“操作”工具箱中选择项目来构建脚本, “操作”工具箱就是“操作”面板左边上的列表。您还可以从“添加 + ”弹出菜单中选择操作。“操作”工具箱将项分为操作、属性和对象等类, 它还提供了一个按字母顺序列出所有项的索引类。单击某项后, 其描述就会出现在该面板的右上方。双击某项后, 就会把该项添加到“脚本”窗格中该面板右侧的滚动列表上。

在“脚本辅助”模式中, 您可以添加、删除或更改“脚本”窗格中语句的顺序;您还可以在“脚本”窗格上的文本框中输入操作的参数。您还可以在“脚本辅助”模式下使用标准的“操作”面板功能: 您可以查找并替换文本, 查看脚本行号, 并固定一个脚本—也就是说, 当您远离该对象或帧单击时, 使脚本保持在“脚本”窗格内。

要将某项操作添加到 Flash 文档中, 您必须将其附加到某个按钮或电影剪辑上, 或将其附加到“时间线”中的帧上。您可以使用“操作”面板选择、拖放、重新排列和删除操作。

使用“脚本辅助”编写 ActionScript:

  1. 选择“窗口” › “操作”。
    出现“操作”面板。
  2. 单击“脚本辅助”按钮,
    “操作”面板进入“脚本辅助”模式。

注意: 单击“脚本辅助”按钮时, 如果“操作”面板包含 ActionScript 代码, 则 Flash 会对现有代码进行验证。如果代码中有错误, 则在修复 或注释掉 当前代码选择前, 您将不能使用“脚本辅助”。有关删除和处理脚本的信息, 请参见 Flash LiveDocs 的下一节: “使用 Flash” › “用脚本辅助编写 ActionScript” › “使用脚本辅助编写 ActionScript”。

启用“脚本辅助”后, “操作”面板用户界面和行为会按以下方式发生变化:

  • 在“脚本辅助”模式下, “添加 + ”按钮所起的作用是不同的。当焦点在“操作”工具箱上时, 它会在当前选中的文本块后添加选择。如果焦点在“脚本”窗格中, 选择会添加到该文本块上。
  • 您可以使用“删除 - ”按钮删除“脚本”窗格中的当前选择。
  • 可以使用“上箭头”和“下箭头”按钮在代码中向前或向后移动“脚本窗格”中的当前选择。
  • “检查语法”、“自动格式”、“显示代码提示”和“调试选项”按钮以及在“操作”面板中通常可以看到的菜单项被禁用, 因为它们不适用于“脚本辅助”模式。
  • 您可以使用“插入目标”按钮选择舞台 或嵌套在舞台上的对象内 上的电影剪辑、按钮、文本字段或视频对象, 作为进行操作的目标。该按钮被禁用, 除非您正在期望此类目标的“编辑”窗格中编辑字段。

有关使用“脚本”辅助添加、删除和处理脚本的详细信息, 请参见 Flash LiveDocs 的下一节: “使用 Flash” › “用脚本辅助编写 ActionScript” › “使用脚本辅助编写 ActionScript”。

Flash 文档 Flash 帮助和 LiveDocs中均提供了该文档 给您展示了如何使用“脚本辅助”实际操作示例。想要了解使用“脚本辅助”编写脚本的示例, 请参见“使用 Flash” › “用脚本辅助编写 ActionScript” › “使用脚本辅助创建 startDrag/stopDrag 事件”。想要获得为您展示如何使用“脚本辅助”构建小的应用程序的教程, 请参见“Flash 教程” › “ActionScript: 使用脚本辅助模式”。

ActionScript 2.0 语言的详细信息

ActionScript 2.0 引入了几种编程关键字和概念, 包括类、继承和接口。这些概念由我们所熟知的面向对象编程组成。请参见 Flash LiveDocs 的下几节, 了解详细信息:

  • 要了解有关面向对象编程的介绍, 请参见“学习 AS 2.0” › “类” › “关于面向对象编程和 Flash” › “面向对象编程的基础知识”。
  • 要获得 ActionScript 术语的列表, 请参见“学习 ActionScript 2.0” › “术语”。

ActionScript 2.0 的功能包括:

  • 常见的面向对象编程 OOP 模型。 ActionScript 2.0 的主要功能是用来创建面向对象程序的一个常见模型。ActionScript 2.0 实现了几个面向对象的概念, 如类、接口和包;如果您用 Java 或另外一种面向对象的语言编写过程序, 那么, 您不会对这些概念感到陌生。
  • OOP 模型和继承。 该模型是在 Flash 的早期版本 如 Flash MX 中使用的原型连接方法的“语法形式化”, 用来创建对象和建立继承。借助 ActionScript 2.0, 您可以创建自定义的类, 并扩展 Flash 的内置类。
  • 严格的数据类型。 ActionScript 2.0 还能够使您显式指定变量、函数参数以及函数返回类型的数据类型。例如, 下面的代码声明了“字符串”类型 一种内置的 ActionScript 数据类型 的名为 userName 的一个变量。

    var userName:String = “Fred”;

  • 编译器警告和错误。 以前的两个功能 OOP 模型和严格数据类型 能够使创作工具和编译器提供编译器警告和错误消息, 这些信息能够帮助您比以往在 Flash 中更快的速度找到应用程序中的错误。

当您使用 ActionScript 2.0 时, 要确保 FLA 文件的发布设置指定 ActionScript 2.0。这是在 Flash 8 中创建的文件的默认设置。然而, 如果您打开使用 ActionScript 1.0 的一个较早的 FLA 文件, 并开始在 ActionScript 2.0 中重新编写, 那么, 请把 FLA 文件的发布设置改为 ActionScript 2.0。如果不更改设置, 那么, 您的 FLA 文件不会正确编译, 而且不会生成错误。

必须将在 ActionScript 中创建的类存储在单独的 ActionScript AS 文件中;您不能在时间线上的一个帧中创建类 帧脚本 , 也不能将一个类附加到电影剪辑或按钮实例上。有关类文件的一些要点:

  • 对于每个 AS 类文件, 只能定义一个类。
  • 包含该类的文件的名称必须与类名称匹配。
  • ActionScript 类文件必须位于 Flash 编译器查找类的文件夹中。
  • 您可以将几个类组合到一个文件夹中创建一个包。

有关类和面向对象编程的详细信息, 请阅读该指南的面向对象编程一节。如果您还不熟悉创建类和面向对象编程, 请尝试 Flash LiveDocs 的下一节中的步骤: “学习 ActionScript 2.0” › “类” › “示例: 编写自定义的类”。

有关详细信息, 请参见 Flash LiveDocs 的下几节。

  • 关于设置和修改 classpath
    “学习 AS 2.0” › “类” › “关于处理应用程序中的自定义类” › “关于导入类文件” › “关于设置和修改类路径”
  • 关于包
    “学习 AS 2.0” › “类” › “关于面向对象编程和 Flash” › “关于包”
  • AS 2.0 的最佳实践和编码约定
    “学习 ActionScript 2.0” › “AS 2.0 的最佳实践和编码约定”

在 ActionScript 1.0 和 ActionScript 2.0 之间做出选择。

当您在 Flash 中开始一个新文档或应用程序时,必须决定如何组织其相关文件。您可能要在某些项目中使用类, 如在构建复杂的应用程序时, 但并不是所有的文档都使用类。例如, Flash 文档中的一些较简短的示例并不使用类。

对于小的应用程序或简单的 FLA 文件, 使用类存储功能并不是最简单的或最佳的解决方案。当您构建小型项目时, 通常情况下使用类或外部代码文件组织 ActionScript 而非在 FLA 文件中添加 ActionScript 更有效率。通常情况下, 将 ActionScript 放在文档中会更有效率。在这种情况下, 尝试将所有代码放在时间线尽可能少的帧上, 要避免将代码放在 FLA 文件的实例中 如按钮或电影剪辑 。

如果您决定使所有 ActionScript 代码保留在 FLA 文件中, 而非将其放在导入的类中, 这并不意味着您必须使用 ActionScript 1.0。您可能决定将代码放在 FLA 文档中, 但仍然选择使用具有严格数据类型、新方法和属性的 ActionScript 2.0。ActionScript 2.0 还提供了一个遵从其他编程语言中的标准的语法。因此, 该语言不仅更有价值, 而且更容易学习。例如, 如果您用过另外一种基于相同结构和语法标准的语言, 那么, 就不会对 ActionScript 感到陌生了。或者, 您可以在以后的学习中将此知识用到其他语言中。ActionScript 2.0 通过利用一组额外的语言元素, 能够让您使用面向对象的方法开发应用程序;这些元素对应用程序开发非常有利。

在某些情况下, 您不能选择使用哪个版本的 ActionScript。如果您正在构建目标是 Flash Player 的旧版本的 SWF 文件, 如移动设备应用程序, 就必须使用 ActionScript 1.0, 因为对于大多数设备来说, 它与 Flash Player 是兼容的。

请记住, 不管使用的是哪个版本的 ActionScript, 都应该遵循最好的实践。在这些实践中, 很多实践同时适用于两个版本, 如保留区分大小写的一致性、使用代码完成、增强可读性、避免实例名称的关键字、使用一致的命名约定。如果您计划在 Flash 的未来版本中更新应用程序, 或使其变得更大更复杂, 就应该使用 ActionScript 2.0、类和版本控制, 以使更新和修改应用程序的工作变得更加轻松。有关类文件的详细信息, 请参见 面向对象编程一节。

移植到 ActionScript 2.0

许多情况下都不需要将 ActionScript 1.0 代码更新为 ActionScript 2.0 代码, 这是首先需要了解的事情。您在 Flash 的早期版本中编写的 ActionScript 仍能在 Flash 8 和 Flash Player 8 中工作。

将代码从 ActionScript 1.0 移植到 ActionScript 2.0 主要在以下环境中有益:

  • 对于大规模的 Flash 应用程序或包含大量代码的演示, 使用 ActionScript 2.0 可以简化开发过程, 并提供与 ActionScript 1.0 相比更多的调试信息。
  • 要升级最初在 Flash MX 或 Flash 5 中创建的 OOP 程序, 使用 ActionScript 2.0 可以可以非常轻松地维护和修改代码。
  • 您对 OOP 充满了好奇, 想在熟悉的创作环境中学习它。

还需要记住的一点是, 您不需要编写类文件来利用 ActionScript 2.0 或 V2 组件的某些优点或功能。您仍然可以使用时间线上的帧脚本编写 ActionScript 2.0 代码 如将数据类型注释应用于变量的代码 。

了解 ActionScript 和 Flash Player

尽管经常会同时发布 ActionScript 和 Flash Player 的新版本, 但它们并不总是同义的。在构建 Flash 应用程序时, 了解 Flash Player 和 ActionScript 版本之间的区别可能是非常重要的。

您可以使用 ActionScript 1.0 或 ActionScript 2.0 将 Flash 文档编译为 Flash Player 6、7 或 8, 它将会正确工作。这是因为 ActionScript 1.0 和 ActionScript 2.0 都可以编译为相同的字节码 Flash Player 中的 ActionScript 解释器读取的代码 。然而, Flash Player 的每个新版本中都引入了新的 ActionScript API 函数、类、属性和方法 。例如, MovieClip 类的 loadMovie 方法可以在 Flash Player 6、7 和 8 中工作。然而, MovieClipLoader 仅能在 Flash Player 7 和 8 中工作。这意味着尽管对于这些播放器版本中的任何一个您都可以使用 ActionScript 1.0 或 ActionScript 2.0, 但您必须注意目标播放器版本是否支持所使用的 API。

ActionScript 1.0 和 ActionScript 2.0 都不区分大小写。然而, Flash Player 7 和 Flash Player 8 都区分大小写。这意味着您无论使用 ActionScript 1.0 还是 2.0, 变量 userName 和 UserName 在 Flash Player 6 中都是相同的, 但在 Flash Players 7 和 8 中, 这是两个不同的变量。

了解数据

数据引用数字、字符串以及您可能会在 Flash 中处理的其他信息。当您创建应用程序或网站时, 使用数据通常是基本的。创建高级图形和脚本生成的动画时, 您也会使用数据;而且您可能必须处理用来驱动效果的值。

您可以在 Flash 中定义变量中的数据, 您也可以使用 XML、Web 服务等从外部文件或网站加载数据。你可以将数据存储在数据库中, 然后在 SWF 文件中用几种方式表示该信息。这可能包括显示文本字段中的信息或组件, 或显示电影剪辑实例中的图像。

一些最常见的数据种类包括字符串 字符序列, 如名称和文本段 、数字、对象 如电影剪辑 和布尔值 true 和 false 。

数据类型

数据类型对一块数据以及可以对这块数据执行的操作的种类进行描述。您将数据存储在下面的变量中 请参见变量一节 。在创建变量、对象实例和函数定义时, 使用数据类型指定所处理的数据的类型。在编写 ActionScript 时, 使用许多不同的数据类型。

可以使用数据类型对不同类型的数据进行分类, 以评估可以如何使用数据。例如, 可以对数字数据执行数学运算, 但是旋转一个数字是没有意义的。另一方面, 可以旋转一个电影剪辑, 但是将一个电影剪辑与另一个电影剪辑相乘是没有意义的。

ActionScript 2.0 能够使您正式指定变量、参数、函数返回类型的数据类型, 并告诉 Flash 可以在该上下文中使用哪种类别的数据。例如, 如果您将变量声明为“字符串”数据类型, 那么就可以仅将字符串指定给该变量。如果您试图将一个数字指定给该变量, Flash 将会抛出编译器错误。

ActionScript 有两个基本的数据类型分类: 简单和复杂。

  • 简单值 或简单数据类型 是 ActionScript 在最低抽象层存储的值, 这意味着对简单数据类型执行的操作一般会比对复杂数据类型执行的操作更快、更有效率。例如, 布尔、数字和字符串值都是简单数据类型, 这些都是空值并且是未定义的。
  • 复杂值 或复杂数据类型 不是简单值, 它引用简单值。通常情况下, 这些被称为引用数据类型。复杂值属于“对象”数据类型, 或属于基于“对象”数据类型的数据类型。定义复杂值集合的数据类型包括“数组”、“日期”、“按钮”、“MovieClip”和“XML”。有关这些复杂数据类型的详细信息, 请参见Flash LiveDocs 中的“ActionScript 2.0 语言参考”中的条目。

在某些情况下, 包含简单数据类型的变量与包含复杂数据类型的变量的行为方式是不同的。有关详细信息, 请参见下面的 Flash LiveDocs 的几节的内容:

  • 关于变量
    “学习 AS 2.0” › “数据和数据类型” › “关于变量”
  • 使用项目中的变量 “学习 AS 2.0” › “数据和数据类型” › “关于变量” › “使用项目中的变量”
  • 有关您可以在 Flash 应用程序中使用的基本数据类型的信息, 请参见“关于简单数据类型和复杂数据类型”。
    “学习 AS 2.0” › “数据和数据类型” › “关于数据类型” › “关于简单数据类型和复杂数据类型”

Flash LiveDocs 中的“ActionScript 2.0 语言参考”给出了所有数据类型和类的全部定义。

变量

变量就是存放信息的容器。下面的 ActionScript 给出了在 ActionScript 中变量的外观:

var myVariable:Number = 10;

该变量存放一个数字值。使用上一个代码中的 :Number 指定变量所存放的值的类型, 称为数据类型。有关数据类型的详细信息, 请参见下面的指定数据类型。

在整个 ActionScript 中, 容器 由变量名表示 总是相同的, 但内容 值 可以改变。您可以根据需要多次改变脚本中的变量值。SWF 文件播放时, 在改变变量的值时, 您可以记录并保存有关用户所采取的行动的信息, 记录随着 SWF 文件的播放改变的值, 或评估某个条件是 true 还是 false。您可能需要该变量随着 SWF 文件的播放不断更新, 如在 Flash 游戏中当玩家的分数发生变化时。当您在 SWF 文件中创建并处理用户交互时, 变量是基本的。

变量可以存放不同类型的数据;有关详细信息, 请参见 LiveDocs 中关于数据类型的介绍 “学习 AS 2.0” › “数据和数据类型” › “关于数据类型” 。当您在脚本中指定变量的值时, 变量所包含的数据类型会影响该值发生变化的方式。

可以在变量中存储的常见信息类型包括 URL “字符串”类型 、用户的姓名 “字符串”类型 、数学运算的结果 “数字”类型 、事件发生的次数 “数字”类型 或用户是否单击了某个特定的按钮 布尔类型 。每个 SWF 文件和对象实例 如电影剪辑 都有一组变量, 其中每个变量都有一个独立于其他 SWF 文件或电影剪辑中的变量的值。

要查看某个变量的值, 请使用 trace 语句将该值发送到“输出”面板。然后, 当您在测试环境中测试 SWF 文件时, 该值将出现在“输出”面板中。例如, trace hoursWorked 会把变量 hoursWorked 的值发送到测试环境中的“输出”面板上。您还可以在测试环境的调试程序中检查并设置变量值。

有关变量的详细信息, 请参见 Flash 文档的“学习 ActionScript 2.0”卷的“关于变量”一节中的以下主题 可以在“Flash 帮助”和 Flash LiveDocs 中获得, 具体位置是“学习 ActionScript 2.0” › “数据和数据类型” › “关于变量” :

  • 关于声明变量
  • 关于指定值
  • 关于命名变量
  • 在应用程序中使用变量
  • 关于变量和范围
  • 关于加载变量
  • 在项目中使用变量

指定数据类型:

创建变量时, 您可以显式声明该变量的对象类型, 这被称为严格数据类型。如果您不显式地将某一项定义为存放数字、字符串或其他数据类型, 则当某一项被指定时 在运行时 , Flash Player 会试图确定该项的数据类型。有关严格数据类型的信息和示例, 请参见 Flash 文档的“学习 ActionScript 2.0”卷的“关于数据类型”一节中的以下主题 可以在“Flash 帮助”和 Flash LiveDocs 中获得, 具体位置是“学习 ActionScript 2.0” › “数据和数据类型” › “关于数据类型” :

  • 关于“指定数据类型”和“严格数据类型”及其子节“指定数据类型”。
  • 关于类型检查

关于语法和语句

学习 ActionScript 语法和语句就像学习如何用词语造句一样, 然后, 您就可以将这些句子组成段落。ActionScript 可能是非常简单的。例如, 在英语中, 句点结束一个句子;在 ActionScript 中, 分号结束一条语句。在 ActionScript 语言中, 您可以输入 stop 动作来停止电影剪辑实例的播放头, 或停止 SWF 文件的循环。或者您可以编写数千行代码来为交互的银行程序提供动力。您可以看到, ActionScript 能够做非常简单或非常复杂的事情。

在了解数据一节中, 您学习了 ActionScript 语言如何使用数据, 以及您可以如何格式化语法。本节说明了在 ActionScript 中, 您可以如何使用语法组成语句。它包含许多短的代码片断和一些示例, 以对基本的语言概念进行说明。随后的几节将逐步给出更长的代码示例, 这些示例结合在一起, 有助于您理解在本章学到的基础知识。

本节描述的通用规则适用于所有 ActionScript。大多数 ActionScript 术语还有个别要求;想要了解某个具体术语的规则, 请查阅 Flash LiveDocs 中“学习 ActionScript 2.0”的“术语”一节, 或查看其在 ActionScript 2.0 语言参考中的单个条目。 ActionScript 2.0 语言参考包含在 Flash 文档中, 它是使用 ActionScript 的开发人员的核心参考或字典。 对于不熟悉 ActionScript 的用户来说, 应用 ActionScript 的基础知识创建优雅的程序可能是一个很大的挑战。有关如何应用本节中描述的规则的详细信息, 请参见 ActionScript 2.0 的编码约定 “学习 ActionScript 2.0” › “ActionScript 2.0 的最佳实践和编码约定” 。

看一下语言元素

ActionScript 语言由构成 ActionScript 语言的内置类组成。您需要使用正确的 ActionScript 语法组成语句, 以使代码能够在 Flash 中正确编译和运行。在这种情况下, 语法引用您用来编程的语言的语法和拼写。编译器不能理解不正确的语法, 因此, 当您尝试在测试环境中测试文档时, 您会看到错误或警告消息显示在“输出”面板中。因此, 语法是能够帮助您正确组成 ActionScript 规则和指南的集合。

语句是您提供给 FLA 文件, 使其做某些事情的指令, 如执行一个特定的动作。例如, 您可以使用条件语句确定某件事情是真的还是存在的。然后您就可以根据该条件是真的还是假的, 来执行指定的动作, 如函数或表达式。if 语句就是一个条件语句, 它对某个条件进行评估, 以确定在您的代码中应该发生的下一个动作。

// if statement if (condition) { // statements; }

表达式不同于语句, 它是表示一个值的 ActionScript 符号的任意合法的组合。表达式具有值, 而值和属性具有类型。表达式可能由操作符、操作数、值、函数和过程组成。该表达式遵从 ActionScript 优先规则和关联规则。通常情况下, Flash Player 会解释该表达式, 然后返回可以在应用程序中使用的一个值。例如, 下面的代码就是一个表达式:

x + 2

在前面的表达式中, x 和 2 是操作数, + 是操作符。有关操作数和操作符的详细信息, 请参见 Flash LiveDocs 的下一节: “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于 Flash 文档中的操作符”。有关对象和属性的详细信息, 请参见 Flash LiveDocs 的下一节: “学习 AS 2.0” › “数据和数据类型” › “关于数据类型” › “关于简单和复杂的数据类型” › “对象数据类型”。

您格式化 ActionScript 的方式也确定了代码的可维护性。例如, 很难阅读不包含缩进或注释, 或包含不一致的格式和命名约定的 FLA 文件的逻辑。当您缩进了 ActionScript 块 如循环和 if 语句 时, 代码就会比较容易阅读, 如果遇到了问题, 也便于进行调试。有关格式化 ActionScript 的详细信息, 请参见 Flash LiveDocs 的下一节: “学习 ActionScript 2.0” › “AS 2.0 的最佳实践和编码约定” › “格式化 ActionScript 语法”。

在 ActionScript 中, 您使用点 . 操作符 点语法 来访问属于舞台上某个对象或实例的属性或方法。您还可以使用点操作符确定到某个实例 如电影剪辑 、变量、函数或对象的目标路径。点语法表达式以对象或电影剪辑的名称开头, 后面是一个点, 以您想要指定的元素结束。下几节说明了如何编写点语法表达式。

要控制电影剪辑、加载的电影或按钮, 就必须指定目标路径。目标路径是 SWF 文件中电影剪辑实例名称、变量和对象的分级地址。要为电影剪辑或按钮指定目标路径, 就必须将一个实例名称指定给电影剪辑或按钮。通过选择电影剪辑实例, 并在“属性”检查器中输入实例名称来命名该实例。或者, 如果您使用 ActionScript 创建了该实例, 就可以用代码指定该实例名称。您可以使用目标路径将动作指定给电影剪辑, 或获得或设置变量或属性的值。

有关指定实例名称以及使用点语法以一个实例为目标的详细信息, 请参见 Flash LiveDocs 的下一节: 关于使用点语法以一个实例为目标 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于点语法和目标路径” › “关于使用点语法以一个实例为目标” 以及关于范围和目标 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于点语法和目标路径” › “关于范围和目标” 。

注意: 当您为 Flash Player 7 及更高版本编写 ActionScript 时, 您的代码是区分大小写的。这意味着大写稍有不同的变量都会被认为是不同变量。

标点符号是组成 ActionScript 代码的字符。Flash 中有几种语言标点符号。最常见的标点符号是分号 ; 、冒号 : 、圆括号[ ] 和大括号 {} 。这些标点符号中的每一个在 ActionScript 语言中都有特殊的含义, 它们有助于定义数据类型、终止语句或结构化 ActionScript。有关详细信息, 请参见关于语言标点符号 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于语言标点符号” 。

常量是具有不能改变的固定值的属性, 因此它们是在整个应用程序中都不会发生变化的值。Flash 包括几个预定义的常量, 这有助于简化应用程序开发。可以在“键”类中找到常量的一个示例, 它包括许多属性, 如 Key.ENTER 或 Key.PGDN。如果您依赖于常量, 就不需要记住 Enter 和 Page Down 键的键代码值是 13 和 34。使用常量值不仅可以使开发和调试更容易, 而且可以使您的同伴轻松阅读您编写的代码。有关详细信息, 请参见 Flash LiveDocs 的下一节: 使用常量 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于常量和关键字” › “使用常量” 。

ActionScript 中的关键字用来执行特定种类的动作。因为此原因, 它们也是保留字, 因此您不能使用它们作为标识符 如变量、函数和标签名 。一些保留关键字的示例是 if, else, this, function, 和 return。有关详细信息, 请参见 Flash LiveDocs 的下一节: 关于关键字 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于常量和关键字” › “关于关键字” 。

数组是一个对象, 其属性由表示其在结构中的位置的数字确定。基本上, 数组就是一个项目列表。ActionScript 不像某些语言那样, 要求数组中的每个元素都具有相同的数据类型。数组中可以有数字、日期、字符串和对象, 您甚至可以在每个数组索引上添加一个嵌套数组。有关详细信息, 请参见 Flash LiveDocs 的下一节: 关于数组 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于数组” 。

操作符是指定如何组合、比较或改变表达式中的值的字符。表达式是 Flash 可以对其进行计算并返回一个值的任何语句。您可以通过组合操作符和值或调用函数来创建一个表达式。有关表达式的详细信息, 请参见 Flash LiveDocs 的下一节: 关于语法、语句和表达式 “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于语法、语句和表达式” 。

例如, 数学表达式使用数字操作符处理您使用的值。+、<、* 和 = 都是操作符字符的例子。表达式由操作符和操作数组成, 它们是表示一个值的 ActionScript 符号的任意合法的组合。操作数是操作符对其执行操作的那部分代码。例如, 在表达式 x + 2 中, x 和 2 是操作数, + 是操作符。有关操作符的详细信息, 请参见 Flash LiveDocs 的下一节: 关于操作符 “学习 AS 2.0” › “语法和语言基础知识” › “关于操作符” 。

有关语法和语句的信息, 请参见 Flash LiveDocs 的下几节。

  • 关于语句
    “学习 ActionScript 2.0” › “语法和语言基础知识” › “关于语句”
  • 关于点语法和目标路径
    “学习 AS 2.0” › “语法和语言基础知识” › “关于点语法和目标路径”
  • 术语
    “学习 AS 2.0” › “术语”

处理事件

事件是播放 SWF 文件时发生的操作。事件 (如鼠标单击或按键) 称为用户事件, 因为它是直接用户交互的结果。Flash Player 自动生成的事件 (如舞台上电影剪辑的初始外观) 称为系统事件, 因为它不是用户直接生成的。

要使您的应用程序对事件做出反应, 就必须使用事件句柄—与特定对象和事件关联的 ActionScript 代码。例如, 用户单击舞台上的按钮时, 您可能将播放头前进到下一帧。或当 XML 文件完成网络上的加载时, 该文件的内容可能出现在文本字段中。

您可以根据事件的类型采用不同的方法处理 ActionScript 中的事件。下面列出了处理 ActionScript 中的事件的每个方法。并不是下面所有的方法都适用于所有事件类型。

  • 使用事件句柄方法
  • 使用事件监听器
  • 使用按钮和电影剪辑事件句柄, 尤其是 on 句柄和 onClipEvent 句柄。
  • 广播组件实例中的事件

建议不要使用按钮和电影剪辑事件句柄, 因为它们需要向对象附加代码。相反, 最好是将帧脚本中的代码放置在时间线上, 或者可能的话使用事件句柄方法将代码放置在类文件中。

注意: 用 MovieClip.loadMovie 方法使用事件句柄是不可预知的。如果您使用 on() 将事件句柄附加到按钮, 或使用事件句柄方法 (如 MovieClip.onPress 句柄) 创建动态句柄, 然后调用 loadMovie(), 则加载新内容后, 该事件句柄将不可用。但是, 如果您使用 onClipEvent 句柄或 on 句柄将事件句柄附加到电影剪辑, 然后调用该电影剪辑上的 loadMovie(), 则加载新内容后, 该事件句柄仍然可用。

事件句柄方法

事件句柄方法是在该类的实例上发生事件时调用的一种类方法。例如, MovieClip 类定义了 onPress 事件句柄, 只要按下电影剪辑对象上的鼠标就会调用该句柄。但是与类的其他方法不同, 您不直接调用事件句柄;发生相应事件时, Flash Player 自动调用该事件。

以下 ActionScript 类是定义事件句柄的类的示例: Button、ContextMenu、ContextMenuItem、Key、LoadVars、LocalConnection、Mouse、MovieClip、MovieClipLoader、Selection、SharedObject、Sound、Stage、TextField、XML 和 XMLSocket。有关所提供的事件句柄的详细信息, 请参见ActionScript 2.0 语言参考中每个类的条目。注意, 单词 handler 被添加到每个事件句柄的标题中。

默认情况下未定义事件句柄方法: 当发生特定事件时, 其相应的事件句柄被调用, 但是您的应用程序不会进一步响应该事件。要使您的应用程序响应该事件, 使用函数语句定义一个函数, 然后将该函数指定给相应的事件句柄。然后该事件发生时, 会自动调用指定给事件句柄的函数。

事件句柄由三部分组成: 事件将对象的事件句柄方法的名称应用到的对象、指定给事件句柄的函数以及您的代码。以下示例显示了事件句柄的基本结构:

object.eventMethod = function ():Void { // Your code here, responding to event. };

例如, 假设您在舞台上有一个名为 next_btn 的按钮。以下代码将函数指定给按钮的 onPress 事件句柄;该函数将播放头前进到当前时间线中的下一帧:

next_btn.onPress = function ():Void { nextFrame(); };

您可以指定一个函数参考, 接收传递到事件句柄的参数, 将函数指定给事件句柄以及覆盖方法。有关这些主题的详细信息, 请参见 Flash LiveDocs 的下一节。使用事件句柄方法 “学习 ActionScript 2.0” › “处理事件” › “使用事件句柄方法” 。

事件监听器

事件监听器允许一个对象 称为监听器对象 接收另一个对象 称为广播器对象 广播的事件。广播器对象注册监听器对象以接收广播器生成的事件。例如, 您可以注册一个电影剪辑对象以从舞台接收 onResize 通知, 或注册一个按钮示例, 以从文本字段对象接收 onChanged 通知。您可以注册多个监听器对象以从单个广播器接收事件, 并且您可以注册单个监听器对象以从多个广播器接收事件。

与事件句柄方法不同, 用于事件的监听器-广播器模型允许您让多个代码片段监听相同的事件, 不会有什么冲突。当各种代码片段监听相同的事件时, 不使用监听器/广播器模型的事件模型 如 XML.onLoad 可能会出现问题;不同的代码片段在控制单个 XML.onLoad 回调函数参考时会发生冲突。使用监听器/广播器模型, 您可以轻松向相同事件添加监听器, 而不必担心代码瓶颈。

注意: 以下 ActionScript 类可以广播事件: Key、Mouse、MovieClipLoader、Selection、Stage 和 TextField。要查看哪些监听器可以用于某个类, 请参见 Flash LiveDocs ActionScript 2.0 语言参考卷中的类条目。

事件监听器模型

事件监听器的事件模型与事件句柄的模型类似 请参见“使用事件句柄方法” , 但有两个主要差别:

  • 您将事件句柄指定给监听器对象, 而不是广播该事件的对象。
  • 您调用广播器对象 addListener 的特殊方法, 该方法注册监听器对象以接收其事件。

以下代码概述了事件监听器模型:

var listenerObject:Object = new Object(); listenerObject.eventName = function(eventObj:Object):Void { // Your code here }; broadcasterObject.addListener(listenerObject);

代码以对象 listenerObject 开头, 属性为 eventName。您的监听器对象可以是任何对象, 如现有对象、电影剪辑或舞台上的按钮实例, 它也可以是任何 ActionScript 类的实例。例如, 定制电影剪辑可以为“舞台”监听器实施监听器方法。您甚至可以有一个监听几种类型的监听器的对象。

eventName 属性是一个发生在 broadcasterObject 上的事件, 然后将该事件广播到 listenerObject。您可以将多个监听器注册到一个事件广播器。

您将一个函数指定给事件监听器, 该监听器以某种方式响应事件。

最后, 您调用广播器对象上的 addListener() 方法, 将监听器对象传递给 addListener() 方法。

要取消注册监听器对象接收事件, 调用广播器对象的 removeEventListener() 方法, 将要删除事件的名称和监听器对象传递给该方法。

broadcasterObject.removeListener(listenerObject);

有关使用事件监听器的示例, 请参见 Flash LiveDocs 使用事件监听器 “学习 ActionScript 2.0” › “处理事件” › “使用事件监听器” 的下一节。

要获得处理事件的详细信息, 请参见“学习 ActionScript 2.0”的“处理事件”一节中 Flash LiveDocs 的下几节。

  • 使用具有组件的事件监听器
  • 广播组件实例中的事件
  • 创建具有按钮状态的电影剪辑
  • 事件句柄范围
  • 该关键工作的范围
  • 使用代理类

面向对象编程

ActionScript 2.0 是完全面向对象编程 OOP 语言, 该语言向程序员提供了几方面的好处, 尤其是创建大型 Flash 应用程序或演示时。OOP 鼓励可重用性。通过在其他类中继承该类的功能, 您可以重用在 ActionScript 2.0 中创建的类。OOP 的模块性允许您替换或变换应用程序的组件, 不会改变该应用程序的结构。最后, OOP 设计的基本隐喻密切反映了自然世界 具有内部状态并且可以做某些事情的对象 , 这加速并促进了应用程序设计过程。

与 ActionScript 一样, OOP 语言基于类和实例的概念。类定义区分一系列对象的所有属性, 即它定义一类对象。类描述一个对象的属性 数据 和方法 行为 , 这很像建筑蓝图描述了建筑物的特征。Date 类是内在的 ActionScript 类。使用 Date 类, 您可以制作很多实例。每个实例或“日期”对象都可以代表一个不同 或相同 的日期。例如, 您可以使一个“日期”对象表示 2010 年 8 月 1 日, 使另一个日期对象表示 2010 年 8 月 2 日。每个对象继承了 Date 类的相同功能。但是, 每个实例都是一个独立的对象, 就像根据相同的蓝图建造的两个建筑物都是独特的实例一样。

类定义数据类型。 请参见了解数据类型一节 对于不适合任何预存在数据类型的数据, 当应用程序有一个新的逻辑分类时, 您可以编写一个新类。例如, 如果您正在构建一个展示 T 恤的应用程序, 那么, 您可以编写一个定义该数据类型的特性 如颜色和样式 的 TShirt 类。定义类时, 要在外部的脚本文件中使用 class 关键字。通过选择“文件” › “新建” › “ActionScript 文件”, 您可以在 Flash 创作工具中创建一个外部脚本文件。

和平常一样, ActionScript 2.0 提供了其他编程语言 如 Java 的几种强大、熟悉的 OOP 概念和关键字 如 class、interface 和 package 。这种编程语言能够使您构建可重用、可伸缩、健壮以及可维护的程序结构。通过为用户提供全面的编码辅助和调试信息, 它还可以减少开发时间。您可以使用 ActionScript 2.0 创建对象和建立继承, 以及在 Flash 中创建定制类和扩展顶级和内置的类。

Flash Basic 8 和 Flash Professional 8 包括大约 65 个顶级类, 它们提供核心数据 数组、布尔、日期等等 、定制错误和事件, 以及加载外部内容的几种方法 XML、图像、变量以及更多 等等。您还可以编写自己的定制类, 将它们集成到您的 Flash 文档中, 或扩展顶级类并添加自己的功能或修改现有的功能。有关示例, 请参阅教程的 Flash LiveDocs 的下一节。“学习 ActionScript 2.0” › “类” › “关于在应用程序中使用定制类” › “关于类成员”, 这向您显示了如何构建定制 Person 类, 它包含人员的 name 和 age 的定制属性。然后您可以将这个定制类视为文档中新数据类型, 并使用新的操作符创建该类的一个新实例。

在外部 ActionScript AS 文件中编写一个定制类, 然后在编译 FLA 文件时将其导入到应用程序中。构建较大的 Flash 应用程序时, 类可能会非常有用, 因为您可以在外部类文件中组织很多应用程序的复杂性。在将很多逻辑移到定制类中时, 您不仅可以使代码更容易重用, 而且还可以对 ActionScript 代码的其他部分“隐藏”一些方法和属性。这有助于防止团队的其他开发人员访问敏感信息, 或更改不应该更改的数据。

当您使用一个类时, 您还可以扩展现有类以及添加新功能或修改现有功能。例如, 如果您创建三个非常相似的类, 就可以编写一个基类 抽象 , 然后编写扩展基类的三个类 实现 。这三个子类可以添加其他方法和属性, 因此您没有必要创建都复制相同代码和逻辑的三个类文件。

使用类的另一个好处就是代码的可重用性。例如, 如果您创建一个使用绘图 API 创建定制进度条的定制类, 您就可以将进度条类保存在类路径中, 然后通过导入该定制类在所有 Flash 文档中重用相同的代码。有关设置类路径的详细信息, 请参阅“关于导入类文件”和“关于设置和修改类路径”。

有关 OOP 原理的一般简介, 请参阅 Flash LiveDocs 的下一节: 面向对象编程基础知识 “学习 ActionScript 2.0” › “类” › “关于面向对象的编程和 Flash” › “面向对象编程基础知识” 。

有关 OOP 和编写定制类文件的详细信息, 请参阅 Flash LiveDocs 中“学习 ActionScript 2.0”的“类”一章中的以下主题:

  • 编写定制类文件
  • 关于在应用程序中使用定制类
  • “关于在应用程序中使用定制类” › “关于导入类文件”
  • 示例: 编写定制类
  • 示例: 在 Flash 中使用定制类文件
  • 编译和导出类

下一步工作

下面的书籍和资源可以帮助您学习更高级的 ActionScript 主题和面向对象编程。

开发人员中心文章:

  • 使用 EventDispatcher 类创建事件 Ken Toley
  • 创建电影剪辑子类 Brian Lesser
  • 用 mx.utils.Delegate 类代理事件 Mike Chambers

书籍摘录:

  • 面向对象的 ActionScript 摘录自 Colin Moock 撰写的 精通 ActionScript 2.0
  • 模型-视图-控制器设计模式 摘录自 Colin Moock 撰写的 精通 ActionScript 2.0
  • 使用组件* 摘录自 Colin Moock 撰写的 精通 ActionScript 2.0

推荐书籍:

  • 精通 ActionScript 2.0 作者 Colin Moock, 出版社: O'Reilly
  • 从头开始学习 Macromedia Flash MX 2004 ActionScript 作者: Derek Franklin, Jobe Makar;出版社: Macromedia 出版社

下列资源针对的是 Flash MX 2004, 但很多节的内容仍然适用于 Flash 8:

  • ActionScript 简介 摘录自从头开始学习 Flash MX 2004 ActionScript 作者: Derek Franklin, Jobe Makar;出版社: Macromedia 出版社
  • 在 Flash MX 2004 中使用 ActionScript: 最佳实践 Jen deHaan, 文档摘录

Flash User Forum

More
04/23/2012 Auto-Save and Auto-Recovery
04/23/2012 Open hyperlinks in new window/tab/pop-up ?
04/21/2012 PNG transparencies glitched
04/01/2010 Workaround for JSFL shape selection bug?

Flash Cookbooks

More
02/13/2012 Randomize an array
02/11/2012 How to create a Facebook fan page with Flash
02/08/2012 Digital Clock
01/18/2012 Recording webcam video & audio in a flv file on local drive

产品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • 移动应用程序
  • Photoshop
  • Touch Apps

解决方案

  • 数字营销
  • 数字媒体
  • 网页体验管理

行业

  • 教育
  • 金融服务业
  • 政府部门

帮助

  • 产品帮助中心
  • 订货和退货
  • 下载和安装
  • 我的 Adobe

学习

  • Adobe 开发人员连接
  • Adobe TV
  • 培训和认证
  • 论坛
  • 设计中心

购买方式

  • 在线商店
  • 批量许可
  • 查找经销商

下载

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

公司

  • 新闻编辑室
  • 合作伙伴计划
  • 公司社会责任
  • 工作机会
  • 投资者关系
  • 事件
  • 法律
  • 安全
  • 联系 Adobe
选择您的地区 中国(更改)
选择您的地区 关闭

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

使用条款 | 隐私政策和 Cookies (更新)

京 ICP 备 10217899 号 京公网安备 110105010404