Flash MX Professional 2004 任务

常见任务
创建文档
使用时间轴特效
使用元件和库资源
了解工作区
使用导入的图片
使用绘图工具
创建元件
创建文本
添加组件
使用行为
用混色器创建颜色
导入视频
测试文档性能
发布 Flash 文档
使用帮助面板
更新帮助
Flash MX Professional 2004 任务
使用屏幕
创建和管理项目
使用“动作”面板和“脚本”窗口
用 ActionScript 2 创建类
调试脚本


入门概述

欢迎使用 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004。Flash 提供了创建和发布丰富的 Web 内容和强大的应用程序所需的所有功能。不管是设计动画还是构建数据驱动的应用程序，Flash 都为您提供了创作出色作品和为使用不同平台和设备的用户提供最佳体验的工具。

本指南旨在向您介绍 Flash。本指南中的教程将引导您完成创建一个简单的 Flash 应用程序的过程。


关于 Flash

Flash 是一个创作工具，从简单的动画到复杂的交互式 Web 应用程序（如在线商场），它使您可以创建任何作品。通过添加图片、声音和视频，可以使您的 Flash 应用程序媒体丰富多彩。Flash 包含了许多种功能，如拖放用户界面组件、将动作脚本添加到文档的内置行为，以及可以添加到对象的特殊效果。这些功能使 Flash 不仅功能强大，而且易于使用。

在 Flash 中创作时，您是在 Flash 文档（即保存时文件扩展名为 .fla 的文件）中工作。在准备部署 Flash 内容时发布它，同时会创建一个扩展名为 .swf 的文件。下一部分中描述的 Flash Player 运行 SWF 文件。


关于 Flash Player

默认情况下，运行您创建的应用程序的 Macromedia Flash Player 7 随 Flash 一起安装。Flash Player 确保可以在最大范围内，在各种平台、浏览器和设备上以一致的方式查看和使用所有 SWF 内容。

Macromedia Flash Player 与每个主要合作伙伴（包括 Microsoft、Apple、Netscape、AOL 和 Opera）的产品一起发布，从而为世界范围内超过五亿一千六百万人即时提供丰富多彩的内容和应用程序。如果需要使用，任何人都可以免费获得 Flash Player。可以在 Macromedia Flash Player 下载中心获得最新版本的 Flash Player


新增功能

Flash 现在提供两种版本：Flash MX 2004 和 Flash MX Professional 2004。要确认您安装了哪种版本，请在应用程序中选择“帮助”>“关于 Flash”。

Flash MX 2004 Flash MX 2004 是 Web 设计人员、交互式媒体专业人员或开发多媒体内容的主题专家的理想工具。该版本注重于创建、导入和处理多种类型的媒体（音频、视频、位图、矢量、文本和数据）。

Flash MX Professional 2004 Flash MX Professional 2004 针对的对象是高级 Web 设计人员和应用程序开发者。Flash MX Professional 2004 包含 Flash MX 2004 中的所有功能，同时还包含多个功能强大的新工具。它提供了对 Web 团队（由设计人员和开发人员组成）成员之间的工作流程进行优化的项目管理工具。外部脚本撰写和处理数据库中动态数据的能力及其它功能使得 Flash 特别适用于大规模的复杂项目，这些项目将使用 Flash Player 随各种 HTML 内容一起部署。

要获得有关 Flash MX 2004 中提供的新功能的在线介绍，请参阅单元：Macromedia On Demand 中的“Flash MX 2004 系列：新功能”。


Flash MX 2004 和 Flash MX Professional 2004 中同时提供的新功能

Flash MX 2004 和 Flash MX Professional 2004 中的新增功能提高了生产力，增强了丰富的媒体支持，并简化了发布流程。

生产力

Flash MX 2004 和 Flash MX Professional 2004 包含了许多专门设计的功能，这些功能简化了以前的复杂任务，因而提高了生产力：

时间轴特效 您可以对舞台上的任何对象应用时间轴特效，以便快速添加过渡特效和动画，如淡入、飞入、模糊以及旋转。有关详细信息，请参阅使用时间轴特效。

行为 使用行为，您可以无需编写一行代码即可向 Flash 内容添加交互性。例如，可以使用行为将以下功能包含在内：链接到 Web 站点、载入声音和图形、控制嵌入视频的回放、播放影片剪辑以及触发数据源。有关详细信息，请参阅使用行为控制实例。

创作环境中的辅助功能支持 Flash 创作环境中的辅助功能支持提供了用于浏览和使用界面控件的快捷键，让您可以在不使用鼠标的情况下使用这些界面元素。有关详细信息，请参阅Flash 创作环境中的辅助功能。

更新的模板 Flash 包含更新的模板，可用于创建演示文稿、电子学习应用程序、广告、移动设备应用程序以及其它常用的 Flash 文档类型。有关详细信息，请参阅使用模板。

集成的帮助系统 新的“帮助”面板在 Flash 创作环境中提供了上下文参考、动作脚本参考以及课程。有关详细信息，请参阅使用“帮助”面板。

拼写检查器 拼写检查器搜索文本中的拼写错误。有关详细信息，请参阅检查拼写。

文档选项卡 每一个打开的文档的选项卡显示在工作区的顶部，使您可以快速找到打开的文档以及在这些文档之间切换。有关详细信息，请参阅为多个文档使用文档选项卡（仅限 Windows）。

“开始”页 “开始”页将常用的任务都集中放在一个页面中，供您随时处理。有关详细信息，请参阅使用“开始”页。

查找和替换 “查找和替换”功能查找和替换文本字符串、字体、颜色、元件、声音文件、视频文件或者导入的位图文件。有关详细信息，请参阅使用“查找和替换”。

支持丰富式媒体

新的丰富式媒体支持功能提高了丰富式媒体演示文稿的质量。

高保真导入 高保真导入使您可以导入 Adobe PDF 和 Adobe Illustrator 10 文件，并保留源文件的精确矢量表示法。有关详细信息，请参阅导入 Adobe Illustrator、EPS 或 PDF 文件。

“视频导入”向导 “视频导入”向导简化了视频编码，并提供了预设编码和编辑剪辑的选项。有关详细信息，请参阅使用“视频导入”向导。

小字体呈现 更清楚地呈现小字体。有关详细信息，请参阅创建文本。

发布

新的发布功能使您可以轻松检测 Flash Player 版本、改进辅助功能和简化本地化过程。

Flash Player 检测 现在可以发布包含关联文件（检测用户是否拥有指定的 Flash Player 版本）的 SWF 文件。您可以配置发布的文件，以便在用户没有指定的 Flash Player 时将他们引导到替代文件。有关详细信息，请参阅配置用于 Flash Player 检测的发布设置。

发布配置文件 可以创建配置文件来保存发布设置，然后导出配置文件并在多个项目之间使用它们，以便在不同的情况下以一致的方式进行发布。有关详细信息，请参阅创建发布配置文件。

辅助功能和组件 新的辅助功能和新一代的组件提供了选项卡排序和选项卡焦点管理功能，并改善了对第三方屏幕读取程序和隐藏字幕程序的支持。

全球化和 Unicode 增强的全球化和 Unicode 支持允许使用任何字符集进行多语种创作。有关详细信息，请参阅创建多语言文本。

“字符串”面板 新的“字符串”面板使得以多种语言发布 Flash 内容更为容易。只需单击几个按钮，Flash 即可为每种指定的语言创建外部 XML 文件。有关详细信息，请参阅创建多语言文本。

安全性 Flash Player 7 执行比以前版本的 Flash Player 更为严格的安全性模型。为了使各个域能彼此通信，精确域匹配要求待访问数据的域与数据提供者的域精确 匹配。HTTPS/HTTP 限制规定，使用非安全（非 HTTPS）协议的 SWF 文件无法访问使用安全 (HTTPS) 协议载入的内容，即使两者正好处于同一个域中也是如此。有关详细信息，请参阅Flash Player 安全功能。

其它改进

Flash Player 的性能大大提高，并且增强了动作脚本以符合 ECMA 脚本语言规范。此外，Flash 现在会跟踪交互操作，从而可以将这些操作转换为可重用的命令。

Flash Player 运行时性能 Player 在视频、脚本撰写和常规显示呈现方面的运行时性能已提高到原来的 2 至 5 倍。

动作脚本 2.0 动作脚本 2.0 是面向对象的语言，符合 ECMA 脚本语言规范并支持继承、强类型以及事件模型。有关详细信息，请参阅ECMA-262 版本 4 符合性。

“历史记录”面板 “历史记录”面板跟踪您的操作，从而可以将这些操作转换为可重用的命令。有关详细信息，请参阅使用“历史记录”面板。


仅在 Flash MX Professional 2004 中提供的新功能

Flash MX Professional 2004 提供了 Flash MX 2004 中的所有可用功能，并提供了用于增强应用程序开发和设计的多种新功能。这些功能包括基于屏幕的可视开发环境，以及用于以交互方式管理数据和提高团队生产力的工具。

基于屏幕的可视开发环境

可视编程环境 Flash MX Professional 2004 引入了基于表单的可视编程环境，最适宜于开发应用程序。有关详细信息，请参阅幻灯片屏幕和表单屏幕（仅限于 Flash Professional）。

基于幻灯片的创作 幻灯片屏幕提供了专为连续演示文稿而设计的功能。有关详细信息，请参阅幻灯片屏幕和表单屏幕（仅限于 Flash Professional）。

新一代的组件

高级组件支持 新的组件现在支持用于控制选项卡导航的焦点管理。尽管这些组件采用新的复杂设计，但您可以通过轻松地重新定义外观来修改它们的外观。有关详细信息，请参阅第 2 版组件的优点。。

数据交互性

数据绑定 数据绑定允许您将任意组件连接到各种数据源，以便通过组件或动作脚本处理、显示和更新数据。有关详细信息，请参阅数据集成（仅限于 Flash Professional）。

用于 Web 服务和 XML 的预建数据连接器 新的组件使您可以轻松地连接到 Web 服务和 XML 数据源。有关详细信息，请参阅组件字典。

性能改进 对大型记录集的性能改进使您可以有效地处理大量数据。

团队生产力

项目管理 “项目”面板允许对项目文件进行集中管理、控制版本，以及对一起工作的 Flash 用户团队的工作流程进行优化。有关详细信息，请参阅处理项目（仅限于 Flash Professional）。

源代码控制 Flash Professional 使用链接业界领先的源代码控制系统（如 Microsoft Visual Source Safe）的插件提供了源代码控制集成功能。有关详细信息，请参阅将版本控制与项目配合使用（仅限于 Flash Professional）。


指导性媒体

Flash 包含多种媒体来帮助您快速学习该程序，使您可以熟练地创建自己的 Flash 应用程序。

关于电子版手册和课程

以下电子版手册可通过“帮助”面板（“帮助”>“帮助”）获得：

  • 入门 通过亲手操作的方式介绍 Flash。
  • 使用 Flash 包含有关在 Flash 创作工具中进行工作的完整信息，其中包括所有命令、功能和用户界面元素。
  • 使用组件 包含有关在 Flash 文档中添加和配置组件的信息，以及有关创建组件的信息。
  • 动作脚本参考指南 提供了对动作脚本语言的概念性介绍
  • 动作脚本字典 记录了动作脚本 API 中的所有动作、方法和属性。

如果您是新用户，您将发现以下信息十分有用：

  • 入门 提供有关 Flash 工作区的基本信息，并指导您创建一个简单的文档。
  • 有关“如何”选项卡的一系列课程提供了使用 Flash 的介绍。请参考“快速任务”、“Flash 基础”和“动作脚本基础”课程（“帮助”>“如何”）。


使用“帮助”面板

从可更新的“帮助”面板中，您可以访问有关如何使用 Flash 的信息。有关“帮助”面板的详细信息，请参阅以下各部分。

访问帮助

“帮助”面板中的选项卡（“帮助”和“如何”）包含 Flash 应用程序附带的全套用户帮助信息。

  • 可以选择“帮助”选项卡来显示常规帮助信息。
  • 可以选择“如何”选项卡来显示 10 到 20 分钟的课程的列表，这些课程可以引导您了解 Flash 中的许多功能。

要访问帮助和目录：

  1. 选择“帮助”>“帮助”以打开“帮助”面板，或按 F1 键。
  2. 如果目录未显示出来，请单击“目录”按钮以显示“目录”窗格。

    帮助书籍列表将显示出来。默认情况下，“帮助”选项卡处于选中状态。

  3. 双击一本书即可打开并显示其主题。
  4. 单击一个主题将其选中。

    要关闭目录，请单击“目录”窗格上方的 X。

“帮助”面板包含区分上下文的参考信息，可以从“动作”面板访问该信息。

从“动作”面板访问区分上下文的帮助：

  1. 要选择一个参考项目，请执行以下操作之一：
    • 在“动作”面板工具箱中选择一个项目。
    • 在“动作”面板的“脚本”窗格中选择一个项目。
    • 在“动作”面板的“脚本”窗格中，将光标置于一个项目前。
  2. 要为选定的项目打开“帮助”面板的参考页，请执行以下操作之一：
    • 按 F1 键。
    • 右击该项目并选择“查看帮助”。
    • 单击“脚本”窗格中上的“参考”按钮。

“如何”选项卡包含简要的课程，这些课程介绍 Flash 的主要功能，并允许您练习各个独立的示例。如果您从未使用过 Flash，或者只使用过有限的一部分功能，请从“如何”选项卡开始。

开始学习课程：

  1. 选择“帮助”>“如何”以显示“帮助”面板的“如何”选项卡。

    在“目录”中，您会找到课程的列表。

  2. 单击一个课程主题将其打开。

要在“帮助”面板中搜索词条或短语：

  1. 单击“帮助”面板工具栏中的“搜索”图标。

    将显示“搜索”窗格。

  2. 在文本框中输入词条或短语，然后单击“搜索”。

    包含该词条或短语的主题列表即会显示出来并按书本排列。

  3. 单击一个主题将其选中。

    注意：单击“目录”按钮可返回“目录”窗格。

要打印帮助页：

  1. 单击“帮助”面板工具栏中的“打印”按钮。
  2. 在“打印”对话框中，选择打印机和其它打印选项，然后单击“打印”。

更改“帮助”面板中显示的文本大小

如果您使用的是膝上型电脑，您可能会发现把“帮助”面板中的文本调大一些会十分有用。如果您更改浏览器中的文本大小，这一调整会反映在“帮助”面板中。如果您使用的是 Windows，您可以直接更改“帮助”面板中的文本大小；这也将改变浏览器中的文本大小。

使用浏览器更改“帮助”面板中显示的文本大小：

  1. 退出 Flash MX 2004
  2. 打开浏览器并遵循说明，将浏览器中的文本改到较大的尺寸。

    当您启动 Flash MX 2004 时，“帮助”面板中的文本大小将改为您为浏览器选定的大小。

使用“帮助”面板更改“帮助”面板中显示的文本大小（仅限 Windows）：

  1. 打开“帮助”面板并选择任何主题。
  2. 在帮助主题的正文中选择一些文本。
  3. 按住 CTRL 键并滚动鼠标滚轮。

    文本的大小将增加或减小。

    注意：这也将改变浏览器中的文本大小。

排列“帮助”面板

可以在工作区中调整“帮助”面板的位置以增加其可用性。可以很方便地控制显示区域的大小以及显示“帮助”面板的位置和时间。有关使用面板的详细信息，请参阅使用面板和“属性”检查器。

在停放的位置排列“帮助”面板：

  1. 在需要的位置停放“帮助”面板。
  2. 如果“帮助”面板尚未展开，则将它展开。
  3. 拖动面板或面板组与“文档”窗口之间的拆分栏以调整显示区域的大小。
  4. 按 F1 键根据需要折叠和展开“帮助”面板。

在非停放（浮动）的位置排列“帮助”面板：

  1. 在需要的位置取消“帮助”面板的停放。
  2. 如果“帮助”面板尚未展开，则将它展开。
  3. 调整面板窗口的大小。
  4. 按 F1 键根据需要隐藏或显示“帮助”面板。

更新“帮助”面板

“更新”功能允许您使用新的和修订的文档（包括过程和课程）更新帮助系统。可以单击“更新”按钮来查看是否可以获得新的信息。此外，如果有可用的帮助更新，“开始”页将有提示。

要更新 Flash 帮助：

  1. 确认已连接到 Internet。
  2. 单击“帮助”面板工具栏中的“更新”按钮，并按照说明来下载帮助系统更新。

每当发行帮助更新时，一个新的更新书本的 PDF 文件将被创建并张贴在 Flash 支持站点的文挡页。

如果您用这种方法下载帮助更新时遇到问题，也可以用 Extension Manager 安装更新的帮助。有关更新帮助的详细信息和每个帮助更新的内容，请参阅
www.macromedia.com/go/fl_documentation_cn。


使用“开始”页

“开始”页使您可以在开始会话或在应用程序窗口中未打开文档时轻松访问最常用的操作。

“开始”页包含以下区域：

打开最近的项目使您可以查看最近打开的文档。

打开显示“打开文件”对话框。

创建新文档提供了可从中选择的文件类型（如动作脚本或文档）列表，以便快速打开新文件。

从模板创建列出用于创建新文档的最常用模板，并允许您从列表中进行选择。

扩展链接到 Macromedia Flash Exchange Web 站点，您可以在其中下载附加应用程序和信息。

通过“开始”页可以快速访问协助您学习 Flash 的资源。您可以浏览 Flash、学习课程并使用最新的文档更新帮助系统。

“开始”页还显示试用版转换信息、升级通知和其它值得关注的消息。

可以选择是否显示“开始”页。

要隐藏“开始”页：

  • 在“开始”页上，选择“不再显示此对话框”。

要指定再次显示“开始”页，请执行以下操作之一：

  • (Windows) 选择“编辑”>“首选参数”，然后单击“常规”选项卡上的“显示开始页”。
  • (Macintosh) 选择“Flash”>“首选参数”，然后单击“常规”选项卡上的“显示开始页”。


安装 Flash 概述

本章说明以下内容：

  • 运行 Flash 的系统要求（请参阅系统要求）。
  • 如何安装 Flash（请参阅安装和激活 Flash）。
  • 如何针对网络自定义 Flash（请参阅关于公司网络上的 Flash Player 安全性配置）。
  • 如何为 Flash Player 配置服务器（请参阅为 Flash Player 配置服务器）。


系统要求

运行 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 需要以下硬件和软件。

创作

安装 Flash 创作工具需要以下硬件和软件。

Windows | Macintosh
600 MHz Intel Pentium III 处理器或同等处理器 Windows 98 SE、Windows 2000 或 Windows XP | 500 MHz PowerPC G3 处理器 Mac OS X 10.2.6
128 MB RAM（建议 256 MB） | 128 MB RAM（建议 256 MB）
190 MB 可用磁盘空间 | 130 MB 可用磁盘空间

完整的产品系统要求和建议信息可在 Flash 系统要求 Web 页中找到。

要安装 Flash MX 2004 和 Flash MX Professional 2004，您必须拥有管理权限。要删除任何版本的 Flash，您也必须拥有管理权限。

Flash MX 2004 和 Flash MX Professional 2004 不支持用 UFS 格式化的 Macintosh 硬盘。Apple 提供了有关若干 Carbon 和 Classic 的 UFS 格式化问题的文档。除非正在使用本机应用程序 (Cocoa)，否则 Apple 不推荐或支持 UFS。

Flash Player 7

下表列出了 Flash Player 7 的系统和浏览器要求。

平台 | 浏览器
Windows 98 | Microsoft Internet Explorer 5.x、Netscape 4.7、Netscape 7.x、Mozilla 1.x、AOL 8 和 Opera 7.11
Windows Me | Microsoft Internet Explorer 5.5、Netscape 4.7、Netscape 7.x、Mozilla 1.x、AOL 8 和 Opera 7.11
Windows 2000 | Microsoft Internet Explorer 5.x、Netscape 4.7、Netscape 7.x、Mozilla 1.x、CompuServe 7、AOL 8 和 Opera 7.11
Windows XP | Microsoft Internet Explorer 6.0、Netscape 7.x、Mozilla 1.x、CompuServe 7、AOL 8 和 Opera 7.11
Mac OS 9.x | Microsoft Internet Explorer 5.1、Netscape 4.8、Netscape 7.x、Mozilla 1.x 和 Opera 6
Mac OS X 10.1.x 或 Mac OS X 10.2.x | Microsoft Internet Explorer 5.2、Netscape 7.x、Mozilla 1.x、AOL 7、Opera 6 和 Safari 1.0（仅限 Mac OS X 10.2.x）

完整的产品系统要求和建议信息可在 Flash 系统要求 Web 页中找到。


安装和激活

Flash 的安装过程是自动进行的。安装之后，您可以选择运行 Flash 的 30 天试用模式，也可以选择激活 Flash MX 2004 或 Flash MX 2004 Professional。除非想要选择试用模式，否则这两种版本的 Flash 在使用之前都必须通过 Internet 或电话激活，并且您需要序列号才能激活任一版本的 Flash。Windows 98 SE 用户必须装有 Microsoft Internet Explorer 5.1 或更高版本才能通过 Internet 激活。

注意：安装 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 不会覆盖较早的 Flash 版本，如可能已安装的 Macromedia Flash MX。

要安装 Flash：

  1. 在安装之前关闭任何正在运行的 Flash 版本。
  2. 执行下列操作之一开始安装过程：
    • (Windows) 如果有 CD，请将其插入 CD 驱动器。此时将播放一段 Flash 影片，引导您选择安装选项。

      注意：如果需要，也可以运行 Install Flash MX 2004.exe 来启动 Flash 影片。

    • (Macintosh) 如果有 CD，请将其插入 CD 驱动器，然后双击安装程序图标。
    • 如果从 Internet 下载了 Flash，请双击 FlashMX2004Installer.exe (Windows) 或双击安装程序图标 (Macintosh)，然后按照屏幕上的说明进行操作。
  3. 安装完成时，按照说明选择 30 天的试用期，或输入序列号并激活 Flash。


从 Macromedia Flash MX 2004 升级到 Macromedia Flash MX Professional 2004

如果购买了 Macromedia Flash MX 2004，您可以升级到 Macromedia Flash MX Professional 2004。

要升级到 Macromedia Flash MX Professional 2004：

  1. 选择“帮助”>“升级到 Flash MX Professional 2004”。
  2. 在出现的对话框中，执行以下操作之一：
    • 选择“购买”以打开浏览器并访问 Macromedia 商店。
    • 选择“试用”并按照说明获取用于试用升级的序列号。

      试用期结束时，如果不购买升级，您的应用程序将恢复为 Macromedia Flash MX 2004。


在试用模式版本之间切换

如果正在运行 Flash 某个版本的试用模式，您可以在同一试用期内切换到另一版本。

要在试用模式之间切换：

  • 视已在使用和希望试用的试用模式而定，从 Flash 中选择“帮助”>“切换到 Flash MX Professional 2004”或“切换到 Flash MX 2004”。

    此时将出现一个对话框，指示必须重新启动计算机才能使更改生效。


从试用模式中购买 Flash 版本

如果正在试用模式下运行 Flash，则可以直接从应用程序中开始购买流程。

要从试用模式中购买 Flash：

  1. 选择“帮助”>“激活 Macromedia Flash MX”。
  2. 在出现的对话框中，选择“在线购买”以购买一个序列号。

    一个浏览器窗口将引导您访问 Macromedia 商店。


更改或删除 Flash Player

可以更改或重新安装当前版本的 Flash Player。

要更改或重新安装 Windows 的 ActiveX 控件（Internet Explorer 或 AOL）：

  1. 关闭浏览器。
  2. 删除当前安装的任何 ActiveX 控件版本。有关说明，请参阅 Macromedia Flash 支持中心上的 Technote 14157。
  3. 运行 Players 文件夹中的 Install Flash Player 7 AX.exe 文件以开始安装。
  4. 打开浏览器。新版本的 ActiveX 控件应已安装。

要更改或重新安装 Windows 的插件（Netscape、Mozilla、CompuServe 或 Opera）：

  1. 在安装新版本的插件之前关闭浏览器。
  2. 删除当前安装的任何插件版本。有关说明，请参阅 Macromedia Flash 支持中心上的 Technote 14157。
  3. 运行 Players 文件夹中的 Install Flash Player 7.exe 文件以开始安装。
  4. 打开浏览器。新版本的插件应已安装。要在 Netscape 中验证安装，请从浏览器菜单中选择“帮助”>“关于插件”。

要更改或重新安装 Macintosh 的插件（Netscape、Internet Explorer for Macintosh、Safari、AOL、Opera 或 CompuServe）：

  1. 在安装新版本的插件之前关闭浏览器。
  2. 删除当前安装的插件版本。有关说明，请参阅 Macromedia Flash 支持中心上的 Technote 14157。
  3. 运行 Players 文件夹中的 Install Flash Player 7 (Mac OS 9.x) 或 Install Flash Player 7 OS X (Mac OS X.x) 以开始安装。
  4. 打开浏览器。新版本的插件应已安装。要在 Netscape 上进行验证，请从浏览器菜单中选择“帮助”>“关于插件”。


Flash Player 服务器配置

要使用户能够在 Web 上查看您的 Flash 内容，必须正确配置 Web 服务器以便识别 SWF 文件。

服务器可能已经正确进行了配置。要测试服务器配置，请参阅 Macromedia Flash 支持中心上的 TechNote 4151。如果没有正确配置服务器，请遵循下面的过程来配置它。

配置服务器就是建立正确的多部分网际邮件扩展 (MIME) 类型，以便服务器可以将具有 .swf 扩展名的文件识别为 Shockwave Flash 文件。

接收正确 MIME 类型的浏览器可以载入正确的插件、控件或辅助应用程序，以便处理和正确显示进入的数据。如果没有 MIME 类型或者服务器没有正确传送 MIME 类型，则浏览器可能会显示错误消息，或显示一个带有拼图片的空白窗口。

要为 Flash Player 配置服务器，请执行以下操作之一：

  • 如果您的站点是通过 Internet 服务供应商 (ISP) 建立的，请要求 ISP 将此 MIME 类型添加至服务器：具有 SWF 后缀的应用程序/x-shockwave-flash。
  • 如果您自己管理服务器，请参考 Web 服务器文档以获得有关添加或配置 MIME 类型的说明。


关于公司网络上的 Flash Player 安全性配置

公司和企业的系统管理员可以对 Flash 进行配置，以便限制 Flash Player 访问本地文件系统中的资源。您可以创建在本地系统上限制 Flash Player 功能的安全性配置文件。

安全性配置文件是一个文本文件，放在与 Flash Player 安装程序相同的文件夹中。在安装过程中，Flash Player 安装程序将读取该配置文件并遵循其安全性指令。Flash Player 使用 System 对象将配置文件公开给动作脚本。

通过配置文件，您可以禁止 Flash Player 访问相机或麦克风、限制 Flash Player 可以使用的本地储存量、控制自动更新功能并防止 Player 读取用户本地硬盘中的任何内容。

有关安全性的详细信息，请参阅 System 类。


了解工作区概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 工作区由以下部分组成：一个舞台（可在上面放置媒体内容）、一个包含菜单和命令的主工具栏（用于控制应用程序功能）、多个面板和一个“属性”检查器（用于组织和修改媒体资源），以及一个包含工具的工具栏（用于创建和修改矢量图形内容）。有关工作区的详细信息，请参阅以下各部分：

  • 移动舞台视图
  • 使用时间轴
  • 使用帧和关键帧
  • 使用层
  • 关于主工具栏和编辑栏
  • 使用工具栏
  • 使用网格、辅助线和标尺
  • 使用面板和“属性”检查器

您可以选择首选参数来修改默认 Flash 工作区。上下文菜单和快捷键为您提供了轻松浏览 Flash 创作环境的方式。特殊的工作区辅助功能提供了附加的快捷键，使您可以不使用鼠标即可浏览面板和对话框。请参阅以下各部分：

  • 设置 Flash 中的首选参数
  • 自定义键盘快捷键
  • 使用上下文菜单
  • Flash 创作环境中的辅助功能

要获得有关 Flash MX 2004 工作区的在线介绍，请参阅单元：Macromedia On Demand 中的“Flash MX 2004 系列：工作区指南”。


使用舞台

舞台是您在其中放置图形内容的矩形区域，这些图形内容包括矢量插图、文本框、按钮、导入的位图图形或视频剪辑，诸如此类。Flash 创作环境中的舞台相当于 Macromedia Flash Player 中在回放期间显示 Flash 文档的矩形空间。您可以在工作时放大和缩小以更改舞台的视图。

网格、辅助线和标尺有助于在舞台上精确地放置内容。请参阅使用网格、辅助线和标尺。


缩放

要在屏幕上查看整个舞台，或要在高缩放比率情况下查看绘画的特定区域，可以更改缩放比率。最大的缩放比率取决于显示器的分辨率和文档大小。舞台上的最小缩小比率为 8%。舞台上的最大放大比率为 2000%。

要放大或缩小舞台的视图，请执行以下操作之一：

  • 要放大某个特定的元素，请选择工具栏中的“缩放”工具，然后单击该元素。要在放大或缩小之间切换“缩放”工具，请使用“放大”或“缩小”组合键（当“缩放”工具处于选中状态时，位于工具栏的选项区域中），或者按住 Alt 键单击 (Windows) 或按住 Option 键单击 (Macintosh)。

  • 要放大绘画的特定区域，请使用缩放工具拖出一个矩形选取框。Flash 可以设置缩放比率，从而使指定的矩形填充窗口。
  • 要放大或缩小整个舞台，请选择“查看”>“放大”或“查看”>“缩小”。
  • 要放大或缩小特定的百分比，请选择“查看”>“缩放比率”，然后从子菜单中选择一个百分比，或者从应用程序窗口的左下角上的“缩放”控件中选择一个百分比。
  • 要缩放舞台以完全适合给定的窗口空间，请选择“视图”>“缩放比率”>“符合窗口大小”。
  • 要显示当前帧的内容，请选择“查看”>“缩放比率”>“显示全部”，或从应用程序窗口右上角的“缩放”控件中选择“显示全部”。如果场景为空，则会显示整个舞台。
  • 要显示整个舞台，请选择“查看”>“缩放比率”>“显示帧”，或从应用程序窗口左下角的“缩放”控件中选择“显示帧”。
  • 要显示围绕舞台的工作区，请选择“查看”>“工作区”。工作区以淡灰色显示。使用“工作区”命令可以查看场景中部分或全部超出舞台的元素。例如，要使鸟儿飞入帧中，可以先将鸟儿放置在工作区中舞台之外的位置。


移动舞台视图

当放大了舞台时，您可能无法看到整个舞台。“手形”工具使您可以移动舞台，从而不必更改缩放比率即可更改视图。

移动舞台视图：

  1. 在工具栏中选择手形工具。要临时在其它工具和手形工具之间切换，请按住空格键，并在工具栏中单击该工具。
  2. 拖动舞台。


使用时间轴

时间轴用于组织和控制文档内容在一定时间内播放的层数和帧数。与胶片一样，Flash 文档也将时长分为帧。层就像堆叠在一起的多张幻灯胶片一样，每个层都包含一个显示在舞台中的不同图像。时间轴的主要组件是层、帧和播放头。

文档中的层列在时间轴左侧的列中。每个层中包含的帧显示在该层名右侧的一行中。时间轴顶部的时间轴标题指示帧编号。播放头指示在舞台中当前显示的帧。

时间轴状态显示在时间轴的底部，它指示所选的帧编号、当前帧频以及到当前帧为止的运行时间。

注意：在播放动画时，将显示实际的帧频；如果计算机不能足够快地显示动画，则该帧频可能与文档的帧频不一致。

可以更改帧在时间轴中的显示方式，也可以在时间轴中显示帧内容的缩略图。时间轴显示文档中哪些地方有动画，包括逐帧动画、补间动画和运动路径。有关动画的详细信息，请参阅创建动画。

时间轴的层部分中的控件使您可以隐藏、显示、锁定或解锁层，以及将层内容显示为轮廓。请参阅编辑层和层文件夹。

可以在时间轴中插入、删除、选择和移动帧。也可以将帧拖到同一层中的不同位置，或是拖到不同的层中。请参阅在时间轴中处理帧。


更改时间轴的外观

默认情况下，时间轴显示在主应用程序窗口的顶部，在舞台之上。要更改其位置，可以将时间轴停放在主应用程序窗口的底部或任意一侧，或在单独的窗口中显示时间轴。也可以隐藏时间轴。

可以调整时间轴的大小，从而更改可以显示的层数和帧数。如果有许多层，无法在时间轴中全部显示出来，则可以通过使用时间轴右侧的滚动条来查看其它的层。

移动时间轴：

  • 从时间轴标题上的区域拖动时间轴。

    将时间轴拖到应用程序窗口的边沿，停放它。按住 Control 键拖动时将禁止时间轴停放。

要增长或缩短层名字段：

  • 拖动时间轴中分隔层名和帧部分的栏。

要调整时间轴的大小，请执行以下操作之一：

  • 如果时间轴停放在主应用程序窗口，请拖动分隔时间轴和应用程序窗口的栏。
  • 如果时间轴没有停放在主应用程序窗口中，请拖动右下角 (Windows) 或右下角的大小框 (Macintosh)。


移动播放头

播放头在时间轴上移动，指示当前显示在舞台中的帧。时间轴标题显示动画的帧编号。要在舞台上显示帧，可以将播放头移动到时间轴中该帧的位置。

如果正在处理大量的帧，而这些帧无法一次全部显示在时间轴上，则可以将播放头沿着时间轴移动，从而轻易地定位当前帧。

转到帧：

  • 单击该帧在时间轴标题中的位置，或将播放头拖到所需的位置。

要使时间轴以当前帧为中心：

  • 单击时间轴底部的“帧居中”按钮。


更改时间轴中的帧显示

可以更改时间轴中帧的大小，并用彩色的单元格显示帧的顺序。还可以在时间轴中包括帧内容的缩略图预览。这些缩略图是动画的概况，因此非常有用，但是它们需要额外的屏幕空间。

“帧视图”弹出菜单

“短”和“正常”帧视图选项

更改时间轴中的帧显示：

  1. 单击时间轴右上角的“帧视图”按钮，显示“帧视图”弹出菜单。
  2. 从下面的选项中进行选择：
    • 要更改帧单元格的宽度，请选择“很小”、“小”、“正常”、“中”或“大”。 （“大”帧宽度设置对于查看声音波形的详细情况很有用。）
    • 要减小帧单元格行的高度，请选择“短”。
    • 要打开或关闭用彩色显示帧顺序，请选择“彩色显示帧”。
    • 要显示每个帧的内容缩略图（其缩放比率适合时间轴帧的大小），请选择“预览”。这可能导致内容的外观大小发生变化。
    • 要显示每个完整帧（包括空白空间）的缩略图，请选择“关联预览”。如果要查看元素在动画期间在它们的帧中的移动方式，此选项非常有用，但是这些预览通常比用“预览”选项生成的小。


帧和关键帧

关键帧是指在动画中定义的更改所在的帧，或包含修改文档的帧动作的帧。Flash 可以在关键帧之间补间或填充帧，从而生成流畅的动画。因为关键帧可以使您不用画出每个帧就可以生成动画，所以使您能更容易地创建动画。可以通过在时间轴中拖动关键帧来更改补间动画的长度。

帧和关键帧在时间轴中出现的顺序决定它们在 Flash 应用程序中显示的顺序。可以在时间轴中排列关键帧，以便编辑动画中事件的顺序。


在时间轴中处理帧

在时间轴中，可以处理帧和关键帧，将它们按照您想让对象在帧中出现的顺序进行排列。可以通过在时间轴中拖动关键帧来更改补间动画的长度。

可以对帧或关键帧进行如下修改：

  • 插入、选择、删除和移动帧或关键帧
  • 将帧和关键帧拖到同一层中的不同位置，或是拖到不同的层中
  • 拷贝和粘贴帧和关键帧
  • 将关键帧转换为帧
  • 从“库”面板中将一个项目拖动到舞台上，从而将该项目添加到当前的关键帧中

时间轴提供动画中补间帧的视图。有关编辑补间帧的信息，请参阅编辑动画。

Flash 提供两种不同的方法在时间轴中选择帧。在基于帧的选择（默认情况）中，可以在时间轴中选择单个帧。在基于整体范围的选择中，在单击一个关键帧到下一个关键帧之间的任何帧时，整个帧序列都将被选中。可以在 Flash 首选参数中指定基于整体范围的选择。请参阅设置 Flash 中的首选参数。

要在时间轴中插入帧，请执行以下操作之一：

  • 要插入新帧，请选择“插入”>“时间轴”>“帧”。
  • 要创建新关键帧，请选择“插入”>“时间轴”>“关键帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 要在其中放置关键帧的帧，然后从上下文菜单中选择“插入关键帧”。
  • 要创建新的空白关键帧，请选择“插入”>“时间轴”>“空白关键帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 要在其中放置关键帧的帧，然后从上下文菜单中选择“插入空白关键帧”。

要选择时间轴中的一个或多个帧：

  • 要选择一个帧，请单击该帧。如果在首选参数中启用了“基于整体范围的选择”，则单击某个帧将会选择两个关键帧之间的整个帧序列。请参阅设置 Flash 中的首选参数。
  • 要选择多个连续的帧，请按住 Shift 键并单击其它键。
  • 要选择多个不连续的帧，请按住 Control 键单击 (Windows) 或按住 Command 键单击 (Macintosh) 其它帧。

要选择时间轴中的所有帧：

  • 选择“编辑”>“时间轴”>“选择所有帧”。

要删除或修改帧或关键帧，请执行以下操作之一：

  • 要删除帧、关键帧或帧序列，请选择该帧、关键帧或序列，然后选择“编辑”>“时间轴”>“删除帧”，或者右击 (Windows) 或按住 Control 键并单击 (Macintosh) 该帧、关键帧或序列，然后从上下文菜单中选择“删除帧”。周围的帧将保持不变。
  • 要移动关键帧或帧序列及其内容，请将该关键帧或序列拖到所需的位置。
  • 要延长关键帧的持续时间，请按住 Alt 键 (Windows) 或按住 Option 键 (Macintosh) 将该关键帧拖到新序列持续时间的最后一帧。
  • 要通过拖动来复制关键帧或帧序列，请按住 Alt 键单击 (Windows) 或按住 Option 键单击 (Macintosh) 并将关键帧拖到新位置。
  • 要复制和粘贴帧或帧序列，请选择该帧或序列，然后选择“编辑”>“时间轴”>“复制帧”。选择想要替换的帧或序列，然后选择“编辑”>“时间轴”>“粘贴帧”。
  • 要将关键帧转换为帧，请选择该关键帧，然后选择“编辑”>“时间轴”>“清除关键帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 该关键帧，然后从上下文菜单中选择“清除关键帧”。被清除的关键帧以及到下一个关键帧之前的所有帧都将被该关键帧之前的帧内容所替换。
  • 要更改补间序列的长度，请将开始关键帧或结束关键帧向左或向右拖动。要更改逐帧序列的长度，请参阅逐帧动画。
  • 要将项目从库中添加到当前关键帧中，请将该项目从“库”面板拖到舞台中。


使用层

层就像透明的醋酸纤维薄片一样，一层层地向上叠加。层可以帮助您组织文档中的插图。可以在层上绘制和编辑对象，而不会影响其它层上的对象。如果一个层上没有内容，那么就可以透过它看到下面的层。

要绘制、上色或者对层或文件夹做其它修改，需要选择该层以激活它。层或文件夹名称旁边的铅笔图标表示该层或文件夹处于活动状态。一次只能有一个层处于活动状态（尽管一次可以选择多个层）。

当创建了一个新的 Flash 文档之后，它就包含一个层。可以添加更多的层，以便在文档中组织插图、动画和其它元素。可以创建的层数只受计算机内存的限制，而且层不会增加发布的 SWF 文件的文件大小。可以隐藏、锁定或重新排列层。

还可以通过创建层文件夹然后将层放入其中来组织和管理这些层。可以在时间轴中展开或折叠层，而不会影响在舞台中看到的内容。对声音文件、动作、帧标签和帧注释分别使用不同的层或文件夹是个很好的主意。这有助于在需要编辑这些项目时快速地找到它们。

另外，使用特殊的引导层可以使绘画和编辑变得更加容易，而使用遮罩层可以帮助您创建复杂的效果。

有关在 Flash 中处理层的交互式介绍，请选择“帮助”>“如何”>“Flash 基础”>“处理层”。


创建层和层文件夹

在创建了一个新层或文件夹之后，它将出现在所选层的上面。新添加的层将成为活动层。

要创建层，请执行以下操作之一：

  • 单击时间轴底部的“插入图层”按钮。
  • 选择“插入”>“时间轴”>“图层”。
  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 时间轴中的一个层名，然后从上下文菜单中选择“插入图层”。

要创建图层文件夹，请执行以下操作之一：

  • 在时间轴中选择一个层或文件夹，然后选择“插入”>“时间轴”>“图层文件夹”。
  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 时间轴中的一个层名，然后从上下文菜单中选择“插入文件夹”。

    新文件夹将出现在所选层或文件夹的上面。


查看层和层文件夹

在工作过程中，可以需要显示或隐藏层或文件夹。层或文件夹名称旁边的红色 X 表示它处于隐藏状态。在发布 Flash SWF 文件时，FLA 文档中的任何隐藏层都会保留，并可在 SWF 文件中看到。

为了帮助您区分对象所属的层，可以用彩色轮廓显示层上的所有对象。您可以更改每个层使用的轮廓颜色。

可以更改时间轴中层的高度，从而在时间轴中显示更多的信息（例如声音波形）。还可以更改时间轴中显示的层数。

要显示或隐藏层或文件夹，请执行以下操作之一：

  • 单击时间轴中层或文件夹名称右侧的“眼睛”列，可以隐藏该层或文件夹。再次单击它可以显示该层或文件夹。
  • 单击眼睛图标可以隐藏所有的层和文件夹。再次单击它可以显示所有的层和文件夹。
  • 在“眼睛”列中拖动可以显示或隐藏多个层或文件夹。
  • 按住 Alt 键单击 (Windows) 或按住 Option 键单击 (Macintosh) 层或文件夹名称右侧的“眼睛”列可以隐藏所有其它的层和文件夹。再次按住 Alt 键单击或按住 Option 键单击可以显示所有的层和文件夹。

要用轮廓查看层上的内容，请执行以下操作之一：

  • 单击层名称右侧的“轮廓”列可以将该层上的所有对象显示为轮廓。再次单击它可以关闭轮廓显示。
  • 单击轮廓图标可以用轮廓显示所有层上的对象。再次单击它可以关闭所有层上的轮廓显示。
  • 按住 Alt 键单击 (Windows) 或按住 Option 键单击 (Macintosh) 层名称右侧的“轮廓”列可以将所有其它层上的对象显示为轮廓。再次按住 Alt 键单击或按住 Option 键单击它可以关闭所有层的轮廓显示。

要更改层的轮廓颜色：

  1. 执行以下操作之一：
    • 双击时间轴中层的图标（即层名称左侧的图标）。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该层名称，然后从上下文菜单中选择“属性”。
    • 在时间轴中选择该层，然后选择“修改”>“图层”。
  2. 在“图层属性”对话框中，单击“轮廓颜色”框，然后选择新的颜色、输入颜色的十六进制值或单击“颜色选择器”按钮然后选择一种颜色。
  3. 单击“确定”。

更改时间轴中的层高度：

  1. 执行以下操作之一：
    • 双击时间轴中层的图标（即层名称左侧的图标）。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该层名称，然后从上下文菜单中选择“属性”。
    • 在时间轴中选择该层，然后选择“修改”>“时间轴”>“图层属性”。
  2. 在“图层属性”对话框中，选择一个“图层高度”选项，然后单击“确定”。

更改时间轴中显示的层数：

  • 拖动分隔舞台和时间轴的栏。


编辑层和层文件夹

可以重命名、复制和删除层和文件夹。还可以锁定层和文件夹，以防止对它们进行编辑。

默认情况下，新层是按照创建它们的顺序命名的：第 1 层、第 2 层，依此类推。可以重命名层以更好地反映它们的内容。

要选择层或文件夹，请执行以下操作之一：

  • 单击时间轴中层或文件夹的名称。
  • 在时间轴中单击要选择的层的一个帧。
  • 在舞台中选择要选择的层上的一个对象。
  • 要选择两个或多个层或文件夹，请执行以下一个操作：
  • 要选择连续的几个层或文件夹，请按住 Shift 键在时间轴中单击它们的名称。
  • 要选择几个不连续的层或文件夹，请按住 Control 键单击 (Windows) 或按住 Command 键单击 (Macintosh) 时间轴中它们的名称。

要重命名层或文件夹，请执行以下操作之一：

  • 双击层或文件夹的名称，然后输入新名称。
  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 层或文件夹的名称，然后从上下文菜单中选择“属性”。在“名称”文本框中输入新名称，然后单击“确定”。
  • 在时间轴中选择该层或文件夹，然后选择“修改”>“时间轴”>“图层属性”。在“图层属性”对话框中，在“名称”文本框中输入新名称，然后单击“确定”。

要锁定或解锁一个或多个层或文件夹，请执行以下一个操作：

  • 单击层或文件夹名称右侧的“锁定”列可以锁定它。再次单击“锁定”列可以解锁该层或文件夹。
  • 单击挂锁图标可以锁定所有的层和文件夹。再次单击它可以解锁所有的层和文件夹。
  • 在“锁定”列中拖动可以锁定或解锁多个层或文件夹。
  • 按住 Alt 键单击 (Windows) 或按住 Option 键单击 (Macintosh) 层或文件夹名称右侧的“锁定”列，可以锁定所有其它的层或文件夹。再次按住 Alt 键单击或按住 Option 单击“锁定”列可以解锁所有的层或文件夹。

拷贝层：

  1. 单击层名称可以选择整个层。
  2. 选择“编辑”>“时间轴”>“复制帧”。
  3. 单击“添加图层”按钮可以创建新层。
  4. 单击该新层，然后选择“编辑”>“时间轴”>“粘贴帧”。

拷贝层文件夹的内容：

  1. 如果需要，单击文件夹名称左侧的三角形可以折叠它。
  2. 单击文件夹名称可以选择整个文件夹。
  3. 选择“编辑”>“时间轴”>“复制帧”。
  4. 选择“插入”>“时间轴”>“图层文件夹”以创建新文件夹。
  5. 单击该新文件夹，然后选择“编辑”>“时间轴”>“粘贴帧”。

删除层或文件夹：

  1. 选择该层或文件夹。
  2. 执行以下操作之一：
    • 单击时间轴中的“删除图层”按钮。
    • 将层或文件夹拖到“删除图层”按钮。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该层或文件夹的名称，然后从上下文菜单中选择“删除图层”。

    注意：删除层文件夹之后，所有包含的层及其内容都会删除。


组织层和层文件夹

可以在时间轴中重新安排层和文件夹，从而组织文档。

层文件夹使您可以将层放在一个树形结构中，这样有助于组织工作流。可以扩展或折叠文件夹来查看该文件夹包含的层，而不会影响在舞台中是否能看见这些层。文件夹中可以包含层，也可以包含其它文件夹，这使得组织层的方式很像组织计算机中的文件的方式。

时间轴中的层控制将影响文件夹中的所有层。例如，锁定一个图层文件夹将锁定该文件夹中的所有层。

将层或层文件夹移动到层文件中：

  • 将该层或层文件夹名称拖到目标层文件夹名称中。

    该层或层文件夹将出现在时间轴中的目标层文件夹中。

要更改层或文件夹的顺序：

  • 将时间轴中的一个或多个层或文件夹拖到所需的位置。

要展开或折叠文件夹：

  • 单击文件夹名称左侧的三角形。

要展开或折叠所有文件夹：

  • 右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“展开所有文件夹”或“折叠所有文件夹”。


使用引导层

为了在绘画时帮助对齐对象，可以创建引导层。然后可以将其它层上的对象与在引导层上创建的对象对齐。引导层不出现在发布的 SWF 文件中。可以将任何层用作引导层。引导层是用层名称左侧的辅助线图标表示的。

还可以创建运动引导层，用来控制运动补间动画中对象的移动情况。请参阅沿着路径补间动画。

注意：将一个常规层拖到引导层上就会将该引导层转换为运动引导层。为了防止意外转换引导层，可以将所有的引导层放在层顺序的底部。

将层指定为引导层：

  • 选择该层，然后右击 (Windows) 或按住 Control 单击 (Macintosh)，然后从上下文菜单中选择“引导层”。再次选择“引导层”，可以将该层改回常规层。


关于主工具栏和编辑栏

工作区顶部的主工具栏显示包含命令（用于控制 Flash 功能）的菜单。这些菜单包括“文件”、“编辑”、“查看”、“插入”、“修改”、“文本”、“命令”、“控制”、“窗口”和“帮助”。

主工具栏正下方的编辑栏包含用于编辑场景和元件以及用于更改舞台的缩放比率的控件和信息。

有关更改舞台缩放比率的信息，请参阅缩放。有关编辑元件的信息，请参阅使用元件、实例和库资源。有关处理场景的信息，请参阅处理场景。


使用工具栏

工具栏中的工具使您可以绘制、涂色、选择和修改插图，并可以更改舞台的视图。工具栏分为四个部分：

  • “工具”区域包含绘画、涂色和选择工具。
  • “视图”区域包含在应用程序窗口内进行缩放和移动的工具。
  • “颜色”区域包含用于笔触颜色和填充颜色的功能键。
  • “选项”区域显示选定工具的组合键，这些组合键会影响工具的涂色或编辑操作。

使用“自定义工具栏”对话框，可以指定要在 Flash 创作环境中显示哪些工具。请参阅自定义工具栏。

有关使用绘画和涂色工具的信息，请参阅Flash 绘画和涂色工具。有关使用选择工具的信息，请参阅选择对象。有关使用视图修改工具的信息，请参阅移动舞台视图。

要显示或隐藏工具栏：

  • 选择“窗口”>“工具”。


选择工具

可以通过在工具栏中单击或使用快捷键来选择工具。

要选择工具，请执行以下操作之一：

  • 单击要使用的工具。取决于选择的工具，工具栏底部的“选项”区域中可能会显示一组组合键。
  • 按下该工具的快捷键。
  • 要选择位于可见工具后面弹出菜单中的工具，请按住可见工具的图标，然后从弹出菜单中选择另一工具。


自定义工具栏

您可以自定义工具栏，以便指定在创作环境中显示哪些工具。使用“自定义工具栏”对话框来添加或从工具栏中删除工具。

可以在一个位置显示多个工具。如果某个位置中显示多个工具，则组中的顶层工具（最近使用的工具）会在其图标的右下角显示一个箭头。在该图标上按下鼠标按钮时，组中的其它工具将出现在弹出菜单中。您可以拖动以从菜单中选择一个工具。

要自定义工具栏：

  1. 要显示“自定义工具栏”对话框，请执行以下操作之一：
    • 在 Windows 中，选择“编辑”>“自定义工具栏”。
    • 在 Macintosh 上，选择“Flash”>“自定义工具栏”。

      “可用工具”菜单指示 Flash 中当前可用的工具。“当前选择”菜单指示当前分配给工具栏中选定位置的工具。

      注意：如果将多个工具分配给工具栏中的一个位置，则其它工具将出现在弹出菜单中，位于组中的顶层工具之后。顶层工具右下角的小箭头表示存在其它工具。组中的所有工具均使用同一快捷键。

  2. 单击工具栏图形中的某个工具或使用箭头在工具中循环选择，以指定要分配其它工具的位置。
  3. 要将某个工具添加到所选位置，请在“可用工具”列表中选择该工具，然后单击“添加”按钮。可以将一个工具分配给多个位置。
  4. 要从所选位置中删除某个工具，请在“当前选择”滚动列表中选择该工具，然后单击“删除”按钮。
  5. 单击“确定”应用您所做的更改并关闭“自定义工具栏”对话框。

要恢复默认工具栏布局：

  • 在“自定义工具栏”对话框中单击“恢复默认值”。


使用网格、辅助线和标尺

Flash 具有标尺和辅助线，可以帮助您精确地勾画和安排对象。您可以在文档中放置辅助线，然后让对象与这些辅助线对齐，也可以打开网格，然后让对象与网格对齐。

注意：您也可以将对象与其它对象或像素对齐，或者使用指定的对齐容差范围来对齐对象。请参阅对齐。

使用网格

当在文档中显示网格时，将在所有场景中的插图之后显示一系列的直线。您可以将对象与网格对齐，也可以修改网格大小和网格线颜色。

显示或隐藏绘画网格：

  • 选择“查看”>“网格”>“显示网格”。

要打开或关闭对齐网格线：

  • 选择“查看”>“对齐”>“对齐网格”。

要设置网格首选参数：

  1. 选择“查看”>“网格”>“编辑网格”。
  2. 对于“颜色”，请单击颜色框中的三角形，然后从调色板中选择网格线的颜色。

    默认的网格线颜色是灰色。

  3. 选择或取消选择“显示网格”可以显示或隐藏网格。
  4. 选择或取消选择“对齐网格”可以打开或关闭对齐网格线。
  5. 要设置网格间隔，请在水平和垂直箭头右侧的文本框中输入值。
  6. 对于“对齐精确度”，请从弹出菜单中选择一个选项。
  7. 如果想将当前设置保存为默认值，请单击“保存默认值”。

使用辅助线

如果显示了标尺，可以将水平和垂直辅助线从标尺拖动到舞台上。您可以移动、锁定、隐藏和删除辅助线。也可以将对象与辅助线对齐，更改辅助线颜色和对齐容差（对象与辅助线必须有多近才能与辅助线对齐）。可拖动的辅助线只出现在创建它们的时间轴中。

您可以在当前编辑模式（文档编辑模式或元件编辑模式）下清除所有辅助线。如果在文档编辑模式下清除辅助线，则会清除文档中的所有辅助线。如果在元件编辑模式下清除辅助线，则会清除所有元件中的所有辅助线。

要创建自定义辅助线或不规则辅助线，您需要使用引导层。请参阅使用引导层。

显示或隐藏绘画辅助线：

  • 选择“查看”>“辅助线”>“显示辅助线”。

    注意：如果在创建辅助线时网格是可见的，并且打开了“对齐网格”，则辅助线将与网格对齐。

要打开或关闭对齐辅助线：

  • 选择“查看”>“对齐”>“对齐辅助线”。

    注意：当辅助线处于网格线之间时，对齐辅助线优先于对齐网格。

要移动辅助线：

  • 使用箭头工具拖动辅助线。

要删除辅助线：

  • 在辅助线处于解锁状态时，使用箭头工具将辅助线拖到水平或垂直标尺。有关锁定和解锁辅助线的信息，请参阅下面的过程。

要锁定辅助线：

  • 选择“查看”>“辅助线”>“锁定辅助线”。

    注意：您也可以使用“辅助线首选参数”对话框中的“锁定辅助线”选项。请参阅以下过程。

要设置辅助线首选参数：

  1. 选择“查看”>“辅助线”>“编辑辅助线”，然后执行以下任意操作：
    • 对于“颜色”，请单击颜色框中的三角形，然后从调色板中选择辅助线的颜色。默认的辅助线颜色为绿色。
    • 选择或取消选择“显示辅助线”可以显示或隐藏辅助线。
    • 选择或取消选择“对齐辅助线”可以打开或关闭对齐辅助线。
    • 选择或取消选择“锁定辅助线”可以锁定或解锁辅助线。
    • 对于“对齐精确度”，请从弹出菜单中选择一个选项。
    • 如果想删除所有的辅助线，请单击“全部清除”。
    • “全部清除”命令将从当前场景中删除所有的辅助线。
    • 如果想将当前设置保存为默认值，请单击“保存默认值”。
  2. 单击“确定”。

要清除辅助线：

  • 选择“查看”>“辅助线”>“清除辅助线”。

    如果在编辑文档模式下，则会清除文档中的所有辅助线。如果在编辑元件模式下，则只会清除元件中使用的辅助线。

使用标尺

当显示标尺时，它们将显示在文档的左沿和上沿。您可以更改标尺的单位，其默认单位是像素。在显示标尺的情况下移动舞台上元素时，将在标尺上显示几条线，指出该元素的尺寸。

显示或隐藏标尺：

  • 选择“查看”>“标尺”。

要指定文档的标尺度量单位：

  • 选择“修改”>“文档”，然后从右上角的弹出菜单中选择一个选项。


使用面板和“属性”检查器

Flash 提供了许多种自定义工作区的方式，以满足您的需要。使用面板和“属性”检查器，可以查看、组合和更改资源及其属性。可以显示、隐藏面板和调整面板的大小。也可以组合面板并保存自定义的面板设置，从而能更容易地管理工作区。“属性”检查器会发生改变，以反映您正在使用的工具或资源，从而能够快速地访问常用功能。


关于“属性”检查器

使用“属性”检查器可以很容易地访问舞台或时间轴上当前选定项的最常用属性，从而简化了文档的创建过程。您可以在“属性”检查器中更改对象或文档的属性，而不用访问包含这些功能的菜单或面板。

取决于当前选定的内容，“属性”检查器可以显示当前文档、文本、元件、形状、位图、视频、组、帧或工具的信息和设置。当选定了两个或多个不同类型的对象时，“属性”检查器会显示选定对象的总数。


关于“库”面板

“库”面板是存储和组织在 Flash 中创建的各种元件的地方，它还用于存储和组织导入的文件，包括位图图形、声音文件和视频剪辑。 “库”面板使您可以组织文件夹中的库项目，查看项目在文档中使用的频率，并按类型对项目排序。 请参阅使用库来管理媒体资源。


关于“动作”面板

“动作”面板使您可以创建和编辑对象或帧的动作。选择帧、按钮或影片剪辑实例可以激活“动作”面板。取决于所选的内容，“动作”面板标题也会变为“按钮动作”、“影片剪辑动作”或“帧动作”。

有关使用“动作”面板的信息，包括如何在各种编辑模式之间进行切换的信息，请参阅使用“动作”面板和“脚本”窗口。


使用面板

Flash 中的面板有助于您查看、组织和更改文档中的元素。面板中的可用选项控制着元件、实例、颜色、类型、帧和其它元素的特征。通过显示特定任务所需的面板并隐藏其它面板，您可以使用面板来自定义 Flash 界面。

面板使您可以处理对象、颜色、文本、实例、帧、场景和整个文档。例如，可以使用混色器创建颜色，并使用“对齐”面板来将对象彼此对齐或与舞台对齐。要查看 Flash 中可用面板的完整列表，请查看“窗口”菜单。

大多数面板都包括一个带有附加选项的弹出菜单。该选项菜单由面板标题栏中的一个控件指示。（如果没有出现选项菜单控件，该面板就没有选项菜单。）

默认情况下，面板在 Flash 工作区的底部和右边成组显示。

要打开面板：

  • 从“窗口”菜单选择所需的面板。

要关闭面板，请执行以下操作之一：

  • 从“窗口”菜单选择所需的面板。
  • 右击 (Windows) 或按住 Control 键并单击 (Macintosh) 面板标题栏，然后从上下文菜单中选择“关闭面板”。

要使用面板的选项菜单：

  1. 单击面板标题栏中最右边的控件以查看选项菜单。
  2. 单击该菜单中的一个项目。

要调整面板大小：

  • 拖动面板的边框 (Windows) 或拖动面板右下角的大小框 (Macintosh)。

要展开面板或将面板折叠为其标题栏：

  • 单击标题栏上的折叠箭头。再次单击折叠箭头会将面板展开到它以前的大小。

要关闭所有面板：

  • 选择“窗口”>“隐藏面板”。

排列面板

您可以重新排列各面板在面板组内出现的顺序。也可以创建新的面板组，以及将面板放入现有的面板组。如果您希望面板脱离其它面板组单独显示，可以将该面板浮动。这对于您一直需要访问的面板尤为有用，比如“帮助”面板和“动作”面板。

要移动面板：

  • 用面板的抓手（在标题栏的左边）拖动面板。

要向现有面板组中添加面板：

  • 拖动面板的抓手将它放到另一个面板上。

要使面板浮动：

  • 拖动面板的抓手，将它与其它面板分开。

要创建新的面板组：

  • 拖动面板的抓手，使之离开其它面板组。向该组中添加其它面板。

使用面板设置

您可以创建自定义排列的面板设置，并保存这些自定义的面板布局。您可以将面板显示重置为默认布局（在应用程序窗口的右边显示“颜色样本”面板、“动作”面板和“组件”面板和混色器）或重置为以前保存的自定义布局。

要保存自定义面板设置：

  1. 选择“窗口”>“保存面板布局”。
  2. 输入布局名称，然后单击“确定”。

要选择面板布局：

  1. 选择“窗口”>“面板设置”。
  2. 从子菜单选择“默认布局”将面板重置为默认布局，或选择以前保存的自定义布局。

要删除自定义布局：

  • 在对应于（下列）操作系统的位置中打开“面板设置”文档的文件夹，然后删除自定义面板设置的文本文件。

    对于 Windows 操作系统：

    • Windows 2000 或 XP：<启动驱动器>\Documents and Settings\<用户名>\
      Local Settings\Application Data\Macromedia\Flash MX 2004\<language>\
      Configuration\Panel Sets
    • Windows 98：C:\Windows\Application Data\Macromedia\Flash MX 2004\
      <语言>\Configuration\Panel Sets

    对于 Macintosh 操作系统：

    • Macintosh OS X：Macintosh HD/Applications/Macromedia Flash MX 2004/
      First Run/Panel Sets


设置 Flash 中的首选参数

Flash 使您可以设置常规应用程序操作、编辑操作和剪贴板操作的首选参数。另请参阅指定绘画设置。

设置首选参数：

  1. 选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)。
  2. 单击“常规”、“编辑”、“剪贴板”、“警告”或“动作脚本编辑器”选项卡，然后从各自选项中进行选择，如下面的过程所述。 有关动作脚本编辑器首选参数的详细信息，请参阅使用动作脚本编辑器。

要设置常规首选参数，请从以下选项中进行选择：

  • 对于“撤消级别”，请输入一个 2 到 9999 之间的值，从而设置撤消/重做的级别数。撤消级别需要内存；使用的撤消级别越多，占用的系统内存就越多。默认值为 100。
  • 对于“打印选项”（仅限 Windows），如果要在打印到 PostScript 打印机时禁用 PostScript 输出，请选择“禁用 PostScript”。在默认情况下，此选项处于取消选择状态。如果打印到 PostScript 打印机有问题，请选择此选项，但是请记住这将减慢打印速度。
  • 对于“选择选项”，选择或取消选择“使用 shift 键连续选择”可以控制 Flash 如何处理多个元素的选择。如果没有选择“使用 shift 键连续选择”，单击附加元素即可将它们添加到当前选择中。如果打开了“转换选择”，单击附加元素将取消选择其它元素，除非您按住 Shift 键。
  • 选择“显示工具提示”可以在指针停留在控件上时显示工具提示。如果您不想看到工具提示，请取消选择此选项。
  • 对于“时间轴选项”，选择“禁用时间轴停放”可以在时间轴被分隔到自己的窗口中后禁止它附加到应用程序窗口。有关详细信息，请参阅使用时间轴。
  • 选择“基于整体范围的选择”，以便在时间轴中使用基于整体范围的选择，而不是使用默认的基于帧的选择。有关基于整体范围和基于帧的选择的详细信息，请参阅在时间轴中处理帧。
  • 选择“场景上的命名锚记”可以让 Flash 将文档中每个场景的第一个帧作为命名锚记。命名锚记使您可以使用浏览器中的“前进”和“后退”按钮从 Flash 应用程序的一个场景跳到另一个场景。
  • 对于“加亮颜色”，选择“使用此颜色”，然后从调色板中选择一种颜色，或者选择“使用图层颜色”（默认选项）以使用当前图层的轮廓颜色。
  • 对于“字体映射默认设置”，选择在 Flash 中打开文档时替换缺失字体所使用的字体。请参阅替换缺少的字体。
  • 对于“启动时”选项，请选择其中一个选项以指定在启动 Flash 时该应用程序打开哪个文档。选择“显示开始页”以显示“开始”页面。选择“新建文档”可打开一个新的空白文档。选择“打开上次使用的文档”可打开上次退出 Flash 时打开的文档。选择“不打开任何文档”可启动 Flash 而不打开文档。

要设置编辑首选参数，请执行以下任意操作：

  • 对于“钢笔工具”选项，请参阅设置钢笔工具首选参数。
  • 对于“垂直文本”选项，选择“默认文本方向”可以将默认文本方向设置为垂直，这对于某些亚洲语言字体非常有用。在默认情况下，此选项处于取消选择状态。
  • 选择“从右至左的文本流向”可以翻转默认的文本显示方向。默认情况下，此选项处于取消选择状态。
  • 选择“无字距微调”可以关闭垂直文本字距微调。默认情况下，此选项处于取消选择状态，但是它对改善某些使用字距微调表的字体的间距质量非常有用。
  • 对于“绘画设置”，请参阅指定绘画设置。

    注意：如果使用的是 Macromedia Flash MX Professional 2004，您可以在“编辑”选项卡上选择用于关闭和保存项目文件的“项目”首选参数。请参阅创建和管理项目（仅限于 Flash Professional）。

要设置“剪贴板”首选参数，请从以下选项中进行选择：

  • 对于“位图”（仅限 Windows），选择“颜色深度”和“分辨率”选项可以指定拷贝到剪贴板的位图的这些参数。选择“平滑”可以应用消除锯齿功能。在“大小限制”文本框中输入值可以指定将位图图像放在剪贴板上时所使用的 RAM 量。在处理大型或高分辨率的位图图像时，请增加此值。如果计算机的内存有限，请选择“无”。
  • 对于“渐变”（仅限 Windows），选择一个选项可以指定在 Windows 元文件中放置的渐变色填充的品质。选择较高的品质将增加拷贝插图所需的时间。使用此设置可以指定将项目粘贴到 Flash 外的位置时的渐变色品质。如果粘贴到 Flash 内，则无论“剪贴板上的渐变色”设置如何，所复制数据的渐变色品质将完全保留。
  • 对于“PICT 设置”（仅限 Macintosh），就“类型”而言，选择“对象”可以将拷贝到剪贴板的数据保留为矢量插图，或者，选择其中一种位图格式可以将拷贝的插图转换为位图。输入一个分辨率值。选择“包含 PostScript”可以包含 PostScript 数据。对于“渐变”，选择一个选项可以指定 PICT 中的渐变色品质。选择较高的品质将增加拷贝插图所需的时间。使用“渐变”设置可以指定将项目粘贴到 Flash 外的位置时的渐变色品质。如果粘贴到 Flash 内，则无论“渐变”设置如何，所复制数据的渐变色品质将完全保留。
  • 对于“FreeHand 文本”，选择“将文本保持为块”可以确保粘贴的 FreeHand 文件中的文本是可编辑的。

要设置警告首选参数，请选择以下选项之一：

  • 如果选择“保存为与 Macromedia Flash MX 兼容时发出警告”，则会使 Flash 在您试图将包含特定于 Flash MX 2004 或 Flash MX Professional 2004 创作工具的内容的文档保存为 Flash MX 文件时发出警告。默认情况下，此选项处于选中状态。
  • 选择“字体缺少时发出警告”可以让 Flash 在打开使用计算机没有安装的字体的 Flash 文档时发出警告。默认情况下，此选项处于选中状态。
  • 选择“启动和编辑中 URL 发生更改时发出警告”可以让 Flash 在文档的 URL 自上次打开和编辑以来已发生更改时发出警告。
  • 选择“读取生成器内容时发出警告”可以让 Flash 在所有生成器对象上显示一个红色的“X”，提醒您 Flash MX 2004 中不支持生成器对象。
  • 选择“如在导入内容时插入帧则发出警告”可以让 Flash 在将帧插入文档中以容纳导入的音频或视频文件时发出警告。
  • 选择“导出 .as 文件过程中编码发生冲突时发出警告”可以让 Flash 在选择“默认编码”时可能会导致数据丢失或出现乱码的情况下发出警告。（例如，如果使用英文、日文和韩文字符创建文件而在英文系统上选择“默认编码”，则日文和韩文字符将出现乱码。）
  • 选择“转换特效图形对象时发出警告”可以让 Flash 在您试图编辑已应用时间轴特效的元件时发出警告。
  • 选择“导出至 Flash Player 6 r65 时发出警告”可以让 Flash 在您将文档导出到 Flash Player 的此较早版本时发出警告。
  • 选择“对包含重叠根文件夹的站点发出警告”可以让 Flash 在您创建本地根文件夹与另一站点重叠的站点时发出警告。
  • 选择“转换行为元件时发出警告”可让以 Flash 在您将具有附加行为的元件转换为其它类型的元件时（例如，将影片剪辑转换为按钮时）发出警告。
  • 选择“转换元件时发出警告”可以让 Flash 在您将元件转换为其它类型的元件时发出警告。


自定义键盘快捷键

您可以在 Flash 中选择快捷键，以便与您在其它应用程序中所使用的快捷键一致，或使 Flash 工作流程更为流畅。默认情况下，Flash 使用的是 Flash 应用程序专用的内置键盘快捷键。您也可以选择几种常用图形应用程序中设置的内置键盘快捷键，这些应用程序包括 Fireworks、Adobe Illustrator 和 Adobe Photoshop。

要创建自定的键盘快捷键设置，可以复制现有的设置，然后在新设置中添加或删除快捷键。可以删除自定键盘快捷键设置。

选择键盘快捷键设置：

  1. 选择“编辑”>“快捷键”(Windows) 或“Flash”>“快捷键”(Macintosh)。
  2. 在“快捷键”对话框中，从“当前设置”弹出菜单中选择一种快捷键设置。

要创建新的快捷键设置：

  1. 按照前面过程中所述方法选择一个快捷键设置。
  2. 单击“复制副本”按钮。
  3. 输入新键盘快捷键设置的名称，然后单击“确定”。

要重命名自定义的快捷键设置：

  1. 在“快捷键”对话框中，从“当前设置”弹出菜单中选择一种快捷键设置。
  2. 单击“重命名设置”按钮。
  3. 在“重命名”对话框中，输入新名称，然后单击“确定”。

要添加或删除快捷键：

  1. 选择“编辑”>“快捷键”(Windows) 或“Flash”>“快捷键”(Macintosh)，然后选择想要修改的设置。
  2. 从“命令”弹出菜单中选择“绘画菜单命令”、“绘画工具”、“测试影片菜单命令”或“工作区辅助功能命令”，以便查看所选类别的快捷键。
  3. 在“命令”列表中，要为其添加或删除快捷键的命令。

    所选命令的说明将显示在对话框的“描述”区域中。

  4. 执行以下操作之一：
    • 要添加快捷键，请单击“添加快捷键”(+) 按钮。
    • 要删除快捷键，请单击“删除快捷键”(-) 按钮，然后继续执行第 6 步。
  5. 如果要添加快捷键，请在“按键”文本框中输入新的快捷键组合。

    注意：要输入组合键，只需在键盘上按下这些键即可。不必拼出键名称，例如 Control、Option 等等。

  6. 单击“更改”。
  7. 重复此过程，添加或删除其它快捷键。
  8. 单击“确定”。

要删除快捷键设置：

  1. 选择“编辑”>“快捷键”(Windows) 或“Flash”>“快捷键”(Macintosh)。在“快捷键”对话框中，单击“删除设置”按钮。
  2. 在“删除设置”对话框中，选择快捷键设置，然后单击“删除”。

    注意：不能删除 Flash 自带的内置键盘快捷键设置。


使用上下文菜单

上下文菜单包含与当前选择内容相关的命令。例如，当您在“时间轴”窗口选择一个帧时，上下文菜单包含的是用于创建、删除和修改帧和关键帧的命令。许多项目和控件在许多位置上（包括舞台上、时间轴内、“库”面板上以及“动作”面板上）都有上下文菜单。

要打开上下文菜单：

  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 某个项目。


关于 Flash 创作环境中的辅助功能

Flash 创作环境中的辅助功能支持提供了用于浏览和使用界面控件（包括面板、“属性”检查器、对话框、舞台和舞台上的对象）的快捷键，因此您可以在不使用鼠标的情况下使用这些界面元素。

注意：某些键盘控件只能在 Windows 中使用。请参阅关于 Macintosh 上的 Flash 创作辅助功能。

您可以使用“快捷键”对话框的“工作区辅助功能命令”部分自定义用于创作环境中的辅助功能的快捷键。请参阅自定义键盘快捷键。

某些创作环境辅助功能不能在 Macintosh 上使用。请参阅关于 Macintosh 上的 Flash 创作辅助功能。


关于 Macintosh 上的 Flash 创作辅助功能

Macintosh 上的 Flash 创作环境辅助功能具有以下限制：

  • “属性”检查器不支持面板焦点快捷键 (Command+Alt+Tab)。
  • 只有“时间轴”面板才支持面板控件焦点快捷键 (Tab)，其它面板或“属性”检查器均不支持。


使用快捷键选择面板或“属性”检查器

可以通过使用快捷键 Control+Alt+Tab (Windows) 或 Command+Option+Tab (Macintosh) 来选择面板或“属性”检查器（也称为把焦点 放到面板或“属性”检查器上）。

只有在面板或“属性”检查器打开时，才能将焦点放到面板或“属性”检查器上。它可以处于展开或折叠状态。

当使用快捷键选择面板时，系统使用以下条件将焦点放到面板上：

  • 停放的面板将首先获得焦点。
  • 如果已显示和停放“时间轴”，则当您第一次按 Control+Alt+Tab (Windows) 或 Command+Option+Tab (Macintosh) 时，“时间轴”将获得焦点。
  • 如果未显示和停放“时间轴”或再次按下该快捷键，则焦点将移到最右边和最上面停放的面板上。重复按该快捷键，则焦点会在工作区其它停放的面板之间按从右至左和从上至下的顺序来回移动。
  • 如果在所有停放的面板之间来回移动焦点，或者未显示停放的面板，则焦点将移到最右边和最上面的浮动面板上。重复按该快捷键，则焦点会在工作区其它的浮动面板之间按从右至左和从上至下的顺序来回移动。

要使用快捷键来选择或取消选择、展开或折叠面板或“属性”检查器：

  • 要在工作区中当前显示的面板之间来回移动焦点，请按 Control+Alt+Tab (Windows) 或 Command+Option+Tab (Macintosh)。
  • 要将焦点移到上一个选定的面板上，请按 Control+Shift+Alt+Tab (Windows) 或 Command+Shift+Option+Tab (Macintosh)。
  • 要取消选择某个面板，请按 Escape 键或者移动、停放或取消停放该面板。
  • 要将焦点移到面板组中当前面板上方或下方的面板上，请按向上箭头或向下箭头键。

要使用快捷键来展开或折叠面板或“属性”检查器：

  • 按空格键即可展开或折叠当前选定的面板。

要隐藏所有面板和“属性”检查器：

  • 按 F4 键。再按一次 F4 键即可显示所有面板和“属性”检查器。


使用快捷键选择面板或“属性”检查器中的控件

如果焦点当前在面板或“属性”检查器上，则可以使用 Tab 键在面板控件之间来回移动焦点。可以使用空格键来激活当前拥有焦点的控件（也就是说，按空格键等效于在面板中单击控件）。

当您使用面板控件的快捷键时，系统将使用以下条件将焦点放到控件上并激活控件：

  • 要使用 Tab 键选择面板中的控件，当前拥有焦点的面板必须处于展开状态。如果面板处于折叠状态，则按 Tab 键没有效果。
  • 如果当前拥有焦点的面板处于展开状态，则第一次按 Tab 键会将焦点移到面板的选项菜单上。
  • 可以使用向右箭头键和向左箭头键在选项菜单和面板标题栏之间移动焦点。
  • 如果焦点位于选项菜单上，则再次按 Tab 键会在面板中的其它控件之间来回移动焦点。再次按 Tab 键不会将焦点返回到面板的选项菜单上。
  • 当选项菜单拥有焦点时，可以按 Enter 键（仅限 Windows）来显示选项菜单项。
  • 在分组的面板中，可以使用向上箭头键和向下箭头键在组中面板的选项菜单之间移动焦点。
  • 只有在面板控件处于活动状态时，您才能将焦点移到该控件上。如果控件变暗（非活动状态），则无法将焦点放到该控件上。

要将焦点从面板标题栏移到面板的选项菜单上，请执行以下操作之一：

  • 按 Tab 键。
  • 按向右箭头键。按向左箭头键或 Shift+Tab 键将焦点返回到面板标题栏。
  • 如果面板位于组中，则按向上箭头键会将焦点移到当前拥有焦点的面板正上方的面板选项菜单上。按向下箭头键会将焦点移到当前拥有焦点的面板正下方的面板选项菜单上。

要在面板选项菜单中的菜单项之间来回移动焦点：

  1. 如果焦点当前位于面板的选项菜单上，请按空格键显示选项菜单项。
  2. 按向下箭头键在选项菜单中的菜单项之间来回移动。
  3. 按 Enter 键 (Windows) 或 Return 键 (Macintosh) 即可激活当前选定的选项菜单项。

要在面板的控件之间来回移动焦点：

  1. 当焦点当前位于面板的选项菜单上时，按 Tab 键。重复按 Tab 键在面板中的控件之间来回移动焦点。
  2. 按 Enter 键（仅限于 Windows）即可激活当前选定的面板控件。


使用快捷键定位对话框控件（仅限 Windows）

在 Windows 操作系统中，可以使用快捷键在对话框中定位控件。您可以从一个控件移到另一个控件、应用控件或者取消并退出对话框。

要使用快捷键定位对话框控件，请执行以下任意操作：

  • 按 Tab 键在对话框中的控件之间来回移动。
  • 要在对话框某个部分中的控件之间来回移动，请按向上箭头键和向下箭头键。例如，在“拼写设置”对话框中，按向上箭头键和向下箭头键可以在“文档选项”部分中的控件之间来回移动。
  • 当焦点位于某个对话框控件按钮（如“确定”、“取消”或“应用”按钮）上时，按 Enter 键可以激活该按钮（等效于单击该按钮）。
  • 当焦点不在任何对话框控件按钮（如“确定”、“取消”或“应用”按钮）上时，按 Enter 键可以应用当前设置并关闭对话框（等效于单击“确定”）。
  • 按 Escape 键可以在不应用更改的情况下关闭对话框（等效于单击“取消”）。
  • 当焦点位于“帮助”按钮上时，按 Enter 键或空格键可以查看对话框的帮助内容（等效于单击“帮助”）。


使用快捷键选择舞台或舞台上的对象

您可以使用快捷键选择舞台或舞台上的对象。使用快捷键选择舞台等效于在舞台上单击。当选择舞台时，当前选定的任何其它元素将变为取消选择状态。

选择舞台之后，即可使用 Tab 键在所有层上的所有对象之间来回定位（一次定位一个）。可以选择实例（包括图形元件、按钮、影片剪辑、位图、视频或声音）、组或文本字段。除非形状是元件的实例，否则不能选择那些形状（如矩形）。不能使用快捷键一次选择多个对象。系统使用以下条件选择舞台上的对象：

  • 如果某个对象当前处于选定状态，按 Shift+Tab 键将选择上一个对象。
  • 第一次按 Tab 键将会选择在活动层中的活动帧上创建的第一个对象。如果顶层上的最后一个对象处于选定状态，则按 Tab 键将会移到它下面的下一个层上，并选择该层中的第一个对象，依此类推。
  • 如果最后一个层上的最后一个对象处于选定状态，按 Tab 键将会移到下一个帧，并选择该帧顶层上的第一个对象。
  • 无法使用 Tab 键选择层上隐藏或锁定的对象。

注意：如果当前正在文本框中键入文本，则无法使用键盘焦点来选择对象。必须先将焦点改变到舞台上，然后才能选择对象。

要选择舞台：

  • 按下 Control+Alt+Home (Windows) 或 Command+Option+Home (Macintosh)。

要选择舞台上的对象：

  • 当舞台处于选定状态时，按下 Tab 键。


使用快捷键定位树形控件

您可以使用快捷键定位树形控件，即某些 Flash 面板中的文件结构的分层结构显示。您可以展开和折叠树形控件中的文件夹，并在父文件夹和子文件夹之间上下移动。

要使用快捷键定位树形控件，请执行以下任意操作：

  • 要展开折叠的文件夹，请选择文件夹并按向右箭头键。
  • 要折叠展开的文件夹，请选择文件夹并按向左箭头键。
  • 要移至展开文件夹的父文件夹，请按向左箭头键。
  • 要移至展开文件夹的子文件夹，请按向右箭头键。


使用快捷键处理库项目

可以使用快捷键来剪切、复制和粘贴库项目。您可以从“库”面板中剪切或复制项目，然后将其粘贴到舞台或另一个库中，或者将文件夹粘贴到另一个库中。如果粘贴文件夹，则会包括文件夹中的每个项目。

可以使用快捷键来选择库项目。请参阅使用快捷键定位树形控件

系统使用以下条件剪切、复制和粘贴项目：

  • 可以剪切或复制一个或多个项目。
  • 不能将形状从舞台粘贴到库中。
  • 不能将库项目粘贴到公用库中，因为公用库无法修改。但是，您可以创建新的公用库。请参阅处理公用库。
  • 将库项目粘贴到舞台上时，项目将显示在中间。
  • 要将库项目粘贴到目标库中的某个文件夹内，可以在粘贴之前单击该文件夹。
  • 可以将库项目粘贴到其来源的同一个库中的其它位置。
  • 如果尝试将库项目粘贴到包含名称相同的另一项目的位置中，则可以选择是否替换现有项目。

要使用快捷键剪切、复制和粘贴库项目：

  • 要复制或粘贴选定库项目，请按 Control+X (Windows) 或 Command+X (Macintosh) 来剪切项目，或按 Control+C (Windows) 或 Command+C (Macintosh) 来复制项目。
  • 要粘贴剪切或复制的项目，请在舞台上或另一个库中单击以设置插入点，然后按 Control+V (Windows) 或 Command+V (Macintosh) 在舞台的中央粘贴，或者按 Control+Shift+C (Windows) 或 Command+Shift+C (Macintosh) 在适当的位置粘贴（在与原始位置相同的位置中）。


构建您的第一个应用程序概述

本章提供一个教程，指导您使用 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中的一些创作功能创建简单的应用程序。广义的 Flash 应用程序既可以像提供交互性的内容一样简单，亦可以像与各种数据源进行交互的健壮的应用程序一样复杂。

在本教程中，在考查某个现有的 Flash 文档之后，您将从创建新的 Flash 文档开始学习，最后以发布应用程序使其在 Web 上播放而结束。完成本教程大约需要 20 分钟。

在开始本教程之前，如果您尚未阅读了解工作区，建议您先阅读它。


构建应用程序的工作流程

本章中的教程遵循在创建 Flash 应用程序时可能采用的一个工作流程的顺序。

  • 考查已完成的应用程序介绍如何使用应用程序。在此过程中，您将熟悉 Flash 工作区。
  • 创建新文档是创建自己的新应用程序的起点。
  • 添加媒体内容介绍如何在应用程序中快速添加矢量插图、文本、位图图像、视频、声音、按钮以及影片剪辑。
  • 添加导航控件介绍 Flash 提供的内置组件和行为，它们使您可以将导航按钮和其它的用户界面元素拖到应用程序中。
  • 添加动画和基本的交互性介绍如何向应用程序添加内置特效和行为。
  • 测试应用程序介绍如何在 Flash Player 中预览应用程序，以便在发布之前确认它可以正常工作。
  • 发布和查看应用程序介绍如何使应用程序准备好在 Web 上或其它您要发布的位置进行部署。


考查已完成的应用程序

在您考查已完成的应用程序（您下面要创建它）的同时，也将了解 Flash 工作区。

在本部分中，您将学习如何完成下列任务：

  • 运行已完成的应用程序
  • 打开创作文档
  • 考查已完成的应用程序
  • 关闭应用程序

在后面的部分中，您将自己完成创建该应用程序的步骤。


运行已完成的应用程序

为了更好地了解您将在本教程中创建的应用程序类型，可以分析一下该应用程序的已完成版本。可以在 Flash Player 中播放该 SWF 文件。已发布的 Flash 应用程序具有 SWF 文件扩展名。在创作环境中保存的文档具有 FLA 文件扩展名。

  1. 在 Flash 中，选择“文件”>“打开”。
  2. 使用以下一个路径浏览到已完成的文件：
    • 如果使用的是 Windows 2000 或 XP，浏览到 <启动驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\
      <语言>\Configuration\HelpPanel\Help\GettingStarted\finished_files，然后双击 myad_finished.swf。

      注意：如果 Application Data 文件夹被隐藏，则需要更改“Windows 资源管理器”的设置，以便看到该文件夹。

    • 如果使用的是 Windows 98 操作系统，浏览到 <启动驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>
      \Configuration\HelpPanel\Help\GettingStarted\finished_files，然后双击 myad_finished.swf。
    • 如果使用的是 Macintosh 操作系统，浏览到 <Macintosh HD>/Users <用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/Help/GettingStarted/finished_files，然后双击 myad_finished.swf。

    该已完成的应用程序即会在 Flash Player 中运行。过一会后汽车会淡出。

  3. 单击“信息”按钮以查看它所链接的位置，然后关闭打开的浏览器并返回到 SWF 文件。
  4. 查看完该应用程序之后，单击其关闭框。


打开创作文档

分析已完成的创作文档（是 FLA 文件）有助于查看作者是如何设计应用程序的。

  1. 在 Flash 中，选择“文件”>“打开”。
  2. 使用以下一个路径浏览到创作文档：
    • 如果使用的是 Windows 2000 或 XP，浏览到 <启动驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\
      <语言>\Configuration\HelpPanel\Help\GettingStarted\finished_files，然后双击 myad_finished.fla。

      注意：如果 Application Data 文件夹被隐藏，则需要更改“Windows 资源管理器”的设置，以便看到该文件夹。

    • 如果使用的是 Windows 98 操作系统，浏览到 <启动驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>
      \Configuration\HelpPanel\Help\GettingStarted\finished_files，然后双击 myad_finished.fla。
    • 如果使用的是 Macintosh 操作系统，浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/Help/GettingStarted/finished_files，然后双击 myad_finished.fla。

    现在您即可在创作环境中查看已完成的教程应用程序。


考查已完成的应用程序

在您考查创作文件时将会熟悉 Flash 工作区。有关工作区的完整信息，请参阅了解工作区

在本部分中，您将会了解一些使用最频繁的工作区功能：

舞台是体现您已发布的内容将如何显示的区域。myad_finished.fla 文件包含一辆汽车、徽标、按钮、文本和在舞台上组合起来的各种形状。

有关舞台的详细信息，请参阅使用舞台。

时间轴在舞台之上，它为插图显示一个层，并为文档中的特效显示一个层。有关时间轴的更多信息，请参阅使用时间轴。

Flash 中的面板能协助您使用属性，以及将属性指定给舞台上的文档或对象。有关面板的详细信息（包括如何停放和移动面板），请参阅使用面板和“属性”检查器。

“属性”检查器使您可以查看和更改所选对象的属性。“属性”检查器会发生改变，以显示有关您正在使用的工具或资源的信息，并使您能快速访问常用功能。有关“属性”检查器的详细信息，请参阅使用面板和“属性”检查器。

“库”面板存储了可重用的项目，例如图形、声音和视频剪辑。如果想使用某个库项目，只需将其从“库”面板拖到舞台上。接下来您将会了解更多有关“库”面板的信息。


查看用于文档的库

可以在“库”面板中查看用于文档的库项目。

  1. 如果“库”面板没有打开，请选择“窗口”>“库”。
  2. 查看或滚动“库”面板中的资源。
  3. 查看完库资源之后，将该面板折叠起来。


关闭应用程序

  • 要关闭文档，请选择“文件”>“关闭”。

    如果对文件进行了更改，请不要保存这些更改。


创建新文档

现在您已了解了将创建的应用程序以及 Flash 工作区，可以创建您自己的 Flash 文档了。要学习如何在 Flash 中创建应用程序，请从流程的第一步开始：创建新文件。

在本部分中，您将学习如何完成下列任务：

  • 打开新文档
  • 定义文档属性


打开新文档

现在，您准备开始创建自己的广告。

  1. 选择“文件”>“新建”。
  2. 选择“Flash 文档”，阅读出现的文件类型说明，然后单击“确定”。
  3. 选择“文件”>“保存”。
  4. 将文件命名为 myad.fla，然后将文件保存在桌面上或任何方便的位置中。

    文件的扩展名为 .fla。

    注意：在完成教程的过程中，请记住经常保存您的工作。


定义文档属性

配置文档属性通常是创作中的第一步。可以使用“属性”检查器来指定影响整个应用程序的设置，例如每秒帧数 (fps) 播放速度，以及舞台大小和背景色。

  1. 如果“属性”检查器没有打开，请选择“窗口”>“属性”。

    “属性”检查器使您可以查看和更改所选对象的说明。说明取决于所选对象的类型。例如，如果您选择文本对象，“属性”检查器将显示用于查看和修改文本属性的设置。因为您只打开了一个新文档，所以“属性”检查器显示文档设置。

    注意：如果“属性”检查器没有完全展开，请单击右下角的白色三角。

  2. 在“属性”检查器中，确认“帧频”文本框中的数值为 12。

    应用程序的播放速度为每秒 12 帧，这是在 Web 上播放动画的最佳帧频。

  3. “背景颜色”框指示舞台的颜色。单击“背景颜色”框上的向下箭头，然后在颜色样本上移动“滴管”工具，以便在“十六进制”文本框中查看它们的十六进制值。
  4. 找到并单击灰色样本，其十六进制值为 #CCCCCC。

有关设置文档属性的详细信息，请参阅创建或打开文档及设置属性。


添加媒体内容

媒体内容包括插图（在 Flash 中创建或从其它程序导入）和文本。媒体被添加到舞台上适当的帧和层中。

在本部分中，您将学习如何完成下列任务：

  • 添加矢量插图
  • 向库中导入图像
  • 从库中添加插图
  • 添加文本


添加矢量插图

在 Flash 中绘图时，创建的是矢量插图。矢量插图是以数学方式表示的直线、曲线、颜色和位置。矢量插图与分辨率无关；您可以将矢量插图缩放到任意大小或以任何分辨率显示，这都不会影响清晰度。另外，矢量插图与类似的位图图像相比，下载速度更快。

您将从绘制一个矩形以突出显示将放置汽车的区域开始。

  1. 双击时间轴中的“层 1”名称。
  2. 在名称“层 1”上键入名称插图以代替它。

    “插图”层现在是活动层。您放置到舞台上的任何内容都将位于此层。

  3. 从工具栏中选择“矩形”工具。
  4. 在舞台上，朝着屏幕底部的方向绘制一个矩形，与其下的另一个矩形相似。（颜色现在并不重要，您很快将会更改颜色。）

    这些绘画工具与其它图形程序中的绘画工具在工作方式上很相似，但有一点主要不同。在绘制某个形状时，它有两个部分：称为笔触的外部线条（它描绘形状的轮廓）和填充（它对形状内部进行着色）。

  5. 在工具栏中单击“选择”工具。
  6. 按住鼠标键，在您刚刚绘制的矩形周围画一个矩形。这样将选择整个矩形。

    现在“属性”检查器将显示形状的设置。您可以使用“属性”检查器更改线条粗细、填充和笔触颜色，以及所选矩形的其它属性。

  7. 在“属性”检查器中，将填充颜色更改为暗灰色（十六进制值 #333333）。

  8. 将笔触颜色更改为相同的暗灰色。


向库中导入图像

要使用媒体文件（如图形、声音和视频文件），您需要将其放入文件中或使用已包含这些媒体元素的另一个文件的库。

将文件导入 Flash 时，可以将其直接导入到库中或导入到舞台上。在本例中，您将会把图像导入到文件的库中。之后，可以使用这些图像来完成幻灯片的放映。

有关导入文件的详细信息，请参阅将插图放置到 Flash 中。

  1. 如果“库”面板没有打开，请选择“窗口”>“库”。

    此时库中没有内容。

  2. 选择“文件”>“导入”>“导入到库”。
  3. 浏览到以下一个路径：
    • 如果使用的是 Windows 2000 或 XP，浏览到 <启动驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\
      <语言>\Configuration\HelpPanel\Help\GettingStarted\start_files\Assets。选择 logo.ai 和 car.png 作为要导入的文件。

      注意：如果 Application Data 文件夹被隐藏，则需要更改“Windows 资源管理器”的设置，以便看到该文件夹。

    • 如果使用的是 Windows 98 操作系统，浏览到 <启动驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\Help\GettingStarted\start_files\Assets。选择 logo.ai 和 car.png 作为要导入的文件。
    • 如果使用的是 Macintosh 操作系统，浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/Help/GettingStarted/start_files/Assets。选择 logo.ai 和 car.png 作为要导入的文件。
  4. 在“Illustrator 导入”对话框中，确认已选中“图层”和“包含不可见图层”，然后单击“确定”。

    这两幅图像现已添加到库中。


从库中添加插图

既然文件已位于库中，您即可将其添加到文档中。

  1. 使用“选择”工具将 logo.ai 从“库”面板中拖到舞台上，然后将其放在如下图所示的位置：

  2. 然后，从“库”面板中将 car.png 拖到舞台上，将其放在您绘制的矩形的中央，如下图所示：


添加文本

下一步是将文本添加到舞台上。

  1. 从工具栏中选择“文本”工具，然后在舞台上汽车的下方单击。

    即会出现一个带有圆形控件的文本字段，该控件表示此字段会随着您键入的文本而扩展。

  2. 可以在开始键入文本之前指定“文本”工具的所有设置。在“属性”检查器中，执行以下操作：
    • 在“字体”文本框中，选择“Arial”。
    • 在“磅值”文本框中，键入 14。
    • 在“文本”（填充）颜色框中，选择蓝色（十六进制值 3366CC）。
    • 确认其它设置如以下屏幕截图所示：

  3. 键入不要让您的梦之车消失！单击这里了解更多信息。
  4. 如果需要，单击工具栏中的“选择”工具，然后移动文本，使其在舞台上位于汽车下方更居中的位置。


添加导航控件

您可以轻松地将导航控件添加到应用程序，从而使用户可以通过单击按钮访问 Web 站点。要快速做到这一点，可以将 PushButton 组件添加到舞台，然后将行为添加到该按钮以使其连接到某个 URL。

在本部分中，您将学习如何完成下列任务：

  • 添加和配置组件
  • 添加行为


添加和配置组件

组件是用于迅速创建用户界面的拖放元素。您将使用 Button 组件创建“信息”按钮。

有关组件的详细信息，请参阅“使用组件帮助”。

Flash 的内置组件显示于“组件”面板中（“视窗”>“开发面板”>“组件”）。

您将添加 Button 组件以创建“信息”按钮。

  1. 在工具栏中单击“选择”工具。
  2. 从“组件”面板中将 Button 组件拖到舞台上，如下所示。

  3. 在舞台上，选择刚才添加的按钮，然后使用“属性”检查器的“参数”选项卡配置它：
    • 在“实例名称”文本框中键入 info。
    • 在“标签”文本框中键入信息。键入后，舞台上的按钮名称从“Button”更改为“信息”。


添加行为

下一步将向此按钮添加一个行为，使其打开某个 Web 站点。行为使您可以将动作脚本编码的强大功能、控制能力以及灵活性添加到文档中，而不必自己创建动作脚本代码。可以使用行为控制影片剪辑、视频及声音文件。

您将使用“转到 Web 页”行为向用于打开 Web 站点的按钮添加导航信息。

  1. 在舞台上，单击已添加的 Button 组件。
  2. 如果“行为”面板未打开，请选择“窗口”>“开发面板”>“行为”以将其打开。
  3. 单击面板顶部的“添加”(+) 按钮以显示行为列表。
  4. 选择“Web”>“转到 Web 页”。

    即会出现“转到 URL”对话框。

  5. 在 URL 文本框中，键入任何完整的 URL，例如 http://www.macromedia.com。然后单击“确定”。

    当用户单击该按钮时，即会打开浏览器并访问指定的 URL。

  6. 保存文件。

要获得有关 Flash MX 2004 行为的在线介绍，请参阅单元： Macromedia On Demand 中的“Flash MX 2004 系列：使用行为”。


添加动画和基本的交互性

广告差不多完成了。在测试和发布它之前的下一步是添加动画使汽车淡出。只需敲击几下键盘即可使用 Flash 提供的内置时间轴特效向对象添加动画。

在本部分中，您将学习如何完成下列任务：

  • 添加时间轴特效
  • 延长时间轴中的层


添加时间轴特效

时间轴特效是功能强大的工具，可以用来创建实时动画。在本例中，您将添加淡出特效。

有关特效的详细信息，请参阅使用时间轴特效。

  1. 利用“选择”工具，单击舞台上的汽车。

    汽车周围的框表明已选中汽车。

  2. 执行以下操作之一：
    • 选择“插入”>“时间轴特效”>“过渡”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“时间轴特效”>“过渡”。

    即会出现“过渡”对话框，并显示特效的预览及默认设置。

  3. 由于您只想让汽车淡入，而并不想划变过渡，因此取消选择“划变”。
  4. 对于“方向”，选择“向外”以便汽车淡出。
  5. 单击“更新预览”以查看新设置下的特效，然后单击“确定”。

    时间轴中即会出现一个名为“过渡 1”的新层。

  6. 在时间轴中，单击“过渡 1”层标题，然后将其向上拖，使其成为最顶层，而“插图”层成为最底层。否则，“插图”层上的内容会出现在“过渡 1”层的内容之上，从而隐藏了汽车。
  7. 选择“控制”>“测试影片”，在 Flash Player 中测试文档。

    汽车将按预期淡出；然而，文本和其余插图在淡出结束之前会迅速从舞台上消失。应用程序继续循环并再次播放。


延长时间轴中的层

看一下时间轴，即可很容易发现淡出特效比应用程序其余部分持续更长时间的原因。“淡出 1”层延长到第 30 帧，而“插图”层只延长到第 1 帧。由于各个帧是按顺序播放的，因此“插图”层（第 1 帧）会直到应用程序循环回开始处时才出现。要解决此问题，只需延长“插图”层，使其比“淡出 1”层长即可。

  1. 在时间轴中，右击“插图”层的第 1 帧，该层包含已填充的黑色关键帧。从上下文菜单中选择“复制帧”。
  2. 右击“插图”层的第 30 帧。从上下文菜单中选择“粘贴帧”。

    “插图”层中具有内容的帧现在延长到第 30 帧。


测试应用程序

在创作过程中，可以随时测试应用程序作为 SWF 文件播放时的效果。

  1. 选择“文件”>“保存”以保存应用程序。
  2. 保存应用程序，然后选择“控制”>“测试影片”。
  3. 单击“信息”按钮以访问您在行为中指定的 Web 站点。
  4. 观看动画以确认它按照预料的情况播放。
  5. 当查看完应用程序之后，单击 SWF 文件的关闭框即可关闭它。


发布和查看应用程序

要完成文档，应使用“发布”命令创建一个 Web 兼容的应用程序（创建为 SWF 文件）。

如果使用默认设置的“发布”命令，Flash 会为在 Web 上使用而准备文件。Flash 将发布该 SWF 文件，并创建带有显示 SWF 文件所需标记的 HTML 文件。

定义了必需的发布设置之后，只需选择“文件”>“发布”即可将文件重复导出为所有选定的格式。由于 Flash 会存储您的文档所用的发布设置，因此每个应用程序都可以有自己的设置。

在本部分中，您将学习如何完成下列任务：

  • 通过一个步骤查看发布设置
  • 在浏览器中查看发布的应用程序


发布应用程序

通过一个步骤就可以发布 Flash 文档以在 Web 上播放，这个步骤就是选择“文件”>“发布”。但是，在发布之前，应检查发布设置。

查看发布设置

使用“发布设置”对话框能够轻松地更改文件的发布方式。

  1. 要查看发布设置，请选择“文件”>“发布设置”。

    在默认情况下，会将 Flash 配置为创建显示 Flash 应用程序的 HTML 支持文件。

    当您选择需要附加设置的格式时，会显示一个新选项卡。

  2. 在“格式”选项卡上，确认已经选择了“Flash (.swf)”和“HTML (.html)”。单击“Flash”选项卡。

    在默认情况下，发布的应用程序要用 Flash Player 播放。

  3. 单击“HTML”选项卡。

    在默认情况下，发布过程会创建一个 HTML 文档，该文档会在浏览器窗口中插入您的 SWF 文件。“发布设置”对话框的“HTML”选项卡上的设置决定了应用程序在浏览器上的显示方式。

  4. 如果选择了“检测 Flash 版本”，则取消选择该选项，以便 Flash 不创建文件来检测您用户的 Flash Player 版本。

更改发布设置

在默认情况下，Flash 会用 FLA 文件的名称命名该 SWF 文件。现在将更改默认名称。

  1. 单击“发布设置”对话框的“格式”选项卡。在“HTML (.html)”文本框中，选择现有的文本，然后键入 newAd.html。
  2. 单击“发布”。当“正在发布”状态窗口关闭之后，单击“发布设置”对话框中的“确定”。
  3. 保存文档。发布设置与文档一起保存，因此下一次您想使用相同的设置进行发布时，可以选择“文件”>“发布”。

    注意：也可以创建发布配置文件。请参阅创建发布配置文件。


在浏览器中查看发布的应用程序

您可以在浏览器中查看刚刚发布的 HTML 文件和 SWF 应用程序。

  1. 打开浏览器，然后打开您创建的 HTML 文件（名为 newAd.html）。

    在默认情况下，该 HTML 文件位于您的 FLA 文件所在的文件夹中。

    当打开该 HTML 文件时，SWF 应用程序会在浏览器中播放。

  2. 在浏览器中，使用命令（例如“查看”>“页面源代码”或“查看”>“源文件”）来查看 HTML 代码。

    object 和 embed 标记可以确保 SWF 应用程序能够在浏览器中显示。


后续步骤

完成本教程之后，您已经学习了许多关于创建 Flash 应用程序的知识，其中包括如何完成以下任务：

  • 创建新文档
  • 添加媒体内容
  • 添加导航控件
  • 添加行为
  • 添加动画和基本的交互性
  • 测试应用程序

您可以使用许多有价值的资源来帮助自己继续使用 Flash。有关详细信息，请参阅资源。


资源

Macromedia 提供了非常好的资源，可以帮助您找到有关 Flash 的更多信息、获得支持以及向 Macromedia 公司发送反馈。

注册

注册之后可以接收有关升级和新产品、技术支持及其它方面的最新消息。可以通过选择“帮助”>“联机注册”来进行联机注册。也可以通过“帮助”菜单打印出注册表。

发行备注

请查看 Flash 支持中心以了解发行备注，它包含了有关 Flash 的最新信息和已知问题。

Flash 支持

利用知识丰富的产品支持工程师所提供的高品质 Flash 支持，不分日夜都能找到您需要的解答。要了解更多信息，请访问 Flash 支持中心。

Flash 培训和认证

通过亲手完成任务和考察现实中的方案来提高您的 Flash 技能 - 使您能作好准备和做好工作。可以选择导师指导和在线培训两种方式，或者两相结合以创造出对您最有效的学习途径。要了解更多信息，请访问 Macromedia 培训。

Macromedia Flash 开发中心

与最新的 Macromedia Flash 开发趋势和技术保持同步。教程、文章和应用程序范例为您提供保持竞争力、创新能力和效率所需的信息。要了解更多信息，请访问 Macromedia 培训。

On Demand 讲座

评估新产品有时并非易事，而且产品的每个版本都会引入一些要了解的新功能。进入 Macromedia On Demand 讲座是快速精通新产品的最快捷方式。我们的讲座主要采用多媒体演示文稿和示范教程，旨在帮助您最大程度地增强对我们产品的评估体验。要了解更多信息，请访问 Macromedia On Demand。

应用程序范例

Flash 包含了文件范例，您可以通过分析这些文件来学习各种设计和开发理念。要查看文件范例的 SWF 版本及其说明，请选择“帮助”>“范例”。某些范例是完整的应用程序，有一些则是简单的内容，旨在介绍基本概念。单击所需范例的链接可在 HTML 浏览器窗口中打开该范例。要查看特定范例的创作版本（FLA 文件），在 Flash 中打开该文件。范例文件位于 Samples 文件夹中，而该文件夹在 Flash 应用程序目录中。“范例”页（“帮助”>“范例”）还包含 Macromedia Web 站点的链接，您可以在该站点中找到其它范例。

Macromedia 环球商城的书籍和培训区

使用 Flash、动作脚本参考指南 和使用组件 均以电子格式提供（联机帮助和 PDF）。要购买这些书籍的印刷版，请访问 www.macromedia.com/go/books_and_training/。

其它资源

以下 Macromedia Web 页包含了参考资料和第三方 Flash 资源的链接：

  • Macromedia Flash 和 Flash 开发人员专用的 Web 站点
  • Macromedia Press

上一页


处理 Flash 文档概述

在 Flash 创作环境内创建和保存 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 文档时，文档为 FLA 文件格式。要在 Macromedia Flash Player 中显示文档，您必须将文档发布或导出为 SWF 文件。

注意：有关发布或导出文件的信息，请参阅发布或导出。

您可以将媒体资源添加到 Flash 文档中并在库中管理资源，也可以使用影片浏览器来查看和组织 Flash 文档中的所有元素。“撤消”和“重做”命令、“历史记录”面板以及“命令”菜单使您可以将文档中的任务自动化。


创建或打开文档及设置属性

在 Flash 中工作时，可以创建新文档或打开以前保存的文档。在 Windows 中，可以使用“新建文件”按钮打开与上次创建的文档相同类型的文档。

要设置新文档或现有文档的大小、帧频、背景颜色和其他属性，请使用“文档属性”对话框。也可以使用“属性”检查器来设置现有文档的属性。使用“属性”检查器可以轻松地访问和更改文档最常用的属性。有关“属性”检查器的详细信息，请参阅使用面板和“属性”检查器。

可以将 Flash 模板作为新文档打开。您可以选择 Flash 自带的标准模板，也可以打开您以前保存的模板。有关将文档文件保存为模板的信息，请参阅保存 Flash 文档。

在“首选参数”对话框的“启动时”部分中，可以选择选项以指定在启动 Flash 时该应用程序打开的文档：选择“新建文档”以打开一个新的空白文档；选择“打开上次使用的文档”以打开上次退出 Flash 时打开的文档；或者选择“不打开任何文档”以启动 Flash 而不打开文档。请参阅设置 Flash 中的首选参数。

有关使用“开始”页创建新文档的信息，请参阅使用“开始”页。

可以在工作时打开新窗口。

要创建新文档：

  1. 选择“文件”>“新建”。
  2. 在“常规”选项卡上选择“Flash 文档”。

要使用“新建文件”按钮来创建新文档（仅限 Windows）：

  • 单击主工具栏中的“新建文件”按钮以创建与上次创建的文档相同类型的新文档。

要打开现有文档：

  1. 选择“文件”>“打开”。
  2. 在“打开”对话框中，定位到文件或在“转到”文本框中输入文件的路径。
  3. 单击“打开”。

要在“文档属性”对话框中设置新文档或现有文档的属性：

  1. 在文档打开的情况下，选择“修改”>“文档”。

    即可打开“文档属性”对话框。

  2. 对于“帧频”，请输入每秒显示的动画帧的数量。对于大多数计算机显示的动画，特别是 Web 站点中播放的动画，8 fps（每秒帧数）到 12 fps 就足够了（默认的帧频为 12 fps）。
  3. 对于“尺寸”，请执行以下操作之一：
    • 要指定舞台大小（以像素为单位），请在“宽”和“高”文本框中输入值。

      默认文档大小为 550 x 400 像素。最小大小为 1 x 1 像素；最大为 2880 x 2880 像素。

    • 要将舞台大小设置为内容四周的空间都相等，请单击“匹配”右边的“内容”按钮。要最小化文档大小，请将所有元素对齐到舞台的左上角，然后单击“内容”。
    • 要将舞台大小设置为最大的可用打印区域，请单击“打印机”。此区域的大小是纸张大小减去“页面设置”对话框 (Windows) 或“打印边距”对话框 (Macintosh) 的“页边界”区域中当前选定边距之后的剩余区域。
    • 要将舞台大小设置为默认大小，请单击“默认”。
  4. 要设置文档的背景颜色，请单击“背景颜色”框中的三角形，然后从调色板中选择一种颜色。
  5. 要指定可以显示在应用程序窗口上沿和侧沿的标尺的单位，请从右上角的弹出菜单中选择一个选项。请参阅使用网格、辅助线和标尺。（此设置还确定“信息”面板中使用的单位。）
  6. 执行以下其中一项操作：
    • 只将新设置用作您的新文档的默认属性，请单击“确定”。
    • 要将这些新设置用作所有新文档的默认属性，请单击“设为默认值”。

要将模板作为新文档打开：

  1. 选择“文件”>“从模板新建”。
  2. 在“新建文档”对话框中，从“类别”列表中选择一个类别，然后从“类别项目”列表中选择一个文档。
  3. 单击“确定”。

要在当前文档中打开新窗口：

  • 选择“窗口”>“新建窗口”。

用“属性”检查器更改文档属性：

  1. 取消选择所有的资源，然后选择“选择”工具。
  2. 如果看不到“属性”检查器，请选择“窗口”>“属性”。
  3. 单击“大小”控件可以显示“文档属性”对话框，并可以访问其设置。
  4. 要选择背景颜色，请单击“背景颜色”框中的三角形，然后从调色板中选择一种颜色。
  5. 对于“帧频”，请输入每秒显示的动画帧数。
  6. 对于“发布”控件，单击“设置”按钮可以显示“发布设置”对话框，其中的“Flash”选项卡处于选中状态。有关“发布设置”对话框的详细信息，请参阅发布 Flash 文档。


为多个文档使用文档选项卡（仅限 Windows）

在 Windows 平台上打开多个文档时，“文档”窗口顶部的选项卡标识打开的文档，并使您可以轻松地在它们之间导航。只有当文档在“文档”窗口中处于最大化状态时，选项卡才会显示。

要激活某个文档，请单击它的选项卡。默认情况下，选项卡是按文档的创建顺序显示的。无法通过拖动选项卡来更改它们的顺序。

要在打开多个文档时查看文档：

  • 单击该文档的选项卡。


保存 Flash 文档

可以使用当前名称和位置保存 Flash FLA 文档，也可以使用不同的名称或位置保存文档。可以回复到上次保存的文档版本。也可以将 Flash MX 2004 内容保存为 Flash MX 文档。

当文档包含未保存的更改时，文档标题栏、应用程序标题栏和文档选项卡中的文档名称后会出现一个星号 (*)（仅限 Windows）。保存文档时星号即会消失。

可以将文档保存为模板，以便将该文档用作新 Flash 文档的起点（就像在字处理或 Web 页面编辑应用程序中使用模板一样）。有关使用模板创建新文档的信息，请参阅创建或打开文档及设置属性。

在使用“保存”命令保存文档时，Flash 会执行一次快速保存，将新信息追加到现有文件中。在使用“另存为”命令保存时，Flash 会将新信息安排到文件中，在磁盘上创建一个更小的文件。

如果在包含未保存更改的一个或多个文档处于打开状态的情况下退出 Flash，Flash 会提示您保存包含更改的文档。

当通过撤消命令从文档中删除项目时，使用“文件”>“保存并压缩”命令，您可以选择从文档中永久删除项目，从而减小文档文件的大小。请参阅撤消步骤时保存文档。

要保存 Flash 文档：

  1. 执行以下其中一项操作：
    • 要覆盖磁盘上的当前版本，请选择“文件”>“保存”。
    • 要将文档保存到不同的位置和/或用不同的名称保存文档，或者要压缩文档，请选择“文件”>“另存为”。
  2. 如果选择“另存为”命令，或者如果文档以前从未保存过，请输入文件名和位置。
  3. 单击“保存”。

回复到上次保存的文档版本：

  • 选择“文件”>“还原”。

要将文档另存为模板：

  1. 选择“文件”>“另存为模板”。
  2. 在“另存为模板”对话框中，在“名称”文本框中输入模板的名称。
  3. 从“类别”弹出菜单中选择一种类别或输入一个名称，以便创建新类别。
  4. 在“描述”文本框中输入模板的说明（最多 255 个字符）。当在“新建文档”对话框中选择模板时，该说明即会显示出来。
  5. 单击“确定”。

要将文档另存为 Flash MX 文档：

  1. 选择“文件”>“另存为”。
  2. 输入文件名和位置。
  3. 从“格式”弹出菜单中选择“Flash MX 文档”。如果出现一则警告消息，指示如果保存为 Flash MX 格式时内容将被删除，请单击“另存为 Flash MX”以继续。如果您的文档包含只有 Flash MX 2004 可以提供的功能（如行为），则在以 Flash MX 格式保存文档时，这些功能将不保留。
  4. 单击“保存”。

要在退出 Flash 时保存文档：

  1. 选择“文件”>“退出”(Windows) 或“Flash”>“退出 Flash”(Macintosh)。
  2. 如果有打开的文档包含未保存的更改，Flash 会提示您保存或放弃每个文档的更改。
    • 单击“是”保存更改并关闭文档。
    • 单击“否”关闭文档，不保存更改。


关于添加媒体内容

可以在 Flash 创作环境中将媒体内容添加至 Flash 文档。您可以在 Flash 中直接创建矢量插图或文本；导入矢量插图、位图、视频和声音；以及创建元件，即可重用的媒体内容（如按钮）。

也可以使用动作脚本动态地将媒体内容添加至文档。有关动作脚本的详细信息，请参阅动作脚本基础。

可在创作环境中添加的媒体内容包括以下各项：

矢量插图 可通过 Flash 绘画和涂色工具创建矢量插图或从别的应用程序导入插图来创建。请参阅绘画和使用导入的插图。

文本 可以创建静态 文本，即您在创作文档时决定其内容和外观的文本。也可以创建动态 文本字段和输入 文本字段，前者可显示在运行时期间动态更新的文本，而后者允许用户为表单或其他用途输入文本。请参阅处理文本。

位图 可以从其他应用程序导入位图，将位图作为文件使用，将位图转换为矢量插图以及用其他方式修改位图。请参阅使用导入的插图。

视频 可以从其他应用程序中将视频剪辑导入为嵌入或链接的文件，并选择压缩和编辑选项。请参阅处理视频。

声音 可以从其他应用程序导入声音文件，然后将它们作为文档中的事件声音或流式声音使用。请参阅处理声音。

元件 可以使用元件，即创建一次即可多次重复使用的对象。元件可以是影片剪辑、按钮或图形。每个元件都有自己的时间轴。请参阅使用元件、实例和库资源。


关于创建动画和交互性

Flash 为您提供了多种将动画和交互性轻松添加至文档的方式，从而创造出引人入胜的用户体验。例如，您可以使诸如文本、图形、按钮或影片剪辑等可视元素移动或消失；可以链接到另一 URL；可以将另一文档或影片剪辑加载到当前文档中。以下功能使您能够添加动画和交互性：

时间轴特效是预建的动画，可将它们应用于文本、图形、位图和按钮，从而轻松地为可视元素添加动画。请参阅使用时间轴特效。

补间动画和逐帧动画是通过将图形放在时间轴中的帧上创建的动画。在补间动画中，您创建动画的起始帧和结束帧，而 Flash 会创建中间各帧。在逐帧动画中，您要为动画中的每一帧创建图形。请参阅补间动画和逐帧动画。

行为是预先编写的“动作脚本”脚本，可将它们添加到某个对象，从而控制该对象。行为使您可以将动作脚本编码的强大功能、控制能力以及灵活性添加到文档中，而不必自己创建动作脚本代码。可以使用行为控制影片剪辑和视频及声音文件。请参阅以下各部分：

  • 使用行为控制实例。
  • 使用行为控制视频回放。
  • 使用行为控制声音回放。
  • 在基于屏幕的文档中，可以使用行为来控制屏幕。请参阅使用行为为屏幕创建控件和过渡（仅限于 Flash Professional）。

注意：可以使用动作脚本来创建更为复杂或自定的交互性。请参阅动作脚本基础。


关于组件

组件是带参数的影片剪辑，您可以修改它们的外观和行为。组件可以提供很多种功能。组件可以是一个简单的用户界面控件，如单选按钮或一个复选框，也可以是一个复杂的控件元素，如媒体控制器或滚动窗格。组件甚至可以是不可见的，例如让您可以在应用程序中控制哪个对象得到焦点的焦点管理器。

组件可使您将编码和设计分离开来。它们还使您可以重复使用代码，以及下载其他开发人员创建的组件。请参阅组件入门。


管理媒体资源

Flash 文档中的库存储您为了在 Flash 文档中使用而创建或导入的媒体资源。库存储导入的文件（如视频剪辑、声音剪辑、位图）和导入的矢量插图以及元件。元件是指创建一次即可多次重复使用的图形、按钮或影片剪辑。您还可以创建字体元件。有关元件的信息，请参阅使用元件、实例和库资源和创建字体元件。

库还包含已添加到文档的组件。组件作为已编译的剪辑显示在库中。有关详细信息，请参阅“库”面板中的组件。

“库”面板显示一个滚动列表，其中包含库中所有项目的名称，使您可以在工作时查看和组织这些元素。“库”面板中项目名称旁边的图标指示该项目的文件类型。“库”面板有一个选项菜单，其中包含用于管理库项目的命令。

在 Flash 中工作时，您可以打开任意 Flash 文档的库，将该文档的库项目用于当前文档。

您可以在 Flash 应用程序中创建永久的库，只要启动 Flash 就可以使用这些库。Flash 还带有几个范例库，其中包含按钮、图形、影片剪辑和声音，您可以将它们添加到自己的 Flash 文档中。Flash 范例库和您创建的永久库都列在“窗口”>“公用库”子菜单下。请参阅处理公用库。

可以将库资源作为 SWF 文件导出到一个 URL，从而创建运行时共享库。这让您可以从使用运行时共享功能导入元件的 Flash 文档链接到这些库资源。请参阅使用共享库资源。

要显示“库”面板：

  • 选择“窗口”>“库”。

要打开另一 Flash 文件中的库：

  1. 选择“文件”>“导入”>“打开外部库”。
  2. 定位到您想打开它的库的 Flash 文件，然后单击“打开”。

    选定文件的库会在当前文档中打开，同时“库”面板顶部会显示该文件的名称。要在当前文档内使用选定文件的库中的项目，可将项目拖到当前文档的“库”面板或舞台上。

要调整“库”面板的大小，请执行以下操作之一：

  • 拖动面板的右下角。
  • 单击“宽状态”按钮放大“库”面板以使它显示所有列。
  • 单击“窄状态”按钮缩小“库”面板的宽度。

要更改列宽：

  • 将指针放在列标题之间并拖动以调整大小。

    您不能更改列的顺序。

要使用“库”选项菜单：

  1. 单击“库”面板标题栏中的控件以查看选项菜单。
  2. 单击该菜单中的一个项目。


处理库项目

当您选择“库”面板中的项目时，“库”面板的顶部会出现该项目的缩略图预览。如果选定项目是动画或者声音文件，则可以使用库预览窗口或“控制器”中的“播放”按钮预览该项目。可以在库中使用文件夹来组织库项目。请参阅处理“库”面板中的文件夹。

要在当前文档中使用库项目：

  • 将项目从“库”面板拖动到舞台上。

    该项目就会添加到当前层上。

要将对象转换为库中的元件：

  • 将项目从舞台拖动到当前“库”面板上。

要在另一文档内使用当前文档中的库项目：

  • 将项目从库或舞台拖入另一个文档的库或舞台中。


处理“库”面板中的文件夹

您可以使用文件夹组织“库”面板中的项目，就像在 Windows 资源管理器或 Macintosh Finder 中一样。当您创建一个新元件时，它会存储在选定的文件夹中。如果没有选定文件夹，该元件就会存储在库的根目录下。

要创建新文件夹：

  • 单击“库”面板底部的“新建文件夹”按钮。

要打开或关闭文件夹，请执行以下操作之一：

  • 双击文件夹。
  • 选择文件夹并从“库”选项菜单中选择“展开文件夹”或“折叠文件夹”。

要打开或关闭所有文件夹：

  • 从“库”选项菜单中选择“展开所有文件夹”或“折叠所有文件夹”。

要在文件夹之间移动项目：

  • 将项目从一个文件夹拖动到另一个文件夹。如果新位置中存在同名项目，Flash 会提示您是否要替换正在移动的项目。


对“库”面板中的项目进行排序

“库”面板的各列列出了项目名称、项目类型、项目在文件中使用的次数、项目的链接状态和标识符（如果该项目与共享库相关联或者被导出用于动作脚本），以及上次修改项目的日期。

您可以在“库”面板中根据任何列按字母数字顺序对项目进行排序。对项目排序使您可以同时查看彼此相关的项目。项目是在文件夹内排序的。

要对“库”面板中的项目进行排序：

  • 单击列标题可以根据该列进行排序。单击列标题右侧的三角形按钮可以倒转排序顺序。


编辑库中的项目

要编辑库项目（包括导入的文件），请从“库”选项菜单中选择选项。

也可以在外部编辑器中编辑完导入的文件之后更新这些文件，方法是使用“库”选项菜单中的“更新”选项。请参阅更新“库”面板中的导入文件。

要编辑库项目：

  1. 在“库”面板中选择项目。
  2. 从“库”选项菜单中选择下列选项之一：
    • 选择“编辑”以在 Flash 中编辑项目。
    • 选择“编辑方式”并选择一个应用程序，在外部编辑器中编辑项目。

    注意：启动支持的外部编辑器后，Flash 会打开原始的导入文档。


重命名库项目

您可以重命名库中的项目。更改导入文件的库项目名称并不会更改该文件名。

要重命名一个库项目，请执行以下操作之一：

  • 双击该项目的名称，然后在文本框中输入新名称。
  • 选择项目并从“库”选项菜单中选择“重命名”，然后在文本框中输入新名称。
  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该项目并从上下文菜单中选择“重命名”，然后在文本框中输入新名称。


删除库项目

当从库中删除项目时，默认情况下，文档中该项目的所有实例或所有出现的该项目也会被删除。“库”面板中的“使用次数”列指示某个项目是否正在使用中。

要删除库项目：

  1. 选择项目，然后单击“库”面板底部的废纸篓图标。
  2. 在出现的警告框中，选择“删除元件实例”（默认值）删除库项目及其所有实例。取消选择该选项可以只删除该元件，而在舞台上保留实例。
  3. 单击“删除”。


查找未使用的库项目

要更容易地组织文档，您可以找到未使用的库项目并将它们删除。

注意：您无需通过删除未使用的库项目来缩小 Flash 文档文件的大小，因为未使用的库项目并不包括在 SWF 文件中。不过，链接的待导出项目包括在 SWF 文件中。请参阅使用共享库资源。

要查找未使用的库项目，请执行以下操作之一：

  • 从“库”选项菜单中选择“选择未用项目”。
  • 根据“使用次数”列对库项目进行排序。请参阅对“库”面板中的项目进行排序。


更新“库”面板中的导入文件

如果使用外部编辑器修改已导入 Flash 中的文件（如位图或声音文件），则可以在 Flash 中更新这些文件，而无需重新导入它们。也可以更新已经从外部 Flash 文档导入的元件。更新导入文件会以外部文件的内容替换其内容。

要更新导入的文件：

  • 从“库”面板中选择导入的文件，然后从“库”选项菜单中选择“更新”。


处理公用库

可以使用 Flash 附带的范例公用库向文档中添加按钮或声音。也可以创建自己的公用库，然后将它们用于您创建的任何文档。

要在文档中使用公用库中的项目：

  1. 选择“窗口”>“其他面板”>“公用库”，然后从子菜单中选择一个库。
  2. 将项目从公用库拖入当前文档的库中。

要为 Flash 应用程序创建公用库：

  1. 用一个库创建 Flash 文件，该库中包含您想包括在永久库中的元件。
  2. 将该 Flash 文件放在硬盘上 Flash 应用程序文件夹中的 Libraries 文件夹下。


关于动作脚本

动作脚本是 Flash 脚本撰写语言，它使您可以向 Flash 文档中添加复杂的交互性、回放控制和数据显示。可以使用“动作”面板在 Flash 创作环境内添加动作脚本，也可以使用外部编辑器创建外部动作脚本文件。

您不需要了解每个动作脚本元素就可以开始撰写脚本；如果您有明确的目标，则可通过简单的动作开始构建脚本。您可以在学习的同时结合新的语言元素来完成更为复杂的任务。

和其他脚本撰写语言一样，动作脚本遵循自己的语法规则、保留关键字、提供运算符，并且允许使用变量存储和获取信息。动作脚本包含内置的对象和函数，并且允许您创建自己的对象和函数。有关动作脚本的详细信息，请参阅动作脚本基础。


多个时间轴和层

Flash Player 中的各层是按一定顺序层叠的。每个 Flash 文档在 Flash Player 的第 0 层都有一个主时间轴。可以使用 loadMovie 动作将其他 Flash 文档（SWF 文件）加载到 Flash Player 中的不同层上。请参阅loadMovie()。

如果将文档加载到第 0 层之上的层中，则文档就会像透明纸上的绘画一样，叠放在彼此的上面；如果在舞台上没有内容，则底层的内容也可以一览无遗。如果将文档加载到第 0 层中，它将替换主时间轴。加载到 Flash Player 的某一层中的每个文档都有自己的时间轴。

当您将某个影片剪辑实例添加到文档中时，该影片剪辑的时间轴会嵌套在文档的主时间轴内。也可以将影片剪辑嵌套在其他影片剪辑内。请参阅嵌套的影片剪辑。

可以使用动作脚本将消息从一个时间轴发送到另一个时间轴。必须使用目标路径来指定将消息发送到的时间轴的位置。请参阅使用绝对和相对目标路径。


关于嵌套的影片剪辑

Flash 文档可以在其时间轴中包含影片剪辑实例。每个影片剪辑实例都有自己的时间轴。可以将影片剪辑实例放置在另一影片剪辑实例的内部。

注意：影片剪辑是一种元件。有关将影片剪辑添加到文档的信息，请参阅使用元件、实例和库资源。

嵌套在另一影片剪辑（或文档）内的影片剪辑是该影片剪辑或文档的子项。嵌套的影片剪辑之间的关系是层次结构关系：对父项所做的修改将会影响子项。可以使用动作脚本在影片剪辑（及它们的时间轴）之间发送消息。要从另一时间轴中控制某个影片剪辑的时间轴，您必须使用目标路径指定该影片剪辑的位置。在影片浏览器中，可以查看文档中嵌套的影片剪辑的层次结构。

也可以使用“行为”（预先编写的“动作脚本”脚本）来控制影片剪辑。请参阅使用行为控制实例。

有关处理嵌套的影片剪辑的信息，请参阅以下各部分：

  • 父子关系的影片剪辑
  • 影片剪辑层次结构
  • 使用绝对和相对目标路径
  • 使用影片浏览器


父子关系的影片剪辑

将一个影片剪辑实例放置在另一个影片剪辑的时间轴上时，被放置的影片剪辑就是子项，而另一个影片剪辑则是父项。父实例包含子实例。每层的根时间轴是该层上所有影片剪辑的父时间轴，并且因为它是最顶层的时间轴，所以它没有父时间轴。

嵌套在另一个时间轴中的子时间轴会受对父时间轴所做更改的影响。例如，如果 portland 是 oregon 的子项，而您更改了 oregon 的 _xscale 属性，则 portland 的比例也会随之更改。

时间轴可以通过动作脚本彼此发送消息。例如，一个影片剪辑中最后一帧上的动作可以指示开始播放另一个影片剪辑。要使用动作脚本控制某个时间轴，您必须使用目标路径来指定该时间轴的位置。请参阅编写目标路径。


影片剪辑层次结构

影片剪辑的父子关系就是一种层次结构。要理解这种层次结构，请细想一下计算机上的层次结构：硬盘有一个根目录（或文件夹）和多个子目录。根目录类似于 Flash 文档的主时间轴：它是所有其他目录的父项，而子目录则类似于影片剪辑。

在 Flash 中可以使用影片剪辑层次结构来组织相关的对象。对父影片剪辑所做的任何更改也都会在其子影片剪辑上执行。

例如，可以创建一个包含汽车移过舞台的 Flash 文档。可以使用影片剪辑元件表示汽车，并建立一个补间动画让汽车移过舞台。

要添加旋转的车轮，可以创建一个车轮影片剪辑，然后创建该影片剪辑的两个实例，分别命名为 frontWheel 和 backWheel。然后，将这两个车轮放在汽车影片剪辑的时间轴上，而不要放在主时间轴上。作为 car 的子项，frontWheel 和 backWheel 会受到对 car 所做的任何更改的影响；当汽车以补间动画的方式移过舞台时它们会随着汽车一起移动。

要使这两个车轮实例旋转，可建立一个旋转车轮元件的补间动画。即使在更改 frontWheel 和 backWheel 之后，它们也会继续受其父影片剪辑 car 上的补间的影响；车轮一边旋转，一边随父影片剪辑 car 一同移过舞台。


关于绝对和相对目标路径

可以使用动作脚本将消息从一个时间轴发送到另一个时间轴。包含动作的时间轴称作控制时间轴，而接收动作的时间轴称作目标时间轴。例如，可以在一个时间轴的最后一帧上存在一个动作，指示开始播放另一个时间轴。要引用目标时间轴，必须使用目标路径，该路径指明影片剪辑在显示列表中的位置。

以下是名为 westCoast 的文档在第 0 层上的层次结构，它包含三个影片剪辑：california、oregon 和 washington。其中的每个影片剪辑进而又各包含两个影片剪辑：

_level0
    westCoast
        california
            sanfrancisco
            bakersfield
        oregon
            portland
            ashland
        washington
            olympia
            ellensburg

与在 Web 服务器上一样，Flash 中的每个时间轴可以用两种方式确定其位置：绝对路径或相对路径。实例的绝对路径是始终以层名开始的完整路径，与哪个时间轴调用动作无关；例如，实例 california 的绝对路径是 _level0.westCoast.california。而相对路径则随调用位置的不同而不同；例如，从 sanfrancisco 到 california 的相对路径是 _parent，但从 portland 出发的相对路径则是 _parent._parent.california。


绝对路径

绝对路径以文档加载到其中的层名开始，一直延续到显示列表中的目标实例。也可以使用别名 _root 来指示当前层的最顶层时间轴。例如，影片剪辑 california 中引用影片剪辑 oregon 的动作可以使用绝对路径 _root.westCoast.oregon。

要在 Flash Player 中打开的第一个文档会加载到第 0 层。您必须给其他每个加载的文档指定一个层号。当在动作脚本中使用绝对引用来引用一个加载的文档时，可使用 _levelX 这样的形式，其中 X 是文档所加载到的层号。例如，在 Flash Player 中打开的第一个文档名为 _level0；加载到第 3 层的文档名为 _level3。

在下面的示例中，在 Flash Player 中已加载了两个文档：第 0 层的 TargetPaths.swf 和第 5 层的 EastCoast.swf。层在“调试器”中指示，其中第 0 层用 _root 表示。

要在不同层的文档之间进行通信，必须在目标路径中使用层名。例如，portland 实例将按如下方式指明 atlanta 实例的位置：

_level5.georgia.atlanta

您可以使用别名 _root 指示当前层的主时间轴。对于主时间轴，在 _root 别名被某个也在 _level0 上的剪辑作为目标时，它代表 _level0。对于加载到 _level5 的文档，在 _root 被某个也在第 5 层上的影片剪辑作为目标时，它等于 _level5。例如，由于 southcarolina 和 florida 都被加载到同一层上，因此，从实例 southcarolina 调用的动作就可以使用以下绝对路径来引用目标实例 florida：

_root.eastCoast.florida


相对路径

相对路径取决于控制时间轴和目标时间轴之间的关系。相对路径只能确定在 Flash Player 中位于同一层上的目标的位置。例如，在 _level0 上的某个动作以 _level5 上的时间轴为目标时，不能使用相对路径。

在相对路径中，使用关键字 this 指示当前层中的当前时间轴；使用别名 _parent 指示当前时间轴的父时间轴。可以重复使用别名 _parent，每使用一次就会在 Flash Player 的同一层的影片剪辑层次结构中上升一层。例如，_parent._parent 控制影片剪辑在层次结构中上升两层。Flash Player 中任何一层的最顶层时间轴是具有未定义的 _parent 值的唯一时间轴。

在下面的示例中，每个城市（charleston、atlanta 和 staugustine）都是州实例的子项，而每个州（southcarolina、georgia 和 florida）都是 eastCoast 实例的子项。

实例 charleston 的时间轴中的动作可以使用以下目标路径来引用目标实例 southcarolina：

_parent

要从 charleston 中的动作引用目标实例 eastCoast，可使用以下相对路径：

_parent._parent

要从 charleston 的时间轴上的动作引用目标实例 atlanta，可使用以下相对路径：

_parent._parent.georgia.atlanta

相对路径在重用脚本时非常有用。例如，您可以将脚本附加到影片剪辑，将该影片剪辑的父项放大 150%，如下所示：

onClipEvent (load) {
  _parent._xscale = 150;
  _parent._yscale = 150;
}

然后将该脚本附加到任意一个影片剪辑实例上，即可重用它。

无论使用绝对路径还是相对路径，都要用后面跟着变量或属性名称的点 (.) 来标识时间轴中的变量或对象的属性。例如，以下语句将实例 form 中的变量 name 的值设置为 "Gilbert"：

_root.form.name = "Gilbert";


编写目标路径

要控制影片剪辑、加载的影片或按钮，必须指定目标路径。为了指定影片剪辑或按钮的目标路径，您必须为影片剪辑或按钮分配一个实例名称。加载的文档并不需要实例名称，因为可以使用它的层号作为实例名称（例如 _level5）。

您可以用多种不同的方式指定目标路径：

  • 使用“动作”面板中的“插入目标路径”按钮（和对话框）。
  • 手动输入目标路径。
  • 创建一个计算目标路径的表达式。可以使用内置函数 targetPath 和 eval。

要指定实例名称：

  1. 在舞台上选择影片剪辑或按钮。
  2. 在“属性”检查器中输入实例名称。

要使用“插入目标路径”对话框来插入目标路径：

  1. 选择您想为其分配动作的影片剪辑、帧或按钮实例。

    它将变为控制时间轴。

  2. 如果“动作”面板没有打开，请选择“窗口”>“开发面板”>“动作”显示该面板。
  3. 在“动作”工具箱（面板左侧）中，选择需要目标路径的动作或方法。
  4. 单击脚本中想插入目标路径的参数框或位置。
  5. 单击“脚本”窗格上面的“插入目标路径”按钮。
  6. 在“插入目标路径”对话框中，选择一个语法：“点”（默认语法）或“斜杠”。
  7. 对于目标路径模式，选择“绝对”或“相对”。

    请参阅使用绝对和相对目标路径。

  8. 在“插入目标路径”显示列表中选择一个影片剪辑。
  9. 单击“确定”。

要手动插入目标路径：

  • 执行上面的步骤 1 - 4，然后在“动作”面板中输入绝对或相对目标路径。

要将表达式用作目标路径：

  1. 执行上面的步骤 1 - 3。
  2. 执行以下其中一项操作：
    • 在参数框中输入一个计算目标路径的表达式。
    • 通过单击将插入点放在脚本中。然后，在“动作”工具箱的“函数”类别中，双击 targetPath 函数。

      targetPath 函数将对影片剪辑的引用转换为字符串。

    • 通过单击将插入点放在脚本中。然后，在“动作”工具箱的“函数”类别中，选择 eval 函数。

    eval 函数将字符串转换为可用于调用方法（如 play）的影片剪辑引用。

    下面的脚本将值 1 赋予变量 i。然后使用 eval 函数创建对影片剪辑实例的引用，并将它赋予变量 x。变量 x 现在表示对影片剪辑实例的引用，它可以调用 MovieClip 对象的方法，如下所示：

    i = 1;
x = eval("mc"+i);
x.play();
// this is equivalent to mc1.play();

    也可以使用 eval 函数直接调用方法，如下所示：

    eval("mc" + i).play();


处理场景

要按照主题组织文档，可以使用场景。例如，可以使用单独的场景用于简介、出现的消息以及片头片尾字幕。

注意：不能在基于屏幕的文档中使用场景。有关屏幕的信息，请参阅使用屏幕（仅限于 Flash Professional）。

当发布包含多个场景的 Flash 文档时，文档中的场景将按照它们在 Flash 文档的“场景”面板中列出的顺序进行回放。文档中的帧都是按场景顺序连续编号的。例如，如果文档包含两个场景，每个场景有十帧，则场景 2 中的帧的编号为 11 到 20。

可以添加、删除、复制、重命名场景和更改场景的顺序。

要在每个场景之后停止或暂停文档，或允许用户以非线性方式浏览文档，可以使用动作。请参阅动作脚本基础。

显示“场景”面板：

  • 选择“窗口”>“设计面板”>“场景”。

要查看特定场景：

  • 选择“视图”>“转到”，然后从子菜单中选择场景的名称。

要添加场景，请执行以下操作之一：

  • 单击“场景”面板中的“添加场景”按钮。
  • 选择“插入”>“场景”。

要删除场景：

  • 单击“场景”面板中的“删除场景”按钮。

要更改场景的名称：

  • 在“场景”面板中双击场景名称，然后输入新名称。

要重制场景：

  • 单击“场景”面板中的“重制场景”按钮。

要更改文档中场景的顺序：

  • 在“场景”面板中将场景名称拖到不同的位置。


使用影片浏览器

影片浏览器使您可以轻松地查看和组织文档的内容，以及在文档中选择元素进行修改。它包含当前使用的元素的显示列表，该列表显示为一个可导航的分层结构树。可以过滤在影片浏览器中显示文档中哪些类别的项目，选项包括文本、图形、按钮、影片剪辑、动作和导入的文件。可以将所选类别显示为场景或元件定义（或两者）。并且，可以展开和折叠导航树。

影片浏览器提供了许多功能，可以简化创建文档的工作流程。例如，可以使用影片浏览器执行以下任务：

  • 按名称搜索文档中的元素。
  • 让自己熟悉其他开发人员创建的 Flash 文档的结构。
  • 查找特定元件或动作的所有实例。
  • 打印当前显示在影片浏览器中的可导航显示列表。

影片浏览器有一个选项菜单和一个上下文菜单，其中的选项用于对所选项目执行操作或修改影片浏览器显示。选项菜单由影片浏览器的标题栏中下面带有三角形的复选标记表示。

注意：在处理屏幕时，影片浏览器的功能稍有不同。请参阅使用屏幕（仅限于 Flash Professional）。

查看影片浏览器：

  • 选择“窗口”>“其他面板”>“影片浏览器”。

过滤影片浏览器中显示的项目的类别：

  • 要显示文本、元件、动作脚本、导入的文件或帧和层，请单击“显示”选项右侧的一个或多个过滤按钮。要自定义显示哪些项目，请单击“自定义”按钮。选择“影片浏览器设置”对话框“显示”区域中的选项可以查看这些元素。
  • 从影片浏览器的选项菜单中，选择“显示影片元素”以显示场景中的项目。
  • 从影片浏览器的选项菜单中，选择“显示元件定义”以显示有关元件的信息。

    注意：可以同时激活“影片元素”选项和“元件定义”选项。

使用“查找”文本框搜索项目：

  • 在“查找”文本框中，输入项目名称、字体名称、动作脚本字符串或帧编号。查找功能将搜索影片浏览器中当前显示的所有项目。

要在影片浏览器中选择项目：

  • 在导航树中单击该项目。按住 Shift 键单击可以选择多个项目。

    所选项目的完整路径显示在影片浏览器的底部。在影片浏览器中选择一个场景之后，将在舞台上显示该场景的第一个帧。在影片浏览器中选择一个元素之后，如果包含该元素的层没有锁定，则会在舞台上选择该元素。

要使用影片浏览器选项菜单或上下文菜单命令：

  1. 执行以下其中一项操作：
    • 要查看选项菜单，请单击影片浏览器标题栏中的选项菜单控件。
    • 要查看上下文菜单，请右击 (Windows) 或按住 Control 键单击 (Macintosh) 影片浏览器导航树中的一个项目。
  2. 从菜单中选择一个选项：

    “转到位置”将跳到文档中选定的层、场景或帧。

    “转到元件定义”将跳到影片浏览器“影片元素”区域中选定元件的元件定义。元件定义列出了与该元件关联的所有文件。（必须选择“显示符号定义”选项。请参阅下面的选项定义。）

    “选择元件实例”将跳到影片浏览器“元件定义”中选定元件的实例所在的场景。（必须选择“显示影片元素”选项。）

    “在库中查找”将突出显示文档的库中的选定元件（如果“库”面板没有显示，Flash 会打开它）。

    “重命名”使您可以为选定的元素输入一个新名称。

    “在当前位置编辑”使您可以在舞台上编辑选定的元件。

    “在新窗口中编辑”使您可以在新窗口中编辑选定的元件。

    “显示影片元素”将显示文档中组织为场景的元素。

    “显示元件定义”将显示与某个元件关联的所有元素。

    “复制所有文本到剪贴板”会将选定的文本复制到剪贴板上。可以将文本粘贴到外部文本编辑器中进行拼写检查或其他编辑操作。

    “剪切”、“复制”、“粘贴”和“清除”将对选定元素执行这些常用功能。在显示列表中修改项目将修改文档中的相应项目。

    “展开分支”将在选定元素处展开导航树。

    “折叠分支”将在选定元素处折叠导航树。

    “折叠其他分支”将折叠导航树中不包含选定元素的分支。

    “打印”将打印影片浏览器中当前显示的分层显示列表。


“查找和替换”功能

可以使用“查找和替换”功能来查找和替换 Flash 文档中的指定元素。可以搜索文本字符串、字体、颜色、元件、声音文件、视频文件或导入的位图文件。

可以使用相同类型的另一元素替换指定的元素。取决于所搜索的元素的类型，用于搜索元素的选项在“查找和替换”对话框中有所不同。

可以查找和替换当前文档或当前场景中的元素。您可以搜索下一个或所有出现的元素，并替换当前出现或所有出现的元素。

注意：在基于屏幕的文档中，可以查找和替换当前文档或当前屏幕中的元素，但不能使用场景。有关使用屏幕的信息，请参阅使用屏幕（仅限于 Flash Professional）。

“实时编辑”选项使您可以在舞台上直接编辑指定的元素。如果在搜索元件时使用“实时编辑”，Flash 将在“在当前位置编辑”模式中打开元件。

“查找和替换”对话框底部的“查找和替换日志”显示所搜索元素的位置、名称和类型。

要打开“查找和替换”对话框：

  1. 选择“编辑”>“查找和替换”。
  2. 执行以下其中一项操作：
    • 从“搜索范围”弹出菜单中选择“当前文档”。
    • 从“搜索范围”弹出菜单中选择“当前场景”。


查找和替换文本

在查找和替换文本时，可以输入要查找的文本字符串和用于替换它的文本字符串。可以选择用于按全字搜索、用于区分大小写以及用于选择在搜索中包括何种类型的文本元素（文本字段的内容、动作脚本字符串等）的选项。

要查找和替换文本：

  1. 选择“编辑”>“查找和替换”。
  2. 从“类型”弹出菜单中选择“文本”。
  3. 在“文本”文本框中，输入要查找的文本。
  4. 在“替换为文本”文本框中，输入要用于替换现有文本的文本。
  5. 选择用于搜索文本的选项：

    “全字匹配”将指定文本字符串仅作为一个完整单词搜索，两边由空格、引号或类似标记限制。如果取消选择了“全字匹配”，则可以将指定文本作为某个较大单词的一部分来搜索。例如，如果取消选择了“全字匹配”，则可以将单词 place 作为单词 replace 的一部分来搜索。

    “区分大小写”将在查找和替换时搜索与指定文本的大小写（大写和小写字符格式）完全匹配的文本。

    “正则表达式”搜索以动作脚本编写的正则表达式中的文本。表达式是 Flash 可以求值并返回值的任何语句。有关详细信息，请参阅《动作脚本参考指南》帮助。

    “文本字段的内容”搜索文本字段的内容。

    “帧/层/参数”搜索帧标签、层名称、场景名称和组件参数。

    “动作脚本中的字符串”搜索文档或场景内动作脚本中的字符串（不搜索外部动作脚本文件）。

  6. 选择“实时编辑”以选择下一个出现在舞台上的指定文本，并在当前位置进行编辑。

    注意：即使在步骤 6 中选择了“全部查找”，也只会选择下一个出现的指定项目进行实时编辑。

  7. 要查找文本，请执行以下操作之一：
    • 单击“查找下一个”以查找下一个出现的指定文本。
    • 单击“全部查找”以查找所有出现的指定文本。
  8. 要替换文本，请执行以下操作之一：
    • 单击“替换”以替换在当前出现并选定的指定文本。
    • 单击“全部替换”以替换所有出现的指定文本。


查找和替换字体

在查找和替换字体时，可以按字体名称、字体样式、字体大小或这些特性的任意组合进行搜索或替换。

要查找和替换字体：

  1. 选择“编辑”>“查找和替换”。
  2. 从“类型”弹出菜单中选择“字体”，然后从以下选项中进行选择：
    • 要按字体名称进行搜索，请选择“字体名称”，然后从弹出菜单中选择一种字体，或在文本框中输入字体名称。如果取消选择了“字体名称”，则会搜索场景或文档中的所有字体。
    • 要按字体样式进行搜索，请选择“字体样式”，然后从弹出菜单中选择一种字体样式。如果取消选择了“字体样式”，则会搜索场景或文档中的所有字体样式。
    • 要按字体大小进行搜索，请选择“字体大小”，然后输入最小和最大字体大小的值，以便指定要搜索的字体大小范围。如果取消选择了“字体大小”，则会搜索场景或文档中的所有字体大小。
    • 要使用其他字体名称替换指定字体，请在“替换为”下面选择“字体名称”，然后从弹出菜单中选择一个字体名称，或在文本框中输入名称。如果在“替换为”下面取消选择了“字体名称”，则当前字体名称将保持不变。
    • 要使用其他字体样式替换指定字体，请在“替换为”下面选择“字体样式”，然后从弹出菜单中选择一种字体样式。如果在“替换为”下面取消选择了“字体样式”，则指定字体的当前样式将保持不变。
    • 要使用其他字体大小替换指定字体，请在“替换为”下面选择“字体大小”，然后输入最小和最大字体大小的值。如果在“替换为”下面取消选择了“字体大小”，则指定字体的当前大小将保持不变。
  3. 选择“实时编辑”以选择下一个出现在舞台上的指定字体，并在当前位置进行编辑。

    注意：即使在步骤 4 中选择了“全部查找”，也只会选择下一个出现的指定项目进行实时编辑。

  4. 要查找字体，请执行以下操作之一：
    • 单击“查找下一个”以查找下一个出现的指定字体。
    • 单击“全部查找”以查找所有出现的指定字体。
  5. 要替换字体，请执行以下操作之一：
    • 单击“替换”以替换在当前出现并选定的指定字体。
    • 单击“全部替换”以替换所有出现的指定字体。


查找和替换颜色

要查找和替换颜色，可以通过以下几种方法来选择要查找或替换的颜色：在颜色弹出窗口中选择一种颜色样本、在颜色弹出窗口中输入十六进制的颜色值、使用系统颜色选择器或者使用滴管从桌面上选择一种颜色。可以在笔触、填充、文本或它们的任意组合中查找和替换颜色。

不能在组合的对象中查找和替换颜色。

要查找和替换颜色：

  1. 选择“编辑”>“查找和替换”。
  2. 从“类型”弹出菜单中选择“颜色”。
  3. 要搜索颜色，请单击“颜色”控件并执行以下操作之一：
    • 从颜色弹出窗口中选择一种颜色样本。
    • 在颜色弹出窗口的“十六进制编辑”文本框中输入一个十六进制颜色值。
    • 单击“颜色选择器”按钮，然后从系统颜色选择器中选择一种颜色。
    • 从“颜色”控件中拖动以显示滴管。选择屏幕上的任意颜色。
  4. 要在替换指定颜色时选择要使用的颜色，请在“替换为”下面单击“颜色”控件，然后执行以下操作之一：
    • 从颜色弹出窗口中选择一种颜色样本。
    • 在颜色弹出窗口的“十六进制编辑”文本框中输入一个十六进制颜色值。
    • 单击“颜色选择器”按钮，然后从系统颜色选择器中选择一种颜色。
    • 从“颜色”控件中拖动以显示滴管。选择屏幕上的任意颜色。
  5. 选择“填充”、“笔触”或“文本”选项或者它们的任意组合，以指定要查找和替换哪些出现的指定颜色。
  6. 选择“实时编辑”以选择下一个出现在舞台上的指定颜色，并在当前位置进行编辑。

    注意：即使在步骤 6 中选择了“全部查找”，也只会选择下一个出现的指定项目进行实时编辑。

  7. 要查找颜色，请执行以下操作之一：
    • 单击“查找下一个”以查找下一个出现的指定颜色。
    • 单击“全部查找”以查找所有出现的指定颜色。
  8. 要替换颜色，请执行以下操作之一：
    • 单击“替换”以替换在当前出现并选定的指定颜色。
    • 单击“全部替换”以替换所有出现的指定颜色。


查找和替换元件

在查找和替换元件时，可以按名称搜索元件。可以将元件替换为任意类型（影片剪辑、按钮或图形）的另一元件。

要查找和替换元件：

  1. 选择“编辑”>“查找和替换”。
  2. 从“类型”弹出菜单中选择“元件”。
  3. 对于“名称”，从弹出的菜单中选择一个名称。
  4. 在“替换为”下，从弹出的菜单上为“名称”选择一个名称。
  5. 选择“实时编辑”以选择下一个出现在舞台上的指定元件，并在当前位置进行编辑。

    注意：即使在步骤 5 中选择了“全部查找”，也只会选择下一个出现的指定项目进行实时编辑。

  6. 要查找元件，请执行以下操作之一：
    • 单击“查找下一个”以查找下一个出现的指定元件。
    • 单击“全部查找”以查找所有出现的指定元件。
  7. 要替换元件，请执行以下操作之一：
    • 单击“替换”以替换在当前出现并选定的指定元件。
    • 单击“全部替换”以替换所有出现的指定元件。


查找和替换声音、视频或位图文件

在查找和替换声音、视频或位图文件时，可以按名称搜索文件。可以使用相同类型的另一文件来替换文件。也就是说，可以将声音替换为声音、将视频替换为视频或者将位图替换为位图。

要查找和替换声音、视频或位图：

  1. 选择“编辑”>“查找和替换”。
  2. 从“类型”弹出菜单中选择“声音”、“视频”或“位图”。
  3. 对于“名称”，请输入声音、视频或位图的文件名，或从弹出菜单中选择一个名称。
  4. 在“替换为”下面，为“名称”输入声音、视频或位图的文件名，或从弹出菜单中选择一个名称。
  5. 选择“实时编辑”以选择下一个出现在舞台上的指定声音、视频或位图，并在当前位置进行编辑。

    注意：即使在步骤 5 中选择了“全部查找”，也只会选择下一个出现的指定项目进行实时编辑。

  6. 要查找声音、视频或位图，请执行以下操作之一：
    • 单击“查找下一个”以查找下一个出现的指定声音、视频或位图。
    • 单击“全部查找”以查找所有出现的指定声音、视频或位图。
  7. 要替换声音、视频或位图，请执行以下操作之一：
    • 单击“替换”以替换在当前出现并选定的指定声音、视频或位图。
    • 单击“全部替换”以替换所有出现的指定声音、视频或位图。


使用“撤消”、“重做”和“重复”菜单命令

在处理 Flash 文档时，“编辑”>“撤消”和“编辑”>“重做”命令使您可以撤消和重做各个步骤。“撤消”和“重做”命令的名称会发生变化，以反映最后一次执行的步骤。

要在使用“撤消”命令之后从文档中除去删除的项目，请使用“保存并压缩”命令。请参阅撤消步骤时保存文档。

可以使用“重复”命令将某个步骤重复应用于同一对象或不同对象。例如，如果移动了名为 shape_A 的形状，则可以选择“编辑”>“重复”再次移动该形状；或者，您可以选择另一形状 shape_B，然后选择“编辑”>“重复”将第二个形状移动相同的幅度。

默认情况下，Flash 的“撤消”菜单命令支持的撤消级别数为 100。可以在 Flash 的“首选参数”中选择撤消和重做的级别数（从 2 到 9999）。请参阅设置 Flash 中的首选参数。

要撤消步骤：

  • 选择“编辑”>“撤消”。

要重做步骤：

  • 选择“编辑”>“重做”。

要重复步骤：

  • 在舞台上选择了一个对象的情况下，选择“编辑”>“重复”。


“历史记录”面板

“历史记录”面板显示自创建或打开某个文档以来在该活动文档中执行的步骤的列表，列表中的数目最多为指定的最大步骤数。（“历史记录”面板不显示在其他文档中执行的步骤。）“历史记录”面板中的滑块最初指向您执行的上一个步骤。

可以使用“历史记录”面板一次撤消或重做个别步骤或多个步骤。可以将“历史记录”面板中的步骤应用于同一对象或文档中的不同对象。但是，不能重新排列“历史记录”面板中的步骤的顺序。“历史记录”面板按步骤的执行顺序来记录步骤。

注意：如果撤消了一个步骤或一系列步骤，然后又在文档中执行了某些新步骤，则无法再重做“历史记录”面板中的那些步骤；它们已从面板中消失。

在撤消了“历史记录”面板中的某个步骤之后，如果要从文档中除去删除的项目，请使用“保存并压缩”命令。请参阅撤消步骤时保存文档。

默认情况下，Flash 的“历史记录”面板支持的撤消级别数为 100。可以在 Flash 的“首选参数”中选择撤消和重做的级别数（从 2 到 9999）。请参阅设置 Flash 中的首选参数。

可以清除“历史记录”面板，以便擦除当前文档的历史记录列表。清除历史记录列表之后，您将无法撤消已清除的步骤。清除历史记录列表不会撤消步骤；它只是从当前文档的内存中删除那些步骤的记录。

关闭文档将会清除其历史记录。如果确定需要在关闭某个文档后使用该文档中的步骤，请使用“复制步骤”命令来复制步骤或将步骤保存为命令。请参阅在文档之间复制和粘贴步骤或使用“命令”菜单自动处理任务。

要打开“历史记录”面板：

  • 选择“窗口”>“其他面板”>“历史记录”。

要擦除当前文档的历史记录列表：

  1. 在“历史记录”面板的选项菜单中，选择“清除历史记录”。
  2. 单击“是”以确认“清除”命令。


使用“历史记录”面板撤消步骤

可以使用“历史记录”面板撤消上一个步骤或多个步骤。撤消了某个步骤之后，该步骤将在“历史记录”面板中变灰。

要撤消所执行的上一个步骤：

  • 将“历史记录”面板的滑块在列表中向上拖动一个步骤。

要立即撤消多个步骤，请执行下列操作之一：

  • 拖动滑块以指向任意步骤。
  • 在沿着滑块路径的某个步骤的左边单击，滑块即会自动滚动到该步骤，并在滚动的同时会撤消所有后面的步骤。

    注意：滚动到某个步骤（并选择后面的步骤）与选择某个单独的步骤不同。要滚动到某个步骤，必须在该步骤的左边单击。


使用“历史记录”面板重放步骤

可以使用“历史记录”面板重放个别步骤或多个步骤。

在使用“历史记录”面板重放步骤时，所播放的步骤是在“历史记录”面板中选定（突出显示）的步骤，而不一定是滑块当前指向的步骤。

可以将“历史记录”面板中的步骤应用于文档中任意选定的对象。

要重放一个步骤：

  • 在“历史记录”面板中，选择某个步骤并单击“重放”按钮。该步骤即会重放，并且其副本会出现在“历史记录”面板中。

要重放一系列相邻的步骤：

  1. 通过执行以下操作之一在“历史记录”面板中选择步骤：
    • 从一个步骤拖动到另一个步骤。（不要拖动滑块，而只是从一个步骤的文本标签拖动到另一个步骤的文本标签。）
    • 选择第一个步骤，然后按住 Shift 键单击最后一个步骤；或者选择最后一个步骤，然后按住 Shift 键单击第一个步骤。
  2. 单击“重放”。

    这些步骤即会按顺序重放，并且一个标记为“重放步骤”的新步骤会出现在“历史记录”面板中。

要重放不相邻的步骤：

  1. 在“历史记录”面板上选择一个步骤，然后按住 Control 键单击 (Windows) 或按住 Command 键单击 (Macintosh) 其他步骤。

    也可以按住 Control 键单击或按住 Command 键单击来取消选择选定的步骤。

  2. 单击“重放”。

    选定的步骤即会按顺序重放，并且一个标记为“重放步骤”的新步骤会出现在“历史记录”面板中。


在文档之间复制和粘贴步骤

每个打开的文档都有自己的步骤历史记录。使用“历史记录”面板选项菜单中的“复制步骤”命令，您可以从一个文档中复制步骤，然后将它们粘贴到另一文档中。如果将步骤复制到文本编辑器中，这些步骤将会以 JavaScript 代码的形式粘贴。

要在另一文档中重复使用某个文档中的步骤：

  1. 在包含要重复使用的步骤的文档中，从“历史记录”面板中选择步骤。
  2. 在“历史记录”面板的选项菜单中，选择“复制步骤”。
  3. 打开要在其中粘贴步骤的文档。
  4. 选择要对其应用步骤的对象。
  5. 选择“编辑”>“粘贴”以粘贴步骤。

    在将步骤粘贴到文档的“历史记录”面板中时，这些步骤将会回放。“历史记录”面板只会把它们显示为一个步骤，称为“粘贴步骤”。


撤消步骤时保存文档

默认情况下，在使用“编辑”>“撤消”或“历史记录”面板撤消步骤时，Flash 文档的文件大小不会改变（即使删除了文档中的项目）。例如，如果将视频文件导入文档，然后撤消导入，则文档的文件大小仍然包含视频文件的大小。这是因为执行“撤消”命令时从文档中删除的任何项目都将保留，以防您需要使用“重做”命令恢复这些项目。通过使用“保存并压缩”命令，可以从文档中永久除去删除的项目，从而减小文档的文件大小。

要永久除去通过“撤消”命令删除的项目：

  • 选择“文件”>“保存并压缩”。


自动处理任务

在创建文档时，您可能需要执行同一任务许多次。可以通过“历史记录”面板中的步骤在“命令”菜单中创建一个新命令，然后多次重复使用该命令。步骤将完全按照原来执行的那样重放。不能在重放步骤时对它们进行修改。

如果将来有机会再次使用指定的步骤集，特别是，如果要在下次启动 Flash 时再次使用这些步骤，您应创建并保存一个新命令。保存的命令将永远保留（除非删除它们）。在复制其他内容时，使用“历史记录”面板的“复制步骤”命令所复制的步骤将被放弃。请参阅在文档之间复制和粘贴步骤。


关于不能在命令中使用的步骤

Flash 中的某些任务不能保存为命令或使用“编辑”>“重复”菜单项重复。这些命令可以撤消和重做，但无法重复。

无法保存为命令或重复的动作示例包括：选择帧或修改文档大小。如果试图将不可重复的动作保存为命令，则命令不会被保存。


创建和管理命令

可以通过“历史记录”面板中的选定步骤创建命令。在“管理保存的命令”对话框中，可以重命名或删除命令。

要创建命令：

  1. 在“历史记录”面板中选择一个步骤或一组步骤。
  2. 从“历史记录”面板的选项菜单中选择“保存为命令”。
  3. 为命令输入一个名称，然后单击“确定”。

    命令即会出现在“命令”菜单中。

    注意：命令以 JavaScript 文件（带 .jsfl 扩展名）的形式保存在 Flash MX 2004\<language>\
    First Run\Commands 文件夹中。

要编辑“命令”菜单中的命令的名称：

  1. 选择“命令”>“编辑命令列表”。
  2. 选择要重命名的命令，然后为其输入一个新名称。
  3. 单击“关闭”。

要从“命令”菜单中删除名称：

  1. 选择“命令”>“编辑命令列表”。
  2. 选择一个命令。
  3. 单击“删除”，然后单击“关闭”。


运行命令

通过从“命令”菜单中选择命令名称即可使用您创建的命令。

也可以运行系统上以 JavaScript 或 Flash JavaScript 文件形式提供的命令。

要使用保存的命令：

  • 从“命令”菜单中选择命令。

要运行 JavaScript 或 Flash JavaScript 命令：

  1. 选择“命令”>“运行命令”。
  2. 定位至要运行的脚本，然后单击“打开”。


获取更多命令

可以使用“命令”菜单中的“获取更多命令”选项链接到 Flash Exchange Web 站点
http://macromedia.com/go/exchange_cn 并下载其他 Flash 用户张贴的更多命令。有关该处张贴的命令的详细信息，请参考 Flash Exchange。

要获取更多命令：

  1. 确保您连接到了 Internet。
  2. 选择“命令”>“获取更多命令”。


关于自定义 Flash 文档中的上下文菜单

可以自定义在 Flash Player 7 中随 Flash 文档一起出现的标准上下文菜单和文本编辑上下文菜单。

  • 在 Flash Player 中，当用户右击 (Windows) 或按住 Control 键单击 (Macintosh) 文档中除可编辑文本字段之外的任何其他区域时，即会显示标准上下文菜单。可以向此菜单中添加自定义项目，并隐藏菜单中除“设置”和“调试器”以外的任何内置项目。
  • 在 Flash Player 中，当用户右击 (Windows) 或按住 Control 键单击 (Macintosh) 文档中的可编辑文本字段时，即会显示编辑上下文菜单。可以向此菜单中添加自定义项目。不能隐藏任何内置项目。

注意：当用户在 Flash Player 中右击 (Windows) 或按住 Control 键单击 (Macintosh) 且未加载文档时，Flash Player 还会显示一个错误上下文菜单。不能自定义此菜单。

使用动作脚本中的 contextMenu 和 contextMenuItem 对象，您可以自定义 Flash Player 7 中的上下文菜单。有关使用这些对象的详细信息，请参阅ContextMenu 类。

在创建 Flash Player 的自定义上下文菜单项时，请记住以下准则：

  • 自定义项目是按它们的创建顺序添加到上下文菜单中的。不能在创建项目之后修改此顺序。
  • 您可以指定自定义项目的可见性和启用状况。
  • 自定义上下文菜单项是使用 Unicode UTF-8 文本编码自动编码的。


关于 Flash Player 中的链接菜单

如果用户使用 Netscape 浏览器或 Active X 应用程序来显示 Flash Player，则播放器将为所有 Flash 文档显示一个链接菜单。如果用户右击 (Windows) 或按住 control 键单击 (Macintosh) Flash 文档中的某个文本链接，即会显示链接菜单，并带有以下菜单项：

“打开”可打开链接。

“在新窗口中打开”可在新窗口中打开链接。

“复制链接”可将链接复制到用户的剪贴板中。

此外，用户可以通过执行以下操作在新窗口中打开链接：

  • 在 Windows Netscape 浏览器中：按住 Control 键单击链接。
  • 在 Macintosh Netscape 浏览器中：按住 Command 键单击链接。
  • 在 Active X 应用程序中：按住 Shift 键单击链接。


加速文档显示

要加速文档显示，可以使用“视图”菜单中的命令关闭呈现品质功能，该功能需进行额外的计算，因此会降低文档的显示速度。

这些命令不会对 Flash 如何导出文档有任何影响。要在 Web 浏览器中指定 Flash 文档的显示品质，可以使用 object 和 embed 参数。“发布”命令可以自动执行此任务。有关详细信息，请参阅发布 Flash 文档。

要更改文档的显示速度：

  • 选择“视图”>“预览模式”，然后从以下选项中进行选择：

    “轮廓”只显示场景中形状的轮廓，从而使所有线条都显示为细线。这样便于改变图形元素的形状，并加快复杂场景的显示速度。

    “快速”将关闭消除锯齿功能，并显示绘画的所有颜色和线条样式。

    “消除锯齿”将打开线条、形状和位图的消除锯齿功能。经它处理过的形状和线条的边沿在屏幕上显示出来会更为平滑。此选项的绘画速度要比“快速”选项的速度慢很多。消除锯齿功能在提供成千（16 位）或上百万（24 位）种颜色的显卡上处理效果最好。在 16 或 256 色模式下，黑色线条经过平滑，但是颜色可能在快速模式下看起来要好一些。

    “消除文字锯齿”将平滑所有文本的边缘。此命令处理较大的字体大小时效果最好，如果文本数量太多，则速度会减慢。这是最常用的工作模式。

    “完整”将完全呈现舞台上的所有内容。此设置可能会降低显示的速度。


优化 Flash 文档

随着文档文件大小的增加，它的下载和回放时间也增加。为了获得最优的回放质量，可以采取多个步骤来准备文档。作为发布过程的一部分，Flash 会自动对文档执行一些优化：例如，它会在导出时检测重复的形状，并在文件中只放入一个这些形状，而且会将嵌套的组合转换成单个组合。

在导出文档之前，可以使用多种策略来减小文件的大小，从而对其进行进一步的优化。也可以在发布文档时将其压缩为 SWF 文件。（请参阅发布。）在进行更改时，好的做法是通过在各种不同的计算机、操作系统和 Internet 连接上运行来测试文档。

要优化文档：

  • 对于每个多次出现的元素，使用元件、动画或者其他对象。
  • 在创建动画序列时，请尽可能使用补间动画，因为与一系列的关键帧相比，它占用的文件空间更小。
  • 对于动画序列，使用影片剪辑而不是图形元件。
  • 限制每个关键帧中的改变的区域；在尽可能小的区域中执行动作。
  • 避免使用动画式的位图元素；使用位图图像作为背景或者使用静态元素。
  • 对于声音，尽可能使用 MP3 这种占用空间最小的声音格式。

要优化元素和线条：

  • 尽量组合元素。
  • 使用层将在动画过程中改变的元素与不改变的元素分开。
  • 使用“修改”>“曲线”>“优化”将用于描述形状的分隔线的数量减到最小。
  • 限制特殊线条类型（如虚线、点线、锯齿状线等）的数量。实线所需的内存较少。用“铅笔”工具产生的线条比刷子笔触产生的线条所需的内存更少。

要优化文本和字体：

  • 限制字体和字体样式的数量。尽量少使用嵌入字体，因为它们会增加文件的大小。
  • 对于“嵌入字体”选项，只选择需要的字符，而不要包括整个字体。

要优化颜色：

  • 在元件的“属性”检查器中，使用“颜色”菜单创建一个元件的具有不同颜色的多个实例。
  • 使用“混色器”（“窗口”>“混色器”）以使文档的调色板与浏览器专用的调色板匹配。
  • 尽量少使用渐变色。使用渐变色填充区域时比使用纯色填充时大概多需要 50 个字节。
  • 尽量少使用 alpha 透明度，它会减慢回放速度。


测试文档的下载性能

Flash Player 会尝试满足您设置的帧频；在回放期间，实际帧频可能会随不同的计算机而异。如果正在下载的文档到达了一个特定的帧，但是该帧的所需数据尚未下载，则文档会暂停，直到数据到达为止。

要以图形化方式查看下载性能，可以使用“带宽设置”，它会根据指定的调制解调器速度显示为每个帧发送多少数据。“带宽设置”分为两个窗格。左边的窗格显示有关文档的信息、下载设置、状态和流（如果包括的话）。右边的窗格显示有关文档中个别帧的信息。

在模拟下载速度时，Flash 使用典型 Internet 性能的估计值，而不是精确的调制解调器速度。例如，如果您选择模拟 28.8 Kbps 的调制解调器速度，Flash 会将实际的速率设置为 2.3 Kbps 来反映典型的 Internet 性能。“带宽设置”还针对 SWF 文件新增的压缩支持进行补偿，从而减少了文件大小并改善了数据流性能。

当外部 SWF 文件、GIF 和 XML 文件及变量通过使用动作脚本调用（如 loadMovie 和 getUrl）流入播放器时，数据将按为数据流设置的速率流动。在带宽由于出现其他数据请求而减少时，主要 SWF 文件的流速率也会随之降低。这种做法有助于以各种想要支持的速度和在各种想要支持的计算机上测试文档。这将帮助您确保文档在设计支持的最慢连接和计算机上不会出现过载情况。

也可以生成会降低回放速度的帧的报告，然后优化或删除这些帧中的某些内容。请参阅优化 Flash 文档。

要更改使用“测试影片”和“测试场景”命令创建的 SWF 文件的设置，请使用“文件”>“发布设置”。请参阅发布 Flash 文档。

要测试下载性能：

  1. 执行以下其中一项操作：
    • 选择“控制”>“测试场景”或“控制”>“测试影片”。

      如果测试场景或文档，Flash 会使用“发布设置”对话框中的设置将当前所选内容发布为 SWF 文件。（请参阅发布 Flash 文档。）SWF 文件会在一个新窗口中打开，并立即开始播放。

    • 选择“文件”>“打开”，然后选择一个 SWF 文件。
  2. 选择“视图”>“下载设置”，然后选择一个下载速度来确定 Flash 模拟的数据流速率：14.4 Kbps、28.8 Kbps、56 Kbps、DSL、T1 或“用户设置”。要输入自己“用户设置”，请选择“自定义”。
  3. 在查看 SWF 文件时，选择“视图”>“带宽设置”以显示下载性能的图表。

    “带宽设置”的左侧显示有关文档的信息、文档设置、文档状态以及流（如果文档中已包括的话）。

    “带宽设置”的右侧显示时间轴标题和图表。在该图表中，每个条形代表文档的一个单独帧。条形的大小对应于帧的字节大小。时间轴标题下面的红线指出，在当前的调制解调器速度（在“控制”菜单中设置）下，指定的帧能否实时流动。如果某个条形伸出到红线之上，则文档必须等待该帧加载。

  4. 选择“视图”>“模拟下载”以打开或关闭数据流。

    如果关闭数据流，则文档在不模拟 Web 连接的情况下就开始下载。

  5. 单击图表上的条形会在左侧窗口中显示对应帧的设置，并停止文档下载。
  6. 如果需要，可调节图表的视图：
    • 选择“视图”>“数据流图表”以显示哪些帧会引起暂停。

      此默认视图显示代表每个帧的淡灰色和深灰色交替的块。每块的旁边指出了它的相对字节大小。第一帧存储元件的内容，所以它通常比其他帧大。

    • 选择“视图”>“逐帧图表”以显示每个帧的大小。

      此视图有助于您查看哪些帧导致数据流延迟。如果任何帧块伸出到图表中的红线之上，则 Flash Player 将暂停回放，直到整个帧下载完毕。

  7. 关闭测试窗口以返回到正常的创作环境中。

一旦建立起结合了“带宽设置”的测试环境，就可以在测试模式中直接打开任何 SWF 文件。文件在 Flash Player 窗口中打开，且在打开时会使用“带宽设置”和其他选定的查看选项。

有关调试文档的详细信息，请参阅编写和调试脚本。

要生成一个列出最终 Flash Player 文件中数据量的报告：

  1. 选择“文件”>“发布设置”，然后单击 Flash 选项卡。
  2. 选择“生成大小报告”。
  3. 单击“发布”。

    Flash 生成一个扩展名为 .txt 的文本文件。（如果文档文件是 myMovie.fla，则文本文件就是 myMovie Report.txt。）该报告会按帧列出每个帧、形状、文本、声音、视频和“动作脚本”的脚本。


从 Flash 创作工具中打印

可以在工作时打印 Flash 文档中的各帧，以便预览和编辑文档。

也可以指定显示 Flash 文档的查看器能够从 Flash Player 中打印帧。请参阅从 SWF 文件中打印。

在打印 Flash 文档中的帧时，可以使用“打印”对话框指定要打印的场景或帧的范围，以及份数。在 Windows 中，“页面设置”对话框可以指定纸张大小、方向和各种打印选项，包括边距设置以及是否每一页都要打印所有的帧。在 Macintosh 中，这些选项被分在“页面设置”和“打印边距”对话框。

“打印”和“页面设置”对话框在两个操作系统上都是标准的，而且它们的外观取决于所选的打印机驱动程序。

设置打印选项：

  1. 选择“文件”>“页面设置”(Windows) 或“文件”>“打印边距”(Macintosh)。
  2. 设置页面边距。选择两个“居中”选项，以便在页面的中间打印帧。
  3. 在“帧”弹出菜单中，选择是打印文档中的所有帧，还是只打印每个场景的第一帧。
  4. 在“布局”弹出菜单中，从以下选项中进行选择：

    “实际大小”将按照帧的完全大小进行打印。在“缩放”中输入一个值可以缩小或放大打印的帧。

    “缩放到页面大小”将缩小或放大每个帧，使其填充页面的整个打印区域。

    “记事本”选项将在一个页面上打印几个缩略图。从“方框”、“网格”或“空白”中选择。在“帧”文本框中输入每一页上的缩略图数量。在“文字边距”文本框中设置缩略图之间的间隔。选择“标签”将以缩略图的形式打印帧标签。

要打印帧：

  • 选择“文件”>“打印”。


处理项目概述（仅限于 Flash Professional）

在 Macromedia Flash MX Professional 2004 中，可以使用 Flash 项目在一个项目中管理多个文档文件。Flash 项目可让您将多个相关文件组织在一起以创建复杂的应用程序。

可以将版本控制功能与项目配合使用，以确保在编辑期间使用正确的文件版本，以及防止意外覆盖文件。要使用版本控制功能，必须先向项目添加文件。有关版本控制的信息，请参阅将版本控制与项目配合使用（仅限于 Flash Professional）。

Flash 项目具有以下特性：

  • Flash 项目可以包含任何 Flash 或其他文件类型，包括以前的 FLA 和 SWF 文件版本。
  • 可以向 Flash 项目添加现有文件。只能将每个文件添加到特定的 Flash 项目一次。可以将文件组织在嵌套的文件夹中。
  • Flash 项目是文件扩展名为 .flp 的 XML 文件，例如，myProject.flp。此 XML 文件引用在 Flash 项目中包含的所有文档文件。
  • Flash 项目可以包含另一个 Flash 项目（FLP 文件）。
  • 您对项目所做的更改会立即更新到 FLP 文件中，因此该文件总是保持最新状态。（无需执行“保存文件”操作。）
  • 可以在 Flash MX Professional 2004 创作环境中创建 Flash 项目，或者可以在外部应用程序中为 Flash 项目创建 XML 文件。
  • Flash 项目使用 UTF-8 文本编码方式。Flash 项目中的所有文件名和文件夹名称都必须兼容于 UTF-8。


创建和管理项目（仅限于 Flash Professional）

使用 Flash“项目”面板来创建和管理项目。此面板在一个可折叠的树形结构中显示 Flash 项目的内容。此面板的标题栏显示项目名。

如果缺少某个项目文件（不在其指定位置），则该文件名旁会出现一个“缺少文件”图标。可以搜索缺少的文件，或从项目中删除该文件。

发布项目时，会使用为项目中每个 FLA 文件指定的发布配置文件发布这些文件。在发布项目之前，应在“项目设置”对话框中指定发布配置文件。

一次只能打开一个项目。如果在某个项目打开时打开或创建另一个项目，Flash 会自动保存并关闭第一个文件。

要查看 Flash“项目”面板：

  • 选择“窗口”>“项目”。

要查看“项目”弹出菜单：

  • 项目打开后，单击“Flash 项目”面板左上角的“项目”按钮。

要创建新项目：

  1. 执行下列操作之一，打开一个新项目：
    • 从“项目”弹出菜单中选择“新建项目”。
    • 如果没有打开其他任何项目，请打开 Flash“项目”面板，并在该面板窗口中选择创建一个新项目。
    • 选择“文件”>“新建”。在“常规”选项卡上选择“Flash 项目”。
    • 如果当前未打开项目，则在已保存的 Flash 文档或动作脚本文件的“文档”窗口中右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“添加到新项目”。
  2. 在“新建项目”对话框中，输入项目的名称，然后单击“保存”。

要打开某个现有项目，请执行以下操作之一：

  • 从“项目”弹出菜单中选择“打开项目”。定位到该项目，然后单击“打开”。
  • 双击该文件。
  • 如果没有打开其他任何项目，请打开 Flash“项目”面板，并在该面板窗口中选择打开一个现有项目。定位到该项目，然后单击“打开”。
  • 选择“文件”>“打开”。定位到该项目，然后单击“打开”。

要添加文件，请执行以下操作之一：

  • 单击“Flash 项目”面板右下角的“添加”文件 (+) 按钮。选择一个或多个文件，然后单击“添加”。
  • 在打开的 FLA 或动作脚本文件的“文档”窗口中右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“添加到项目”。

注意：在将文件添加到项目之前必须先保存它。只能将文件添加到特定的项目一次。如果试图将文件多次添加到相同的项目，Flash 会显示一条错误消息。

要创建文件夹：

  1. 单击 Flash“项目”面板右下角的“文件夹”按钮。
  2. 输入文件夹名称，然后单击“确定”。

注意：在项目树形结构中，位于相同分支上的相同层中的文件夹必须具有唯一的名称。如果文件夹名称发生冲突，Flash 会显示一条错误消息。

要移动文件或文件夹：

  • 将文件或文件夹拖到项目树形结构中的新位置。移动文件夹时，其所有内容也会被移动。

注意：如果将文件夹拖到的位置中具有另一个名称相同的文件夹，Flash 会在新位置中合并这两个文件夹的内容。

要删除某个文件或文件夹，在“Flash 项目”面板中选择它，然后执行以下操作之一：

  • 单击 Flash“项目”面板右下角的“删除”按钮。
  • 按 Delete 键。
  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该文件或文件夹，然后从上下文菜单中选择“删除”。

要在 Flash 内从“项目”面板中打开某个文件：

  • 在 Flash“项目”面板中双击该文件名。

    如果该文件是本机文件类型（Flash 创作工具支持的类型），则它会在 Flash 中打开。如果它不是本机文件类型，则该文件会在用来创建它的应用程序中打开。

要测试某个项目：

  1. 在 Flash“项目”面板中单击“测试项目”。
  2. 如果该项目未包含 FLA、HTML 或 HTM 文件，Flash 会显示一条错误消息。单击“确定”，然后添加适当类型的文件。
  3. 如果没有 FLA、HTML 或 HTM 文件被指定为默认文档，Flash 会显示一条错误消息。单击“确定”。在“选择默认文档”对话框中，选择一个文档，然后单击“确定”。

    在默认文档存在时，“测试项目”功能会发布该文档中的所有 FLA 文件。如果默认文档是 FLA 文件，则会执行“测试影片”命令。如果它是 HTML 文件，则会打开浏览器。

要为项目中的某个 FLA 文件指定发布配置文件：

  1. 在 Flash“项目”面板中选择该文件，然后执行以下操作之一：
    • 从“项目”弹出菜单中选择“设置”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该文件，然后从上下文菜单中选择“设置”。
  2. 在“项目设置”对话框中，从树形结构中选择该 FLA 文件。
  3. 从“配置文件”菜单中选择一个发布配置文件。有关发布配置文件的信息，请参阅使用发布配置文件。

要发布某个项目：

  • 从“项目”弹出菜单中选择“发布项目”。

注意：除非您选择了其他配置文件，否则 Flash 会在发布该项目中的 FLA 文件时使用默认的发布配置文件。请参阅上面的选择发布配置文件的过程。

要在测试或发布某个项目时保存其文件：

  1. 选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后单击“编辑”选项卡。
  2. 在“项目首选参数”下，单击“在测试项目或发布项目上保存项目文件”。

    选中此选项后，Flash 会在执行“测试项目”或“发布项目”操作之前保存当前项目中的所有打开的文件。

要关闭某个项目：

  • 从“项目”弹出菜单中选择“关闭项目”。

    默认情况下，在您关闭某个项目时 Flash 会关闭该项目中的所有文件。要改变此行为，请取消选择“编辑首选参数”中的“关闭在项目关闭时打开的文件”选项。

要在关闭某个项目时关闭所有文件：

  1. 选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后单击“编辑”选项卡。
  2. 在“项目首选参数”下，单击“关闭在项目关闭时打开的文件”（默认为选中）。

    选中此选项后，Flash 会在关闭当前项目时关闭其中的所有打开的文件。

要重命名某个项目或文件夹：

  1. 在 Flash“项目”面板中选择该项目名称或文件夹名称，然后执行以下操作之一：
    • 从“项目”弹出菜单中选择“重命名”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该项目或文件夹，然后从上下文菜单中选择“重命名”。
  2. 输入新的名称，然后单击“确定”。

注意：默认情况下，项目的名称与第一个添加到项目的文件的名称相同。要重命名项目，您必须使用“重命名”菜单项。重命名某个项目的 FLP 文件不会重命名该项目。

要查找某个缺少的文件：

  1. 在 Flash“项目”面板中选择该文件名。
  2. 执行以下其中一项操作：
    • 从“项目”弹出菜单中选择“查找缺少的文件”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“查找缺少的文件”。
  3. 定位到该文件，然后单击“确定”。


将版本控制与项目配合使用（仅限于 Flash Professional）

利用 Flash MX Professional 2004 中的版本控制功能，可让您确保每一位使用项目文件的创作者始终使用文件的最新版本，并且多位创作者不会互相覆盖工作。

要使用版本控制功能，您必须为项目定义一个站点。可以为版本控制系统指定本地、网络、FTP 连接，也可以指定自定义的插件。如果在设置远程站点时遇到问题，请参阅远程文件夹设置疑难解答（仅适用于 Flash Professional）。

要为版本控制定义一个站点：

  1. 创建新的项目并添加文件，如创建和管理项目（仅限于 Flash Professional）中所述。
  2. 选择“文件”>“编辑站点”。
  3. 在“编辑站点”对话框中，单击“新建”。
  4. 在“站点定义”对话框中，输入站点名称、本地根路径和用户的电子邮件地址及名称。
  5. 要指定本地、网络或 FTP 连接，从“连接”菜单中选择“本地/网络”或“FTP”。输入“本地/网络”路径或 FTP 连接的位置信息。
  6. 在 Flash“项目”面板（“窗口”>“项目”）中，从“项目”弹出菜单或上下文菜单中选择“设置”。
  7. 在“项目设置”对话框中，从“版本控制”部分中的“站点”菜单中选择站点定义。单击“确定”。
  8. 在“项目”弹出菜单中，选择“存回”。Flash 会将当前项目中的所有文件存到站点中。

要编辑应用版本控制的文件：

  1. 打开包含该文件的项目，如创建和管理项目（仅限于 Flash Professional）中所述。
  2. 在项目面板的树形结构中选择该文件，然后从项目的上下文菜单中选择“取出”。

    树形结构中该文件名旁会出现一个图标，表示该文件已被取出。

  3. 要存回某个文件，在项目面板中选择该文件，然后从项目的上下文菜单中选择“存回”。

    树形结构中该文件名旁会出现一个图标，表示该文件已被存回。

要从版本控制站点中打开某个文件：

  1. 选择“文件”>“从站点打开”。
  2. 在“从站点打开”对话框中，从“站点”菜单中选择站点。
  3. 在站点中选择该文件。
  4. 如果该文件存在于本地系统中，Flash 会显示是否检出该文件的消息；如果是，则会询问您是否要覆盖它。单击“是”以远程站点中的版本覆盖本地版本。


远程文件夹设置疑难解答（仅适用于 Flash Professional）

可以使用多种方法配置 Web 服务器。下面提供的信息介绍了在设置用于版本控制的远程文件夹时可能遇到的一些常见问题以及如何解决这些问题：

  • Flash FTP 实现可能不能正确地与某些代理服务器、多级防火墙和其他形式的间接服务器访问协同使用。如果在 FTP 访问方面遇到问题，请询问您的系统管理员以获得帮助。
  • 对于 Flash FTP 实现，您必须连接到远程系统的根文件夹。（在许多应用程序中，您可以连接到任何远程目录，然后在远程文件系统中导航，以找到您需要的目录。）确保将远程系统的根文件夹标明为主机目录。
  • 如果在连接时遇到问题，并且已使用单斜杠 (/) 指定了主机目录，则您可能需要指定要连接到的目录与远程根文件夹之间的相对路径。例如，如果远程根文件夹是一个较高级别的目录，您可能需要为主机目录指定一个 ../../ 路径。
  • 包含空格和特殊字符的文件名和文件夹名在传输到远程站点时常常会出现问题。只要可能，就要在文件名和文件夹名中使用下划线代替空格，并尽量避免使用特殊字符。特别地，文件名或文件夹名中的冒号、斜杠、句号和省略号可能会导致问题。
  • 如果问题仍然存在，请尝试使用外部 FTP 程序进行加载，看问题是不是特定于在 Flash 中使用 FTP 这一情况。


使用元件、实例和库资源概述

元件 是在 Macromedia Flash MX 2004 或 Macromedia Flash MX Professional 2004 中创建的图形、按钮或影片剪辑。元件只需创建一次，然后即可在整个文档或其他文档中重复使用。元件可以包含从其他应用程序中导入的插图。您创建的任何元件都会自动成为当前文档的库的一部分。有关库的详细信息，请参阅使用库来管理媒体资源。

每个元件都有自己的时间轴。可以将帧、关键帧和层添加至元件时间轴，就像您可以将它们添加至主时间轴一样。有关详细信息，请参阅使用时间轴。如果元件是影片剪辑或按钮，则可以使用动作脚本控制元件。有关详细信息，请参阅处理事件。

实例 是指位于舞台上或嵌套在另一个元件内的元件副本。实例可以与它的元件在颜色、大小和功能上差别很大。编辑元件会更新它的所有实例，但对元件的一个实例应用效果则只更新该实例。

在文档中使用元件可以显著减小文件的大小；保存一个元件的几个实例比保存该元件内容的多个副本占用的存储空间小。例如，通过将诸如背景图像这样的静态图形转换为元件然后重新使用它们，您可以减小文档的文件大小。使用元件还可以加快 SWF 文件的回放速度，因为一个元件只需下载到 Flash Player 中一次。

在创作时或在运行时，您可以将元件作为共享库资源在文档之间共享。对于运行时共享资源，可以把源文档中的资源链接到任意数量的目标文档中，而无需把该资源导入目标文档。对于创作时共享的资源，可以用本地网络上可用的其他任何元件更新或替换一个元件。请参阅使用共享库资源。

如果导入的库资源和库中已有的资源同名，您可以解决命名冲突，而不会意外地覆盖现有的资源。请参阅解决库资源之间的冲突。

有关使用元件和实例的说明，请选择“帮助”>“如何”>“快速任务”>“创建元件和实例”。


元件的类型

每个元件都有一个唯一的时间轴和舞台，以及几个层。创建元件时要选择元件类型，这取决于您在文档中如何使用该元件。

  • 图形元件可用于静态图像，并可用来创建连接到主时间轴的可重用动画片段。图形元件与主时间轴同步运行。交互式控件和声音在图形元件的动画序列中不起作用。
  • 使用按钮元件可以创建响应鼠标点击、滑过或其他动作的交互式按钮。可以定义与各种按钮状态关联的图形，然后将动作指定给按钮实例。有关详细信息，请参阅处理事件。
  • 使用影片剪辑元件可以创建可重用的动画片段。影片剪辑拥有它们自己的独立于主时间轴的多帧时间轴。可以将影片剪辑看作是主时间轴内的嵌套时间轴，它们可以包含交互式控件、声音甚至其他影片剪辑实例。也可以将影片剪辑实例放在按钮元件的时间轴内，以创建动画按钮。
  • 使用字体元件可以导出字体并在其他 Flash 文档中使用它。请参阅创建字体元件。

    Flash 提供了各种内置组件（即带有已定义参数的影片剪辑），您可以使用它们将用户界面元素（如按钮、复选框或滚动条）添加到文档中。有关详细信息，请参阅组件入门。

注意：要在 Flash 创作环境中预览各个影片剪辑元件的交互性和动画，必须选择“控制”>“启用实时预览”。


关于使用动作脚本控制实例和元件

可以使用动作脚本来控制影片剪辑和按钮实例。要用于动作脚本，影片剪辑或按钮实例必须具有唯一的实例名称。有关向实例分配名称的信息，请参阅创建实例。也可以使用动作脚本来控制影片剪辑或按钮元件。有关详细信息，请参阅处理事件。


元件

可以通过舞台上选定的对象来创建元件，或者可以创建一个空元件，然后在元件编辑模式下制作或导入内容。您也可以在 Flash 中创建字体元件。请参阅创建字体元件。元件可以拥有您能够在 Flash 中创建的所有功能，包括动画。

通过使用包含动画的元件，您可以在很小的文件中创建包含大量动作的 Flash 应用程序。如果有重复或循环的动作，例如鸟的翅膀上下翻飞这种动作时，应该考虑在元件中创建动画。

在创作时或在运行时，您还可以使用共享库资源向文档添加元件。请参阅使用共享库资源。

将选定元素转换为元件：

  1. 在舞台上选择一个或多个元素。然后，执行以下操作之一：
    • 选择“修改”>“转换为元件”。
    • 将选中元素拖到“库”面板上。
    • 右击 (Windows) 或者按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“转换为元件”。
  2. 在“转换为元件”对话框中，键入元件名称并选择行为（“图像”、“按钮”或“影片剪辑”）。请参阅元件的类型。
  3. 在注册网格中单击，以便放置元件的注册点。
  4. 单击“确定”。

    Flash 会将该元件添加到库中。舞台上选定的元素此时就变成了该元件的一个实例。不能在舞台上直接编辑实例 - 必须在元件编辑模式下打开它。您也可以更改元件的注册点。请参阅编辑元件。

要创建一个新的空元件：

  1. 确保未在舞台上选定任何内容。然后，执行以下操作之一：
    • 选择“修改”>“新建元件”。
    • 单击“库”面板左下角的“新建符号”按钮。
    • 从“库”面板右上角的“库”选项菜单中选择“新建元件”。
  2. 在“创建新元件”对话框中，键入元件名称并选择行为（“图像”、“按钮”或“影片剪辑”）。请参阅元件的类型。
  3. 单击“确定”。

    Flash 会将该元件添加到库中，并切换到元件编辑模式。在元件编辑模式下，元件的名称将出现在舞台左上角的上面，并由一个十字丝表明该元件的注册点。

  4. 要创建元件内容，可使用时间轴、用绘画工具绘制、导入介质或创建其他元件的实例。
  5. 创建完元件内容之后，可执行以下操作之一返回到文档编辑模式：
    • 单击舞台上方编辑栏左侧的“后退”按钮。
    • 选择“编辑”>“编辑文档”。
    • 单击舞台上方编辑栏内的场景名称。

    在创建新元件时，注册点放置在元件编辑模式下窗口的中心。可以将元件内容放置在与注册点相关的窗口中。当您编辑元件时，也可以相对于注册点移动元件内容以便更改注册点。请参阅编辑元件。


将舞台上的动画转换为影片剪辑

如果已经在舞台上创建了一个动画序列，并想在文档的其他地方重复使用它，或者如果想将它作为一个实例来使用，则可以选择它，然后将它另存为影片剪辑元件。

将舞台上的动画转换为影片剪辑：

  1. 在主时间轴上，选择您想使用的舞台上动画的每一层中的每一帧。有关选择帧的信息，请参阅使用时间轴.
  2. 执行以下操作之一来拷贝帧：
    • 右击 (Windows) 或者按住 Control 键单击 (Macintosh) 任何选定的帧，然后从上下文菜单选择“复制帧”。如果想在将该序列转换为影片剪辑之后删除它，请选择“剪切”。
    • 选择“编辑”>“时间轴”>“复制帧”。如果想在将该序列转换为影片剪辑之后删除它，请选择“剪切帧”。
  3. 取消选择所选内容并确保没有选中舞台上的任何内容。选择“修改”>“新建元件”。
  4. 在“创建新符号”对话框中，给该元件命名。对于“行为”，请选择“影片剪辑”，然后单击“确定”。

    Flash 会在元件编辑模式下打开一个新元件来编辑。

  5. 在时间轴上，单击第 1 层上的第 1 帧，然后选择“编辑”>“时间轴”>“粘贴帧”。

    这样将把您从主时间轴拷贝的帧（以及所有层和层名）都粘贴到该影片剪辑元件的时间轴上。拷贝的帧上的所有动画、按钮或交互性现在已成为一个独立的动画（影片剪辑元件），您可以在整个文档中重复使用它。

  6. 创建完元件内容之后，可执行以下操作之一返回到影片编辑模式：
    • 单击舞台上方编辑栏左侧的“后退”按钮。
    • 选择“编辑”>“编辑文档”。
    • 单击舞台上方编辑栏内的场景名称。


复制元件

复制元件使您可以将一个现有元件作为创建新元件的起始点。

也可以使用实例创建各种版本的具有不同外观的元件。请参阅创建实例。

使用“库”面板复制元件：

  1. 在“库”面板中选择一个元件。
  2. 执行以下操作之一来复制元件：
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“重制”。
    • 从“库”选项菜单中选择“重制”。

要通过选择实例来复制元件：

  1. 在舞台上选择该元件的一个实例。
  2. 选择“修改”>“元件”>“重制元件”。

    该元件会被复制，而且原来的实例也会被复制元件的实例代替。


创建实例

创建元件之后，可以在文档中任何需要的地方（包括在其他元件内）创建该元件的实例。当您修改元件时，Flash 会更新元件的所有实例。

当您创建影片剪辑和按钮实例时，Flash 将为它们指定默认的实例名称。可以在“属性”检查器中将自定义的名称应用于实例。可以在动作脚本中使用实例名称来引用实例。要使用动作脚本控制实例，您必须为其指定一个唯一的名称。有关详细信息，请参阅处理事件。

创建元件的新实例：

  1. 在时间轴上选择一层。

    Flash 只可以把实例放在关键帧中，并且总在当前层上。如果没有选择关键帧，Flash 会将实例添加到当前帧左侧的第一个关键帧上。

    注意：关键帧是用来定义动画中的变化的帧。有关详细信息，请参阅在时间轴中处理帧。

  2. 选择“窗口”>“库”来打开库。
  3. 将该元件从库中拖到舞台上。
  4. 如果已经创建了图形元件的实例，请选择“插入”>“时间轴”>“帧”来添加一定数量的帧，这些帧将会包含该图形元件。

给实例指定自定名称：

  1. 在舞台上选择该实例。
  2. 如果“属性”检查器没有显示，请选择“窗口”>“属性”。
  3. 在“属性”检查器左侧的“实例名称”文本框（在“元件行为”弹出列表下方）中输入该实例的名称。

在创建了元件的实例后，可以使用“属性”检查器来指定颜色效果、指定动作、设置图形显示模式或更改实例的行为。除非您另外指定，否则实例的行为与元件行为相同。所做的任何更改都只影响实例，并不影响元件。请参阅更改实例属性。


创建按钮

按钮实际上是四帧的交互影片剪辑。当为元件选择按钮行为时，Flash 会创建一个四帧的时间轴。前三帧显示按钮的三种可能状态；第四帧定义按钮的活动区域。时间轴实际上并不播放，它只是对指针运动和动作做出反应，跳到相应的帧。

要制作一个交互式按钮，可把该按钮元件的一个实例放在舞台上，然后给该实例指定动作。必须将动作指定给文档中按钮的实例，而不是指定给按钮时间轴中的帧。

按钮元件的时间轴上的每一帧都有一个特定的功能：

  • 第一帧是弹起状态，代表指针没有经过按钮时该按钮的状态。
  • 第二帧是指针经过状态，代表当指针滑过按钮时，该按钮的外观。
  • 第三帧是按下状态，代表单击按钮时，该按钮的外观。
  • 第四帧是“点击”状态，定义响应鼠标单击的区域。此区域在 SFW 文件中是不可见的。

也可以使用动作脚本的 MovieClip 对象来创建按钮。请参阅MovieClip 类。可以使用按钮组件将按钮添加到文档中。有关按钮和单选按钮组件的详细信息，请参阅Button 组件。

有关使用动作脚本创建按钮的课程，请选择“帮助”>“如何”>“快速任务”>“使用动作脚本编写脚本”。

创建按钮：

  1. 选择“编辑”>“取消全选”来确保没有选择舞台上的任何内容。
  2. 选择“插入”>“新建元件”，或者按 Control+F8 (Windows) 或 Command+F8 (Macintosh)。

    要创建按钮，可将按钮帧转换为关键帧。

  3. 在“创建新元件”对话框中，输入新按钮元件的名称；对于“行为”，请选择“按钮”。

    Flash 会切换到元件编辑模式。时间轴的标题会变为显示四个标签分别为“弹起”、“指针经过”、“按下”和“点击”的连续帧。第一帧（“弹起”）是一个空白关键帧。

  4. 要创建弹起状态的按钮图像，可以使用绘画工具、导入一幅图形或者在舞台上放置另一个元件的实例。

    您可以在按钮中使用图形或影片剪辑元件，但不能在按钮中使用另一个按钮。如果要把按钮制成动画按钮，可使用影片剪辑元件。

  5. 单击标示为“指针经过”的第二帧，然后选择“时间轴”>“关键帧”。

    Flash 会插入复制了“一般”帧内容的关键帧。

  6. 将按钮图像更改为“指针经过”状态。
  7. 为“按下”帧和“点击”帧重复步骤 5 和步骤 6。

    “点击”帧在舞台上不可见，但它定义了单击按钮时该按钮的响应区域。确保“点击”帧的图形是一个实心区域，它的大小足以包含“弹起”、“按下”和“指针经过”帧的所有图形元素。它也可以比可见按钮大。如果没有指定“点击”帧，“一般”状态的图像会被用作“点击”帧。

    您可以创建一个脱节的图像变换，在该图像变换中，将指针移到按钮上将导致舞台上的另一个图形发生变化。要这样做，可把“点击”帧放在一个不同于其他按钮帧的位置上。

  8. 要为按钮状态指定声音，请在时间轴选择该状态帧，选择“窗口”>“属性”，然后从“属性”检查器的“声音”菜单中选择一种声音。有关详细信息，请参阅向按钮添加声音。
  9. 完成之后，选择“编辑”>“编辑文档”。从“库”面板中拖出按钮元件即可在文档中创建该元件的实例。


启用、编辑和测试按钮

默认情况下，Flash 在您创建按钮时会将它们保持在禁用状态，从而可以更容易选择和处理按钮。当按钮处于禁用状态时，单击该按钮就可以选择它。当按钮处于启用状态时，它就会响应您已指定的鼠标事件，就如同 SWF 文件在播放时一样。但是，仍然可以选择已启用的按钮。通常，工作时候最好禁用按钮，启用按钮只是为了快速测试它们的行为。

要启用和禁用按钮：

  • 选择“控制”>“启用简单按钮”。此时在该命令的旁边会出现一个选中标记，表明按钮已被启用。再次选择该命令可以禁用按钮。

    舞台上的任何按钮现在都会做出反应。当指针滑过按钮时，Flash 会显示“指针经过”帧；当单击按钮的活动区域时，Flash 会显示“按下”帧。

要选择已启用按钮：

  • 使用选取工具围绕按钮拖出一个矩形选择区域。

要移动或编辑已启用按钮：

  1. 按上面所述选择该按钮。
  2. 执行以下其中一项操作：
    • 使用箭头键移动按钮。
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性”以在“属性”检查器中编辑该按钮，或者按住 Alt 键双击 (Windows) 或按住 Option 键双击 (Macintosh) 该按钮。

要测试按钮，请执行以下操作之一：

  • 选择“控制”>“启用简单按钮”。将指针滑过已启用按钮以对它进行测试。
  • 在“库”面板中选择该按钮，然后在库预览窗口内单击“播放”按钮。
  • 选择“控制”>“测试场景”或“控制”>“测试影片”。

在 Flash 创作环境中，按钮内的影片剪辑是看不到的。请参阅启用、编辑和测试按钮。


编辑元件

编辑元件时，Flash 会更新文档中该元件的所有实例。Flash 提供了三种方式来编辑元件。可以使用“在当前位置编辑”命令在该元件和其他对象在一起的舞台上编辑它。其他对象以灰显方式出现，从而将它们和正在编辑的元件区别开来。正在编辑的元件名称显示在舞台上方的编辑栏内，位于当前场景名称的右侧。

也可以使用“在新窗口中编辑”命令在一个单独的窗口中编辑元件。在单独的窗口中编辑元件使您可以同时看到该元件和主时间轴。正在编辑的元件名称会显示在舞台上方的编辑栏内。

使用元件编辑模式，可将窗口从舞台视图更改为只显示该元件的单独视图来编辑它。正在编辑的元件名称会显示在舞台上方的编辑栏内，位于当前场景名称的右侧。

当您编辑元件时，Flash 将更新文档中该元件的所有实例，以反映编辑的结果。编辑元件时，可以使用任意绘画工具、导入介质或创建其他元件的实例。

可以使用任意元件编辑方法来更改元件的注册点（由坐标 0, 0 标识的点）。

在当前位置编辑元件：

  1. 执行以下操作之一：
    • 在舞台上双击该元件的一个实例。
    • 在舞台上选择该元件的一个实例，右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单选择“在当前位置编辑”。
    • 在舞台上选择该元件的一个实例，然后选择“编辑”>“在当前位置编辑”。
  2. 根据需要编辑该元件。
  3. 要更改注册点，请拖动舞台上的元件。一个十字准线指示注册点的位置。
  4. 要退出“在当前位置编辑”模式并返回到文档编辑模式，可执行以下操作之一：
    • 单击舞台上方编辑栏左侧的“返回”按钮。
    • 在舞台上方编辑栏的“场景”弹出菜单中选择当前场景的名称。
    • 选择“编辑”>“编辑文档”。

要在新窗口中编辑元件：

  1. 在舞台上选择该元件的一个实例，右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单选择“在新窗口中编辑”。
  2. 根据需要编辑该元件。
  3. 要更改注册点，请拖动舞台上的元件。一个十字准线指示注册点的位置。
  4. 单击右上角 (Windows) 或左上角 (Macintosh) 的关闭框来关闭新窗口，然后在主文档窗口内单击以返回到编辑主文档状态下。

要在元件编辑模式下编辑元件：

  1. 执行以下操作之一来选择元件：
    • 双击“库”面板中的元件图标。
    • 在舞台上选择该元件的一个实例，右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单选择“编辑”。
    • 在舞台上选择该元件的一个实例，然后选择“编辑”>“编辑元件”。
    • 在“库”面板中选择该元件，然后从库选项菜单中选择“编辑”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh)“库”面板中的该元件，然后从上下文菜单选择“编辑”。
  2. 根据需要在舞台上编辑该元件。
  3. 要更改注册点，请拖动舞台上的元件。一个十字准线指示注册点的位置。
  4. 要退出元件编辑模式并返回到文档编辑状态，可执行以下操作之一：
    • 单击舞台上方编辑栏左侧的“返回”按钮。
    • 选择“编辑”>“编辑文档”。
    • 单击舞台上方编辑栏内的场景名称。


实例属性

每个元件实例都有独立于该元件的自己的属性。可以更改实例的色调、透明度和亮度；重新定义实例的行为（例如，把图形更改为影片剪辑）；并可以设置动画在图形实例内的播放形式。也可以倾斜、旋转或缩放实例，这并不会影响元件。

此外，可以给影片剪辑或按钮实例命名，这样就可以使用动作脚本更改它的属性。有关详细信息，请参阅使用内置类。要编辑实例的属性，可使用“属性”检查器（“窗口”>“属性”）。

实例的属性用它来保存。如果编辑元件或将实例重新链接到不同的元件，则任何已经改变的实例属性仍然适用于该实例。


更改实例的颜色和透明度

每个元件实例都可以有自己的色彩效果。要设置实例的颜色和透明度选项，可使用“属性”检查器。“属性”检查器中的设置也会影响放置在元件内的位图。

当在特定帧内改变实例的颜色和透明度时，Flash 会在播放该帧时立即进行这些更改。要进行渐变颜色更改，必须使用补间动画。当补间颜色时，要在实例的开始关键帧和结束关键帧输入不同的效果设置，然后补间这些设置，以便让实例的颜色随着时间逐渐变化。请参阅补间实例、组和类型。

补间逐渐地更改实例的颜色或透明度。

注意：如果对包括多帧的影片剪辑元件应用色彩效果，Flash 会将效果应用于该影片剪辑元件的每一帧。

改变实例的颜色和透明度：

  1. 在舞台上选择该实例，然后选择“窗口”>“属性”。
  2. 从“属性”检查器内的“颜色”弹出菜单中选择以下选项之一：

    “亮度”调节图像的相对亮度或暗度，度量范围为从黑 (-100%) 到白 (100%)。单击该三角形然后拖动滑块，或者在文本框中输入一个值来调节亮度。

    “色调”用相同的色相为实例着色。使用“属性”检查器中的色调滑块设置色调百分比，从透明 (0%) 到完全饱和 (100%)。单击该三角形然后拖动滑块，或者在文本框中输入一个值来调节色调。要选择颜色，请在各自的文本框中输入红、绿和蓝色的值，或单击颜色框并从弹出窗口中选择一种颜色，或单击“颜色选择器”按钮。

    “Alpha”调节实例的透明度，从透明 (0%) 到完全饱和 (100%)。要调整 Alpha 值，单击此三角形并拖动滑块或在文本框中输入一个值。

    “高级”分别调节实例的红、绿、蓝和透明度的值。 对于在诸如位图这样的对象上创建和制作具有微妙色彩效果的动画时，该选项非常有用。左侧的控件使您可以按指定的百分比降低颜色或透明度的值。右侧的控件使您可以按常数值降低或增大颜色或透明度的值。

    当前的红、绿、蓝和 Alpha 的值都乘以百分比值，然后加上右列中的常数值，产生新的颜色值。例如，如果当前红色值是 100，把左侧的滑块设置到 50% 并把右侧滑块设置到 100，就会产生一个新的红色值 150 ([100 x .5] + 100 = 150)。

    注意：“效果”面板中的“高级”设置执行函数 (a * y+ b)= x，其中，a 是文本框左侧设置中指定的百分比，y 是原始位图的颜色，b 是文本框右侧设置中指定的值，x 是生成的效果（RGB 介于 0 和 255 之间，alpha 透明度介于 0 和 100 之间）。

也可以使用动作脚本的 Color 对象来改变实例的颜色。有关 Color 对象的详细信息，请参阅Color 类°


将一个实例与另一个实例交换

可以给实例指定不同的元件，从而在舞台上显示不同的实例，并保留所有的原始实例属性（如色彩效果或按钮动作）。

例如，假定您正在使用 rat 元件创建一个卡通形象作为影片中的角色，但决定将该角色改为 cat。您可以用 cat 元件替换 rat 元件，并让更新的角色出现在所有帧中大致相同的位置上。

给实例指定不同的元件：

  1. 在舞台上选择该实例，然后选择“窗口”>“属性”。
  2. 在“属性”检查器中单击“交换”按钮。
  3. 在“交换元件”对话框中，选择一个元件来替换当前分配给该实例的元件。要复制选定的元件，请单击在对话框底部的“重制元件”按钮。

    如果制作的是几个具有细微差别的元件，那么复制使您可以在库中现有元件的基础上建立一个新元件，并将复制工作减到最少。

  4. 单击“确定”。

要替换元件的所有实例：

  1. 将与您正在替换的元件同名的元件拖到“库”面板中。
  2. 在“解决库项目冲突”对话框中，单击“替换”。有关详细信息，请参阅解决库资源之间的冲突。


更改实例的类型

您可以改变实例的类型来重新定义它在 Flash 应用程序中的行为。例如，如果一个图形实例包含您想要独立于主时间轴播放的动画，您可以将该图形实例重新定义为影片剪辑实例。

要更改实例类型：

  1. 在舞台上选择该实例，然后选择“窗口”>“属性”。
  2. 从“属性”检查器左上角的弹出菜单中选择“图形”、“按钮”或“影片剪辑”。


设置图形实例的动画

通过设置“属性”检查器中的选项，可以决定如何播放 Flash 应用程序中图形实例内的动画序列。

动画图形元件是与放置该元件的文档的时间轴联系在一起的。相比之下，影片剪辑元件拥有自己独立的时间轴。因为动画图形元件使用与主文档相同的时间轴，所以在文档编辑模式下显示它们的动画。影片剪辑元件作为一个静态的对象出现在舞台上，并不会作为动画出现在 Flash 编辑环境中。

设置图形实例的动画：

  1. 在舞台上选择图形实例，然后选择“窗口”>“属性”。
  2. 在“属性”检查器中，从实例名称下方的弹出菜单中选择一个动画选项：

    “循环”会按照该当前实例占用的帧数来循环包含在该实例内的所有动画序列。

    “播放一次”从您指定的帧开始播放动画序列，直到动画结束，然后停止。

    “单帧”显示动画序列的一帧。指定要显示哪一帧。


使用行为控制实例

您可以使用行为来控制文档中的影片剪辑和图形实例，而无需编写动作脚本。行为是预先编写的“动作脚本”脚本，它使您可以将动作脚本编码的强大功能、控制能力和灵活性添加到文档中，而不必自己创建动作脚本代码。

您可以对实例使用行为以便将其排列在帧上的堆叠顺序中，以及加载、卸载、播放、停止、复制或拖动影片剪辑，或者链接到 URL。

此外，还可以使用行为将外部图形或动画遮罩加载到影片剪辑中。

要使用行为控制影片剪辑，请使用“行为”面板将行为应用于触发对象（如按钮）。您需要指定触发行为的事件（如释放按钮），选择受行为影响的目标对象（影片剪辑实例），并在必要时指定行为参数的设置（如帧号或标签）。

下表中的行为打包在 Flash MX 2004 和 Flash MX Professional 2004 中。有关嵌入视频行为的详细信息，请参阅使用行为控制视频回放。有关使用行为控制声音的详细信息，请参阅使用行为控制声音回放。

行为 | 目的 | 选择/输入
加载图形 | 将外部 JPEG 文件加载到影片剪辑或屏幕中。 | JPEG 文件的路径和文件名。 接收图形的影片剪辑或屏幕的实例名称。
加载外部影片剪辑 | 将外部 SWF 文件加载到目标影片剪辑或屏幕中。 | 外部 SWF 文件的 URL。 接收 SWF 文件的影片剪辑或屏幕的实例名称。
重制影片剪辑 | 重制影片剪辑或屏幕 | 要重制的影片剪辑的实例名称。 从原本到副本的 X 轴及 Y 轴偏移像素数。
在帧或标签上的 GotoAndPlay | 从特定帧播放影片剪辑。 | 要播放的目标剪辑的实例名称。 要播放的帧号或标签。
在帧或标签处停止 | 停止影片剪辑，并根据需要将播放头移到某个特定帧。 | 要停止的目标剪辑的实例名称。 要停止的帧号或标签。
移到最前 | 将目标影片剪辑或屏幕移到堆叠顺序的顶部。 | 影片剪辑或屏幕的实例名称。
上移一层 | 将目标影片剪辑或屏幕在堆叠顺序中上移一层。 | 影片剪辑或屏幕的实例名称。
移到最后 | 将目标影片剪辑移到堆叠顺序的底部。 | 影片剪辑或屏幕的实例名称。
下移一层 | 将目标影片剪辑或屏幕在堆叠顺序中下移一层。 | 影片剪辑或屏幕的实例名称。
开始拖动影片剪辑 | 开始拖动影片剪辑 | 影片剪辑或屏幕的实例名称。
停止拖动影片剪辑 | 停止当前的拖动操作。 |

要添加并配置行为：

  1. 选择将触发行为的对象，如按钮。
  2. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“添加”(+) 按钮，然后从“影片剪辑”子菜单中选择所需的行为。
  3. 在出现的对话框中，选择要使用行为控制的影片剪辑。
  4. 选择相对或绝对路径。有关详细信息，请参阅绝对路径和相对路径。
  5. 如果需要，请选择或输入行为参数的设置，然后单击“确定”。

    行为的默认设置即出现在“行为”面板中。

  6. 在“事件”下，单击“释放时”（默认事件），并从菜单中选择一个鼠标事件。如果要使用“释放时”事件，请保持该选项不变。


分离实例

要断开实例与元件之间的链接，并把实例放入未组合形状和线条的集合中，可以“分离”该实例。这对于充分地改变实例而不影响任何其他实例非常有用。如果在分离实例之后修改该源元件，并不会用所作的更改来更新该实例。

分离元件的一个实例：

  1. 在舞台上选择该实例。
  2. 选择“修改”>“分离”。

    这样就会把实例分离成它的几个组件图形元素。

  3. 使用绘制和涂色工具来根据需要修改这些元素。


获取有关舞台上的实例的信息

创建 Flash 应用程序时，特别是在处理同一元件的多个实例时，识别舞台上元件的特定实例是很困难的。您可以使用“属性”检查器、“信息”面板或影片浏览器进行识别。

“属性”检查器和“信息”面板会显示选定实例的元件名称，并有一个图标指明其类型（图形、按钮或影片剪辑）。此外，还可以查看下列信息：

  • 在“属性”检查器中，您可以查看实例的行为和设置；对于所有实例类型，均可以查看色彩效果设置、位置和大小；对于图形，还可以查看循环模式和包含该图形的第一帧；对于按钮，还可以查看实例名称（如果指定）和跟踪选项；对于影片剪辑，还可以查看实例名称（如果指定）。对于位置，“属性”检查器显示元件注册点或元件左上角的 x 和 y 坐标，具体取决于在“信息”面板上选择的选项。
  • 在“信息”面板上，可以查看实例的大小和位置、实例注册点的位置、实例的红色 (R)、绿色 (G)、蓝色 (B) 和 alpha (A) 值（如果实例有实心填充）；以及指针的位置。“信息”面板还显示元件注册点或元件左上角的 x 和 y 坐标，具体视所选的选项而定。要显示注册点的坐标，请单击“信息”面板内坐标网格中的中心方框。要显示左上角的坐标，请单击坐标网格中的左上角方框。
  • 在影片浏览器中，可以查看当前文档的内容，包括实例和元件。请参阅使用影片浏览器。

此外，在“动作”面板中，还可以查看分配给按钮或影片剪辑的所有动作。

获取舞台上有关实例的信息：

  1. 在舞台上选择该实例。
  2. 显示“属性”检查器或要使用的面板：
    • 要显示“属性”检查器，请选择“窗口”>“属性”。
    • 要显示“信息”面板，请选择“窗口”>“设计面板”>“信息”。
    • 要显示影片浏览器，请选择“窗口”>“其他面板”>“影片浏览器”。有关影片浏览器的详细信息，请参阅使用影片浏览器。
    • 要显示“动作”面板，请选择“窗口”>“开发面板”>“动作”。

要在影片浏览器中查看选定元件的元件定义：

  1. 单击影片浏览器顶部的“显示按钮、影片剪辑和图形”按钮。
  2. 右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单选择“显示元件实例”和“转到元件定义”；或从影片浏览器右上角的弹出菜单中选择这些选项。

要跳到包含选定元件的实例的场景：

  1. 按照先前步骤所述显示元件定义。
  2. 右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“显示影片元素”和“转到元件定义”；或从影片浏览器右上角的弹出菜单中选择这些选项。


在文档之间拷贝库资源

有多种方式可以将库资源从源文档拷贝到目标文档：这些方式有拷贝和粘贴资源、拖放资源，或者在目标文档中打开源文档的库，然后把源文档的资源拖入目标文档中。

在创作期间或在运行时，您还可以将元件作为共享库资源在文档之间共享。请参阅使用共享库资源。

如果您尝试拷贝与目标文档中现有的资源同名的资源，“解决库冲突”对话框会让您选择是要覆盖现有资源还是要保留现有资源并用修改后的名称添加新资源。请参阅解决库资源之间的冲突。您可以组织文件夹内的库资源，以便在文档间拷贝资源时减少可能出现的名称冲突。请参阅处理“库”面板中的文件夹。

通过拷贝和粘贴来拷贝库资源：

  1. 在源文档的舞台上选择资源。
  2. 选择“编辑”>“复制”。
  3. 将目标文档作为活动文档。
  4. 将指针放在舞台上并选择“编辑”>“粘贴到中心位置”，以将资源粘贴到可见工作区的中心位置。选择“编辑”>“粘贴到当前位置”，将资源放置在与源文档中相同的位置中。

要通过拖动来复制库资源：

  1. 在 Flash 中打开目标文档的情况下，在源文档的“库”面板中选择资源。
  2. 将资源拖入目标文档的“库”面板中。

要通过在目标文档中打开源库来复制库资源：

  1. 在 Flash 中的目标文档处于活动状态时，选择“文件”>“导入”>“打开外部库”。
  2. 在“作为库打开”对话框中选择源文档，然后单击“打开”。
  3. 将资源从源文档库拖到舞台上或拖入目标文档的库中。


共享库资源

共享库资源使您可以在多个目标文档中使用源文档的资源。可使用两种不同的方法来共享库资源：

  • 对于运行时共享 资源，源文档的资源是以外部文件的形式链接到目标文档中的。运行时资源在文档回放期间（即在运行时）加载到目标文档中。在制作目标文档时，包含共享资源的源文档并不需要在本地网络上可供使用。但是，为了让共享资源在运行时可供目标文档使用，源文档必须张贴到一个 URL 上。
  • 对于创作期间的共享资源，可以用本地网络上任何其他可用元件来更新或替换正在创作的文档中的任何元件。可以在创作文档时更新目标文档中的元件。目标文档中的元件保留了原始名称和属性，但其内容会被更新或替换为您所选择元件的内容。

使用共享库资源可以通过各种方式优化您的工作流和文档资源管理。例如，您可以使用共享库资源在多个站点间共享一个字体元件，为多个场景或文档中使用的动画中的元素提供单一来源，或者创建一个中央资源库来跟踪和控制版本修订。


处理运行时共享资源

使用运行时共享库资源涉及两个步骤：首先，源文档的作者在源文档中定义一个共享资源，并为该资源输入标识符字符串和源文档将要张贴到的 URL。

然后，目标文档的作者在目标文档中定义一个共享资源，并输入一个与源文档的那些共享资源相同的标识符字符串和 URL。或者，目标文档作者可以把共享资源从张贴的源文档拖到目标文档库中。

在上述任何一种方案下，源文档都必须被张贴到指定的 URL，才能使共享资源可供目标文档使用。


在源文档中定义运行时共享资源

使用“符号属性”对话框或“链接属性”对话框定义源文档中一个资源的共享属性，使得该资源可供访问，能够链接到目标文档。

在源文档中定义运行时共享资源：

  1. 在源文档打开的情况下，选择“窗口”>“库”来显示“库”面板。
  2. 执行以下其中一项操作：
    • 在“库”面板中选择一个影片剪辑、按钮或图形元件，然后从库选项菜单中选择“属性”。单击“高级”按钮以展开“属性”对话框。
    • 选择一个字体元件、声音或位图，然后从库选项菜单中选择“链接”。
  3. 对于“链接”，选择“为运行时共享导出”使该资源可用于链接到目标文档。
  4. 在“标识符”文本字段中输入元件的标识符。不要包含空格。这是 Flash 在链接到目标文档时用于标识资源的名称。

    注意：Flash 还使用链接标识符来标识在动作脚本中用作对象的影片剪辑或按钮。请参阅使用影片剪辑。

  5. 输入将要张贴包含共享资源的 SWF 文件的 URL。
  6. 单击“确定”。

    发布 SWF 文件时，您必须将 SWF 文件张贴到步骤 5 中指定的 URL 上，这样共享资源才可供目标文档使用。


从目标文档链接到运行时共享资源

使用“元件属性”对话框或“链接属性”对话框定义目标文档中某个资源的共享属性，以便可将该资源链接到源文档中的共享资源。如果源文档已被张贴到 URL，您也可以通过把该资源从源文档拖到目标文档，从而把共享资源链接到目标文档。

要将元件嵌入目标文档，您可以在目标文档中关闭共享资源的共享。

通过输入标识符和 URL 把共享资源链接到目标文档：

  1. 在目标文档中，选择“窗口”>“库”以显示“库”面板。
  2. 执行以下其中一项操作：
    • 在“库”面板中选择一个影片剪辑、按钮或图形元件，然后从库选项菜单中选择“属性”。单击“高级”按钮以展开“属性”对话框。
    • 选择一个字体元件，然后从库选项菜单中选择“链接”。
  3. 对于“链接”，选择“为运行时共享导入”以便链接到源文档中的资源。
  4. 在“标识符”文本字段中输入元件的标识符，该标识符必须与源文档中该元件使用的标识符相同。不要包含空格。
  5. 输入张贴包含共享资源的 SWF 源文件的 URL。
  6. 单击“确定”。

要通过拖动将共享资源链接到目标文档：

  1. 在目标文档中，执行以下操作之一：
    • 选择“文件”>“打开”。
    • 选择“文件”>“导入”>“打开外部库”。
  2. 在“打开”或“作为库打开”对话框中，选择源文档，然后单击“打开”。
  3. 将共享资源从源文档“库”面板拖入目标文档中的“库”面板或舞台上。

要关闭目标文档中元件的链接：

  1. 在目标文档中，从“库”面板中选择链接的元件，然后执行以下操作之一：
    • 如果该资源是影片剪辑、按钮或图形元件，请从库选项菜单中选择“属性”。
    • 如果该资源是字体元件，请从库选项菜单中选择“链接”。
  2. 在“符号属性”对话框或“链接属性”对话框中，取消选择“为运行时共享导入”。
  3. 单击“确定”。


创作时使用共享更新或替换元件

可以用在本地网络可访问的 FLA 文件中的任何其他元件更新或替换文档中的影片剪辑、按钮或图形元件。目标影片中该元件的原始名称和属性都会被保留，但元件的内容会被您选择的元件的内容替换。选定元件使用的所有资源也会拷贝到目标文档中。

更新或替换元件：

  1. 在文档打开的情况下，选择影片剪辑、按钮或图形元件，然后从“库”选项菜单中选择“属性”。
  2. 如果“元件属性”对话框处于基本模式，请单击“高级”以显示“链接和源”面板。如果“链接和源”面板已打开，请转到第 3 步。
  3. 要选择一个新的 FLA 文件，可在“符号属性”对话框的“源”下面，单击“浏览”。
  4. 在“打开”对话框中，定位到包含的元件将用来更新或替换“库”面板中选定元件的 FLA 文件，然后单击“打开”。
  5. 要在 FLA 文件中选择一个新元件，可在“源”下单击“符号”。
  6. 定位到一个元件，然后单击“打开”。
  7. 在“符号属性”对话框的“源”下面，选择“总是在发布前更新”，以便如果在指定的源位置找到该资源的新版本就自动更新它。
  8. 单击“确定”关闭“元件属性”或“链接属性”对话框。


解决库资源之间的冲突

如果将一个库资源导入或拷贝到已经含有同名的不同资源的文档中，您可以选择是否用新项目替换现有项目。这种选择对所有导入或拷贝库资源的方法都有效，包括以下内容：

  • 从源文档中拷贝和粘贴资源
  • 从源文档或源文档库中拖出资源
  • 导入资源
  • 从源文档添加共享库资源
  • 使用组件面板中的组件

当您尝试在文档中放置与现有项目冲突的项目时，就会出现“解决库项目”对话框。当您要从源文档中拷贝一个已在目标文档中存在的项目，并且这两个项目具有不同的修改日期时，就会出现冲突。您可以通过组织文档库中文件夹内的资源来避免出现命名冲突。如果将某个元件或组件粘贴到文档的舞台上，并且已有一个该元件或组件的副本（修改日期和所粘贴元件或组件的修改日期不同），则也会出现该对话框。

如果您选择不替换现有项目，Flash 就会尝试使用现有项目，而不是您正在粘贴的冲突项目。例如，如果复制一个名为“元件 1”的元件，并且将该元件的副本粘贴到文档（已包含名为“元件 1”的元件）的舞台中，则 Flash 会创建现有“元件 1”的实例。

如果选择替换现有项目，则 Flash 会使用同名的新项目替换现有项目（及其所有实例）。如果您取消导入或拷贝操作，就会对所有项目取消该操作（不仅仅是那些在目标文档中产生冲突的项目）。

只有相同的库项目类型才能互相替换。即，不能用一个名为“Test”的位图替换一个名为“Test”的声音。在这种情况下，新项目的名称后面会附加“Copy”字样，然后再添加到库中。

注意：用这种方法替换库项目是无法撤消的。在执行通过替换冲突的库项目才得以解决的复杂粘贴操作之前，一定要保存 FLA 文件的一个备份。

如果在将库资源导入或复制到文档中时出现“解决库冲突”对话框，则可以解决命名冲突。

要解决库资源之间的命名冲突，请执行以下操作之一：

  • 单击“不要替换现有项目”以保留目标文档中的现有资源。
  • 单击“替换现有项目”来用同名的新项目替换现有资源及其实例。


使用颜色概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了多种用于应用、创建和修改颜色的方法。使用默认调色板或者自己创建的调色板，您可以选择应用到要创建的对象或舞台中已有对象的笔触或填充的颜色。将笔触颜色应用到形状将会用这种颜色对形状的轮廓涂色。将填充颜色应用到形状将会用这种颜色对形状的内部涂色。

在将笔触颜色应用到形状的时候，您可以选择任意的纯色，也可以选择笔触的样式和粗细。对于形状的填充，可以用纯色、渐变色或位图。要将位图填充应用到形状，必须把位图导入到当前文件中。您还可以使用“无颜色”作为填充来创建只有轮廓没有填充的形状，或者使用“无颜色”作为轮廓来创建没有轮廓的填充形状。您可以对文本应用纯色填充。请参阅设置文本属性。

使用颜料桶、墨水瓶、滴管和填充变形工具，以及刷子和颜料桶工具的“锁定填充”功能键，您可以用多种方式修改笔触和填充的属性。

使用混色器，可以很容易地在 RGB 和 HSB 模式下创建和编辑纯色和渐变填充。使用“颜色样本”面板可以导入、导出、删除和修改文件的调色板。您可以在混色器中以十六进制模式选择颜色，也可以从工具栏或“属性”检查器的“笔触和填充”弹出窗口中选择颜色。

可以从工具栏、形状“属性”检查器或混色器内的“笔触颜色”或“填充颜色”控件中访问系统颜色选择器。

要访问系统颜色选择器：

  • 按住 Alt 键双击 (Windows) 或按住 Option 键双击 (Macintosh) 工具栏、形状“属性”检查器或混色器中的“笔触颜色”或“填充颜色”控件。


使用工具栏中的“笔触颜色”和“填充颜色”控件

工具栏中的“笔触颜色”和“填充颜色”控件使您可以选择纯的笔触颜色或者纯的或渐变的填充颜色，切换笔触和填充颜色，或者选择默认的笔触和填充颜色（黑色笔触及白色填充）。椭圆和矩形对象（形状）可以既有笔触颜色又有填充颜色。文本对象和刷子笔触只有填充颜色。用线条、钢笔和铅笔工具绘制的线条只有笔触颜色。

工具栏“笔触颜色”和“填充颜色”控件设置用绘画和涂色工具创建的新对象的涂色属性。要用这些控件来更改现有对象的涂色属性，必须首先在舞台中选择对象。

注意：渐变色样本只出现在“填充颜色”控件中。

要使用工具栏控件来应用笔触和填充颜色，请执行以下操作之一：

  • 单击笔触或填充颜色框旁边的三角形，然后从弹出窗口中选择一个颜色样本。渐变色只能用作填充颜色。
  • 单击颜色弹出窗口中的“颜色选择器”按钮，然后从“颜色选择器”中选择一种颜色。
  • 在颜色弹出窗口的文本框中键入颜色的十六进制值。
  • 单击工具栏中的“默认填充和笔触”按钮恢复到默认的颜色设置（白色填充及黑色笔触）。
  • 单击颜色弹出窗口中的“无颜色”按钮可以删除所有笔触或填充。

    注意：“无颜色”按钮只有在创建新椭圆或新矩形时才会出现。您可以创建没有笔触或填充的新对象，但不能对现有对象使用“无颜色”按钮。而应该选择现有的笔触或者填充然后删除它。

  • 单击工具栏中的“交换填充和笔触”按钮可以在填充和笔触之间交换颜色。


使用“属性”检查器中的“笔触颜色”和“填充颜色”控件

要修改选定对象的笔触颜色、样式和粗细，可以使用“属性”检查器中的“笔触颜色”控件。对于笔触的样式，可以从 Flash 预先加载的样式中选择，也可以创建自定义样式。

要选择纯色填充，可以使用“属性”检查器中的“填充颜色”控件。

用“属性”检查器选择笔触颜色、样式和粗细：

  1. 选择舞台上的对象（对于元件，首先双击以输入元件编辑模式）。
  2. 如果看不到“属性”检查器，请选择“窗口”>“属性”。
  3. 要选择颜色，请单击“笔触颜色”框旁边的三角形，然后执行以下操作之一：
    • 从调色板中选择一个颜色样本。
    • 在文本框中键入颜色的十六进制值。
  4. 要选择笔触样式，单击“样式”弹出菜单旁边的三角形，然后从菜单中选择一个选项。要创建自定义样式，从“属性”检查器中选择“自定义”，然后在“笔触样式”对话框中选择选项并单击“确定”。

    注意：选择非实心笔触样式会增加文件的大小。

  5. 要选择笔触的粗细，单击“粗细”弹出菜单旁边的三角形，将滑块设置在所需的粗细位置。

要使用“属性”检查器应用纯色填充：

  1. 在舞台上选择一个或多个对象。
  2. 选择“窗口”>“属性”。
  3. 要选择颜色，请单击“填充颜色”框边上的三角形，然后执行以下操作之一：
    • 从调色板中选择一个颜色样本。
    • 在文本框中键入颜色的十六进制值。


使用混色器中的纯色和渐变填充

要创建和编辑纯色以及渐变填充，可以使用混色器。如果已经在舞台中选定了对象，则在混色器中所作的颜色更改会被应用到该对象。

用混色器可以创建任何颜色。您可以在 RGB 或 HSB 模式下选择颜色，或者展开面板以使用十六进制模式。您还可以指定 Alpha 值来定义颜色的透明度。此外，还可从现有调色板中选择颜色。

您可以展开混色器以代替颜色栏显示更大的颜色空间，其中有一个拆分开的颜色样本可显示当前和以前的颜色，还有一个“亮度”控件可修改所有颜色模式下的颜色亮度。

用混色器创建或者编辑纯色：

  1. 要将颜色应用到现有的插图，请在舞台中选择一个或多个对象。
  2. 选择“窗口”>“设计面板”>“混色器”。
  3. 若要选择颜色模式显示，请从混色器右上角的弹出菜单中选择 RGB（默认设置）或 HSB。
  4. 单击“笔触”或“填充”图标来指定要修改的属性。

    注意：请确保单击的是图标，而不是颜色框，否则会打开颜色弹出窗口。

  5. 如果在步骤 4 中选择了“填充”图标，请确保在混色器中心的“填充样式”弹出菜单中选择“纯色”。
  6. 单击右下角的箭头展开混色器。
  7. 执行以下其中一项操作：
    • 在混色器的颜色空间中单击来选择一种颜色。拖动“亮度”控件来调整颜色的亮度。

      注意：要创建黑色或白色之外的颜色，请确保“亮度”控件没有设置在两个极端上。

    • 在颜色值输入框中输入颜色值：对于 RGB 显示，输入的是红、绿和蓝的值；对于 HSB 显示，输入的是色相、饱和度和亮度的值；对于十六进制显示，输入的是十六进制值。输入一个 Alpha 值来指定透明度，其范围为从表示完全透明的 0 到表示完全不透明的 100。
    • 单击“默认笔触和填充”按钮恢复到默认的颜色设置（白色填充及黑色笔触）。
    • 单击交换笔触和填充按钮可以在填充和笔触之间交换颜色。
    • 单击“无颜色”按钮将不对填充或笔触应用颜色。

      注意：您不能将“无颜色”的笔触或填充应用于现有对象。而应该选择现有的笔触或者填充然后删除它。

    • 单击笔触或者填充颜色框，然后从弹出窗口中选择一种颜色。
  8. 要向当前文档的颜色样本列表中添加在步骤 7 中定义的颜色，请从混色器右上角的弹出菜单中选择“添加样本”。

用混色器创建或编辑渐变填充：

  1. 要将渐变填充应用到现有插图，请在舞台中选择一个或多个对象。
  2. 如果看不到混色器，请选择“窗口”>“设计面板”>“混色器”。
  3. 要选择颜色模式显示，请选择 RGB（默认设置）或 HSB。
  4. 从混色器中心的“填充样式”弹出菜单中选择一种渐变类型：

    “线性渐变”创建这样一种渐变，它从起始点到终点沿直线逐渐变化。

    “放射状渐变”创建这样一种渐变，它从起始点到终点按照环形模式向四周逐渐变化。

    渐变定义栏代替颜色栏显示在混色器中，在该栏下面有指针指示渐变中的每种颜色。

  5. 单击右下角的箭头展开混色器。
  6. 要更改渐变中的颜色，请单击渐变定义栏下面的某个指针，然后在出现在展开的混色器中渐变栏下面的颜色空间中单击。拖动“亮度”控件来调整颜色的亮度。
  7. 要向渐变中添加指针，请在渐变定义栏上面或下面单击。为步骤 6 中描述的新指针选择一种颜色。
  8. 要重新放置渐变上的指针，请沿着渐变定义栏拖动指针。将指针向下拖离渐变定义栏可以删除它。
  9. 要保存渐变色，请单击混色器右上角的三角形，然后从弹出菜单中选择“添加样本”。即可将渐变添加到当前文档的“颜色样本”面板中。


用墨水瓶工具修改笔触

要更改线条或者形状轮廓的笔触颜色、宽度和样式，可以使用墨水瓶工具。对直线或形状轮廓只能应用纯色，而不能应用渐变或位图。

使用墨水瓶工具而不是选择个别的线条，可以更容易地一次更改多个对象的笔触属性。

使用墨水瓶工具：

  1. 从工具栏中选择墨水瓶工具。
  2. 按照使用工具栏中的“笔触颜色”和“填充颜色”控件所述，选择一种笔触颜色。
  3. 从“属性”检查器中选择笔触样式和笔触宽度。请参阅使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。
  4. 单击舞台中的对象来应用对笔触的修改。


用颜料桶工具应用纯色、渐变和位图填充

颜料桶工具可以用颜色填充封闭的区域。此工具使您既可以填充空的区域也可以更改已涂色区域的颜色。您可用纯色、渐变填充以及位图填充进行涂色。可以使用颜料桶工具填充未完全封闭的区域，并且可以让 Flash 在您使用颜料桶工具时闭合形状轮廓中的空隙。请参阅处理导入的位图。

使用颜料桶工具填充区域：

  1. 从工具栏中选择颜料桶工具。
  2. 选择填充颜色和样式，如使用“属性”检查器中的“笔触颜色”和“填充颜色”控件中所述。
  3. 单击“空隙大小”功能键，然后选择一个空隙大小选项：
    • 如果要在填充形状之前手动封闭空隙，请选择“不封闭空隙”。对于复杂的图形，手动封闭空隙会更快一些。
    • 选择某个封闭选项，让 Flash 填充有空隙的形状。

    注意：如果空隙太大，您可能必须手动封闭它们。

  4. 单击要填充的形状或者封闭区域。


使渐变色和位图填充变形

通过调整填充的大小、方向或者中心，可以使渐变填充或位图填充变形。要使渐变或位图填充变形，可以使用填充变形工具。

用填充变形工具调整渐变或位图填充：

  1. 选择填充变形工具。
  2. 单击用渐变或位图填充的区域。

    当您渐变或位图填充进行编辑时，它的中心点会显示出来，并且它的边框显示编辑手柄。当指针在这些手柄中的任何一个上面的时候，它会发生变化，显示该手柄的功能。

    按下 Shift 键可以将线性渐变填充的方向限制为 45 度的倍数。

  3. 用下面的任何方法都可以更改渐变或填充的形状：
    • 要改变渐变或位图填充的中心点的位置，请拖动中心点。

    • 要更改渐变或位图填充的宽度，请拖动边框边上的方形手柄。（此选项只调整填充的大小，而不调整包含该填充的对象的大小。）

    • 要更改渐变或位图填充的高度，请拖动边框底部的方形手柄。

    • 要旋转渐变或位图填充，请拖动角上的圆形旋转手柄。还可以拖动圆形渐变或填充边框最下方的手柄。

    • 要缩放线性渐变或者填充，请拖动边框中心的方形手柄。

    • 要更改环形渐变的半径，请拖动环形边框中间的圆形手柄。

    • 要倾斜形状中的填充，请拖动边框顶部或右边圆形手柄中的一个。

    • 要在形状内部平铺位图，请缩放填充。

    注意：要在处理大面积填充或接近舞台边缘的填充时查看所有的手柄，请选择“查看”>“工作区”。


用滴管工具复制笔触和填充

您可以用滴管工具从一个对象拷贝填充和笔触属性，然后立即将它们应用到其他对象。滴管工具还允许您从位图图像取样用作填充。请参阅分离组和对象。

用滴管工具拷贝和应用笔触或填充属性：

  1. 选择滴管工具，然后单击要将其属性应用到其他笔触或填充区域的笔触或填充区域。

    当您单击一个笔触时，该工具自动变成墨水瓶工具。当您单击已填充的区域时，该工具自动变成颜料桶工具，并且打开“锁定填充”功能键。请参阅锁定渐变或位图以填充舞台。

  2. 单击其他笔触或已填充区域以应用新属性。


锁定渐变或位图以填充舞台

您可以锁定渐变色或位图填充，使填充看起来好像扩展到整个舞台，并且用该填充涂色的对象好像是显示下面的渐变或位图的遮罩。有关应用位图填充的信息，请参阅应用位图填充。

当您随刷子或颜料桶工具选择了“锁定填充”功能键并用该工具涂色的时候，位图或者渐变填充将扩展覆盖您在舞台中涂色的对象。

使用“锁定填充”功能键可以创建应用于舞台上独立对象的单个渐变或者位图填充的外观。

使用锁定的渐变填充：

  1. 选择刷子或者颜料桶工具，然后选择作为填充的渐变或位图。
  2. 从混色器中心的“填充样式”弹出菜单中先选择“线性渐变”或者“放射状渐变”，然后选择刷子或者颜料桶工具。
  3. 单击“锁定填充”功能键。
  4. 首先对要放置填充中心的区域进行涂色，然后移动到其他区域。

要使用锁定的位图填充：

  1. 选择要使用的位图。
  2. 在选择刷子或者颜料桶工具之前，先从混色器中心的“填充样式”弹出菜单中选择“位图”。
  3. 选择刷子或者颜料桶工具。
  4. 单击“锁定填充”功能键。
  5. 首先对要放置填充中心的区域进行涂色，然后移动到其他区域。


调色板

每一个 Flash 文件都包含自己的调色板，该调色板存储在 Flash 文档中。Flash 将文件的调色板显示为“填充颜色”和“笔触颜色”控件以及“颜色样本”面板中的样本。默认的调色板是 216 色的 Web 安全调色板。您可以使用混色器向当前调色板中添加颜色。请参阅使用混色器中的纯色和渐变填充。

要导入、导出和修改文件的调色板，可以使用“颜色样本”面板。您可以复制颜色，从调色板中删除颜色，更改默认调色板，在替换后重新加载 Web 安全调色板，或者根据色相对调色板进行排序。

您可以在 Flash 文件之间，也可以在 Flash 和其他应用程序（如 Macromedia Fireworks 和 Adobe Photoshop）之间导入导出纯色和渐变调色板。


复制和删除颜色

您可以复制调色板中的颜色，删除单个颜色或者从调色板中清除所有的颜色。

复制颜色或删除颜色：

  1. 如果看不到“颜色样本”面板，请选择“窗口”>“设计面板”>“颜色样本”。
  2. 单击您要复制或删除的颜色。
  3. 从右上角的弹出菜单中选择“重制样本”或者“删除样本”。

从调色板中清除所有的颜色：

  • 在“颜色样本”面板中，从右上角的弹出菜单中选择“清除颜色”。即可从调色板中删除黑色和白色之外的所有颜色。


使用默认调色板和 Web 安全调色板

您可以将当前调色板保存为默认调色板、用为文件定义的默认调色板替换当前调色板或者加载 Web 安全调色板来替换当前调色板。

加载或保存默认调色板：

  • 在“颜色样本”面板中，从右上角的弹出菜单中选择以下命令之一：

    “加载默认颜色”可以用默认调色板替换当前调色板。

    “保存为默认值”可以将当前调色板保存为默认调色板。创建新文件时会使用新的默认调色板。

要加载 Web 安全 216 色调色板：

  • 在“颜色样本”面板中，从右上角的弹出菜单中选择“Web 216 色”。


对调色板排序

要更容易地定位颜色，您可按照色相对调色板中的颜色进行排序。

对调色板中的颜色进行排序：

  • 在“颜色样本”面板中，从右上角的弹出菜单中选择“按颜色排序”。


导入和导出调色板

要在 Flash 文件之间导入导出 RGB 颜色和渐变色，可以使用 Flash 颜色设置文件（CLR 文件）。您可以用颜色表文件（ACT 文件）导入导出 RGB 调色板，这些文件也可用于 Macromedia Fireworks 和 Adobe Photoshop。还可以从 GIF 文件导入调色板，但不能导入渐变。您不能从 ACT 文件中导入或导出渐变。

导入调色板：

  1. 在“颜色样本”面板中，从右上角的弹出菜单中选择以下命令之一：
    • 要将导入的颜色附加到当前的调色板中，请选择“添加颜色”。
    • 要用导入的颜色替换当前的调色板，请选择“替换颜色”。
  2. 定位到所需的文件，然后选择它。
  3. 单击“确定”。

要导出调色板：

  1. 在“颜色样本”面板中，从右上角的弹出菜单中选择“保存颜色”。
  2. 在出现的对话框中，输入调色板的名称。
  3. 对于“另存为类型”(Windows) 或“格式”(Macintosh)，请选择“Flash 颜色设置”或“颜色表”。单击“保存”。


绘画概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中的绘画工具使您可以创建和修改文档中插图的形状。有关在 Flash 中绘画的交互式介绍，请选择“帮助”>“如何”>“基本 Flash”>“在 Flash 中绘画”。

在用 Flash 进行绘画和涂色之前，很有必要先了解 Flash 如何创建插图，绘画工具如何工作，以及绘画、涂色和修改形状操作如何能够影响同一层上的其他形状。


矢量图形和位图图形

计算机以矢量图形或位图格式显示图形。了解这两种格式的差别有助于您更有效地工作。使用 Flash 可以创建压缩矢量图形并将它们制作为动画。Flash 也可以导入和处理在其他应用程序中创建的矢量图形和位图图形。


矢量图形

矢量图形使用称作矢量 的直线和曲线描述图像，矢量还包括颜色和位置属性。例如，树叶图像可以由创建树叶轮廓的线条所经过的点来描述。树叶的颜色由轮廓的颜色和轮廓所包围区域的颜色决定。

在编辑矢量图形时，您可以修改描述图形形状的线条和曲线的属性。您可以对矢量图形进行移动、调整大小、重定形状以及更改颜色的操作而不更改其外观品质。矢量图形与分辨率无关，这意味着它们可以显示在各种分辨率的输出设备上，而丝毫不影响品质。


位图图形

位图图形使用在网格内排列的称作像素 的彩色点来描述图像。例如，树叶的图像由网格中每个像素的特定位置和颜色值来描述，这是用非常类似于镶嵌的方式来创建图像。

在编辑位图图形时，您修改的是像素，而不是直线和曲线。位图图形跟分辨率有关，因为描述图像的数据是固定到特定尺寸的网格上的。编辑位图图形可以更改它的外观品质。特别是调整位图图形的大小会使图像的边缘出现锯齿，因为网格内的像素重新进行了分布。在比图像本身的分辨率低的输出设备上显示位图图形时也会降低它的品质。


Flash 绘画和涂色工具

Flash 提供了各种工具来绘制自由形状或准确的线条、形状和路径，并可以用来对填充对象涂色。

  • 要象使用真铅笔一样绘制任意的线条和形状，您可以使用铅笔工具。请参阅用铅笔工具绘画。
  • 要绘制精确的路径，如直线或曲线，您可以使用钢笔工具。请参阅使用钢笔工具。
  • 要绘制基本的几何形状，您可以使用线条工具、椭圆工具和矩形工具。请参阅绘制直线、椭圆和矩形。
  • 要绘制多边形和星形，请使用多边星形工具。请参阅绘制多边形和星形。
  • 要象使用刷子涂色一样创建刷子似的笔触，您可以使用刷子工具。请参阅使用刷子工具涂色。

在使用大多数 Flash 工具时，“属性”检查器会发生变化，以显示与该工具相关联的设置。例如，如果您选择文本工具，“属性”检查器会显示文本属性，从而可以轻松选择所需文本属性。有关“属性”检查器的详细信息，请参阅使用面板和“属性”检查器。

当您使用绘画或涂色工具创建对象时，该工具会将当前笔触和填充属性应用于该对象。要更改现有对象的笔触和填充属性，可以使用工具栏中的颜料桶和墨水瓶工具或“属性”检查器。请参阅使用工具栏中的“笔触颜色”和“填充颜色”控件或使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。

在创建了线条和形状轮廓之后，可以用各种方式改变它们。填充和笔触应看作不同的对象。您可以分别选择填充和笔触来移动或修改它们。请参阅改变线条和形状轮廓的形状。

可以使用对齐功能来让各个元素彼此自动对齐以及让元素与绘画网格或辅助线对齐。请参阅对齐和关于主工具栏和编辑栏。

可以自定义工具栏以更改工具的显示。请参阅自定义工具栏。


关于 Flash 中的重叠形状

当您使用铅笔、线条、椭圆、矩形或刷子工具来绘制一条穿过另一条直线或已涂色形状的直线时，重叠直线会在交叉点处分成线段。您可以使用选取工具来分别选择、移动每条线段并改变其形状。

注意：而用钢笔工具创建的重叠直线不会在交叉点处分成单独的线段，而仍然连接在一起。请参阅使用钢笔工具。

一个填充；一条直线穿过的填充；分割形成的两个填充和三条线段

当在图形和线条上涂色时，底下部分就会被上面部分所替换。同种颜色的颜料就会合并在一起。不同颜色的颜料仍保持不同。您可以使用这些功能来创建蒙板、剪切块和其他底片图像。例如，下面的剪切块是这样制作的：将未组合的风筝图像移到绿色形状上，取消选定风筝，然后将风筝的填充部分从绿色形状上移走。

要避免由于重叠形状和线条而意外改变它们，您可以组合形状或者使用图层来分隔它们。请参阅组合对象和使用层。


用铅笔工具绘画

要绘制线条和形状，您可以使用铅笔工具，以和使用真实铅笔大致相同的方式来绘画。要在绘画时平滑或伸直线条和形状，您可以给铅笔工具选择一种绘画模式。

使用铅笔工具绘画：

  1. 选择铅笔工具。
  2. 选择“窗口”>“属性”并在“属性”检查器中选择笔触颜色、线条粗细和样式。请参阅使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。
  3. 在工具栏的“选项”下选择一种绘画模式：
    • 选择“伸直”可以绘制直线，并将接近三角形、椭圆、圆形、矩形和正方形的形状转换为这些常见的几何形状。
    • 选择“平滑”可以绘制平滑曲线。
    • 选择“墨水”可以绘制不用修改的手画线条。

      分别以伸直、平滑和墨水模式绘制的线条

  4. 用铅笔工具在舞台上拖动进行绘画。按住 Shift 键拖动可将线条限制为垂直或水平方向。


绘制直线、椭圆和矩形

可以使用直线、椭圆和矩形工具轻松创建这些基本几何形状。椭圆和矩形工具可以创建笔触和填充形状。矩形工具可以让您创建方角或圆角的矩形。

绘制直线、椭圆或矩形：

  1. 选择线条、椭圆或矩形工具。
  2. 选择“窗口”>“属性”，然后在“属性”检查器中选择笔触和填充属性。请参阅使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。

    注意：无法为直线工具设置填充属性。

  3. 对于矩形工具，通过单击圆角矩形功能键并输入一个角半径值就可以指定圆角。如果值为零，则创建的是方角。
  4. 在舞台上拖动。如果您使用的是矩形工具，在拖动时按住上下箭头键可以调整圆角半径。

    对于椭圆和矩形工具，按住 Shift 键拖动可以将形状限制为圆形和正方形。

    对于线条工具，按住 Shift 键拖动可以将线条限制为倾斜 45 度的倍数。


绘制多边形和星形

使用 PolyStar 工具，您可以绘制多边形和星形。可以选择多边形的边数或星形的顶点数（从 3 到 32）。也可以选择星形顶点的深度。

绘制多边形或星形：

  1. 在矩形工具上单击并按住鼠标按钮，然后拖动以从弹出菜单中选择多边星形工具。
  2. 选择“窗口”>“属性”以查看“属性”检查器。
  3. 在“属性”检查器中选择笔触和填充属性。请参阅使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。
  4. 在“属性”检查器中单击“选项”按钮。
  5. 在“工具设置”对话框中，执行以下操作：
    • 对于“样式”，选择“多边形”或“星形”。
    • 对于“边数”，输入一个介于 3 到 32 之间的数字。
    • 对于“星形顶点大小”，输入一个介于 0 到 1 之间的数字以指定星形顶点的深度。此数字越接近 0，创建的顶点就越深（如针）。如果是绘制多边形，应保持此设置不变。（它不会影响多边形的形状。）
  6. 单击“确定”以关闭“工具设置”对话框。
  7. 在舞台上拖动。


钢笔工具

要绘制精确的路径，如直线或者平滑流畅的曲线，您可以使用钢笔工具。您可以创建直线或曲线段，然后调整直线段的角度和长度以及曲线段的斜率。

当使用钢笔工具绘画时，进行单击可以在直线段上创建点，进行单击和拖动可以在曲线段上创建点。可以通过调整线条上的点来调整直线段和曲线段。您可以将曲线转换为直线，反之亦可。也可以显示您用其他 Flash 绘画工具，如铅笔、刷子、线条、椭圆或矩形工具在线条上创建的点，以调整这些线条。请参阅改变线条和形状轮廓的形状。


设置钢笔工具首选参数

您可以指定钢笔工具指针外观的首选参数，用于在画线段时进行预览，或者查看选定锚记点的外观。选定线段和锚记点是以出现这些线条和点的层的轮廓颜色来显示的。

设置钢笔工具首选参数：

  1. 选择“钢笔工具”，然后选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后单击“编辑”选项卡。
  2. 在钢笔工具下，设置以下选项：

    “显示钢笔预览”会在您绘画时预览线段。在您进行单击以创建线段的终点之前，在舞台周围移动指针时，Flash 会显示线段预览。如果未选择该选项，则在您创建线段终点之前，Flash 不会显示该线段。

    “显示实心点”将选定的锚记点显示为空心点，并将取消选定的锚记点显示为实心点。如果未选择此选项，则选定的锚记点为实心点，而取消选定的锚记点为空心点。

    “显示精确光标”指定钢笔工具指针以十字准线指针的形式出现，而不是以默认的钢笔工具图标的形式出现，这样可以提高线条的定位精度。取消选择该选项会显示默认的钢笔工具图标来代表钢笔工具。

    注意：工作时按下 Caps Lock 键可在十字准线指针和默认的钢笔工具图标之间进行切换。

  3. 单击“确定”。


用钢笔工具绘制直线

要使用钢笔工具绘制直线段，先要创建锚记点，也就是线条上确定每条线段长度的点。

使用钢笔工具绘制直线：

  1. 选择钢笔工具。
  2. 选择“窗口”>“属性”，然后在“属性”检查器中选择笔触和填充属性。请参阅使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。
  3. 将指针定位在舞台上您想要直线开始的地方，然后进行单击以定义第一个锚记点。
  4. 在您想要直线的第一条线段结束的位置再次进行单击。按住 Shift 键进行单击可以将线条限制为倾斜 45 度的倍数。
  5. 继续单击以创建其他直线段。

  6. 要以开放或闭合形状完成此路径，请执行以下操作之一：
    • 要完成一条开放路径，双击最后一个点，单击工具栏中的钢笔工具，或按住 Control 键 (Windows) 或 Command 键 (Macintosh) 单击路径外的任何地方。
    • 要闭合路径，请将钢笔工具放置到第一个锚记点上。如果定位准确，就会在靠近钢笔尖的地方出现一个小圆圈。单击或拖动以闭合路径。

    • 要按现状完成形状，可选择“编辑”>“取消全选”或在工具栏中选择其他工具。


使用钢笔工具绘制曲线路径

在想要曲线到达的方向上拖动钢笔工具来创建第一个锚记点，然后朝相反的方向拖动钢笔工具来创建第二个锚记点，从而创建曲线。

当使用钢笔工具创建曲线段时，线段的锚记点显示为切线手柄。每个切线手柄的斜率和长度决定了曲线的斜率和高度，或者深度。移动切线手柄可以改变路径曲线的形状。请参阅调整线段。

要绘制曲线路径：

  1. 选择钢笔工具。
  2. 将钢笔工具放置在舞台上想要曲线开始的地方，然后按下鼠标按钮。

    此时出现第一个锚记点，并且钢笔尖变为箭头。

  3. 向您想要绘制曲线段的方向拖动鼠标。按下 Shift 键拖动可以将该工具限制为绘制 45 度的倍数。

    随着您的拖动，将会出现曲线的切线手柄。

  4. 释放鼠标按钮。

    切线手柄的长度和斜率决定了曲线段的形状。您可以在以后移动切线手柄来调整曲线。

  5. 将指针放在您想要结束曲线段的地方，按下鼠标按钮，然后朝相反的方向拖动来完成线段。按下 Shift 键拖动会将该线段限制为倾斜 45 度的倍数。

  6. 要绘制曲线的下一段，将指针放置在您想要下一线段结束的位置上，然后拖离该曲线。


调整路径上的锚记点

在使用钢笔工具绘制曲线时，会创建曲线点，即连续的弯曲路径上的锚记点。在绘制直线段或连接到曲线段的直线时，会创建转角点?直线路径上或直线和曲线路径接合处的锚记点。

默认情况下，选定的曲线点显示为空心圆圈，选定的转角点显示为空心正方形。

要将线条中的线段由直线段转换为曲线段或者由曲线段转换为直线段，您可以将转角点转换为曲线点或者将曲线点转换为转角点。

您还可以移动、添加或删除路径上的锚记点。使用部分选取工具来移动锚记点可以调整直线段的长度或角度，或曲线段的斜率。您可以通过轻推选定的锚记点来进行微调。

删除曲线路径上不必要的锚记点可以优化曲线并减小文件大小。

移动锚记点：

  • 使用部分选取工具拖动点。

轻推锚记点或点：

  • 使用部分选取工具选择点并用箭头键来移动点。

要转换锚记点，可执行以下操作之一：

  • 要将转角点转换为曲线点，请使用部分选取工具来选择该点，然后按住 Alt 键 (Windows) 或 Option 键 (Macintosh) 拖动该点来放置切线手柄。
  • 要将曲线点转换为转角点，可用钢笔工具单击该点。

添加锚记点：

  • 使用钢笔工具单击一条线段。

要删除锚记点，可执行以下操作之一：

  • 要删除转角点，可用钢笔工具单击该点一次。
  • 要删除转角点，可用钢笔工具单击该点两次。（单击一次将该点转换为转角点，再单击一次删除该点。）
  • 用部分选取工具选择该点并按下 Delete 键。


调整线段

您可以调整直线段以更改线段的角度或长度，或者调整曲线段以更改曲线的斜率和方向。

移动曲线点上的切线手柄时，可以调整该点两边的曲线。移动转角点上的切线手柄时，只能调整该点的切线手柄所在的那一边的曲线。

调整直线段：

  1. 选择部分选取工具，然后选择直线段。
  2. 使用部分选取工具可以将线段上的锚记点拖动到新位置。

调整曲线段：

  • 选择部分选取工具并拖动该线段。

    注意：在单击路径时，Flash 将显示锚记点。使用部分选取工具调整线段可能会给路径添加一些点。

调整曲线上的点或切线手柄：

  1. 选择部分选取工具，然后在曲线段上选择一个锚记点。

    在选定的点上就会出现一个切线手柄。

  2. 要调整锚记点两边的曲线形状，可拖动该锚记点，或者拖动切线手柄。按下 Shift 键拖动会将曲线限制为倾斜 45 度的倍数。在拖动时按住 Alt 键 (Windows) 或 Option 键 (Macintosh) 可单独拖动每个切线手柄。


使用刷子工具涂色

刷子工具能绘制出刷子般的笔触，就好像您在涂色一样。它可以让您创建特殊效果，包括书法效果。您可以使用刷子工具功能键选择刷子大小和形状。

对于新笔触来说，刷子大小甚至在您更改舞台的缩放比率级别时也保持不变，所以当舞台缩放比率降低时同一个刷子大小就会显得太大。例如，假设您将舞台缩放比率设置为 100% 并使用刷子工具以最小的刷子大小涂色。然后，将缩放比率更改为 50% 并用最小的刷子大小再画一次。绘制的新笔触就比以前的笔触显得粗 50%。（更改舞台的缩放比率并不更改现有刷子笔触的大小。）

在使用刷子工具涂色时，可以使用导入的位图作为填充。请参阅分离组和对象。

如果将 Wacom 压敏绘图板连接到计算机，可通过使用刷子工具的“压力”和“斜度”功能键，以及改变铁笔上的压力来改变刷子笔触的宽度和角度。

“压力”功能键在您改变铁笔上的压力时改变刷子笔触的宽度。“斜度”功能键在您改变铁笔在绘图板上的角度时改变刷子笔触的角度。“斜度”功能键测量铁笔的顶（橡皮擦）端和绘图板的顶（北）边之间的角度。例如，如果垂直于绘图板握住钢笔，则“斜度”为 90 度。铁笔的橡皮擦功能完全支持“压力”和“斜度”功能键。

用铁笔绘制的宽度可变的刷子笔触

使用刷子工具涂色：

  1. 选择刷子工具。
  2. 选择“窗口”>“属性”，然后在“属性”检查器中选择填充颜色。请参阅使用“属性”检查器中的“笔触颜色”和“填充颜色”控件。
  3. 单击“刷子模式”功能键并选择一种涂色模式：

    “标准绘画”会在同一层的线条和填充上涂色。

    “颜料填充”对填充区域和空白区域涂色，不影响线条。

    “后面绘画”在舞台上同一层的空白区域涂色，不影响线条和填充。

    当您在“属性”检查器的“填充”功能键或“填充”框中选择填充时，“颜料选择”会将新的填充应用到选区中。（此选项就跟简单地选择一个填充区域并应用新填充一样。）

    “内部绘画”对开始刷子笔触时所在的填充进行涂色，但不对线条涂色。这种做法很像一本智能色彩书，不允许您在线条外面涂色。如果在空白区域中开始涂色，该填充不会影响任何现有填充区域。

  4. 从刷子工具功能键中选择一种刷子大小和刷子形状。
  5. 如果将 Wacom 压敏绘图板连接到计算机，您可以选择“压力”功能键和/或“斜度”功能键来修改刷子笔触。
    • 选择“压力”功能键，通过改变铁笔上的压力来改变刷子笔触的宽度。
    • 选择“斜度”功能键，通过改变铁笔在 Wacom 压敏绘图板上的角度来改变刷子笔触的角度。
  6. 在舞台上拖动。按住 Shift 键拖动可将刷子笔触限定为水平和垂直方向。


线条和形状轮廓

您可以改变用铅笔、刷子、线条、椭圆或矩形工具创建的线条和形状轮廓，方法是使用选取工具进行拖动或优化它们的曲线。

您也可以使用部分选取工具来显示线条和形状轮廓上的点并通过调整这些点来修改线条和轮廓。有关调整锚记点的信息，请参阅使用钢笔工具。

要显示用铅笔、刷子、线条、椭圆或矩形工具创建的线条和形状轮廓上的锚记点：

  1. 选择部分选取工具。
  2. 单击线条或形状轮廓。


使用选取工具改变形状

要改变线条或形状轮廓的形状，可以使用选取工具拖动线条上的任意点。指针会发生变化，以指明在该线条或填充上可以执行哪种类型的形状改变。

Flash 将调整线段曲线以适应移动点的新位置。如果重定位的点是终点，则您可以延长或缩短该线条。如果重定位的点是转角，则组成转角的线段在它们变长或缩短时仍保持伸直。

当转角出现在指针附近时，您可以更改终点。当曲线出现在指针附近时，您可以调整曲线。

如果将某些刷子笔触区域看作轮廓，就更容易改变它们的形状。

如果在改变复杂线条的形状时遇到困难，可以把它弄平滑，去掉它的一些细节，这样就会使得形状改变容易一些。增加缩放比例还可以更方便、更精确地改变形状，请参阅优化曲线或使用舞台。

使用选取工具改变线条或形状轮廓的形状：

  1. 选择选取工具。
  2. 执行以下其中一项操作：
    • 从线段上的任意点拖动来改变其形状。
    • 按住 Control 键 (Windows) 或按住 Option 键 (Macintosh) 拖动线条来创建一个新的转角点。


伸直和平滑线条

可通过伸直和平滑线条和形状轮廓来改变它们的形状。

注意：通过指定绘画设置的首选参数来调整自动平滑和伸直的程度。请参阅指定绘画设置。

伸直操作可以稍稍弄直您已经绘制的线条和曲线。它不影响已经伸直的线段。

您也可以使用伸直技巧来让 Flash 确认形状。如果在关闭“确认形状”选项的情况下绘制任意的椭圆、矩形或三角形，可以使用“伸直”选项来让形状的几何外观更完美。（有关“确认形状”选项的信息，请参阅指定绘画设置。）不会确认正触及并因而连接到其他元素的形状。

形状识别将上面的形状转换为下面的形状。

平滑操作使曲线变柔和并减少曲线整体方向上的突起或其他变化。同时还会减少曲线中的线段数。不过，平滑只是相对的，它并不影响直线段。如果在改变大量非常短的曲线段的形状时遇上困难，该操作尤其有用。选择所有线段并将它们弄平滑可以减少线段数量，从而得到一条更易于改变形状的柔和曲线。

根据每条线段的原始曲直程度，重复应用平滑和伸直操作可以会使每条线段更平滑更直。

平滑每条选定的填充轮廓或弯曲线的曲线：

  • 选择选取工具并单击工具栏“选项”部分中的“平滑”功能键，或选择“修改”>“平滑”。

对每条选定的填充轮廓或曲线进行微小的伸直调整：

  • 选择选取工具并单击工具栏“选项”部分中的“伸直”功能键，或选择“修改”>“形状”>“伸直”。

使用形状确认功能：

  • 选择选取工具并单击“伸直”功能键，或者选择“修改”>“形状”>“伸直”。


优化曲线

平滑曲线的另一种方法就是优化它们。 这种方法通过减少用于定义这些元素的曲线数量来改进曲线和填充轮廓。优化曲线还会减小 Flash 文档（FLA 文件）和导出的 Flash 应用程序（SWF 文件）的大小。如同使用“平滑”或“伸直”功能键或命令一样，您可以对同一元素多次进行优化。

优化曲线：

  1. 选择要优化的已绘制元素，然后选择“修改”>“优化”。
  2. 在“最优化曲线”对话框中，拖动“平滑”滑块以指定平滑程度。

    精确的结果取决于所选定的曲线。一般来说，优化可以减少曲线数量，但会与原始轮廓稍有不同。

  3. 设置其他选项：

    “使用多重过渡”可以重复进行平滑处理直到不能进一步优化为止；这相当于对同一选定元素重复选择“优化”。

    “显示总计消息”可以在平滑操作完成时显示一个指示优化程度的警告框。

  4. 单击“确定”。


擦除

使用橡皮擦工具进行擦除可删除笔触和填充。您可以快速擦除舞台上的任何内容，擦除个别笔触段或填充区域，或者通过拖动进行擦除。

您可以自定义橡皮擦工具以便只擦除笔触、只擦除数个填充区域或单个填充区域。橡皮擦工具可以是圆的或方的，它可以有五种尺寸。

要快速删除舞台上的所有内容：

  • 双击橡皮擦工具。

删除笔触段或填充区域：

  1. 选择橡皮擦工具，然后单击“水龙头”功能键。
  2. 选择您要删除的笔触段或填充区域。

通过拖动进行擦除：

  1. 选择橡皮擦工具。
  2. 单击“橡皮擦模式”功能键并选择一种擦除模式：

    “标准擦除”擦除同一层上的笔触和填充。

    “擦除填色”只擦除填充，不影响笔触。

    “擦除线条”只擦除笔触，不影响填充。

    “擦除所选填充”只擦除当前选定的填充，并不影响笔触（不管笔触是否被选中）。（以这种模式使用橡皮擦工具之前，请选择您要擦除的填充。）

    “内部擦除”只擦除橡皮擦笔触开始处的填充。如果从空白点开始擦除，则不会擦除任何内容。以这种模式使用橡皮擦并不影响笔触。

  3. 单击“橡皮擦形状”功能键并选择一种橡皮擦形状和大小。确保不要选中“水龙头”功能键。
  4. 在舞台上拖动。


修改形状

您可以修改形状，方法是将线条转换为填充、扩展填充对象的形状，或通过修改填充形状的曲线来柔化其边缘。

“将线条转换为填充”功能可将线条转换为填充，这样您就可以使用渐变来填充线条或擦除一部分线条。“扩展形状”和“柔化边缘”功能允许您扩展填充形状并模糊形状边缘。

“扩展填充”和“柔化填充边缘”功能在不包含很多细节的小型形状上使用效果最好。对拥有过多细节的形状应用“柔化边缘”功能会增大 Flash 文档和生成的 SWF 文件的大小。

将线条转换为填充：

  1. 选择一条或多条线。
  2. 选择“修改”>“形状”>“将线条转换为填充”。

    选择的线条会转换成填充形状。将线条转换为填充可能会增大文件大小，但同时可以加快一些动画的绘制。

扩展填充对象的形状：

  1. 选择一个填充形状。该命令在没有笔触的单色填充形状上使用效果最好。
  2. 选择“修改”>“形状”>“扩展填充”。
  3. 在“扩展路径”对话框中，输入“距离”的像素值并为“方向”选择“扩展”或“插入”。“扩展”可以放大形状，而“插入”则缩小形状。

柔化对象的边缘：

  1. 选择一个填充形状。

    注意：该功能在没有笔触的单一填充形状上使用效果最好。

  2. 选择“修改”>“形状”>“柔化填充边缘”。
  3. 设置下列选项：

    “距离”是柔边的宽度（以像素为单位）。

    “步骤数”控制用于柔边效果的曲线数。使用的步骤数越多，效果就越平滑。增加步骤数还会使文件变大并降低绘画速度。

    “扩展”或“插入”控制着在柔化边缘时形状是放大还是缩小。


关于对齐

要将各个元素彼此自动对齐，可以使用对齐功能。Flash 为您提供三种方法在舞台上对齐对象：

  • 对象对齐使您可以将对象沿着其他对象的边缘直接与它们对齐。
  • 像素对齐使您可以在舞台上将对象直接与单独的像素或像素的线条对齐。
  • 贴紧对齐使您可以按照指定的贴紧对齐容差、对象与其他对象之间或对象与舞台边缘之间的预设边界对齐对象。

注意：您也可以与网格或辅助线对齐。有关详细信息，请参阅关于主工具栏和编辑栏。


对象对齐

使用选取工具的“对齐”功能键或“视图”菜单中的“对齐对象”命令，都可以打开对齐对象功能。

如果选取工具的“对齐”功能键是打开的，拖动元素时指针下面会出现一个黑色的小环。当对象处于另一个对象的对齐距离内时，该小环会变大。

打开或关闭对象对齐功能：

  • 选择“视图”>“对齐”>“对齐对象”。如果该命令是打开的，它的旁边会出现一个选中标记。

    当移动对象或改变其形状时，对象上选取工具的位置为对齐环提供了参考点。例如，如果通过拖动接近填充形状中心的位置来移动填充形状，它的中心点会与其他对象对齐。对于要将形状与运动路径对齐从而制作动画的情况，该功能特别有用。

    注意：要在对齐时更好地控制对象位置，可以从对象的转角或中心点开始拖动。

调整对象的贴紧对齐容差：

  1. 选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后单击“编辑”选项卡。
  2. 在“绘画设置”下，调整“连接线”设置。请参阅指定绘画设置。


像素对齐

您可以使用“查看”菜单中的“对齐像素”命令来打开像素对齐功能。如果“对齐像素”是打开的，当视图缩放比率设置为 400% 或更高的时候会出现一个像素网格。该像素网格代表将在您 Flash 应用程序中出现的单个像素。当您创建或移动一个对象时，它会被限定到该像素网格内。

打开或关闭像素对齐：

  • 选择“视图”>“对齐”>“对齐像素”。

    如果缩放比率设置为 400% 或者更高，像素网格就会显示出来。如果该命令是打开的，它的旁边会出现一个选中标记。

临时打开或关闭像素对齐：

  • 按住 C 键。当释放 C 键时，像素对齐会返回到您用“视图”>“对齐”>“对齐像素”选定的状态。

临时隐藏像素网格：

  • 按住 X 键。当释放 X 键时，像素网格会重新出现。


贴紧对齐

可以使用“视图”菜单中的“贴紧对齐”命令来打开“贴紧对齐”。可以使用“视图”菜单中的“编辑贴紧对齐方式”命令来选择“贴紧对齐”的设置。

当您选择“贴紧对齐”设置时，可以设置对象的水平或垂直边缘之间以及对象边缘和舞台边界之间的贴紧对齐容差。也可以在对象的水平和垂直中心之间打开贴紧对齐功能。所有“贴紧对齐”设置均以像素为度量单位。

如果打开了“贴紧对齐”，则在您将对象拖到指定的贴紧对齐容差位置时，点线将出现在舞台上。例如，如果将“水平”贴紧对齐容差设置为 18 个像素（默认设置），则当您正在拖动的对象距另一个对象正好是 18 个像素时，点线将沿着该对象边缘出现。如果您打开“水平居中对齐”，则当您精确对齐两个对象的水平中心顶点时，点线将沿着这些顶点出现。

选择“贴紧对齐”的设置：

  1. 选择“视图”>“对齐”>“编辑贴紧对齐方式”。
  2. 在“贴紧对齐”对话框中，执行以下操作之一：
    • 要设置对象和舞台边界之间的贴紧对齐容差，请输入一个“影片边框”值。
    • 要设置对象的水平或垂直边缘之间的贴紧对齐容差，请输入“水平”和/或“垂直”值。
    • 要打开“水平居中对齐”或“垂直居中对齐”，请选择“水平居中对齐”和/或“垂直居中对齐”。

打开“贴紧对齐”：

  • 选择“对齐“>“贴紧对齐”。


指定绘画设置

使用 Flash 绘画工具时，可以设置绘画设置来指定对齐、平滑和伸直行为。您可以更改每个选项的“容差”设置，也可以打开或关闭每个选项。容差设置是相对的，它取决于您计算机屏幕的分辨率和场景当前的缩放比率。默认情况下，每个选项都是打开的，并且设置的是“正常”容差。

设置绘画设置：

  1. 选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后单击“编辑”选项卡。
  2. 在“绘画设置”下，从下列选项中选择：

    “连接线”决定正在绘制的线条的终点在可以对齐到另一条线上最近的点之前，必须距现有线段多近。可用选项包括“必须接近”、“正常”和“可以远离”。该设置也可以控制水平或垂直线条识别，即在 Flash 使该线条达到精确的水平或垂直度前，该线条必须要绘制到怎样的水平或者垂直程度。如果打开了“对齐对象”，该设置控制对象必须要接近到何种程度才可以彼此对齐。

    “平滑曲线”指定当绘画模式设置为“伸直”或“平滑”时，应用到以铅笔工具绘制的曲线的平滑量。（曲线越平滑就越容易改变形状，而越粗略的曲线就越接近符合原始的线条笔触。）该选项可以为“关”、“粗略”、“正常”和“平滑”。

    注意：您可以使用“修改”>“形状”>“平滑和修改”>“形状”>“优化”来进一步平滑现有曲线段。

    “确认线”定义用铅笔工具绘制的线段必须达到何种笔直程度，Flash 才会将它确认为直线并让它变得完全笔直。选项是“关”、“严谨”、“正常”和“宽松”。如果在绘画时关闭了“确认线”，您可以在以后通过选择一条或多条线段并选择“修改” > “形状”>“伸直”。

    “确认形状”控制您绘制的圆形、椭圆、正方形、矩形、90 度和 180 度弧要达到何种精度，才会被确认为几何形状并精确地重绘。选项是“关”、“严谨”、“正常”和“宽松”。如果在绘画时关闭了“确认形状”，您可以在以后通过选择一个或多个形状（如连接的线段）并选择“修改”>“形状”>“伸直”来伸直线条。

    “点击精确度”指定指针必须要距某个项目多近时 Flash 才能确认该项目。选项是“严谨”、“正常”和“宽松”。


使用文本概述

可以使用多种方式在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 应用程序中加入文本。可以创建包含静态 文本的文本块，即您在创作文档时确定其内容和外观的文本。还可以创建动态 或输入 文本字段。动态文本字段显示动态更新的文本，如体育得分或股票报价等。输入文本字段允许用户为表单、调查表或其他目的输入文本。

就象影片剪辑实例一样，文本字段实例也是具有属性和方法的动作脚本对象。通过为文本字段指定实例名称，可以用动作脚本控制它。不过，与影片剪辑不同，您不能在文本实例中编写动作脚本代码，因为它们没有时间轴。

您可以水平设置文本方向，文本流向为从左到右，或者垂直设置文本方向（仅限静态文本），文本流向可以是从左到右，或从右到左。您可以选择文本的下列属性：字体、磅值、样式、颜色、间距、字距调整、基线调整、对齐、页边距、缩进和行距。请参阅设置文本属性。

利用检查拼写功能，您可以在文本字段、场景和层名称、帧标签、动作脚本字符串以及文档中出现文本的其他地方中检查拼写。请参阅检查拼写。

您可以像处理对象一样将文本变形，即旋转、缩放、倾斜和翻转，并且仍然可以编辑它的字符。请参阅关于文本变形。在处理水平文本时，可以将文本块链接到 URL 并使之可选。请参阅将文本链接到 URL（只适用于水平文本）。

时间轴特效可让您将预建的动画特效应用到文本，例如弹跳、淡入或淡出和爆炸。请参阅将时间轴特效用于文本。

当您处理 Flash FLA 文件时，如果系统中没有指定的字体，Flash 会用系统中安装的其他字体替换 FLA 文件中的字体。您可以通过选项来控制要使用的替换字体。替换字体只用于在您的系统上进行显示。FLA 文件中的字体选择依然保持不变。请参阅替换缺少的字体。

Flash 还允许您创建字体元件，这样就可以将该字体作为共享库的一部分导出，用于其他 Flash 文档。请参阅创建字体元件。

您可以分离文本并更改它的字符的形状。对于其他文本处理功能，您可以在 FreeHand 中处理文本，并将 FreeHand 文件导入 Flash 中，或将该文件作为 SWF 文件从 FreeHand 中导出。请参阅分离文本。

Flash 文档可以使用 Type 1 PostScript 字体、TrueType 字体和位图字体（仅限 Macintosh）。通过使用影片浏览器将文本复制到剪贴板上，然后粘贴到外部文本编辑器中，可以对文本进行拼写检查。请参阅使用影片浏览器。

您可以使用 HTML 标记和属性保留文本字段中的丰富文本格式。请参阅保留丰富文本格式。

当您在动态或输入文本字段的内容中使用 HTML 文本时，可以使文本绕着图像（如 SWF 或 JPG 文件或影片剪辑）排列。请参阅使用 HTML 格式的文本。

可以使用动作脚本格式化输入和动态文本，以及创建滚动的文本字段。动作脚本中有一些动态和输入文本字段事件，您可以捕获这些事件并用于触发脚本。有关使用动作脚本控制文本的信息，请参阅使用文本。

有关在 Flash 中创建文本的交互式介绍，请选择“帮助”>“如何”>“基本 Flash”>“添加静态、输入和动态文本”。


关于 Flash 应用程序中的 Unicode 文本编码

Macromedia Flash Player 7 支持在 Macromedia Flash Player 7 格式的 SWF 文件中使用 Unicode 文本编码。这种支持极大地增强了在利用 Flash 创建的 SWF 文件中使用多语言文本的能力，包括在一个文本字段中使用多种语言。使用 Macromedia Flash Player 7 的用户可以查看 Macromedia Flash Player 7 应用程序中的多语言文本，而不管运行此软件的操作系统使用何种语言。

有关在 Macromedia Flash 中支持 Unicode 的信息，请参阅创建多语言文本。


字体轮廓和设备字体

在您发布或导出包含静态文本的 Flash 应用程序时，Flash 会创建文本的轮廓，并使用这些轮廓在 Flash Player 中显示文本。

在您发布或导出包含动态或输入文本字段的 Flash 应用程序时，Flash 会存储在创建文本时使用的字体名称。在显示 Flash 应用程序时，Flash Player 使用这些字体名称在用户的系统上查找相同或类似的字体。也可以导出动态或输入文本的字体轮廓，方法是单击“属性”检查器中的“字符”选项，然后选择选项。请参阅设置动态和输入文本选项。

并不是所有显示在 Flash 中的字体都可以作为轮廓随 Flash 应用程序导出。要验证字体是否可以导出，可以使用“视图”>“预览模式”>“消除文字锯齿”命令预览文本；如果有锯齿则表明 Flash 不能识别该字体轮廓，因而将不会导出文本。


关于使用设备字体

在 Flash 中，可以使用称作设备字体 的特殊字体作为导出字体轮廓信息的一种替代方式，但这仅适用于静态水平文本。设备字体并不嵌入 Flash SWF 文件中。相反，Flash Player 使用会用本地计算机上的与设备字体最相近的字体来替换。因为并未嵌入设备字体信息，所以使用设备字体生成的 SWF 文件在大小上要小一些。此外，设备字体在小磅值（小于 10 磅）时比导出的字体轮廓更清晰也更易读。但是，因为设备字体并未嵌入到文件中，所以如果用户的系统中未安装与该设备字体对应的字体，文本看起来可能会与预料中的不同。

Flash 包括三种设备字体：named _sans（类似于 Helvetica 或 Arial 字体）、_serif（类似于 Times Roman 字体）和 _typewriter（类似于 Courier 字体）。要将字体指定为设备字体，您可以在“属性”检查器中选择其中一种 Flash 设备字体。在 SWF 文件回放期间，Flash 会选择用户系统上的第一种设备字体。请参阅使用户可以选择文本。


关于遮罩设备字体

可以使用影片剪辑遮罩以设备字体设置的文本并且转换为影片剪辑。要在设备字体上使用影片剪辑遮罩，用户必须具有 Flash Player 6 的 40 或更高版本。

在您使用影片剪辑遮罩以设备字体设置的文本时，会将该影片剪辑的矩形边框用作遮罩形状。这就是说，如果您在 Flash 创作环境中为设备字体文本创建非矩形的影片剪辑遮罩，则出现在 SWF 文件中的遮罩将呈现为该遮罩矩形边框的形状，而不是该遮罩本身的形状。

只能通过将影片剪辑用作遮罩来遮罩设备字体。无法通过在舞台上使用遮罩层来遮罩设备字体。

有关使用影片剪辑作为遮罩的详细信息，请参阅将影片剪辑用作遮罩。


创建文本

您可以创建三种类型的文本字段：静态文本字段、动态文本字段和输入文本字段。所有的文本字段都支持 Unicode。

  • 静态文本字段显示不会动态更改字符的文本。
  • 动态文本字段显示动态更新的文本，如体育得分、股票报价或天气报告。
  • 输入文本字段使用户可以将文本输入到表单或调查表中。

您可以在 Flash 中创建水平文本（从左到右流向）或静态垂直文本（从右到左流向或从左到右流向）。默认情况下，文本以水平方向创建。您可以选择首选参数使垂直文本成为默认方向，以及设置垂直文本的其他选项。

还可以创建滚动文本字段。请参阅创建滚动文本。

要创建文本，可以使用文本工具将文本块放在舞台上。创建静态文本时，可以将文本放在单独的一行中，该行会随着您键入的文本扩展，或将文本放在定宽文本块（适用于水平文本）或定高文本块（适用于垂直文本）中，文本块会自动扩展并自动折行。在创建动态文本或输入文本时，您可以将文本放在单独的一行中，或创建定宽和定高的文本块。

Flash 会在文本块的一角上显示一个手柄以标识该文本块的类型：

  • 对于扩展的静态水平文本，会在该文本块的右上角出现一个圆形手柄。

  • 对于具有定义宽度的静态水平文本，会在该文本块的右上角出现一个方形手柄。

  • 对于方向为从右到左并且扩展的静态垂直文本，会在该文本块的左下角出现一个圆形手柄。

  • 对于从右到左方向并且固定高度的静态垂直文本，会在该文本块的左下角出现一个方形手柄。

  • 对于方向为从左到右并且扩展的静态垂直文本，会在该文本块的右下角出现一个圆形手柄。

  • 对于从左到右方向并且固定高度的静态垂直文本，会在该文本块的右下角出现一个方形手柄。

  • 对于扩展的动态或输入文本块，会在该文本块的右下角出现一个圆形手柄。

  • 对于具有定义高度和宽度的动态或输入文本，会在该文本块的右下角出现一个方形手柄。

  • 对于动态可滚动文本块，圆形或方形手柄会成为实心黑块而不是空心手柄。请参阅创建滚动文本。

您可以在按住 Shift 键的同时双击动态和输入文本字段的手柄，以创建在舞台上输入文本时不扩展的文本块。这样您就可以创建固定大小的文本块，并且用多于它可以显示的文本填充它，从而创建滚动文本。请参阅创建滚动文本。

在您使用“文本”工具创建了文本字段之后，可以使用“属性”检查器指明要使用哪种类型的文本字段，以及设置某些值来控制文本字段及其内容在 SWF 文件中出现的方式。

设置垂直文本的首选参数：

  1. 选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后在“首选参数”对话框中单击“编辑”选项卡。
  2. 在“垂直文本”下，选择“默认文本方向”使垂直方向自动成为新文本块的方向。
  3. 选择“从右至左的文本流向”使垂直文本自动从右向左排列。
  4. 选择“无字距微调”以防止对垂直文本应用字距微调。（字距微调依然可在水平文本中使用。）有关字距微调的详细信息，请参阅设置字符间距、字距微调和字符位置。

要创建文本：

  1. 选择“文本”工具。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器中，从弹出菜单中选择一种文本类型以指定文本字段的类型：

    “动态文本”创建显示动态更新的文本的字段。

    “输入文本”创建用户能够输入文本的字段。

    “静态文本”创建不能动态更新的字段。

  4. 以下只适用于静态文本：在“属性”检查器中，单击“文本方向”按钮（在第一行，在“斜体字”按钮的右边），然后选择一个选项以指定该文本的方向：

    “水平”选项使文本从左向右水平排列（默认设置）。

    “垂直，从左向右”使文本从左向右垂直排列。

    “垂直，从右向左”使文本从右向左垂直排列。

    注意：如果文本为动态或输入文本，则垂直文本的布局选项会被禁用。只有静态文本才能具有垂直方向。

  5. 执行以下其中一项操作：
    • 要创建在一行中显示文本的文本块，单击您想让文本开始的地方。
    • 要创建定宽（对于水平文本）或定高（对于垂直文本）的文本块，可将指针放在您想让文本开始的地方，然后拖动到所需的宽度或高度。

    注意：如果您创建的文本块在您键入文本时扩展到越过舞台边缘，该文本不会丢失。要使手柄再次可见，可添加换行符，移动文本块，或选择“视图”>“工作区”。

  6. 按设置文本属性中所述，在“属性”检查器中选择文本属性。

更改文本块的尺寸：

  • 拖动它的调整大小手柄。

要在定宽或定高和可扩展之间切换文本块：

  • 双击调整大小手柄。


创建滚动文本

在 Flash 中创建滚动文本有多种方法。使用菜单命令或文本块手柄可以轻松使动态文本字段成为可滚动字段。

也可以将 ScrollBar 组件添加到文本字段，从而使它可以滚动。有关详细信息，请参阅ScrollPane 组件。

如果要使用动作脚本，可以使用 TextField 对象的 scroll 和 maxscroll 属性在文本块中控制垂直滚动，以及使用 hscroll 和 maxhscroll 属性在文本块中控制水平滚动。请参阅创建滚动文本。

要使动态文本块可滚动，请执行以下操作之一：

  • 按住 Shift 键并双击动态文本块上的手柄。
  • 用选取工具选择动态文本块，然后选择“文本”>“可滚动”。
  • 用选取工具选择动态文本块。右击 (Windows) 或按住 Control 键单击 (Macintosh) 动态文本块，然后选择“文本”>“可滚动”。


文本属性

您可以设置文本的字体和段落属性。字体属性包括字体系列、磅值、样式、颜色、字符间距、自动字距微调和字符位置。段落属性包括对齐、边距、缩进和行距。

可以优化文本以使较小的文本更清晰易读。请参阅关于锯齿文本。

对于静态文本，字体轮廓在所发布的 SWF 文件（SWF 文件）中导出。您可以选择使用设备字体，而不是导出字体轮廓（仅限水平文本）。请参阅关于字体轮廓和设备字体。

对于动态或输入文本，Flash 会存储在创建文本时使用的字体名称。在播放 Flash 应用程序时，Flash Player 使用这些名称在用户的系统上查找相同或类似的字体。也可以选择将字体轮廓嵌入到动态或输入文本字段中。嵌入的字体轮廓可能会增加文件大小，但它可确保用户获得正确的字体信息。请参阅设置动态和输入文本选项。

选定文本后，可以使用“属性”检查器更改字体和段落属性，并可以指示 Flash 使用设备字体而不是嵌入的字体轮廓信息。

创建新文本时，Flash 会使用当前文本属性。要更改现有文本的字体或段落属性，必须先选择文本。


关于锯齿文本

利用“属性”检查器中的“锯齿文本”按钮可让您渲染文本，以便更清楚地显示较小的文本。如果最终用户具有 Flash Player 7 或更高版本，则此选项可用于静态、动态和输入文本。如果用户具有 Flash Player 的早期版本，则此选项只能用于静态文本。请参阅选择字体、磅值、样式和颜色。

“锯齿文本”选项通过沿像素边界对齐文本轮廓使较小的文本更清晰易读。这会使文本在显示时带有锯齿（即使启用了消除锯齿功能）。有关消除文本锯齿的信息，请参阅加速文档显示。

启用了“锯齿文本”时，当前所选内容中的所有文本都会受到影响。对于所有磅值的文本，此功能均以相同的方式运行。

在 Flash 文档中使用较小的文本时，请记住以下准则：

  • 非常小的文本（8 磅以下）可能无法清楚显示（即使选择了“锯齿文本”）。
  • San serif 文本（例如 Helvetica 或 Arial）在小字体时要比 serif 文本显示得更清楚。
  • 某些字样（例如粗体和斜体）可能会降低较小文本的可读性。
  • 在某些情况下，Flash 中的文本会比其他应用程序中相同磅值的文本显得略小一些。


选择字体、磅值、样式和颜色

您可以使用“属性”检查器设置选定文本的字体、磅值、样式和颜色。设置文本颜色时，您只能使用纯色，而不能使用渐变。要向文本应用渐变，必须将该文本转换为组成它的线条和填充。请参阅分离文本。

要用“属性”检查器选择字体、磅值、样式和颜色：

  1. 选择“文本”工具。
  2. 要向现有文本应用设置，请使用“文本”工具在舞台上选择文本块。
  3. 如果看不到“属性”检查器，请选择“窗口”>“属性”。
  4. 在“属性”检查器中，单击“字体”文本框旁边的三角形，然后从列表中选择一种字体，或输入字体名称。

    注意：字体 _sans、_serif 和 _typewriter 是设备字体。这些字体的字体轮廓信息并没有嵌入到 Flash SWF 文件中。设备字体只能用于水平文本。请参阅关于字体轮廓和设备字体。

  5. 单击“磅值”值旁边的三角形，然后拖动滑块来选择一个值，或者输入字体大小值。

    文本大小以磅值设置，与当前标尺单位无关。

  6. 要应用粗体或斜体样式，可单击粗体按钮或斜体按钮。
  7. 单击“锯齿文本”按钮（就在“粗体”按钮的下面）以优化文本。
  8. 要为文本选择填充颜色，可单击颜色框，然后执行以下操作之一：
    • 从颜色弹出窗口中选择一种颜色。
    • 在颜色弹出窗口的文本框中键入颜色的十六进制值。
    • 单击该弹出窗口右上角的“颜色选择器”按钮，然后从系统的“颜色选择器”中选择一种颜色。

    有关选择颜色的详细信息，请参阅处理颜色。


设置字符间距、字距微调和字符位置

字符间距会在字符之间插入统一的间隔。您可以使用字符间距调整选定字符或整个文本块的间距。

字距微调控制着字符对之间的距离。许多字符都有内置的字距微调信息。例如，A 和 V 之间的间距通常小于 A 和 D 之间的间距。要使用字体的内置字距微调信息来调整字符间距，可以使用字距调整选项。

对于水平文本，间距和字距微调设置了字符间的水平距离。对于垂直文本，间距和字距微调设置了字符间的垂直距离。

对于垂直文本，可以在 Flash 首选参数中将字距微调设置为默认关闭。当在首选参数中关闭垂直文本的字距微调设置时，您可以让该选项在“属性”检查器中处于选中状态，这样字距微调就只适用于水平文本。要设置垂直文本的首选参数，请参阅创建文本。

使用“属性”检查器，您还可以将上标或下标类型应用到您的文本。

设置字符间距、字距微调和字符位置：

  1. 选择“文本”工具。
  2. 要向现有文本应用设置，请使用“文本”工具在舞台上选择文本块。
  3. 如果“属性”检查器尚未显示出来，请选择“窗口”>“属性”。
  4. 在“属性”检查器中，设置下列选项：
    • 要指定字符间距，单击“字符间距”值旁边的三角形，然后拖动滑块来选择一个值，或在文本框中输入一个值。
    • 要使用字体的内置字距微调信息，可选择字距调整。
    • 要指定字符位置，单击“字符位置”选项旁边的三角形，然后从该菜单中选择一个位置：“正常”可以将文本放在基线上，“上标”可以将文本放在基线之上（水平文本）或基线的右边（垂直文本），而“下标”将文本放在基线之下（水平文本）或基线的左边（垂直文本）。


设置对齐、边距、缩进和行距

对齐方式确定了段落中每行文本相对于文本块边缘的位置。水平文本相对于文本块的左侧和右侧边缘对齐，垂直文本相对于文本块的顶部和底部边缘对齐。文本可以与文本块的一侧边缘对齐，或者在文本块中居中对齐，或者与文本块的两侧边缘对齐（两端对齐）。

页边距确定了文本块的边框和文本段落之间的间隔量。缩进确定了段落边界和首行开头之间的距离。对于水平文本，缩进将首行文本向右移动指定距离。对于垂直文本，缩进将首行文本向下移动指定距离。

行距确定了段落中相邻行之间的距离。对于垂直文本，行距调整各个垂直列之间的距离。

设置水平文本的对齐、边距、缩进和行距：

  1. 选择“文本”工具。
  2. 要向现有文本应用设置，请使用“文本”工具在舞台上选择文本块。
  3. 选择“窗口”>“属性”。
  4. 在“属性”检查器中，单击“格式选项”，然后设置下列选项：
    • 要设置对齐方式，可单击左对齐、居中、右对齐或两端对齐按钮。
    • 要设置左边距或右边距，可单击左边距或右边距值旁边的三角形，然后拖动滑块以选择一个值，或者在数字字段中输入一个值。
    • 要指定缩进，可单击“缩进”值旁边的三角形，然后拖动滑块以选择一个值，或者在数字字段中输入一个值。（是右行缩进还是左行缩进，取决于文本流向是从左向右还是从右向左。）
    • 要指定行距，可单击“格式”选项。单击“行距”值旁边的三角形，然后拖动滑块以选择一个值，或者在数字字段中输入一个值。

要设置垂直文本的对齐、边距、缩进和行距：

  1. 选择“文本”工具。
  2. 要对现有文本应用设置，请从舞台上选择文本块。
  3. 选择“窗口”>“属性”。
  4. 在“属性”检查器中，单击“格式选项”，然后设置下列选项：
    • 要设置对齐方式，可单击上对齐、居中下对齐或两端对齐按钮。
    • 要设置上边距或下边距，可使用左边距或右边距控件。单击左边距值旁边的三角形来设置上边距，或者右边距值旁边的三角形来设置下边距，然后拖动滑块选择一个值，或者在数字字段中输入一个值。
    • 要指定缩进，可单击“缩进”值旁边的三角形，然后拖动滑块以选择一个值，或者在数字字段中输入一个值。
    • 要指定行距，可单击“行距”值旁边的三角形，然后拖动滑块选择一个值，或者在数字字段中输入一个值。


使用户可以选择文本

在处理静态水平文本时，您可以指定观看 Flash 应用程序的用户可以选择字体。选择文本之后，用户可以复制、剪切文本，然后将文本粘贴到新的文档中。

使用户可以选择水平文本：

  1. 选择您想让用户可以选择的水平文本。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器中，选择“静态文本”或“动态文本”（默认情况下“输入文本”是可选的）。
  4. 单击“可选”按钮。


使用设备字体（仅适用于静态水平文本）

在您创建静态文本时，可以指定 Flash Player 使用设备字体来显示某些文本块。使用设备字体可以减小文档的文件大小，这是因为文档并不包含文本的字体轮廓。使用设备字体也可以在文本小于 10 磅时提高清晰度。

可以使用影片剪辑来遮罩以设备字体设置的文本。请参阅关于遮罩设备字体。

指定使用设备字体来显示文本：

  1. 从舞台中选择包含您想用设备字体显示其文本的文本块。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器中，从弹出菜单中选择“静态文本”。
  4. 选择“使用设备字体”。


设置动态和输入文本选项

“属性”检查器使您可以指定一些选项，这些选项可控制动态文本和输入文本在 Flash 应用程序中出现的方式。

设置动态文本和输入文本的选项：

  1. 在一个现有的动态文本字段中单击。

    要创建一个新的动态文本字段，请参阅创建文本。

  2. 在“属性”检查器中，确保弹出菜单中显示了动态或输入。执行以下任意操作：
    • 对于“Instance Name”，输入该文本字段的实例名称。
    • 锁定文本的高度、宽度和位置。
    • 选择字体类型和样式。
    • 选择“多行”可以在多行中显示文本，选择“单行”可以在一行中显示文本，而选择“多行不换行”则在多行中显示文本，但只在最后一个字符是换行字符，如 Enter (Windows) 或 Return (Macintosh) 时才会换行。
    • 单击“可选”按钮使用户能够选择动态文本。取消选择此选项将阻止用户选择动态文本。
    • 单击“将文本呈现为 HTML”按钮可以保留丰富的文本格式，如字体和超级链接，并带有相应的 HTML 标记。请参阅保留丰富文本格式。
    • 单击“显示边框”按钮可以为文本字段显示黑色边框和白色背景。
    • 对于“变量”，输入该文本字段的变量名称。
    • 为嵌入的字体轮廓选项选择字符。在“字符选项”对话框中，单击“无字符”嵌入字体轮廓，或单击“指定范围”嵌入字体轮廓。如果选中了“指定范围”，则您可以从滚动列表中选择一个或多个选项，只键入要嵌入到文档的那些字符，或者单击“自动填充”将选定文本的字符复制到文本框。然后单击“确定”。


创建字体元件

要将一种字体作为共享库项，可以在“库”面板中创建字体元件。然后给该元件分配一个标识符字符串和一个公布包含该字体元件的文档的 URL。这样即可链接到该字体并在 Flash 应用程序中使用它。

注意：将字体元件用于动态或输入文本时，您也必须嵌入字体轮廓信息。请参阅设置动态和输入文本选项。

有关从其他文档链接到共享字体元件的信息，请参阅使用共享库资源。

创建字体元件：

  1. 打开您想向其中添加字体元件的库。
  2. 从“库”面板右上角的选项菜单中选择“新建字型”。
  3. 在“字体符号属性”对话框中，将该字体元件的名称输入到“名称”文本框中。
  4. 从“字体”菜单中选择一种字体，或者将字体名称输入到“字体”文本框中。
  5. 如果要对该字体应用样式，选择“粗体”或“斜体”。
  6. 单击“确定”。

为字体元件指定标识符字符串：

  1. 在“库”面板中选择字体元件。
  2. 执行以下其中一项操作：
    • 从“库”面板右上角的选项菜单中选择“链接”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh)“库”面板中的字体元件名称，然后从上下文菜单中选择“链接”。
  3. 在“链接属性”对话框的“链接”下，选择“为运行时共享导出”。
  4. 在“标识符”文本框中，输入一个字符串以标识该字体元件。
  5. 在“URL”文本框中，输入包含该字体元件的 SWF 文件将要公布到的 URL。
  6. 单击“确定”。

要在 Flash 应用程序中使用该字体，请将字体元件复制到目标 FLA 文件。有关详细信息，请参阅在文档之间拷贝库资源。


关于编辑文本

您可以使用最常用字处理技术编辑 Flash 中的文本。可以使用“剪切”、“复制”和“粘贴”命令在 Flash 文件内以及在 Flash 和其他应用程序之间移动文本。


选择文本

在编辑文本或更改文本属性时，必须先选择要更改的字符。

要在文本块内选择字符：

  1. 选择“文本”工具。
  2. 执行以下其中一项操作：
    • 进行拖动以选择字符。
    • 进行双击可以选择一个单词。
    • 进行单击可以指定选定字符串的开始字符，按 Shift 键单击可以指定选定字符串的结束字符。
    • 按下 Ctrl+A (Windows) 或 Command+A (Macintosh) 组合键可以选中文本块中的所有文本。

选择文本块：

  • 选择选取工具，然后单击文本块。按住 Shift 键单击可选择多个文本块。


拼写检查

检查拼写功能可让您在整个 Flash 文档中检查文本的拼写。

可以使用“拼写设置”选择各种用于拼写检查的选项：

  • 选择“文档”选项以指定将检查 Flash 文档中的哪些元素，包括文本字段、场景和层名称、帧标签和注释及其他。
  • 选择一本或多本在检查拼写时使用的内置字典。
  • 创建包含您自己添加的单词和短语的“个人字典”。
  • 选择“检查选项”以指定在拼写检查时处理特定单词和字符类型（如非字母的单词、Internet 地址）的方式。

当检查拼写功能指出在指定的字典中未找到某个单词时，可以选择处理该单词的方式：

  • 更改所指出的单词或在所有地方出现的该单词。
  • 选择建议的单词以用于更改所指出的单词。
  • 忽略所指出的单词或在所有地方出现的该单词。
  • 将所指出的单词添加到您的“个人字典”中。
  • 删除所指出的单词。


使用“拼写设置”

使用“拼写设置”对话框可指定用于检查拼写功能的选项。在初次检查拼写之前，您必须在“拼写设置”对话框中指定拼写选项，以初始化检查拼写功能。初始化检查拼写功能之后，可以使用“拼写设置”对话框更改用于拼写检查的选项。

要使用“拼写设置”：

  1. 打开“拼写设置”对话框。执行以下其中一项操作：
    • 选择“文本”>“拼写设置”。（如果之前尚未初始化检查拼写功能，则使用此选项。）
    • 在“检查拼写”对话框（“文本”>“检查拼写”）中，单击“设置”按钮。
  2. 在“拼写设置”对话框中，选择“文档选项”列表中的任意一项，以指定文档级的拼写检查选项。可以选择选项以在文档的指定文本源中检查拼写、在拼写检查期间选择文本项，以及允许在拼写检查期间即时编辑文本项。
  3. 在“字典”滚动列表中，从与您的产品一起安装的 Macromedia 字典中选择一本或多本字典。必须至少选择一本字典才能启用拼写检查功能。
  4. 在“个人字典”下，输入路径或单击文件夹图标，然后浏览到要用作个人字典的文档。
  5. 要向个人字典添加单词和短语，单击“编辑个人字典”。在“个人字典”对话框中，将每个新的项目输入到文本字段的单独一行中。单击“确定”以保存项目和关闭对话框。
  6. 在“检查选项”下选择任意一项，以指定单词级的拼写检查选项。可以选择选项以忽略特定的单词或字符类型、查找重复的单词、分开缩写的或带连字号的单词，或者提出符号语音学或排字规范的建议。
  7. 单击“确定”以保存设置和退出“拼写设置”。


使用检查拼写功能

要检查文档中的文本拼写，请使用检查拼写功能，它根据您在“拼写设置”中所选的选项检查拼写。当拼写检查器指出在字典中未找到某个单词时，可以选择更改、忽略或删除该单词，或者将其添加到“个人字典”中。

要使用“检查拼写”功能：

  1. 选择“文本”>“检查拼写”以查看“检查拼写”对话框。

    左上角的文本块标识在所选的字典中未找到的单词，也标识文本所在位置的元素类型（例如文本字段、帧标签或其他）。

  2. 执行以下其中一项操作：
    • 单击“添加到个人设置”按钮以将该单词添加到您的个人字典中。
    • 单击“忽略”以保持该单词不变。单击“全部忽略”以将所有在文档中出现的该单词保持不变。
    • 在“更改为”文本框中输入一个单词或从“建议”滚动列表中选择一个单词。然后，单击“更改为”以更改该单词，或者单击“全部更改”以更改所有在文档中出现的该单词。
    • 单击“删除”从文档中删除该单词。
  3. 要更改“拼写设置”选项，单击“设置”。
  4. 要结束拼写检查，请执行以下操作之一：
    • 单击“关闭”以在 Flash 到达文档的结尾之前结束拼写检查。
    • 继续进行拼写检查，直到您看到 Flash 已到达文档结尾的通知，然后单击“否”以结束拼写检查。单击“是”会从文档的开始处重新开始拼写检查。


关于文本变形

您可以使用对其他对象进行变形的方式来变形文本块。您可以缩放、旋转、倾斜和翻转文本块以产生有趣的效果。当您将文本块当作对象进行缩放时，磅值的增减不会反映在“属性”检查器中。

已变形文本块中的文本依然可以编辑，尽管严重的变形可能会使文本变得难以阅读。

有关文本块变形的详细信息，请参阅处理图形对象。


将时间轴特效用于文本

可以使用时间轴特效在文本中轻松添加动画。时间轴特效是预建的动画效果，可让您轻松地在文本中添加动画。例如，可以使用时间轴特效使文本弹跳起来、淡入或淡出或产生爆炸效果。有关使用每种特效的详细信息，请参阅使用时间轴特效。


分离文本

您可以分离文本，将每个字符放在一个单独的文本块中。分离文本之后，就可以迅速将文本块分散到各个层，然后分别制作每个文本块的动画。有关将对象分散到层的信息，请参阅将对象分散到层以应用补间动画。有关动画的常规信息，请参阅创建动画。

注意：您不能分离可滚动文本字段中的文本。

您还可以将文本转换为组成它的线条和填充，以便对它进行改变形状、擦除和其他操作。如同任何其他形状一样，您可以单独将这些转换后的字符分组，或将它们更改为元件并制作为动画。将文本转换为线条和填充之后，就不能再编辑文本。

分离文本：

  1. 选择选取工具，然后单击文本块。
  2. 选择“修改”>“分离”。选定文本中的每个字符会被放置在一个单独的文本块中。文本依然在舞台的同一位置上。
  3. 再次选择“修改”>“分离”将舞台上的字符转换为形状。

    注意：分离命令只适用于轮廓字体，如 TrueType 字体。当您分离位图字体时，它们会从屏幕上消失。只有在 Macintosh 系统上才能分离 PostScript 字体。


将文本链接到 URL（只适用于水平文本）

您可以将水平文本链接到 URL ，从而使用户单击该文本就可以跳转到其他文件。

将水平文本链接到 URL：

  1. 选择一些文本或文本块。执行以下其中一项操作：
    • 使用文本工具选择文本块中的文本。
    • 使用选取工具在舞台上选择一个文本块。这会将该文本块中的所有文本都链接到 URL。
  2. 如果“属性”检查器尚未显示出来，请选择“窗口”>“属性”。
  3. 对于链接，输入您想将文本块链接到的 URL。

    注意：要创建指向电子邮件地址的链接，可使用“mailto:URL”。例如，对于 Macromedia Flash Wish URL，输入 mailto:wish-flash@macromedia.com。


保留丰富文本格式

Flash 使您可以在输入文本字段和动态文本字段中保留丰富文本格式。如果您在“属性”检查器中选择“将文本呈现为 HTML”格式选项，或者将 TextField 对象的 html 属性设置为 true，则在您导出 SWF 文件时，Flash 会通过自动应用相应的 HTML 标记在文本字段中保留基本文本格式（如字体、样式、颜色和大小）和超级链接。您可以将 HTML 标记应用到文本字段，作为 TextField 对象的 htmlText 属性的值。您必须为此文本字段提供一个实例名称，以使用 htmlText 属性。

如果您想将您的 Flash 文档公布为 Flash Player 5 或更低版本，则您可以使用该文本字段变量，以便将 HTML 标记应用于文本字段。

文本字段中支持下列 HTML 标记：a、b、font color、font face、font size、i、p 和 u。

文本字段中支持下列 HTML 属性：leftmargin、rightmargin、align、indent 和 leading。

要使用文本字段实例名称保留丰富文本格式：

  1. 请执行下列操作之一，以将一个实例名指定给该文本字段：
    • 使用“文本”工具在舞台上创建一个文本字段。在“属性”检查器中给该文本字段指定一个实例名称。
    • 使用动作脚本的 createTextField 方法动态创建一个文本字段。给该文本字段指定一个实例名称，将其作为 createTextField 方法的参数。
  2. 执行以下其中一项操作：
    • 在“属性”检查器中选择“将文本呈现为 HTML”选项。
    • 在“动作”面板中，将 TextField 对象的 html 属性设置为 true，如下所示：
      instanceName.html = true;
  3. 在“动作”面板中，将 htmlText 属性设置为包含 HTML 标记的值。

    例如，如果在舞台上已经有一个实例名称为 instName 的动态文本字段，则下列代码将以粗体呈现该文本：

    instName.htmlText = "<b>Chris</b>";

使用文本字段变量保留丰富文本格式：

  1. 从舞台中选择文本字段。
  2. 在“属性”检查器中给文本字段指定一个变量名称。
  3. 执行以下其中一项操作：
    • 在“属性”检查器中选择“将文本呈现为 HTML”选项。
    • 在“动作”面板中，将 TextField 对象的 html 属性设置为 true。
  4. 将该文本字段变量设置为一个包含 HTML 标记的值。

    例如，下面的代码给变量名称为 txt 的文本字段指定了一个值。如果您选中了“属性”检查器中的“将文本呈现为 HTML”选项，或者将 html 属性设置为 true，该文本就会以粗体呈现：

    txt = "<b>Chris</b>";

    在下面的示例中，文本字段的变量名称也是 txt。因为 TextField 对象的 html 属性值设置为 true，所以您可以使用该变量名称以粗体呈现文本字段，而不用选择“属性”检查器中的“将文本呈现为 HTML”选项：

    instName.html = true;
txt = "<b>Chris</b>";


字体替换

如果处理的文档包含您的系统中没有安装的字体（例如，您从另一位设计者那里收到的文档），Flash 会用您系统中可用的字体来替换缺少的字体。您可以选择使用系统中的哪种字体来替换缺少的字体，或者可以让 Flash 用“Flash 系统默认字体”（在“常规首选参数”中指定）来替换缺少的字体。

注意：在编辑 Flash 文档时替换缺少的字体不会更改在 Flash 文档中指定的字体。

如果您在系统上安装了以前缺少的字体并重新启动了 Flash，则该字体将显示在任何使用它的文档中，并且“缺少字体”对话框中会删除该字体。


选择替换字体

包含缺少的字体的舞台第一次显示在背景上时，会出现一个警告框指明文档中缺少字体。如果您发布或导出的文档没有显示包含缺少字体的任何场景，那么警告框会在发布或导出操作期间出现。如果您确定要选择替换字体，会出现“字体映射”对话框，它会列出文档中的所有缺少字体并让您可以为每种缺少字体选择一种替换字体。

注意：如果文档包含许多缺少字体，在 Flash 生成缺少字体列表时可能出现延迟。

您可以将缺少字体应用到当前文档的新文本或现有文本中。该文本会使用替换字体在您的系统上显示，但缺少字体信息会和文档一同保存起来。如果文档在包含缺少的字体的系统上再次打开，文本会使用该字体显示。

当文本以缺少字体显示时，文本属性，如字体大小、行距、字距微调等可能需要调整，因为您应用的格式基于替换字体的文本外观。

要指定字体替换：

  1. 指定字体替换首选参数。当出现“缺少字体”警告时，可执行以下操作之一：
    • 单击“选择替换字体”以便从您系统中安装的字体中选择替换字体，然后继续执行步骤 2。
    • 单击“使用默认值”可以使用 Flash 系统默认字体来替换所有缺少字体并去除该“缺少字体”警告。
  2. 在“字体映射”对话框中，单击“缺少字体”列中的某种字体以选定它。按 Shift 键单击以选择多种缺少字体，将它们全部映射为同一种替换字体。

    在您选择替换字体之前，默认替换字体都会显示在“映射为”列中。

  3. 从“替换字体”弹出菜单中选择一种字体。
  4. 对所有缺少的字体重复执行步骤 2 到步骤 3。
  5. 单击“确定”。


处理替换字体

您可以使用“字体映射”对话框更改映射为缺少字体的替换字体，查看已经您系统上的 Flash 中映射的所有替换字体，以及删除从您的系统映射的替换字体。还可以关闭“缺少字体”警告以阻止该警告出现。

在处理包含缺少字体的文档时，缺少字会显示在“属性”检查器的字体列表中。当您选择替换字体时，替换字体也会显示在该字体列表中。

要查看文档中所有缺少的字体并重新选择替换字体：

  1. 当文档在 Flash 中处于活动状态时，选择“编辑”>“字体映射”。
  2. 按选择替换字体中介绍的过程选择一种替换字体。

查看系统中保存的所有字体映射以及删除字体映射：

  1. 关闭 Flash 中的所有文档。
  2. 选择“编辑”>“字体映射”。
  3. 要删除字体映射，可选择该映射，然后按下 Delete 键。
  4. 单击“确定”。

要关闭“缺少字体”警告，可执行以下操作之一：

  • 要关闭当前文档的警告，可在“缺少字体”警告框中选择“不再对本文档显示此对话框，始终使用替换字体”。选择“编辑”>“字体映射”再次查看该文档的映射信息。
  • 要对所有文档关闭此警告，可选择“编辑”>“首选参数”(Windows) 或“Flash”>“首选参数”(Macintosh)，然后单击“警告”选项卡。取消选择“字体缺少时发出警告”，然后单击“确定”。再次选择该选项可以打开该警告。


文本和动作脚本

动态或输入文本字段是动作脚本 TextField 对象的一个实例。当您创建文本字段时，可以在“属性”检查器中给它指定一个实例名称。您可以在动作脚本语句中使用该实例名称，通过 TextField 和 TextFormat 对象来设置、更改该文本字段及其内容并设定其格式。

TextField 对象的属性和 MovieClip 对象的属性相同，并且还有一些方法使您可以设置、选择和操作文本。TextFormat 对象使您可以设置文本的字符和段落值。您可以使用这些动作脚本对象代替文本“属性”检查器来控制文本字段的设置。

可以使用文本字段的变量名称或实例名称，为其分配包含 HTML 标记的文本。Flash 用动作脚本保留应用于文本字段的丰富文本格式。

如果为文本字段指定变量，文本字段就会显示该变量的值。您可以使用动作脚本将该变量传递给 Flash 应用程序的其他部分，传递给服务器端应用程序以便将它存储在数据库中，以及执行其他诸如此类的操作。也可以通过从服务器端应用程序读取该变量的值或者从 Flash 应用程序的另一部分加载该变量值来替换它。有关使用变量的详细信息，请参阅关于变量。有关连接到外部应用程序的详细信息，请参阅使用外部数据。


动态创建和删除文本字段

可以使用 MovieClip 对象的 createTextField 方法来创建一个新的空文本字段，将它作为调用该方法的影片剪辑的子项。可以使用 removeTextField 方法删除用 createTextField 创建的文本字段；该方法对于在时间轴上手动创建的文本字段并不起作用。

当您创建文本字段时，可以使用 TextField 对象来设置该文本字段的属性。如果不设置属性，新文本字段将接收一组默认属性。新文本字段的默认属性如下：

type = "dynamic"
border = false
background = false
password = false
multiline = false
html = false
embedFonts = false
variable = null
maxChars = null

创建了文本字段之后，就可以使用 TextFormat 对象来格式化文本。您必须创建一个新的 TextFormat 对象，然后将它作为参数传递给 TextField 对象的 setTextFormat 方法。用 createTextField 方法创建的文本字段会接收到下面的默认 TextFormat 对象：

font = "Times New Roman"
size = 12
color = 0x000000
bold = false
italic = false
underline = false
url = ""
target = ""
align = "left"
leftMargin = 0
rightMargin = 0
indent = 0
leading = 0
bullet = false
tabStops = [] (empty array)

创建动态文本字段：

  1. 选择将接收该操作的帧、按钮或影片剪辑。
  2. 选择“窗口”>“开发面板”>“动作”以打开“动作”面板（如果尚未打开）。
  3. 在“动作”工具箱中，选择“内置类”类别，然后选择 MovieClip 类别，接着选择“方法”类别。最后双击 createTextField 方法。
  4. 选择占位符 instanceName 并为将作为新文本字段的父级的影片剪辑输入一个实例名或者路径。对于本示例，输入别名 _root，这是因为主时间轴是父级。
  5. 输入下列参数的值：
    • Instance Name 是新文本字段的实例名称。对于本示例，输入 myText。
    • Depth 是指定层叠顺序的数字。对于本示例，输入 1。
    • X 是相对于父级剪辑的 x 轴坐标。对于本示例，输入 50。
    • Y 是相对于父级剪辑的 y 轴坐标。对于本示例，输入 50。

    “脚本”窗格中会显示如下代码：

    _root.createTextField("mytext",1,50,50,200,100);
  6. 在“动作”工具箱中，选择“内置类”类别，然后选择“影片”类别、“TextField”类别，接着选择“属性”类别。最后，双击 text 属性创建一个新行。对于本例，请使用“对象”参数字段中的 myText 替换占位符 instanceName。
  7. 在“值”字段中，输入这是我的第一个文本字段对象文本。脚本窗格中会显示如下文本：
    mytext.text = "this is my first text field object text";

    本示例创建了这样一个文本字段：实例名称为 myText、深度为 1、宽度为 200、高度为 100、x 值为 50、y 值为 50。

有关 TextField 对象的 createTextField 方法的详细介绍，请参阅TextField 类。


动态设置文本字段属性

要使用动作脚本来设置文本字段的属性，必须给该文本字段指定一个实例名称。如果是用文本工具在舞台上创建文本字段，可以在“属性”检查器中指定实例名称。如果要动态创建文本字段，可以将实例名称作为 createTextField 方法的参数进行指定。

动态设置文本字段属性：

  1. 选择“窗口”>“开发面板”>“动作”以打开“动作”面板（如果尚未打开）。
  2. 执行以下操作之一来创建文本字段：
    • 选择文本工具，然后在舞台上绘制一个文本字段。在“属性”检查器中给该文本字段指定一个实例名称。对于本示例，输入实例名称 myText。
    • 双击“动作”工具箱中 MovieClip 对象的 createTextField 方法，将它添加到“动作”面板的“脚本”窗格中。请参阅创建文本。对于本示例，输入作为 createTextField 方法的参数的实例名称 myText。
  3. 执行以下操作之一将文本放置在文本字段中：
    • 将文本输入到舞台的文本字段中。
    • 设置 TextField 对象的 text 属性。请参阅创建文本。
  4. 在“动作”工具箱中，选择“内置类”类别，然后选择“影片”类别、“TextField”类别，接着选择“属性”类别。最后，双击多行属性。
  5. 输入以下参数：
    • Object 是您想设置属性的文本字段的实例名称。
    • Value 是该属性的值。
  6. 对 wordWrap 属性和 border 属性重复步骤 4。“脚本”窗格中会显示如下代码：
    mytext.multiline = true;
mytext.wordWrap = true;
mytext.border = true;

有关 TextField 对象的方法的完整列表及每一种方法的详细介绍，请参阅TextField 类。


动态设定文本格式

您可以使用动作脚本的 TextFormat 对象来设置文本字段的属性。TextFormat 对象包含有关字符格式和段落格式的信息。字符格式信息描述单个字符的外观：字体名称、磅值、颜色和关联的 URL。段落格式信息描述段落的外观：左边距、右边距、首行缩进、左对齐、右对齐或居中对齐。

首先必须创建一个新的 TextFormat 对象。然后可以使用 TextField 对象的方法并将它们作为一个参数传递给 TextFormat 对象，从而设定字段中文本的格式。

文本字段中的每个字符都可以单独指定一个 TextFormat 对象。会检查段落中第一个字符的 TextFormat 对象以设定整个段落的格式。

动态设定文本格式：

  1. 选择“窗口”>“开发面板”>“动作”以打开“动作”面板（如果尚未打开）。
  2. 执行以下操作之一来创建文本字段：
    • 使用“文本”工具在舞台上创建一个文本字段。在“属性”检查器中给该文本字段指定一个实例名称。
    • 对于本示例，输入实例名称 myText。
    • 使用 MovieClip 对象的 createTextField 方法。请参阅创建文本。对于本示例，输入作为 createTextField 方法的参数的实例名称 myText。
  3. 执行以下操作之一将文本放置在文本字段中：
    • 将文本输入到舞台的文本字段中。
    • 设置 TextField 对象的 text 属性。请参阅创建文本。
    • 在“动作”工具箱中，依次选择“内置类”类别、“影片”类别、“TextFormat”类别。最后，双击 new TextFormat。对于本示例，在“对象”参数字段中输入 myformat。

      “脚本”窗格中会显示如下代码：

      myformat = new TextFormat();
  4. 在“动作”工具箱中，选择“内置类”类别，然后选择“影片”类别、“TextFormat”类别，接着选择“属性”类别。最后，双击 color。对 bullet 属性和 underline 属性重复此步骤。“脚本”窗格中会显示如下代码：
    myformat.color = 0xff0000;
myformat.bullet = true;
myformat.underline = true;
  5. 在“动作”工具箱中，选择“内置类”类别，然后选择“影片”类别、“TextField”类别，接着选择“方法”类别。最后，双击 setTextFormat。对于本示例，在“对象”参数字段中输入 myText。
  6. 在“对象”字段中，输入您在步骤 3 中创建的 TextFormat 对象的名称 myformat。“脚本”窗格中会显示如下代码：
    mytext.setTextFormat(myformat);

有关详细信息，请参阅使用 TextFormat 类。


使用文本字段事件触发脚本

您可以使用动作脚本来捕获文本字段中发生的事件，例如，可以确定用户是否更改或滚动了文本。您可以编写动作脚本语句，使用这些事件触发脚本使之运行。

您可以捕获下列文本字段事件：onChanged 和 onScroller。

使用文本字段事件触发脚本：

  1. 为文本字段指定一个实例名称。执行以下其中一项操作：
    • 使用“文本”工具在舞台上创建一个文本字段。在“属性”检查器中给该文本字段指定一个实例名称。
    • 使用动作脚本，通过 createTextField 方法动态创建一个文本字段。给该文本字段指定一个实例名称，将其作为 createTextField 方法的参数。
  2. 在“动作”面板中，依次选择“动作”工具箱中的“内置类”类别、“影片”类别、“TextField”类别和“事件”类别。最后，双击某一事件。对于本示例，使用 onChanged 方法。
  3. 用文本字段的实际实例名取代占位符 instanceName°
  4. 将动作脚本语句加入该函数内。这些语句会在文本字段更改时运行。


关于将层叠样式表 (CSS) 用于文本字段

可以将样式表附加到文本字段以控制文本的格式。Flash 支持 CSS 标记的子集。使用 TextField.StyleSheet 对象将样式表附加到文本文件。请参阅创建样式表对象。


创建滚动文本

可以使用 TextField 对象的 scroll 和 maxscroll 属性在文本块中控制垂直滚动，以及使用 hscroll 和 maxhscroll 属性在文本块中控制水平滚动。scroll 和 hscroll 属性包含一个数值，用于指定文本块中顶端的可见行；您可以读取和编写这两个属性。maxscroll 和 maxhscroll 属性包含一个数值，用于指定当文本的最底一行在文本块中可见时，文本块中的顶端可见行；您只能读取这两个属性。

使用滚动属性创建滚动文本：

  1. 为将包含滚动文本的文本字段指定一个实例名称。执行以下其中一项操作：
    • 使用“文本”工具在舞台上创建一个文本字段。在“属性”检查器中给该文本字段指定一个实例名称。
    • 使用动作脚本，通过 createTextField 方法动态创建一个文本字段。给该文本字段指定一个实例名称，将其作为 createTextField 方法的参数。
  2. 创建一个向上按钮和一个向下按钮，或选择“窗口”>“其他面板”>“公用库”>“按钮”，然后将这两个按钮拖到舞台上。您将使用这些按钮来上下滚动文本。
  3. 从舞台中选择向上按钮。
  4. 在“动作”面板中，选择“内置类”类别，然后选择“影片”类别、“TextField”类别，接着选择“属性”类别。最后，双击 scroll 属性将其添加到“脚本”窗格。
  5. 用您想滚动的文本字段的实例名替换 instanceName。
  6. 让滚动属性按 1 递增以向上滚动文本。代码应该如下所示：
    instName.scroll += 1;
  7. 从舞台中选择向下按钮。
  8. 重复步骤 4 和步骤 5。
  9. 让滚动属性按 1 递减以向下滚动文本。代码应该如下所示：
    instName.scroll -= 1;


使用导入的插图概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 可以使用在其他应用程序中创建的插图。可以导入各种文件格式的矢量图形和位图。如果您的系统安装了 QuickTime 4 或更高版本，则可以导入其他的矢量或位图文件格式。有关详细信息，请参阅导入矢量或位图文件的文件格式。可以将 Macromedia FreeHand 文件（版本 MX 或更低版本）和 Macromedia Fireworks PNG 文件直接导入到 Flash 中，并且保留那些格式中的属性。

当导入位图时，可以应用压缩和消除锯齿功能、将位图直接放置在 Flash 文档中、使用位图作为填充、在外部编辑器中编辑位图、将位图分离为像素并在 Flash 中编辑它或将位图转换为矢量图。请参阅处理导入的位图。

也可以将视频导入到 Flash 中。请参阅处理视频。

有关导入 WAV (Windows)、AIFF (Macintosh) 和 MP3（Windows 和 Macintosh）格式声音文件的信息，请参阅处理声音。


放置插图

Flash 能够识别各种矢量和位图格式。可以将插图导入到当前 Flash 文档的舞台中或导入到当前文档的库中，从而将插入放置到 Flash 中。也可以通过将位图粘贴到当前文档的舞台中来导入它们。所有直接导入到 Flash 文档中的位图都会自动添加到该文档的库中。

导入到 Flash 中的图形文件的大小必须至少为 2 x 2 像素。

可以使用 loadMovie 动作或方法在运行时期间将 JPEG 文件载入到 Flash 影片中。有关详细信息，请参阅loadMovie()。

Flash 按如下方式导入矢量图形、位图和图像序列：

  • 将矢量图像从 FreeHand 导入到 Flash 中时，可以选择保留 FreeHand 层、页面和文本块的选项。请参阅导入 FreeHand MX 文件。
  • 当从 Fireworks 导入 PNG 图像时，可以将文件作为能够在 Flash 中修改的可编辑对象进行导入，或作为可以在 Fireworks 中编辑和更新的平面化文件进行导入。
  • 可以选择保留图像、文本和辅助线的选项。请参阅导入 Fireworks PNG 文件。

    注意：如果通过剪切和粘贴从 Fireworks 中导入 PNG 文件，该文件会被转换为位图。

  • 将 Adobe Illustrator、EPS 或 PDF 文件导入到 Flash 时，可以选择转换页面和层的选项。可以选择栅格化所有内容，包括文本。请参阅导入 Adobe Illustrator、EPS 或 PDF 文件。
  • 可以直接导入到 Flash 文档（而不是导入到库）中的 SWF 和 Windows 元文件格式 (WMF) 文件的矢量图像是作为当前层中的一个组导入的。请参阅导入矢量或位图文件的文件格式和导入 Adobe Illustrator、EPS 或 PDF 文件。
  • 可以直接导入到 Flash 文档中的位图（扫描的照片、BMP 文件）是作为当前层中的单个对象导入的。Flash 保留导入位图的透明度设置。因为导入位图会增大 SWF 文件的文件大小，您可能需要压缩导入位图。请参阅设置位图属性。

    注意：通过拖放操作将位图从应用程序或桌面导入到 Flash 时，将不能保留位图透明。要保留透明度，请使用“文件”>“导入到舞台”或“导入到库”命令”以便导入文件。

  • 可以直接导入到 Flash 文档中的任何图像序列（例如 PICT 和 BMP 序列）是作为当前层的连续关键帧导入的。

有关特定文件格式的信息，请参阅导入矢量或位图文件的文件格式。

要将文件导入到 Flash 中：

  1. 执行以下其中一项操作：
    • 要将文件直接导入到当前的 Flash 文档中，请选择“文件”>“导入到舞台”。
    • 要将文件导入到当前 Flash 文档的库中，请选择“文件”>“导入到库”。（要使用文档中的库项目，直接将它拖到舞台中即可。请参阅使用元件、实例和库资源。）
  2. 在“导入”对话框中，从“文件类型”(Windows) 或“显示”(Macintosh) 弹出菜单中选择一种文件格式。
  3. 定位到所需的文件，然后选择它。

    如果导入文件具有多个层，Flash 可以创建新的层（这取决于导入文件的类型）。所有的新层都会显示在时间轴中。

    注意：如果要导入 Fireworks PNG 文件，请参阅导入 Fireworks PNG 文件。如果要导入 FreeHand 文件，请参阅导入 FreeHand MX 文件。如果要导入 Adobe Illustrator 文件，请参阅导入 Adobe Illustrator、EPS 或 PDF 文件。

  4. 单击“打开”。
  5. 如果要导入的文件名称以数字结尾，并且在同一文件夹中还有其他按顺序编号的文件，请选择是否导入文件序列。
    • 单击“是”导入所有的顺序文件。
    • 单击“否”只导入指定的文件。

    下面是可以用作序列的文件名的示例：

    Frame001.gif、Frame002.gif、Frame003.gif

    Bird 1、Bird 2、Bird 3

    Walk-001.ai、Walk-002.ai、Walk-003.ai

要将其他应用程序中的位图直接粘贴到当前的 Flash 文档中：

  1. 拷贝其他应用程序中的图像。
  2. 在 Flash 中，选择“编辑”>“粘贴到中心位置”或“编辑”>“粘贴到当前位置”。


导入矢量或位图文件的文件格式

Flash 可以导入不同的矢量或位图文件格式，这取决于您的系统上是否安装了 QuickTime 4 或更高版本。将 Flash 与 QuickTime 4 配合使用对于合作的项目特别有用，在此类项目中创作者既使用 Windows 平台，也使用 Macintosh 平台。QuickTime 4 扩展了这两个平台对某些文件格式（包括 Adobe Photoshop、PICT、QuickTime 影片以及其他类型）的支持。

无论是否安装了 QuickTime 4，都可以将以下的矢量或位图文件格式导入到 Flash MX 2004 中：

文件类型 | 扩展名 | Windows | Macintosh
Adobe Illustrator（版本 10 或更低版本，请参阅导入 Adobe Illustrator、EPS 或 PDF 文件） | .eps、.ai、.pdf |  |
AutoCAD DXF（请参阅 AutoCAD DXF 文件） | .dxf |  |
位图 | .bmp |  | （使用 QuickTime）
增强的 Windows 元文件 | .emf |  |
FreeHand | .fh7、.fh8、.fh9、.fh10、.fh11 |  |
FutureSplash 播放文件 | .spl |  |
GIF 和 GIF 动画 | .gif |  |
JPEG | .jpg |  |
PNG | .png |  |
Flash Player 6/7 | .swf |  |
Windows 元文件 | .wmf |  |

只有安装了 QuickTime 4 或更高版本，才能将以下位图文件格式导入到 Flash 中：

文件类型 | 扩展名 | Windows | Macintosh
MacPaint | .pntg |  |
Photoshop | .psd |  |
PICT | .pct、.pic | （作为位图） |
QuickTime 图像 | .qtif |  |
Silicon 图形图像 | .sgi |  |
TGA | .tga |  |
TIFF | .tif |  |


导入 Fireworks PNG 文件

可以将 Fireworks PNG 文件作为平面化图像或可编辑对象导入到 Flash 中。将 PNG 文件作为平面化图像导入时，整个文件（包括所有矢量插图）会被栅格化 或转换为位图图像。将 PNG 文件作为可编辑对象导入时，该文件中的矢量图会保留为矢量格式。将 PNG 文件作为可编辑对象导入时，可以选择保留 PNG 文件中存在的位图、文本和辅助线。

如果将 PNG 文件作为平面化图像导入，则可以从 Flash 中启动 Fireworks，然后编辑原始的 PNG 文件（具有矢量数据）。请参阅在外部编辑器中编辑位图。

当成批导入多个 PNG 文件时，只需选择一次导入设置。Flash 对于一批中的所有文件使用同样的设置。

注意：可以在 Flash 中编辑位图图像，方法是将位图图像转换为矢量图或将位图图像分离。请参阅将位图转换为矢量图形和分离位图。

导入 Fireworks PNG 文件：

  1. 选择“文件”>“导入到舞台”或“导入到库”。
  2. 在“导入”对话框中，从“文件类型”(Windows) 或“显示”(Macintosh) 弹出菜单中选择“PNG 图像”。
  3. 定位到 Fireworks PNG 图像，然后选择它。
  4. 单击“打开”。
  5. 在“Fireworks PNG 导入设置”对话框中，为“文件结构”选择以下其中一种结构：

    “导入为电影剪辑，并保留原有层”，会将 PNG 文件导入为影片剪辑，并且该影片剪辑元件内部的所有帧和层都不变。

    “导入到当前场景的新层” ，会将 PNG 文件导入到堆叠顺序顶部的单独新层的当前 Flash 文档中。Fireworks 层会平面化为单独的一层。Fireworks 帧包含在该新层中。

  6. 对于“对象”，请选择以下其中一项：

    “如需保持原有外观，则进行栅格化”，会将 Fireworks 填充、笔触和效果保留在 Flash 中。

    “保持所有的路径为可编辑状态”，会将所有对象保留为可编辑矢量路径。某些 Fireworks 填充、笔触和效果将会在导入时丢失。

  7. 对于“文本”，请选择以下其中一项：

    “如需保持原有外观，则进行栅格化”，会在将文本导入到 Flash 时保留 Fireworks 填充、笔触和效果。

    “保持所有的路径为可编辑状态”，会将所有文本保持为可编辑状态。某些 Fireworks 填充、笔触和效果将会在导入时丢失。

  8. 选择“导入为单个平面化图像”，会将 PNG 文件平面化为单独的位图图像。如果选择此选项，则所有其他选项都会变成灰色。
  9. 单击“确定”。


导入 FreeHand MX 文件

您可以将版本 7 或更高版本中的 FreeHand 文件直接导出到 Flash 中。FreeHand MX 是创建要导入到 Flash 中的矢量图形的最佳选择，因为这样可以保留 FreeHand 层、文本块、库元件和页面，并可以选择要导入的页面范围。如果导入的 FreeHand 文件为 CMYK 颜色模式，则 Flash 会将该文件转换为 RGB。

当导入 FreeHand 文件时，请记住以下原则：

  • 当要导入的文件有两个重叠的对象，而您又想将这两个对象保留为单独的对象，则可以将这两个对象放置在 FreeHand 的不同层中，然后在导入文件时在 Flash 的“FreeHand 导入”对话框中选择“图层”。（如果将一个层上的多个重叠对象导入到 Flash 中，则重叠的形状将在交集点处分割，就像在 Flash 中创建的重叠对象一样。）
  • 当导入具有渐变填充的文件时，Flash 最多支持一个渐变填充中有八种颜色。如果 FreeHand 文件包含具有多于八种颜色的渐变填充时，Flash 会创建剪辑路径来模拟渐变填充。剪辑路径会增大文件的大小。要尽量减小文件的大小，请在 FreeHand 中使用具有八种或更少颜色的渐变填充。
  • 当导入具有混合的文件时，Flash 会将混合中的每个步骤导入为一个单独的路径。因此，FreeHand 文件的混合中包含的步骤越多，Flash 中的导入文件将变得越大。
  • 如果导入文件中包含具有方头的笔触，Flash 会将它转换为圆头。
  • 如果导入文件中具有灰度图像，则 Flash 会将该灰度图像转换为 RGB 图像。这种转换会增大导入文件的大小。
  • 如果导入的文件中具有 EPS 图像，则必须在“FreeHand 导入首选参数”中选择“导入时转换可编辑 EPS”选项，然后再将 EPS 放置到 FreeHand 中。如果不选择此选项，则 EPS 图像导入到 Flash 后将无法查看。此外，Flash 不会显示导入的 EPS 图像的信息（无论在 FreeHand 中使用的“首选参数”设置是什么）。

导入 FreeHand 文件：

  1. 选择“文件”>“导入到舞台或文件”>“导入到库”。
  2. 在“导入”对话框中，从“文件类型”(Windows) 或“显示”(Macintosh) 弹出菜单中选择“FreeHand”。
  3. 定位到 FreeHand 文件，然后选择它。
  4. 单击“打开”。
  5. 在“FreeHand 导入设置”对话框中，为“映射的页面”选择一个设置：

    “场景”会将 FreeHand 文档中的每个页面都转换为 Flash 文档中的一个场景。

    “关键帧”会将 FreeHand 文档中的每个页面转换为 Flash 文档中的一个关键帧。

  6. 对于“映射”的“图层”，请选择以下其中一项：

    “图层”会将 FreeHand 文档中的每个层转换为 Flash 文档中的一个层。

    “关键帧”会将 FreeHand 文档中的每个层转换为 Flash 文档中的一个关键帧。

    “平面化”会将 FreeHand 文档中的所有层转换为 Flash 文档中的单个平面化的层。

  7. 对于“页面”，请选择以下其中一项：
    • 选择“全部”将导入 FreeHand 文档中的所有页面。
    • 在“从”和“到”中输入页码，将导入页码范围内的 FreeHand 文档。
  8. 对于选项，请选择以下任意选项：

    “包括不可见层”将导入 FreeHand 文档中的所有层（包括可见层和隐藏层）。

    “包括背景层”会随 FreeHand 文档一同导入背景层。

    “保持文本块”会在 Flash 文档中将 FreeHand 文档中的文本保持为可编辑文本。

  9. 单击“确定”。


导入 Adobe Illustrator、EPS 或 PDF 文件

Flash 可以导入版本 6 或更高版本格式的 Adobe Illustrator 文件、任何版本的 EPS 文件，以及版本 1.4 或更低版本格式的 PDF 文件。

注意：PDF 版本号与 Adobe Acrobat 版本号不同。Adobe Acrobat 是用于创作 PDF 文件的产品。PDF 是文件格式。

将 Illustrator 文件导入到 Flash 中时，必须取消所有层上的所有 Illustrator 对象的组合。一旦取消所有对象的组合之后，它们可以像其他 Flash 对象一样进行处理。也可以将 Flash 文档导出为 Adobe Illustrator 文件。有关导出 Illustrator 文件的信息，请参阅Adobe Illustrator。

在导入 Adobe Illustrator、EPS 或 PDF 文件时，可以从以下选项中选择：

  • 将页面转换为屏幕或关键帧。
  • 将层转换为 Flash 层或关键帧，或者平面化所有层。
  • 选择要导入的页面。
  • 包括不可见层。
  • 保持文本块。
  • 栅格化所有内容。选择此选项将平面化层并栅格化文本，而且禁用转换层或保持文本块的选项。

要导入 Adobe Illustrator、EPS 或 PDF 文件：

  1. 选择“文件”>“导入到舞台”或“导入到库”。
  2. 在“导入”对话框中，从“文件类型”(Windows) 或“显示”(Macintosh) 弹出菜单中选择“Adobe Illustrator”、“EPS”或“PDF”。
  3. 定位到文件并选择它。
  4. 单击“打开”。

    即会出现“导入选项”对话框。

  5. 对于要转换的页面，请选择以下其中一个选项：

    “屏幕”（在屏幕模式下）或“场景”（在场景模式下）将把各页转换为屏幕或场景。

    “关键帧”将把各页转换为关键帧。

  6. 对于要转换的层，请选择以下其中一个选项：

    “图层”会将导入文档中的每个层转换为 Flash 文档中的一个层。

    “关键帧”会将导入文档中的每个层转换为 Flash 文档中的一个关键帧。

    “平面化”会将导入文档中的所有层转换为 Flash 文档中的单个平面化的层。

  7. 对于要导入的页面，选择“全部”将导入所有页，或者选择“从”并输入要导入的页面范围。
  8. 对于选项，请选择以下其中一个选项：

    “包括不可见层”将从导入的文档中导入所有层（包括可见层和隐藏层）。

    “保持文本块”将文本导入为 Flash 中的可编辑文本。

    “栅格化所有内容”将导入的文档中的所有内容转换为位图。输入数值以设置导入的文档的分辨率。选择此选项将平面化所有层并禁用“保持文本块”选项。

  9. 单击“确定”。


AutoCAD DXF 文件

Flash 支持 AutoCAD DXF 发行版本 10 的文件格式。

DXF 文件不支持标准系统字体。Flash 会尝试正确地映射字体，但是结果可能无法预知，特别是对于文本的对齐。

因为 DXF 格式不支持实心填充，填充区域只能作为轮廓导出。基于此原因，DXF 格式最适合线条画，例如平面图和地图。

可以将二维 DXF 文件导入到 Flash 中。Flash 不支持三维 DXF 文件。

尽管 Flash 不支持在 DXF 文件中进行缩放，但是所有导入的 DXF 文件都会产生一个 12 x 12 英寸的文件，可以使用“修改”>“变形”>“缩放”命令进行缩放。此外，Flash 只支持 ASCII DXF 文件。如果 DXF 文件是二进制的，则必须将它们转换为 ASCII，才能导入到 Flash 中。


导入的位图

将位图导入到 Flash 时，可以修改该位图，并且可以用各种方式在 Flash 文档中使用它。可以对导入位图应用压缩和消除锯齿功能，从而控制位图在 Flash 应用程序中的大小和外观。请参阅设置位图属性。可以将导入位图作为填充应用到对象中。请参阅应用位图填充。

使用 Flash 可以将位图分离为可编辑的像素。位图仍然保留它原来的细节，但是被分离到离散的颜色区域中。当分离位图时，可以使用绘画工具和涂色工具来选择和修改位图的区域。将位图分离后还可以用滴管工具对位图进行采样，然后将其用作填充。请参阅分离位图。

可以从 Flash 中启动 Fireworks 或其他外部图像编辑器，从而在这些编辑应用程序中编辑导入的位图。请参阅在外部编辑器中编辑位图。要将位图的图像转换为矢量图形，可以跟踪该位图。执行这种转换使您能够在 Flash 中修改该图形，方法与处理其他矢量图一样。请参阅将位图转换为矢量图形。

如果 Flash 文档中显示的导入位图的大小比原先大，则该图像可能被扭曲了。预览导入的位图，确保图像显示正确。


使用“属性”检查器处理位图

当在舞台上选择了位图后，“属性”检查器会显示该位图的元件名称、其像素尺寸和在舞台上的位置。使用“属性”检查器，可以为该位图指定一个新名称，并且可以交换 位图的实例，即用当前文档中的其他位图的实例替换该实例。

显示具有位图属性的“属性”检查器：

  1. 在舞台上选择一个位图实例。
  2. 选择“窗口”>“属性”。

要为位图指定新名称：

  1. 在“库”面板中选择该位图。
  2. 如果“属性”检查器没有显示，请选择“窗口”>“属性”。在舞台上选择一个位图实例，查看该位图的属性。
  3. 在“属性”检查器中，在“名称”文本框中输入新名称。
  4. 单击“确定”。

要用一个位图的实例替换另一个位图的实例：

  1. 在舞台上选择一个位图实例。
  2. 如果“属性”检查器没有显示，请选择“窗口”>“属性”。
  3. 在“属性”检查器中，单击“交换”。
  4. 在“交换位图”对话框中，选择一个位图替换当前分配给该实例的位图。


设置位图属性

可以对导入的位图应用消除锯齿功能，从而平滑图像的边缘。也可以选择压缩选项以减小位图文件的大小，以及格式化文件以便在 Web 上显示。

要选择位图属性，可以使用“位图属性”对话框。

设置位图属性：

  1. 在“库”面板中选择一个位图。
  2. 执行以下其中一项操作：
    • 单击“库”面板底部的属性图标。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该位图的图标，然后从上下文菜单中选择“属性”。
    • 从“库”面板右上角的选项菜单中选择“属性”。
  3. 在“位图属性”对话框中，选择“允许平滑”，以利用消除锯齿功能平滑位图的边缘。
  4. 对于“压缩”，选择以下选项之一：

    “照片 (JPEG)”将以 JPEG 格式压缩图像。要使用为导入图像指定的默认压缩品质，请选择“使用文档默认品质”。要指定新的品质压缩设置，请取消选择“使用文档默认品质”，然后在“品质”文本框中输入介于 1 和 100 之间的一个值。（设置越高，保留的图像完整性越大，但是产生的文件大小也越大。）

    “无损 (PNG/GIF)”将使用无损压缩格式压缩图像，这样不会丢失图像中的任何数据。

    注意：对于具有复杂颜色或色调变化的图像，例如具有渐变填充的照片或图像，请使用“照片”压缩格式。对于具有简单形状和相对较少颜色的图像，请使用“无损”压缩。

  5. 单击“测试”可以确定文件压缩的结果。将原来的文件大小与压缩的文件大小进行比较，从而确定选定的压缩设置是否可以接受。
  6. 单击“确定”。

    注意：在“发布设置”对话框中选择“JPEG 品质”设置不会为导入 JPEG 文件指定品质设置。必须在“位图属性”对话框中为导入 JPEG 文件指定品质设置。


应用位图填充

可以使用混色器将位图作为填充应用到图形对象中。将位图应用为填充时，会平铺该位图，以填充对象。填充变形工具使您可以缩放、旋转或倾斜图像及其位图填充。请参阅使渐变色和位图填充变形。

使用混色器将位图应用为填充：

  1. 要将填充应用到现有的插图，可以在舞台上选择一个或多个图形对象。
  2. 选择“窗口”>“设计面板”>“混色器”。
  3. 在混色器中，从该面板中心的弹出菜单中选择“位图”。
  4. 如果需要较大的预览窗口来显示当前文档中的更多位图，请单击混色器的右下角的箭头。
  5. 单击一个位图，选择它。

    该位图成为当前的填充颜色。如果在步骤 1 中已经选择了插图，则该位图会作为填充应用到该插图。


在外部编辑器中编辑位图

如果要编辑导入为平面化图像的 Fireworks PNG 文件，可以选择编辑该位图的 PNG 源文件（如果有的话）。

注意：不能在外部图像编辑器中编辑导入为可编辑对象的 Fireworks PNG 文件中的位图。

如果您的系统上安装了 Fireworks 3 或更高版本或其他图像编辑应用程序，则可以从 Flash 中启动该应用程序来编辑导入的位图。

使用 Fireworks 3 或更高版本编辑位图：

  1. 在“库”面板中，右击 (Windows) 或按住 Control 键单击 (Macintosh) 该位图的图标。
  2. 在该位图的上下文菜单中，选择“使用 Fireworks 3 进行编辑”。
  3. 在“编辑图像”对话框中，指定是否打开 PNG 源文件或位图文件。
  4. 在 Fireworks 中对文件执行所需的修改。
  5. 在 Fireworks 中，选择“文件”>“更新”。
  6. 返回到 Flash。

    该文件会在 Flash 中自动更新。

使用其他图像编辑应用程序编辑位图：

  1. 在“库”面板中，右击 (Windows) 或按住 Control 键单击 (Macintosh) 该位图的图标。
  2. 在该位图的上下文菜单中，选择“编辑方式”。
  3. 选择用于打开该位图文件的图像编辑应用程序，然后单击“确定”。
  4. 在图像编辑应用程序中对该文件执行所需的修改。
  5. 在图像编辑应用程序中保存该文件。

    该文件会在 Flash 中自动更新。

  6. 返回到 Flash 中继续编辑文档。


分离位图

分离位图会将图像中的像素分散到离散的区域中，可以分别选中这些区域并进行修改。当分离位图时，可以使用 Flash 绘画和涂色工具修改位图。通过使用套索工具中的“魔术棒”功能键，可以选择已经分离的位图区域。

可以用分离的位图进行涂色，方法是用滴管工具选择该位图，然后用颜料桶工具或其他绘画工具将该位图应用为填充。

分离位图：

  1. 选择当前场景中的位图。
  2. 选择“修改”>“分离”。

更改分离位图的所选区域的填充：

  1. 选择套索工具，然后单击“魔术棒”功能键。
  2. 单击“魔术棒设置”组合键，然后设置以下选项：
    • 对于“阈值”，输入一个介于 1 和 200 之间的值，用于定义将相邻像素包含在所选区域内必须达到的颜色接近程度。数值越高，包含的颜色范围越广。如果输入 0，则只选择与您单击的第一个像素的颜色完全相同的像素。
    • 对于“平滑”，从弹出菜单中选择一个选项，用于定义所选区域的边缘的平滑程度。
  3. 单击位图，选择一个区域。继续单击其他区域，将其添加到所选内容中。
  4. 选择要用于填充位图中所选区域的填充。请参阅使用工具栏中的“笔触颜色”和“填充颜色”控件。
  5. 选择颜料桶工具，然后单击所选区域中的任意地方，应用新的填充。

要使用“滴管”工具将分离的位图作为填充应用：

  1. 选择滴管工具，然后单击舞台上的分离位图。

    滴管工具会将该位图设置为当前的填充，然后将活动工具更改为颜料桶工具。

  2. 执行以下其中一项操作：
    • 用颜料桶工具单击现有的图形对象可以将该位图应用为填充。
    • 选择椭圆、矩形或钢笔工具，然后画出一个新对象。该对象会用分离的位图作为填充。

    可以使用颜料桶工具对位图填充进行缩放、旋转或倾斜。


将位图转换为矢量图形

“转换位图为矢量图”命令会将位图转换为具有可编辑的离散颜色区域的矢量图形。此命令使您可以将图像当做矢量图形进行处理，而且它在减小文件大小方面也很有用。

将位图转换为矢量图形后，矢量图形不再链接到“库”面板中的位图元件。

注意：如果导入位图包含复杂的形状和许多颜色，则转换后的矢量图形的文件大小会比原来的位图文件大。尝试“跟踪位图”对话框中的各种设置，找出文件大小和图像品质之间的最佳平衡点。

也可以将位图分离，以便使用 Flash 绘画和涂色工具修改该图像。请参阅分离位图。

将位图转换为矢量图形：

  1. 选择当前场景中的位图。
  2. 选择“修改”>“位图”>“转换位图为矢量图”。
  3. 在“颜色阈值”输入一个介于 1 和 500 之间的值。

    当两个像素进行比较后，如果它们在 RGB 颜色值上的差异低于该颜色阈值，则两个像素被认为是颜色相同。如果增大了该阈值，则意味着降低了颜色的数量。

  4. 对于“最小区域”，输入一个介于 1 和 1000 之间的值，用于设置在指定像素颜色时要考虑的周围像素的数量。
  5. 对于“曲线拟合”，从弹出菜单中选择一个选项，用于确定绘制的轮廓的平滑程度。
  6. 对于“转角阈值”，从弹出菜单中选择一个选项，以确定是保留锐边还是进行平滑处理。

    要创建最接近原始位图的矢量图形，请输入以下的值：

    • “颜色阈值”： 10
    • “最小区域”：“1 象素”
    • “曲线拟合”：“像素”
    • “角阈值”：“较多转角”


使用图形对象概述

在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中，图形对象是舞台上的项目。Flash 允许您对图形对象进行移动、拷贝、删除、变形、层叠、对齐和分组等操作。还可以将图形对象链接到 URL。请记住，更改线条和形状会改变同一层中的其他线条和形状。请参阅绘画。

注意：Flash 中的图形对象与动作脚本对象不同，动作脚本对象是动作脚本编程语言的一部分。注意不要混淆该术语的两种用法。有关编程语言中的对象的详细信息，请参阅关于数据类型。


选择图形对象

要修改对象，必须先选择它。Flash 提供了各种选择方法，包括选取工具、套索工具以及键盘命令。您可以将单个的对象合成一组，然后作为一个对象来处理。请参阅组合对象。

Flash 可以突出显示用点阵图形选择的对象和笔触。选定的组可以用边框突出显示，边框的颜色是该组所属层的轮廓所用的颜色。您可以在“图层属性”对话框中更改层的轮廓颜色。请参阅使用层。

可以只选择对象的笔触，也可以只选择其填充。可以隐藏所选对象的突出显示，这样，在编辑对象时就不会看到突出显示。

当您选择对象时，“属性”检查器会显示该对象的笔触和填充、其像素尺寸以及该对象的变形点的 x 和 y 坐标。

如果在舞台中选择了多个不同类型的项目，如对象、按钮和影片剪辑，“属性”检查器会指明这是一个混合选择。对于混合选择，“属性”检查器会显示所选项目组的像素尺寸以及 x 和 y 坐标。

可以使用形状的“属性”检查器更改对象的笔触和填充。请参阅处理颜色。

您可能需要防止组或元件被选中并被意外改变。要防止这种情况，可以锁定该组或元件。请参阅修改选择内容。


用选取工具选择对象

选取工具使您可以选择全部对象，方法是单击某个对象或拖动对象以将其包含在矩形选取框内。

注意：要选择选取工具，也可以按下 V 键。要在其他工具处于活动状态时临时切换到选取工具，请按住 Control 键 (Windows) 或 Command 键 (Macintosh) 进行选择。

要选择笔触、填充、组、实例或文本块：

  • 选择箭头工具，然后单击该对象。

选择连接线：

  • 选择选取工具，然后双击其中一条线。

选择填充的形状及其笔触轮廓：

  • 选择选取工具，然后双击填充。

在矩形区域内选择对象：

  • 选择选取工具，然后在要选择的一个或多个对象周围拖画出一个选取框。必须将实例、组和文本块完全包含在选取框中才能选中它们。


修改选择内容

可以向选择中添加内容，可以在场景的每一层上选择和取消选择任何内容，在关键帧之间选择任何内容，或者锁定或解除锁定选中的元件或组。

向选择中添加内容：

  • 进行附加选择时请按住 Shift 键。

    注意：要禁用 Shift 键选择功能，可以在 Flash 的常规首选参数中取消选择该选项。请参阅设置 Flash 中的首选参数。

选择场景每一层上的全部内容：

  • 选择“编辑”>“全选”，或者按下 Control+A (Windows) 或 Command+A (Macintosh)。

    “全选”不会选中被锁定或被隐藏或者不在当前时间轴中的层上的对象。

取消选择每一层上的全部内容：

  • 选择“编辑”>“取消全选”，或者按下 Control+Shift+A (Windows) 或 Command+Shift+A (Macintosh)。

在一个层上的关键帧之间选择任何内容：

  • 单击时间轴中的一个帧。有关详细信息，请参阅使用时间轴。

锁定组或元件：

  • 选中组或元件，然后选择“修改”>“排列”>“锁定”。

    选择“修改”>“排列”>“解除全部锁定”可以解锁所有锁定的组和元件。


使用套索工具选择对象

要通过勾画不规则或直边选择区域的方法选择对象，可以使用套索工具及其“多边形模式”功能键。在使用套索工具时，可以在不规则和直边选择模式之间切换。

通过勾画不规则选择区域选择对象：

  • 选择套索工具，然后在区域周围拖画。在开始位置附近结束拖画，形成一个环，或者让 Flash 自动用直线闭合成环。

通过勾画直边选择区域选择对象：

  1. 选择套索工具，然后在工具栏的“选项”部分中选择“多边形模式”功能键。
  2. 单击设定起始点。
  3. 将指针放在第一条线要结束的地方，然后单击。继续设定其他线段的结束点。
  4. 要闭合选择区域，双击即可。

通过同时勾画不规则和直边选择区域来选择对象：

  1. 选择套索工具，取消选择“多边形模式”功能键。
  2. 要画一条不规则线段，请在舞台上拖动指针。
  3. 要画一条直线段，请按住 Alt 键单击 (Windows) 或按住 Option 键单击 (Macintosh) 设置起始和结束点。可以继续在画不规则线段和画直线段之间切换。
  4. 要闭合选择区域，请执行以下操作之一：
    • 如果正在画不规则线段，请释放鼠标按钮。
    • 如果正在画直线段，请双击。


隐藏选择突出显示

可以隐藏所选对象的突出显示，这样，在编辑对象时就不会看到它们的突出显示。隐藏突出显示使您可以在选择和编辑对象时看到插图的最终显示效果。

隐藏选择突出显示：

  • 选择“查看”>“隐藏边缘”。

    再次选择该命令可以取消选择该功能。


组合对象

要将多个元素作为一个对象来处理，您需要将它们组合。例如，创建了一幅绘画后（如树或花），可以将该绘画的元素合成一组，这样就可以将该绘画当成一个整体来选择和移动。

当您选择某个组时，“属性”检查器会显示该组的 x 和 y 坐标及其像素尺寸。

您可以对组进行编辑而不必取消其组合。还可以在组中选择单个对象进行编辑，不必取消其组合。

创建组：

  1. 从舞台中选择要组合的对象。

    可以选择形状、其他组、元件、文本等等。

  2. 选择“修改”>“组合”，或者按下 Control+G (Windows) 或 Command+G (Macintosh)。

取消组合对象：

  • 选择“修改”>“取消组合”，或者按下 Control+ Shift+G (Windows) 或 Command+Shift+G (Macintosh)。

编辑组或组中的对象：

  1. 在选择了组的情况下，选择“编辑”>“编辑所选项目”，或用选取工具双击该组。

    页面上不属于该组的部分都将变暗，表明它是不可访问的。

  2. 编辑该组中的任意元素。
  3. 选择“编辑”>“全部编辑”，或用选取工具双击舞台上的空白处。

    Flash 将组作为单个实体复原其状态，然后您可以处理舞台中的其他元素。


移动、复制和删除图形对象

您可以通过在舞台中拖动对象来移动它们，或者剪切然后粘贴它们，使用箭头键移动它们，或者用“属性”检查器为它们指定确切的位置。还可以用剪贴板在 Flash 和其他应用程序之间移动对象。可以通过拖动或粘贴对象来拷贝它们，或者使它们变形。移动对象时，“属性”检查器会显示其新位置。

使用选取工具移动对象时，可以使用选取工具的对齐功能键快速将对象与其他对象上的点对齐。


移动对象

要移动对象，可以拖动它、使用箭头键、使用“属性”检查器或使用“信息”面板。

要通过拖动来移动对象：

  1. 选择一个或多个对象。
  2. 选择选取工具，将指针放在对象上，然后将对象拖到新位置。要拷贝对象并移动副本，可以按住 Alt 键 (Windows) 或者按住 Option 键 (Macintosh) 拖动。要使对象移动后偏转 45 度的倍数，请按住 Shift 拖动。

用箭头键移动对象：

  1. 选择一个或多个对象。
  2. 按代表要移动的方向的箭头键，按一下移动一个像素。按一下 Shift 和箭头组合键可以将选择的对象移动 10 个像素。

    注意：选择了“对齐像素”时，会以文档的像素网格（而不是以屏幕的像素）为增量移动对象。请参阅像素对齐。

用“属性”检查器移动对象：

  1. 选择一个或多个对象。
  2. 如果看不到“属性”检查器，请选择“窗口”>“属性”。
  3. 输入所选对象的左上角位置的 x 和 y 值。单位是相对于舞台左上角而言的。

    注意：“属性”检查器使用在“文档属性”对话框中为“标尺单位”选项指定的单位。要更改单位，请参阅创建或打开文档及设置属性。

使用“信息”面板移动对象：

  1. 选择一个或多个对象。
  2. 如果看不到“信息”面板，请选择“窗口”>“设计面板”>“信息”。
  3. 输入所选对象的左上角位置的 x 和 y 值。单位是相对于舞台左上角而言的。


通过粘贴移动和拷贝对象

如果需要在层、场景或其他 Flash 文件之间移动或拷贝对象，应使用粘贴技巧。可以将对象粘贴在相对于其原始位置的某个位置。

通过粘贴移动或拷贝对象：

  1. 选择一个或多个对象。
  2. 选择“编辑”>“剪切”或“编辑”>“复制”。
  3. 选择其他层、场景或文件，然后选择“编辑”>“粘贴到当前位置”，将所选内容粘贴到相对于舞台的同一位置。


关于使用剪贴板拷贝插图

拷贝到剪贴板上的元素都消除了锯齿，因而它们在其他应用程序中看起来与在 Flash 中一样好。这对包含位图图像、渐变、透明或遮罩层的帧特别有用。

从其他 Flash 文档或程序粘贴过来的图形放在当前层的当前帧中。图形元素粘贴到 Flash 场景中的方式取决于元素的类型、源和您设置的首选参数：

  • 来自于文本编辑器的文本将变成单独的文本对象。
  • 来自于任何绘图程序的基于矢量的图形变成可以取消组合的组，并且可以像任何其他 Flash 元素一样进行编辑。
  • 位图会变成单个组合对象，就像导入的位图一样。您可以分离粘贴的位图或者将其转换成矢量图形。

    有关将位图转换成矢量图形的信息，请参阅将位图转换为矢量图形。

    注意：在将来自于 FreeHand 的图形粘贴到 Flash 之前，请设置 FreeHand 的导出首选参数，以便将剪贴板格式的颜色转换为 CMYK 和 RGB。


复制变形的对象

要创建对象的缩放、旋转或倾斜副本，可以使用“变形”面板。

创建对象的变形副本：

  1. 选择对象。
  2. 选择“窗口”>“设计面板”>“变形”。
  3. 输入缩放、旋转或倾斜值。请参阅缩放对象、旋转对象和倾斜对象。
  4. 单击“变形”面板上的“创建副本”按钮（面板右下角左边的那个按钮）。


删除对象

删除对象可以将其从文件中删除。删除舞台上的实例不会从库中删除元件。

删除对象：

  1. 选择一个或多个对象。
  2. 执行以下其中一项操作：
    • 按下 Delete 键或 Backspace 键。
    • 选择“编辑”>“清除”。
    • 选择“编辑”>“剪切”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该对象然后从上下文菜单中选择“剪切”。


层叠对象

在层内，Flash 会根据对象的创建顺序层叠对象，将最新创建的对象放在最上面。对象的层叠顺序决定了它们在层叠时出现的顺序。

画出的线条和形状总是在堆的组和元件的下面。要将它们移动到堆的上面，必须组合它们或者将它们变成元件。您可以在任何时候更改对象的层叠顺序。

层也会影响层叠顺序。第 2 层上的任何内容都在第 1 层的任何内容的上面，依此类推。要更改层的顺序，可以在时间轴中将层名拖动到新位置。请参阅使用层。

更改对象的层叠顺序：

  1. 选择对象。
  2. 使用以下其中一个命令：
    • 选择“修改”>“排列”>“移到最前”或“移到最后”可以将对象或组移动到层叠顺序的最前或最后。
    • 选择“修改”>“排列”>“上移一层”或“下移一层”可以将对象或组在层叠顺序中向上或向下移动一个位置。

    如果选择了多个组，这些组会移动到所有未选中的组的前面或后面，而这些组之间的相对顺序保持不变。


变形图形对象

使用任意变形工具或“修改”>“变形”子菜单中的选项，可以将图形对象、组、文本块和实例进行变形。根据所选的元素的类型，可以任意变形、旋转、倾斜、缩放或扭曲该元素。在变形操作期间，可以更改或添加选择内容。

在对对象、组、文本框或实例进行变形时，该项目的“属性”检查器会显示对该项目的尺寸或位置进行的任何更改。

在包含拖动的变形操作期间会显示一个边框。该边框是一个矩形（除非用“扭曲”命令或“封套”功能键修改过，请参阅扭曲对象和用“封套”功能键修改形状），矩形的边缘最初与舞台的边缘对齐。变形手柄位于每个角和每个边的中点。在拖动时，边框可以预览变形。


在变形期间处理中心点

在变形期间，所选元素的中心会出现一个变形点。变形点最初与对象的中心点对齐。您可以移动变形点，也可以将其返回其默认位置。

对于缩放、倾斜或者旋转图形对象、组和文本块，默认情况下，与被拖动的点相对的点就是原点。对于实例，默认情况下，变形点是原点。您可以移动变形的默认原点。

可以在“信息”面板和图形对象的“属性”检查器中跟踪变形点的位置。

在变形操作期间移动变形点：

  • 拖动变形点。

将变形点与元素的中心点重新对齐：

  • 双击变形点。

切换缩放或倾斜变形的原点：

  • 在变形期间按住 Alt 键 (Windows) 或按住 Option 键 (Macintosh) 拖动。

在“信息”面板和属性检查器中跟踪变形点的位置：

  • 在“信息”面板中，单击坐标网格中的中心方框以将其选定。

    选定的方框会变为黑色。

在选定了中心方框时，“信息”面板中坐标网格右边的 X 和 Y 值显示变形点的 x 和 y 坐标。此外，变形点的 X 和 Y 值还会显示在元件的“属性”检查器中。

选定了坐标网格中的中心方框的“信息”面板；显示选择中心点的 x 和 y 坐标

默认情况下，“信息”面板内坐标网格中的左上角方框处于选中状态，并且 X 和 Y 值显示当前所选内容的左上角相对于舞台左上角的位置。

注意：对于元件实例，坐标网格及 X 和 Y 值显示元件注册点的位置，或元件实例左上角的位置。请参阅编辑元件。


任意变形对象

您可以使用任意变形工具对对象、组、实例或文本块任意进行变形。可以单独执行变形操作，也可以将诸如移动、旋转、缩放、倾斜和扭曲等多个变形操作组合在一起执行。

任意变形：

  1. 在舞台上选择图形对象、实例、组或文本块。
  2. 单击任意变形工具。

    在所选内容的周围移动指针，指针会发生变化，指明哪种变形功能可用。

  3. 拖动手柄将所选内容变形，如下所示：
    • 要移动所选内容，将指针放在边框内的对象上，然后将该对象拖动到新位置。不要拖动变形点。
    • 要设置旋转或缩放的中心，请将变形点拖到新位置。
    • 要旋转所选内容，将指针放在角手柄的外侧，然后拖动。所选内容即可围绕变形点旋转。

      按住 Shift 拖动可以以 45 度为增量进行旋转。

      按住 Alt 键 (Windows) 或按住 Option 键 (Macintosh) 拖动可以围绕对角旋转。

    • 要缩放所选内容，沿对角方向拖动角手柄可以沿着两个方向缩放尺寸。水平或垂直拖动角手柄或边手柄可以沿各自的方向进行缩放。按住 Shift 键拖动可以按比例调整大小。
    • 要倾斜所选内容，将指针放在变形手柄之间的轮廓上，然后拖动。
    • 要扭曲形状，按住 Control 键 (Windows) 或按住 Command 键 (Macintosh) 拖动角手柄或边手柄。同时按住 Shift 和 Control 键 (Windows) 或者同时按住 Shift 和 Command 键 (Macintosh) 拖动角手柄可以锥化 对象，即将选定的角及其相邻角从它们的原始位置起移动相同的距离。有关扭曲对象的详细信息，请参阅扭曲对象。

    注意：任意变形工具不能变形元件、位图、视频对象、声音、渐变或文本。如果所选的多种内容包含以上任意内容，则只能扭曲形状对象。要将文本变形，首先要将字符转换成形状对象。

  4. 要结束变形操作，请单击所选对象、实例或文本块的外部。


扭曲对象

对选定的对象进行扭曲变形时，可以拖动边框上的角手柄或边手柄，移动该角或边，然后重新对齐相邻的边。按住 Shift 键拖动转角点可以锥化 该对象，即将该角和相邻角沿彼此的相反方向移动相同距离。相邻角时在与拖动方向相反方向上的角。按住 Control 键 (Windows) 或按住 Command 键拖动边的中点可以任意移动整个边。

您可以使用“扭曲”命令扭曲图形对象。还可以在任意变形对象时扭曲它们。请参阅任意变形对象。

扭曲图形对象：

  1. 在舞台上选择一个或多个图形对象。

    注意：“扭曲”命令不能修改元件、位图、视频对象、声音、渐变、对象组或文本。如果所选的多种内容包含以上任意内容，则只能扭曲形状对象。要修改文本，首先要将字符转换成形状对象。

  2. 选择“修改”>“变形”>“扭曲”。
  3. 将指针放到某个变形手柄上然后拖动。
  4. 要结束变形操作，请单击所选对象的外部。


用“封套”功能键修改形状

“封套”功能键允许您弯曲或扭曲对象。封套是一个边框，其中包含一个或多个对象。更改封套的形状会影响该封套内的对象的形状。您可以通过调整封套的点和切线手柄来编辑封套形状。请参阅调整线段。

用“封套”功能键修改形状：

  1. 在舞台上选择形状。

    注意：“封套”功能键不能修改元件、位图、视频对象、声音、渐变、对象组或文本。如果所选的多种内容包含以上任意内容，则只能扭曲形状对象。要修改文本，首先要将字符转换成形状对象。

  2. 选择“修改”>“变形”>“封套”。
  3. 拖动点和切线手柄修改封套。


缩放对象

缩放对象可以沿水平方向、垂直方向或同时沿两个方向放大或缩小对象。您可以通过拖动或在“变形”面板中输入值来缩放对象。

通过拖动缩放对象：

  1. 在舞台上选择一个或多个图形对象。
  2. 选择“修改”>“变形”>“缩放”。
  3. 执行以下其中一项操作：
    • 要沿水平和垂直方向缩放对象，请拖动某个角手柄。缩放时长宽比例仍旧保持不变。按住 Shift 键拖动可以进行不一致缩放。

    • 要沿水平或垂直方向缩放对象，请拖动中心手柄。

  4. 要结束变形操作，请单击所选对象的外部。

    注意：在增加很多项目的大小时，边框边缘附近的项目可能移动到舞台外面。如果出现这种情况，请选择“查看”>“工作区”以查看超出了舞台边缘的元素。


旋转对象

旋转对象会使该对象围绕其变形点旋转。变形点与注册点对齐，默认位于对象的中心，但您可以通过拖动来移动该点。您可以通过使用“旋转”命令、用任意变形工具拖动或在“变形”面板中指定角度来旋转对象。当您通过拖动来旋转对象时，还可以在同一操作中倾斜和缩放该对象。当您使用“变形”面板旋转某个对象时，可以在同一操作中缩放该对象。

通过拖动旋转和倾斜对象：

  1. 在舞台上选择一个或多个对象。
  2. 选择“修改”>“变形”>“旋转与倾斜”。
  3. 执行以下其中一项操作：
    • 拖动角手柄旋转对象。
    • 拖动中心手柄倾斜对象。
  4. 要结束变形操作，请单击所选对象的外部。

要以 90 度旋转对象：

  1. 选择一个或多个对象。
  2. 选择“修改”>“变形”>“顺时针旋转 90 度”进行顺时针旋转，或选择“逆时针旋转 90 度”进行逆时针旋转。


倾斜对象

倾斜对象可以通过沿一个或两个轴倾斜对象来使之变形。您可以通过拖动或在“变形”面板中输入值来倾斜对象。要通过拖动倾斜对象，请参阅旋转对象下有关通过拖动来旋转和倾斜对象的过程。

使用“变形”面板倾斜对象：

  1. 选择一个或多个对象。
  2. 选择“窗口”>“设计面板”>“变形”。
  3. 单击“倾斜”。
  4. 输入水平和垂直角度值。


翻转对象

您可以沿垂直或水平轴翻转对象，而不改变其在舞台上的相对位置。

翻转对象：

  1. 选择对象。
  2. 选择“修改”>“变形”>“垂直翻转”或“水平翻转”。


还原变形的对象

当您用“变形”面板缩放、旋转和倾斜实例、组和文本时，Flash 会保存对象的初始大小和旋转值。这样就允许您删除已经应用的变形并还原初始值。

选择“编辑”>“撤消”只能撤消在“变形”面板中执行的最后一次变形。在取消选择对象之前单击“变形”面板中的“重置”按钮可以重置在该面板中执行的所有变形。

将变形的对象还原到初始状态：

  1. 选择变形的对象。
  2. 选择“修改”>“变形”>“删除变形”。

重置在“变形”面板中执行的变形：

  • 在变形对象仍处于选中状态时，单击“变形”面板中的“重置”按钮。


对齐对象

“对齐”面板使您能够沿水平或垂直轴对齐选定的对象。您可以沿选定对象的右边缘、中心或左边缘垂直对齐对象，或者沿选定对象的上边缘、中心或下边缘水平对齐对象。边缘由包含每个选定对象的边框决定。

使用“对齐”面板，您可以将所选对象按照中心间距或边缘间距相等的方式进行分布。您可以调整所选对象的大小，使所有对象水平或垂直尺寸与所选最大对象的尺寸一致。还可以将所选对象与舞台对齐。可以对所选对象应用一个或多个“对齐”选项。

对齐对象：

  1. 选择要对齐的对象。
  2. 选择“窗口”>“设计面板”>“对齐”。
  3. 在“对齐”面板中，选择“相对于舞台”以应用相对于舞台尺寸的对齐修改。
  4. 选择对齐按钮修改选定的对象：
    • 对于“对齐”，可以选择“左对齐”、“水平中齐”、“右对齐”、“上对齐”、“垂直中齐”或“底对齐”。
    • 对于“分布”，可以选择“顶部分布”、“水平居中分布”、“底部分布”、“左侧分布”、“垂直居中分布”或“右侧分布”。
    • 对于“匹配大小”，可以选择“匹配宽度”、“匹配高度”或“匹配宽和高”。
    • 对于“间隔”，可以选择“水平间隔”和“垂直间隔”。


分离组和对象

要将组、实例和位图分离单独的可编辑元素，可以使用“分离”命令。分离可以极大地减小导入图形的文件大小。

尽管可以在分离组或对象后立即选择“编辑”>“撤消”，但分离操作不是完全可逆的。它会对对象产生如下影响：

  • 切断元件实例到其主元件的链接。
  • 放弃动画元件中除当前帧之外的所有帧。
  • 将位图转换成填充。
  • 对文本块应用时，它会将每个字符放入单独的文本块中。
  • 对单个文本字符应用时，它会将字符转换成轮廓。请参阅分离文本。

不要将“分离”命令和“取消组合”命令混淆。“取消组合”命令可以将组合的对象分开，将组合元素返回到组合之前的状态。它不会分离位图、实例或文字，或将文字转换成轮廓。

分离组或对象：

  1. 选择要分离的组、位图或元件。
  2. 选择“修改”>“分离”。

    注意：不建议分离动画元件或插补动画内的组，这可能引起无法预料的结果。分离复杂的元件和长文本块需要很长时间。要正确分离复杂对象，可能需要增加应用程序的内存分配。


创建动画概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了几种在文档中包含动画和特定效果的方法。利用时间轴特效（如模糊、扩展和爆炸）可以很容易将对象制作为动画：只需选择对象，然后选择一种特效并指定参数。利用时间轴特效，您只需执行几个简单步骤即可完成以前既费时又需要精通动画制作知识的任务。

要创建补间动画，您可以创建起始帧和结束帧，而让 Flash 创建中间帧的动画。Flash 通过更改起始帧和结束帧之间的对象大小、旋转、颜色或其他属性来创建运动的效果。请参阅补间动画。

您还可以通过在时间轴中更改连续帧的内容来创建动画。可以在舞台中创作出移动对象、增加或减小对象大小、旋转、更改颜色、淡入或淡出，或者更改对象形状的效果。更改既可以独立于其他的更改，也可以和其他的更改互相协调。例如，可以创作出这样的效果：对象在舞台中一边移动，一边旋转，并且淡入。在逐帧动画中，您必须创建每一帧中的图像。请参阅逐帧动画。


时间轴特效

Flash 包含预建的时间轴特效，使您可以通过执行最少的步骤创建复杂的动画。可以对以下对象应用时间轴特效：

  • 文本
  • 图形，包括形状、组以及图形元件
  • 位图图像
  • 按钮元件

注意：当您将时间轴特效应用于影片剪辑时，Flash 将把特效嵌套在影片剪辑中。


添加时间轴特效

当您向对象添加时间轴特效时，Flash 将创建一个层并将对象传输至此新层。对象放置于特效图形内，而且特效所需的所有补间和变形都位于此新创建的层上的图形中。

此新层自动获得与特效相同的名称，而且其后会附加一个数字，代表在文档内的所有特效中应用此特效的顺序。

当您添加时间轴特效时，具有该特效名称的文件夹将添加到库，它包含在创建该特效中所使用的元素。

要向对象添加特效：

  1. 执行以下操作之一以添加时间轴特效：
    • 选择您要添加时间轴特效的对象。选择“插入”>“时间轴特效”。然后，从子菜单中选择“助手”、“特效”或“过渡/变形”，并从列表中选择一种特效。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 您要添加时间轴特效的对象。从上下文菜单中选择“时间轴特效”。然后，从子菜单中选择“助手”、“特效”或“过渡/变形”，并从列表中选择一种特效。

    可用于您所选的对象类型的特效将作为活动菜单选项出现。

  2. 在显示该特效的对话框中，查看基于默认设置的特效预览。根据需要修改默认的设置，然后单击“更改预览”查看新设置的特效。有关详细信息，请参阅时间轴特效设置。
  3. 当想要的时间轴特效出现在预览窗口时，单击“确定”。


时间轴特效设置

每种时间轴特效都以一种特定方式处理图形或元件，并允许您更改所需特效的个别参数。在预览窗口中，您可以在变更设置之后快速查看所做的更改。

动画特效名称和说明

设置

复制到网格

按列数复制选定对象，然后乘以行数，以便创建元素的网格。
  • 行数
  • 列数
  • 行间距（以像素为单位）
  • 列间距（以像素为单位）

分布式复制

复制选定对象一定次数（在设置中输入）。第一个元素是原始对象的副本。对象将按一定增量发生改变，直至最终对象反映设置中输入的参数为止。
  • 副本数
  • 偏移距离，x 位置（以像素为单位）
  • 偏移距离，y 位置（以像素为单位）
  • 偏移旋转（以度度为单位）
  • 偏移起始帧（以时间轴间的帧数为单位）
  • 按 x, y 缩放比例进行指数级缩放（以增量百分比为单位）
  • 按 x, y 缩放比例进行线性缩放（以增量百分比为单位）
  • 最终 alpha（以百分比为单位）
  • 更改颜色（选择/取消选择）
  • 最终颜色（RGB 十六进制值）（最终副本具有此颜色值，中间副本向该值逐渐过渡）
  • 复制延迟（以帧为单位）（导致副本之间出现停顿）

模糊

通过更改对象在一段时间内的 Alpha 值、位置或缩放比例来产生运动模糊特效。

  • 特效持续时间（以帧为单位）
  • 允许水平模糊
  • 允许垂直模糊
  • 模糊方向
  • 步进数
  • 起始缩放比例

阴影

在选定元素下方创建阴影。
  • 颜色（以十六进制 RGB 值为单位）
  • Alpha 透明度（以百分比为单位）
  • 阴影偏移量（以像素为单位的 x, y 偏移量）

放大

在一段时间内放大、缩小或者放大和缩小对象。此特效在组合在一起或在影片剪辑或图形元件中组合的两个或多个对象上使用效果最好。此特效在包含文本或字母的对象上使用效果最好。

  • 放大持续时间（以帧为单位）
  • 放大，缩小，放大和缩小
  • 放大方向（向左、从中心、向右）
  • 片断偏移量（以像素为单位）
  • 按 x, y 偏移量（以像素为单位）转换组中心
  • 按高度、宽度（以像素为单位）更改片断大小

爆炸

产生对象发生爆炸的错觉。文本或复杂对象组（元件、形状或视频片断）的元素裂开、自旋和向外弯曲。

  • 特效持续时间（以帧为单位）
  • 爆炸方向（向左上方、中心或右上方或者向左下方、中心或右下方）
  • 弧度大小（以像素为单位的 x, y 偏移量）
  • 旋转片断幅度（以度数为单位）
  • 更改片断大小幅度（以度数为单位）
  • 最终 alpha（以百分比为单位）

变形

调整选定元素的位置、缩放比例、旋转、Alpha 和色调。使用“变形”可应用单一特效或特效组合，从而产生淡入/淡出、放大/缩小以及左旋/右旋特效。
  • 特效持续时间（以帧为单位）
  • 按 x, y 偏移量（以像素为单位）移动到位置
  • 按 x, y 偏移量（以像素为单位）改变位置
  • 缩放比例（锁定以便以百分比为单位平均应用更改；取消锁定以便以百分比为单位单独应用 x 和/或 y 轴更改）
  • 旋转（以度数为单位）
  • 自旋（次数）
  • 次数（逆时针、顺时针）
  • 更改颜色（选择/取消选择）
  • 最终颜色（RGB 十六进制值）
  • 最终 alpha（以百分比为单位）
  • 运动简易性

过渡

使用淡变、擦除或两种特效的组合向内擦除或向外擦除选定对象。

  • 特效持续时间（以帧为单位）
  • 方向（在入（向内）和出（向外）之间切换，选择向上、向下、向左或向右）
  • 淡变（选择/取消选择）
  • 擦除（选择/取消选择）
  • 运动简易性


编辑时间轴特效

可以使用“特效设置”对话框编辑时间轴特效。

要编辑时间轴特效：

  1. 在舞台上选择与特效关联的对象。
  2. 要打开“特效设置”对话框，请执行以下操作之一：
    • 在“属性”检查器中单击“编辑”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 该对象，然后从上下文菜单中选择“时间轴特效”>“编辑特效”。
  3. 在“特效设置”对话框中，根据需要编辑设置，然后单击“确定”。


删除时间轴特效

可以使用上下文菜单删除时间轴特效。

要删除时间轴特效：

  • 在舞台上，右击或按住 Control 键单击您要删除时间轴特效的对象，然后从上下文菜单中选择“时间轴特效”>“删除特效”。


补间动画

Flash 可以创建两种类型的补间动画，补间动画 和补间形状。

  • 在补间动画中，在一个时间点定义一个实例、组或文本块的位置、大小和旋转等属性，然后在另一个时间点改变那些属性。也可以沿着路径应用补间动画。请参阅补间实例、组和类型和沿着路径补间动画。
  • 在补间形状中，在一个时间点绘制一个形状，然后在另一个时间点更改该形状或绘制另一个形状。Flash 会内插二者之间的帧的值或形状来创建动画。请参阅补间形状。

补间动画是创建随时间移动或更改的动画的一种有效方法，并且最大程度地减小所生成的文件大小。在补间动画中，Flash 只保存在帧之间更改的值。

要在一个文档中快速准备用于补间动画的元素，请将对象分散到各个层中。请参阅将对象分散到层。

通过将补间动画应用到遮罩层上的对象，可以创建一个动态遮罩。有关遮罩层的信息，请参阅使用遮罩层。


逐帧动画

逐帧动画更改每一帧中的舞台内容，它最适合于每一帧中的图像都在更改而不是仅仅简单地在舞台中移动的复杂动画。逐帧动画增加文件大小的速度比补间动画快得多。在逐帧动画中，Flash 会保存每个完整帧的值。有关逐帧动画的信息，请参阅创建逐帧动画。


动画中的图层

Flash 文档中的每一个场景都可以包含任意数量的层。当您创建动画时，可以使用层和层文件夹来组织动画序列的组件和分离动画对象，这样它们就不会互相擦除、相连或分割。如果要让 Flash 一次补间多个组或元件的运动，每个组或元件必须在独立的层上。背景层通常包含静态插图，其他的每个层中包含一个独立的动画对象。

当文档中有多个层时，跟踪和编辑一个或两个层上的对象可能很困难。如果一次处理一个层中的内容，这个任务就容易一点。层文件夹有助于将层组织成易于管理的组，可以通过展开和折叠层文件夹来查看只和当前任务有关的层。请参阅使用层。


创建关键帧

关键帧是定义在动画中的变化的帧。当创建逐帧动画时，每个帧都是关键帧。在补间动画中，可以在动画的重要位置定义关键帧，让 Flash 创建关键帧之间的帧内容。Flash 通过在两个关键帧之间绘制一个浅蓝色或浅绿色的箭头显示补间动画的内插帧。由于 Flash 文档保存每一个关键帧中的形状，所以只应在插图中有变化的点处创建关键帧。

关键帧在时间轴中标明：有内容的关键帧以该帧前面的实心圆表示，而空白的关键帧则以该帧前面的空心圆表示。以后添加到同一层的帧的内容将和关键帧相同。

要创建关键帧，请执行以下操作之一：

  • 在时间轴中选择一个帧，然后选择“插入”>“时间轴”>“关键帧”。
  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 时间轴中的一个帧，然后选择“插入关键帧”。


时间轴中的动画表示方式

Flash 会按照如下方式区分时间轴上的逐帧动画和补间动画：

  • 补间动画用起始关键帧处的一个黑色圆点指示；中间的补间帧有一个浅蓝色背景的黑色箭头。

  • 补间形状用起始关键帧处的一个黑色圆点指示；中间的帧有一个浅绿色背景的黑色箭头。

  • 虚线表示补间是断的或不完整的，例如，在最后的关键帧已丢失时。

  • 单个关键帧用一个黑色圆点表示。单个关键帧后面的浅灰色帧包含无变化的相同内容，并带有一条黑线，而在整个范围的最后一帧还有一个空心矩形。

  • 出现一个小 a 表明已利用“动作”面板为该帧分配了一个帧动作。

  • 红色标记表明该帧包含一个标签或注释。

  • 金色的锚记表明该帧是一个命名锚记。


帧频

帧频是动画播放的速度，以每秒播放的帧数为度量。帧频太慢会使动画看起来一顿一顿的，帧频太快会使动画的细节变得模糊。在 Web 上，每秒 12 帧 (fps) 的帧频通常会得到最佳的效果。QuickTime 和 AVI 影片通常的帧频就是 12 fps，但是标准的运动图像速率是 24 fps。

动画的复杂程度和播放动画的计算机速度影响回放的流畅程度。在各种计算机上测试动画，以确定最佳帧频。

因为只给整个 Flash 文档指定一个帧频，因此最好在创建动画之前设置帧频。请参阅创建或打开文档及设置属性。


扩展静止图像

当给动画创建背景时，通常需要给几个帧保留同一个静止图像。在一个层中添加一定范围的新帧（非关键帧）会扩展所有新帧中最后一个关键帧的内容。

将静止图像扩展到多个帧中：

  1. 在序列的第一个关键帧中创建一幅图像。
  2. 在右侧选择一个帧，标记要添加的帧范围的终点。
  3. 选择“插入”>“时间轴”>“帧”。

要使用快捷键扩展静止图像：

  1. 在第一个关键帧中创建一幅图像。
  2. 按住 Alt 键 (Windows) 或按住 Option 键 (Macintosh) 向右侧拖动关键帧。这会创建一个新帧范围，但在终点没有新关键帧。


分散对象

可以快速将一个帧中的所选对象分散到独立的层中，以便向对象应用补间动画。这些对象最初可以在一个或多个层上。Flash 会将每一个对象分散到一个独立的新层中。任何没有选中的对象（包括其他帧中的对象）都保留在它们的原始位置。

可以对舞台中的任何类型的元素应用“分散到图层”命令，包括图形对象、实例、位图、视频剪辑和分离文本块。

对分离文本应用“分散到图层”命令可以很容易地创建动画文本。在“分离”操作过程中，文本中的字符放置在独立的文本块中，而在“分散到图层”过程中每一个文本块放在一个独立的层上。有关分离文本的信息，请参阅分离文本。


新层

在“分散到图层”操作过程中创建的新层根据每个新层包含的元素名称来命名：

  • 包含库资源（例如元件，位图或视频剪辑）的新层的给定名称和该资源的名称是一样的。
  • 包含命名实例的新层的给定名称就是该实例的名称。
  • 包含分离文本块字符的新层用这个字符来命名。
  • 如果新层中包含图形对象（这个对象没有名称），因为该图形对象没有名称，因此该新层命名为 Layer1（或 Layer2，依此类推）。

Flash 会将新层插入到时间轴中任意选中的层的下面。新层从上到下排列，它们是按所选中的元素最初的创建顺序排列的。对于分离文本，层是按字符顺序排列的，可以从左到右、从右到左或从上到下。例如，如果将文本 FLASH 分离并分散到各层中，则新层（命名为 F、L、A、S 和 H）会从上到下排列，紧贴着最初包含该文本的层的下面。


将对象分散到层

要将对象分散到层，可以在一个或多个层中选择对象，然后从“修改”菜单或上下文菜单中选择“分散到图层”。

要补间分散的对象，请遵循补间实例、组和类型或补间形状中说明的步骤。

要将对象分散到层：

  1. 选择要分散到层的对象。对象可以在单个层上或多个层上，包括不连续的层。
  2. 执行以下其中一项操作：
    • 选择“修改”>“时间轴”>“分散到图层”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 所选对象之一，然后从上下文菜单中选择“分散到图层”。


补间实例、组和类型

要补间实例、组和类型的属性的更改，可以使用补间动画。Flash 可以补间实例、组和类型的位置、大小、旋转和倾斜。另外，Flash 可以补间实例和类型的颜色、创建渐变的颜色切换或使实例淡入或淡出。要补间组或类型的颜色，必须把它们变为元件。请参阅创建元件。要使文本块中的单个字符分别动起来，可以将每个字符放在独立的文本块中；请参阅分离文本。

如果应用补间动画，然后改变两个关键帧之间的帧数，或移动任一关键帧中的组或元件，Flash 会自动重新补间帧。

可以使用两种方法中的一种创建补间动画：

  • 创建动画的起始和结束关键帧，然后使用“属性”检查器中的“补间动画”选项。
  • 创建动画的第一个关键帧，在时间轴上插入所需的帧数，选择“插入”>“时间轴”>“创建补间动画”，然后将对象移动到舞台上的新位置。Flash 会自动创建结束关键帧。

当补间位置时，可以沿着非线性的路径移动对象。请参阅沿着路径补间动画。

要使用“补间动画”选项创建补间动画：

  1. 单击层名称使之成为活动层，然后在动画开始播放的层中选择一个空白关键帧。
  2. 要创建补间动画的第一个帧，请执行以下操作之一：
    • 用钢笔、椭圆、矩形、铅笔或刷子工具创建一个图形对象，然后把它转换为一个元件。有关将对象转换为元件的详细信息，请参阅创建元件。
    • 在舞台中创建一个实例、组或文本块。
    • 将元件的实例从“库”面板中拖出。
  3. 在动画要结束的地方创建第二个关键帧，然后选择结束帧（在时间轴上紧贴着第二个关键帧的左侧）。
  4. 执行以下操作之一，更改结束帧中的实例、组或文本块：
    • 将项目移动到新的位置。
    • 修改该项目的大小、旋转或倾斜。
    • 修改该项目的颜色（仅限实例或文本块）。

    使用补间形状可以补间除实例或文本块以外的元素的颜色。请参阅补间形状。

  5. 单击补间帧范围内的任何帧，然后从“属性”检查器（“窗口”>“属性”）内的“补间”弹出菜单中选择“动画”。
  6. 如果在第 4 步中修改了项目的大小，则选择“缩放”来补间所选项目的大小。
  7. 拖动“扩大值”旁边的箭头或输入一个值，以调整补间帧之间的变化速率：
    • 要慢慢地开始补间动画，并朝着动画的结束方向加速补间，请向上拖动滑块或输入一个 -1 到 -100 的负值。
    • 要快速地开始补间动画并朝着动画的结束方向减速补间，请向下拖动滑块或输入一个 1 到 100 之间的正值。

    默认情况下，补间帧之间的变化速率是不变的。“扩大”可以通过逐渐调整变化速率创建更加自然的加速或减速效果。

  8. 要在补间时旋转所选的项目，请从“旋转”菜单中选择一个选项：
    • 选择“无”（默认设置）禁止旋转。
    • 选择“自动”可以在需要最少动画的方向上旋转对象一次。
    • 选择“顺时针”(CW) 或“逆时针”(CCW) 旋转所指明的对象，然后输入一个数值指定要旋转的次数。

    注意：在第 9 步中的旋转和在第 4 步中应用到结束帧的任何旋转是相加在一起的。

  9. 如果使用运动路径，请选择“调整到路径”，以将补间元素的基线调整到运动路径。（请参阅沿着路径补间动画。）
  10. 在“属性”检查器中选择“同步”选项，使图形元件实例的动画和主时间轴同步。

    注意：“修改”>“时间轴”>“同步元件”和“同步”选项都会重新计算补间的帧数，从而匹配时间轴上分配给它的帧数。

  11. 如果使用运动路径，则选择“对齐”以根据其注册点将补间元素附加到运动路径。

使用“创建补间动画”命令创建补间动画：

  1. 选择一个空白关键帧，然后在舞台中绘制一个对象，或将元件的实例从“库”面板中拖出。

    注意：要创建补间，在层中只能有一个项目。

  2. 选择“插入”>“时间轴”>“创建补间动画”。

    如果在第 1 步中绘制一个对象，Flash 会自动将该对象转换为一个元件并给它分配一个名称 tween1。

  3. 单击希望动画结束的帧的内部，然后选择“插入”>“时间轴”>“帧”。
  4. 将舞台中的对象、实例或文本块移动到所需的位置。如果要补间元素的缩放比例，请调整该元素的大小。如果要补间元素的旋转，请调整该元素的旋转。完成调整后，取消选择该对象。

    在帧范围的结束处会自动添加一个关键帧。

  5. 拖动“扩大值”旁边的箭头或输入一个值，以调整补间帧之间的变化速率：
    • 要慢慢地开始补间动画，并朝着动画的结束方向加速补间，请向上拖动滑块或输入一个 -1 到 -100 的值。
    • 要快速地开始补间动画并朝着动画的结束方向减速补间，请向下拖动滑块或输入一个 1 到 100 之间的正值。

    默认情况下，补间帧之间的变化速率是不变的。“扩大”可以通过逐渐调整变化速率创建更加自然的加速或减速效果。

  6. 要在补间时旋转所选的项目，请从“旋转”菜单中选择一个选项：
    • 选择“自动”可以在需要最少动画的方向上旋转对象一次。
    • 选择“顺时针”(CW) 或“逆时针”(CCW) 旋转所指明的对象，然后输入一个数值指定要旋转的次数。

    注意：在第 6 步中的旋转和在第 4 步中应用到结束帧的任何旋转是相加在一起的。

  7. 如果使用运动路径，请选择“调整到路径”，以将补间元素的基线调整到运动路径。（请参阅沿着路径补间动画。）
  8. 选择“同步”可以确保实例在主文档中正确地循环播放。

    如果元件中动画序列的帧数不是文档中图形实例占用的帧数量的偶数倍，请使用“同步”命令。

  9. 如果使用运动路径，则选择“对齐”以根据其注册点将补间元素附加到运动路径。


沿着路径补间动画

运动引导层使您可以绘制路径，补间实例、组或文本块可以沿着这些路径运动。可以将多个层链接到一个运动引导层，使多个对象沿同一条路径运动。链接到运动引导层的常规层就成为引导层。

在本示例中，两个位于独立的层上的对象被附加到同一条运动路径。

要为补间动画创建运动路径：

  1. 按照补间实例、组和类型中所述创建有补间动画的动画序列。

    如果选择“调整到路径”，补间元素的基线就会调整到运动路径。如果选择“对齐”，补间元素的注册点将会与运动路径对齐。

  2. 执行以下操作之一：
    • 选择包含动画的层，然后选择“插入”>“时间轴”>“运动引导层”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 包含动画的层，然后从上下文菜单中选择“添加引导层”。

    Flash 会在所选的层之上创建一个新层，该层名称的左侧有一个运动引导层图标。

  3. 使用“钢笔”、“铅笔”、“直线”、“圆形”、“矩形”或“刷子”工具绘制所需的路径。

  4. 将中心与线条在第一帧中的起点和最后一帧中的终点对齐。

    注意：要获得最好的对齐效果，通过元件的注册点拖动它。

  5. 要隐藏运动引导层和线条，以便在工作时只有对象的移动是可见的，请单击运动引导层上的“眼睛”列。

    当播放动画时，组或元件将沿着运动路径移动。

要把层和运动引导层链接起来，请执行以下操作之一：

  • 将现有层拖到运动引导层的下面。该层在运动引导层下面以缩进形式显示。该层上的所有对象自动与运动路径对齐。
  • 在运动引导层下面创建一个新层。在该层上补间的对象自动沿着运动路径补间。
  • 在运动引导层下面选择一个层。选择“修改”>“时间轴”>“图层”，然后在“图层属性”对话框中选择“被引导”。

断开层和运动引导层的链接：

  1. 选择要断开链接的层。
  2. 执行以下其中一项操作：
    • 拖动运动引导层上面的层。
    • 选择“修改”>“时间轴”>“图层”，然后在“图层属性”对话框中选择“正常”作为图层类型。


补间形状

通过补间形状，可以创建类似于形变的效果，使一个形状看起来随着时间变成另一个形状。Flash 也可以补间形状的位置、大小和颜色。

一次补间一个形状通常可以获得最佳效果。如果一次补间多个形状，则所有的形状必须在同一个层上。

要对组、实例或位图图像应用形状补间，必须首先将这些元素分离。请参阅分离组和对象。要对文本应用形状补间，您必须将文本分离两次，将文本转换为对象。请参阅分离文本。

要控制更复杂或不可思议的形状变化，可以使用形状提示，它可以控制部分原始形状在移动过程中变成新的形状。请参阅使用形状提示。

补间形状：

  1. 单击层名称使之成为活动层，然后在动画开始播放的地方创建或选择一个关键帧。
  2. 在序列的第一个帧上创建或放置插图。要获得最佳效果，帧应当只包含一个项目（图形对象或分离的组、位图、实例或文本块）。
  3. 在时间轴中选择关键帧。
  4. 选择“窗口”>“属性”。
  5. 从“属性”检查器中，从“补间”弹出菜单中选择“形状”。
  6. 拖动“扩大值”旁边的箭头或输入一个值，以调整补间帧之间的变化速率：
    • 要慢慢地开始补间形状，并朝着动画的结束方向加速补间，请向下拖动滑块或输入一个 -1 到 -100 的负值。
    • 要快速地开始补间形状，并朝着动画的结束方向减速补间，请向上拖动滑块或输入一个 1 到 100 的正值。

    默认情况下，补间帧之间的变化速率是不变的。“扩大”可以通过逐渐调整变化速率创建更加自然的变形效果。

  7. 选择一个“混合”选项：

    分布式选项创建的动画中间形状比较平滑和不规则。

    角形选项创建的动画中间形状会保留有明显的角和直线。

    注意：“角形”只适合于具有锐化转角和直线的混合形状。如果选择的形状没有角，Flash 会还原到分布式补间形状。

  8. 在第一个关键帧后创建第二个关键帧，中间的帧数为所需的数量。
  9. 在第二个关键帧选定的情况下，选择在第一个关键帧中放置的插图，执行以下操作之一：
    • 修改插图的形状、颜色或位置。
    • 删除该插图，然后在第二个关键帧中放入新的插图。


使用形状提示

要控制更加复杂或罕见的形状变化，可以使用形状提示。形状提示会标识起始形状和结束形状中的相对应的点。例如，如果要补间一张正在改变表情的脸部图画时，可以使用形状提示来标记每只眼睛。这样在形状发生变化时，脸部就不会乱成一团，每只眼睛还都可以辨认，并在转换过程中分别变化。

形状提示包含字母（从 a 到 z），用于识别起始形状和结束形状中相对应的点。最多可以使用 26 个形状提示。

起始关键帧上的形状提示是黄色的，结束关键帧的形状提示是绿色的，当不在一条曲线上时为红色。

要在补间形状时获得最佳效果，请遵循这些准则：

  • 在复杂的补间形状中，需要创建中间形状然后再进行补间，而不要只定义起始和结束的形状。
  • 确保形状提示是符合逻辑的。例如，如果在一个三角形中使用三个形状提示，则在原始三角形和要补间的三角形中它们的顺序必须是一致的。它们的顺序不能在第一个关键帧中是 abc，而在第二个中是 acb。
  • 如果按逆时针顺序从形状的左上角开始放置形状提示，它们的工作效果最好。

使用形状提示：

  1. 选择补间形状序列中的第一个关键帧。
  2. 选择“修改”>“形状”>“添加形状提示”。

    起始形状提示会在该形状的某处显示为一个带有字母 a 的红色圆圈。

  3. 将形状提示移动到要标记的点。
  4. 选择补间序列中的最后一个关键帧。

    结束形状提示会在该形状的某处显示为一个带有字母 a 的绿色圆圈。

  5. 将形状提示移动到结束形状中与您标记的第一点对应的点。
  6. 再次播放动画，看看形状提示是如何更改补间形状的。移动形状提示，对补间进行微调。
  7. 重复这个过程，添加其他的形状提示。将出现新的提示，所带的字母紧接之前字母的顺序（b、c 等等）。

您可以选择查看所有的形状提示，也可以删除形状提示。

要查看所有形状提示：

  • 选择“视图”>“显示形状提示”只有包含形状提示的层和关键帧处于活动状态下，“显示形状提示”才可用。

要删除形状提示：

  • 将其拖离舞台。

要删除所有形状提示：

  • 选择“修改”>“形状”>“删除所有提示”。


创建逐帧动画

要创建逐帧动画，需要将每个帧都定义为关键帧，然后给每个帧创建不同的图像。每个新关键帧最初包含的内容和它前面的关键帧是一样的，因此可以递增地修改动画中的帧。

要创建逐帧动画：

  1. 单击层名称使之成为活动层，然后在动画开始播放的层中选择一个帧。
  2. 如果该帧不是关键帧，请选择“插入”>“时间轴”>“关键帧”使之成为一个关键帧。
  3. 在序列的第一个帧上创建插图。

    可以使用绘画工具、从剪贴板中粘贴图形，或导入一个文件。

  4. 单击同一行中右侧的下一帧，然后选择“插入”>“时间轴”>“关键帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 它，然后从上下文菜单中选择“插入关键帧”。

    这将添加一个新的关键帧，其内容和第一个关键帧一样。

  5. 在舞台中改变该帧的内容，开发动画接下来的增量。
  6. 要完成逐帧动画序列，重复第 4 步和第 5 步，直到创建了所需的动作。
  7. 要测试动画序列，请选择“控制”>“播放”或单击“控制器”上的“播放”按钮。


关于编辑动画

在创建帧或关键帧后，可以将它移动到活动层中的其他位置或其他层、删除它，也可以进行其他更改。只有关键帧是可编辑的。可以查看补间帧，但不可以直接编辑它们。要编辑补间帧，可以修改一个定义关键帧，或在起始和结束关键帧之间插入一个新的关键帧。从“库”面板中将项目拖动到舞台中，可以将这些项目添加到当前关键帧中。

要同时显示和编辑多个帧，可以使用绘图纸外观。请参阅绘图纸外观。

要在时间轴中插入帧，请执行以下操作之一：

  • 要插入新帧，请选择“插入”>“时间轴”>“帧”。
  • 要创建新关键帧，请选择“插入”>“时间轴”>“关键帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 要放置关键帧的帧，然后从上下文菜单中选择“插入关键帧”。
  • 要创建新的空白关键帧，请选择“插入”>“时间轴”>“空白关键帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 要放置关键帧的帧，然后从上下文菜单中选择“插入空白关键帧”。

要删除或修改帧或关键帧，请执行以下操作之一：

  • 要删除帧、关键帧或帧序列，请选择该帧、关键帧或序列，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 该帧、关键帧或序列，然后从上下文菜单中选择“删除帧”。周围的帧将保持不变。
  • 要移动关键帧或帧序列及其内容，请选择该关键帧或序列，然后拖到所需的位置。
  • 要延长关键帧的持续时间，请按住 Alt 键 (Windows) 或按住 Option 键 (Macintosh) 并将该关键帧拖到新序列的最后一帧。
  • 要通过拖动来复制关键帧或帧序列，请选择该关键帧或序列，然后按住 Alt 键 (Windows) 或按住 Option 键 (Macintosh) 并将其拖到新位置。
  • 要复制和粘贴帧或帧序列，请选择该帧或序列，然后选择“编辑”>“时间轴”>“复制帧”。选择想要替换的帧或序列，然后选择“编辑”>“时间轴”>“粘贴帧”。
  • 要将关键帧转换为帧，请选择该关键帧，然后选择“修改”>“时间轴”>“清除帧”，或者右击 (Windows) 或按住 Control 键单击 (Macintosh) 该关键帧，然后从上下文菜单中选择“清除关键帧”。被清除的关键帧以及到下一个关键帧之前的所有帧都将由该被清除的关键帧之前的帧内容替换。
  • 要更改补间序列的长度，请将开始关键帧或结束关键帧向左或向右拖动。要更改逐帧序列的长度，请参阅创建逐帧动画。
  • 要将库项目添加到当前关键帧中，请将该项目从“库”面板拖到舞台上。
  • 要翻转动画序列，请选择一个或多个层中的合适帧，然后选择“修改”>“时间轴”>“翻转帧”。在序列的起始和结束位置必须有关键帧。


绘图纸外观

通常情况下，Flash 在舞台中一次显示动画序列的一个帧。为了帮助您定位和编辑逐帧动画，您可以在舞台中一次查看两个或多个帧。播放头下面的帧用全彩色显示，但是其余的帧是暗淡的，看起来就好像每个帧是画在一张半透明的绘图纸上，而且这些绘图纸相互层叠在一起。无法编辑暗淡的帧。

要在舞台上同时查看动画的几个帧：

  • 单击“绘图纸外观”按钮。在起始绘图纸外观和结束绘图纸外观标记（在时间轴标题中）之间的所有帧被重叠为“文档”窗口中的一个帧。

要控制绘图纸外观显示，请执行以下操作之一：

  • 要将具有绘图纸外观的帧显示为轮廓，请单击“绘图纸外观轮廓”按钮。
  • 要更改任一绘图纸外观标记的位置，将它的指针拖到一个新的位置。（通常情况下，绘图纸外观标记和当前帧指针一起移动。）
  • 要编辑绘图纸外观标记之间的所有帧，请单击“编辑多个帧”按钮。绘图纸外观通常只允许编辑当前帧。但是，您可以正常显示绘图纸外观标记之间的每个帧的内容，并且使每个帧都可供编辑，而不管哪一个是当前帧。

    注意：当绘图纸外观打开时，锁定层（有个挂锁图标的层）不会显示。为了避免搞乱多数图像，可以锁定或隐藏不想使用绘图纸外观的层。

更改绘图纸外观标记的显示：

  • 单击“修改绘图纸标记”按钮，然后从菜单中选择一个项目：

    “总是显示标记”选项会在时间轴标题中显示绘图纸外观标记，而不管绘图纸外观是否打开。

    “锚定绘图纸外观”选项会将绘图纸外观标记锁定在它们在时间轴标题中的当前位置。通常情况下，绘图纸外观范围是和当前帧的指针以及绘图纸外观标记相关的。通过锚定绘图纸外观标记，可以防止它们随当前帧的指针移动。

    “绘图纸 2”选项会在当前帧的两边显示两个帧。

    “绘图纸 5”选项会在当前帧的两边显示五个帧。

    “绘制全部”选项会在当前帧的两边显示所有帧。


移动整个动画

如果要在舞台中移动整个动画，必须一次移动所有帧和层中的图形才能避免重新对齐所有的对象。

将整个动画移动到舞台中的另一个位置：

  1. 解除锁定所有的层。

    要移动一个或多个层中上的所有内容而不移动其他层上的任何内容，请锁定或隐藏不想移动的所有层。

  2. 单击时间轴中的“编辑多个帧”按钮。
  3. 拖动绘图纸外观标记使它们包含要选择的所有帧，或单击“修改绘图纸标记”，然后选择“绘制全部”。
  4. 选择“编辑”>“全选”。
  5. 将整个动画拖到舞台中的新位置。


使用遮罩层

要获得聚光灯效果以及转变，可以使用遮罩层创建一个孔，通过这个孔可以看到下面的层。遮罩项目可以是填充的形状、文字对象、图形元件的实例或影片剪辑。可以将多个图层组织在一个遮罩层之下来创建复杂的效果。

要创建动态效果，可以让遮罩层动起来。对于用作遮罩的填充形状，可以使用补间形状；对于文字对象、图形实例或影片剪辑，可以使用补间动画。当使用影片剪辑实例作为遮罩时，可以让遮罩沿着运动路径运动。

要创建遮罩层，可以将遮罩项目放在要用作遮罩的层上。和填充或笔触不同，遮罩项目像是个窗口，透过它可以看到位于它下面的链接层区域。除了透过遮罩项目显示的内容之外，其余的所有内容都被遮罩层的其余部分隐藏起来。一个遮罩层只能包含一个遮罩项目。按钮内部不能有遮罩层，也不能将一个遮罩应用于另一个遮罩。

您也可以使用动作脚本从影片剪辑中创建一个遮罩层。用动作脚本创建的遮罩层只能应用于另一个影片剪辑。请参阅将影片剪辑用作遮罩。

本示例使用一个影片剪辑遮蔽另一个影片剪辑。

本示例使用一个影片剪辑遮蔽两个层上的两个影片剪辑。

本示例使用一个影片剪辑遮蔽一个包含遮罩的影片剪辑。

要创建遮罩层：

  1. 选择或创建一个层，其中包含出现在遮罩中的对象。
  2. 选择该层，然后选择“插入”>“时间轴”>“图层”以在其上创建一个新层。

    遮罩层总是遮住紧贴其下的层，因此要确保在正确的地方创建遮罩层。

  3. 在遮罩层上放置填充形状、文字或元件的实例。

    Flash 会忽略遮罩层中的位图、渐变色、透明、颜色和线条样式。在遮罩中的任何填充区域都是完全透明的；而任何非填充区域都是不透明的。

  4. 右击 (Windows) 或按住 Control 键单击 (Macintosh) 时间轴中的遮罩层名称，然后从上下文菜单中选择“遮罩层”。

    该层将转换为遮罩层，这将用一个遮罩层图标来表示。紧贴它下面的层将链接到遮罩层，其内容会透过遮罩上的填充区域显示出来。被遮罩的层的名称将以缩进形式显示，其图标将更改为一个被遮罩的层的图标。

  5. 要在 Flash 中显示遮罩效果，请锁定遮罩层和被遮住的层。

要在创建遮罩层后遮住其他的层，请执行以下操作之一：

  • 将现有的层直接拖到遮罩层下面。
  • 在遮罩层下面的任何地方创建一个新层。
  • 选择“修改”>“时间轴”>“图层属性”，然后在“图层属性”对话框中选择“被遮罩”。

断开层和遮罩层的链接：

  1. 选择要断开链接的层。
  2. 执行以下其中一项操作：
    • 将层拖到遮罩层的上面。
    • 选择“修改”>“时间轴”>“层属性”，然后选择“正常”。

要使遮罩层上的填充形状、类型对象或图形元件实例动起来：

  1. 选择时间轴中的遮罩层。
  2. 在“锁定”列中单击，解除对遮罩层的锁定。
  3. 执行以下其中一项操作：
    • 如果遮罩对象是一个填充形状，请根据补间形状所述对该对象应用补间形状。
    • 如果遮罩对象是类型对象或图形元件实例，请根据补间实例、组和类型所述对该对象应用补间动画。
  4. 当完成了动画操作后，在“锁定”列中单击遮罩层，再次锁定该层。

要让遮罩层上的影片剪辑动起来：

  1. 选择时间轴中的遮罩层。
  2. 双击舞台中的影片剪辑，在当前位置编辑该剪辑，并显示影片剪辑的时间轴。
  3. 根据补间实例、组和类型所述对影片剪辑应用补间动画。要使影片剪辑沿运动路径动起来，请参阅沿着路径补间动画。
  4. 当完成动画过程后，单击“在当前位置编辑”窗口中的“返回”按钮，返回到文档编辑模式。
  5. 在“锁定”列中单击遮罩层，再次锁定该层。


使用视频概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 为您提供了多种在 Flash 文档中加入视频的方法：

  • 可以将 MOV、AVI、MPEG 或其他格式（取决于您的系统）的视频剪辑导入为 Flash 中的嵌入文件。与导入的位图或矢量插图文件一样，嵌入的视频文件成为 Flash 文档的一部分。有关在导入嵌入视频时所支持的文件格式的信息，请参阅关于导入视频的文件格式。
  • 可以将 Macromedia Flash 视频 (FLV) 格式的视频剪辑直接导入到 Flash。当您导入 FLV 文件时，可以使用已应用于这些文件的编码选项。不需要在导入过程中选择编码选项。请参阅导入 Macromedia Flash 视频 (FLV) 文件。

    注意：可以从 Flash 中导出 FLV 格式的视频剪辑，以用于 Flash 文档或其他应用程序。请参阅Macromedia Flash 视频 (FLV)。

  • 可以使用动作脚本中的 NetConnection 和 NetStream 对象在运行时期间回放 Flash 文档中的外部 FLV 文件。请参阅关于动态回放外部 FLV 文件。
  • 可以将 QuickTime 格式的视频剪辑导入为链接文件。包含链接 QuickTime 视频的 Flash 文档必须以 QuickTime 格式发布。链接的视频文件不会成为 Flash 文档的一部分，而是在 Flash 文档中保留指向链接文件的指针。请参阅导入链接的 QuickTime 视频文件。
  • 如果具有 Macromedia Flash MX Professional 2004，则可以使用 FLV 文件格式以简单高效的工作流程创建和导入视频。您可以从使用 Macromedia Flash 视频 (FLV) 插件的视频编辑应用程序中导出 FLV 文件。请参阅从视频编辑应用程序中导出 FLV 文件（仅限 Flash Professional）。可以使用流媒体组件回放 FLV 文件。请参阅用媒体组件播放 FLV 视频剪辑（仅限 Flash Professional）。

控制导入视频文件的回放有两种选择：

  • 可以使用视频行为（预先编写的“动作脚本”脚本）控制视频回放。请参阅使用行为控制视频回放。
  • 如果您喜欢使用动作脚本，可以自己编写动作脚本来控制视频回放。您可以播放或停止视频、跳到某帧和以其他方式控制视频。也可以显示来自摄像机的实时视频流。请参阅关于使用时间轴控制视频回放。

注意：可以通过沿时间轴拖动播放头预览导入视频的帧。但是，声音不会回放。要预览具有声音的视频，可以使用“测试影片”命令。

可以使用“属性”检查器和“嵌入视频属性”对话框修改嵌入的和链接的视频剪辑。“属性”检查器使您可以指定剪辑的实例名称、更改宽度、高度、注册点，以及将视频剪辑与另一个视频剪辑交换。“嵌入视频属性”对话框使您可以重命名视频剪辑，更新在外部应用程序中编辑的导入视频，或者导入另一个视频以替换所选的剪辑。请参阅更改视频剪辑属性。

有关视频处理的课程，请参阅 Macromedia Flash 支持中心上的“导入和编辑视频”，网址为 www.macromedia.com/support/flash/images_video/flash_video/。


关于导入视频的文件格式

如果您的系统上安装了 QuickTime 4 或更高版本（Windows 或 Macintosh）或 DirectX 7 或更高版本（仅限 Windows），则可以导入各种文件格式的嵌入视频剪辑，格式包括 MOV（QuickTime 影片）、AVI（音频视频交叉文件）和 MPG/MPEG（运动图像专家组文件）。可以导入 MOV 格式的链接视频剪辑。

可以将带有嵌入视频的 Flash 文档发布为 SWF 文件。带有链接视频的 Flash 文档必须以 QuickTime 格式发布。

如果系统中安装了 QuickTime 4（Windows 和 Macintosh），则在导入嵌入视频时支持以下的视频文件格式：

文件类型 | 扩展名
音频视频交叉 | .avi
数字视频 | .dv
运动图像专家组 | .mpg、.mpeg
QuickTime 影片 | .mov

如果系统安装了 DirectX 7 或更高版本（仅限 Windows），则在导入嵌入视频时支持以下的视频文件格式：

文件类型 | 扩展名
音频视频交叉 | .avi
运动图像专家组 | .mpg、.mpeg
Windows 媒体文件 | .wmv、.asf

在默认情况下，Flash 使用 Sorenson Spark 编解码器 导入和导出视频。编解码器是一种压缩/解压缩算法，用于控制导入和导出期间多媒体文件的压缩和解压缩方式。有关 Sorenson Spark 编解码器的信息，请参阅关于 Sorenson Spark 编解码器。

如果试图导入系统不支持的文件格式，则 Flash 会显示一条警告消息，指明无法完成该操作。在有些情况下，Flash 可能只能导入文件中的视频，而无法导入音频。例如，系统不支持用 QuickTime 4 导入的 MPG/MPEG 文件中的音频。在这种情况下，Flash 会显示警告消息，指明无法导入该文件的音频部分。但是仍然可以导入没有声音的视频。

注意：通过使用在“发布设置”对话框中选择的全局音频流设置，可以将导入的音频作为流式音频进行发布或导出。请参阅为 Flash SWF 文件格式设置发布选项。


关于压缩

Sorenson Spark 是包含在 Flash 中的运动视频编解码器，它使您可以向 Flash 中添加嵌入的视频内容。Spark 是高品质的视频编码器和解码器，它显著地降低了将视频发送到 Flash 所需的带宽，同时提高了视频的品质。由于包含了 Spark，Flash 在视频性能方面获得了重大飞跃。在 Flash 5 或更早的版本中，只能使用顺序位图图像模拟视频。

现在可供使用的 Sorenson Spark 有两个版本：Sorenson Spark 标准版包含在 Flash MX 2004 和 Flash Player 7 中。Spark 标准版编解码器对于慢速运动的内容（例如人在谈话）可以产生高品质的视频。Spark 视频编解码器由一个编码器和一个解码器组成。编码器（或压缩程序）是 Spark 中用于压缩内容的组件。解码器（或解压缩程序）是对压缩的内容进行解压以便能够对其进行查看的组件。解码器包含在 Flash Player 中。

对于数字媒体，可以应用两种不同类型的压缩： 空间 和时间。

时间压缩可以识别各帧之间的差异，并且只存储这些差异，以便根据帧与前面帧的差异来描述帧。没有更改的区域只是简单地重复前面帧中的内容。时间压缩的帧通常称为帧间。

另一方面，空间压缩适用于单个数据帧，与周围的任何帧无关。空间压缩可以是无损 的（不丢弃图像中的任何数据）或有损 的（有选择地丢弃数据）。空间压缩的帧通常称为内帧。

Sorenson Spark 是帧间编解码器。与其他压缩技术相比，Sorenson Spark 的高效帧间压缩在众多功能中尤为独特。它只需要比大多数其他编解码器都要低得多的数据速率，就能产生高品质的视频。许多其他编解码器使用内帧压缩；例如，JPEG 是内帧编解码器。

但是，帧间编解码器也使用内帧。内帧用作帧间的参考帧（关键帧）。Sorenson Spark 总是从关键帧开始处理。每个关键帧都成为后面的帧间的主要参考帧。只要下一帧与上一帧显著不同，该编解码器就会压缩一个新的关键帧。


用 Sorenson Spark 创建 Flash 视频的提示

如何压缩视频很大程度上取决于视频的内容。对于动作极少且只是间中动一两下的谈话者头部画面，对它的视频剪辑进行压缩与对足球比赛的镜头进行压缩有很大不同。以下是关于产生最佳 Flash 视频的一些提示：

力求简洁 避免使用复杂的过渡特效，这是因为它们的压缩效果并不好，并且可能会使最终压缩的视频在画面过渡时显得“矮胖”。硬切换通常最好，也可以使用快速的淡入淡出。假设有一段视频显示一个从第一条轨道后面开始缩放的物体，该物体同时还进行“页面转换”或绕着一个球转动，最后飞离屏幕，这些画面可能很吸引人，但其压缩效果通常欠佳，因此应少用。

了解观众的数据速率 当通过 Internet 发送视频时，则应该以较低的数据速率产生文件。高速连接 Internet 的用户几乎不用等待即可查看该文件，但是拨号用户必须等待文件下载。最好将剪辑变短，使得下载时间处于拨号用户能够接受的范围内。

选择适当的帧频 帧频表明每秒钟播放的帧数。如果剪辑的数据速率较高，则较低的帧频可以改善在低端计算机上的回放效果。例如，如果要压缩动作较少的谈话者头部的视频剪辑，将帧频降低一半可能只会节省 20% 的数据速率。但是，如果压缩高速运动的视频，降低帧频会对数据速率产生显著的影响。

因为视频在以最初的帧频观看时效果会好得多，所以如果发送通道和回放平台允许的话，Macromedia 建议保留高的帧频。但是，如果需要降低帧频，按整数倍降低帧频将会带来最佳结果。

选择适合数据速率的帧大小 和帧频一样，文档的帧大小对于产生高品质的视频是很重要的。对于给定的数据速率（连接速度），增大帧大小会降低视频品质。在为文档选择帧大小时，还必须考虑帧频、原始资料和个人喜好。应将下面列出的常用帧大小作为准则使用。做些试验来找出适合您的项目的最佳设置。

调制解调器：160 x 120

双信道 ISDN：192 x 144

T1/DSL/电缆：320 x 240

了解渐进式下载 应该了解下载视频所需的时间。在下载视频剪辑时，您可能希望显示其他一些内容来“掩饰”下载。对于较短的剪辑，可以使用下面的公式：暂停 = 下载时间 - 播放时间 + 10% 的播放时间。例如，如果剪辑是 30 秒长，并且需要一分钟进行下载，则应该给剪辑 33 秒的缓冲时间：60 秒 - 30 秒 + 3 秒 = 33 秒。

使用清晰的视频 原来的视频品质越高，最终的效果就越好。虽然 Internet 视频的帧频和帧大小通常都小于在电视上看到的，但是计算机显示器比传统的电视机具有更好的颜色保真度、饱和度、清晰度和分辨率。即使是显示在小窗口中，图像品质对于数字视频的重要性也比对于标准模拟电视的重要性高。人为干扰和杂波很难在 TV 上观察到，但是在计算机上却明显得使人厌烦。

消除杂波和交错 在捕获视频内容之后，您可能需要消除杂波和交错。

制作音频时遵守同样的准则 在制作音频时也需考虑制作视频时的同样问题。为了达到好的音频压缩效果，必须使用清晰的原始音频。如果要对 CD 中的素材编码，则在记录文件时，尝试使用直接数字转换而不是通过声卡的模拟输入来进行。声卡会引入不必要的数模和模数转换，这样会在源音频中产生噪声。可以找到用于 Windows 和 Macintosh 平台的直接数字转换工具。如果必须从模拟源中进行记录，一定要使用最高品质的声卡。


导入嵌入的视频文件

“视频导入”向导为将视频导入到 Flash 文档提供了简洁的界面。此向导使您可以选择是否将视频剪辑导入为嵌入或链接文件。

当将视频剪辑导入为嵌入文件时，您可以在向导中选择对视频进行编码和编辑的选项。单击“下一步”按钮可进入向导中后面的窗格，单击“上一步”按钮可返回到前面的窗格。

可以将各种文件格式的视频剪辑导入为嵌入文件，具体取决于您的系统。有关支持的文件格式的信息，请参阅关于导入视频的文件格式。可以通过沿时间轴拖动播放头预览导入视频的帧。但是，声音不会回放。要预览具有声音的视频，请使用“测试影片”命令。请参阅测试文档的下载性能。

当将视频导入为嵌入文件时，您可以在导入之前编辑此视频。也可以应用自定义的压缩设置，包括带宽或品质设置以及颜色纠正、裁切和其他选项的高级设置。在“视频导入”向导中可以选择编辑和编码选项。导入视频剪辑后无法对它进行编辑。

嵌入的视频使用 Sorenson Spark 编解码器进行编码。请参阅关于 Sorenson Spark 编解码器。

使用“属性”检查器，您可以为嵌入的剪辑指定实例名称，更改其宽度、高度和在舞台上的位置，以及将嵌入的剪辑与另一个视频剪辑交换。使用“嵌入视频属性”对话框，可以重命名视频剪辑，更新在外部应用程序中编辑的导入视频剪辑，或者导入另一个视频以替换所选的剪辑。请参阅更改视频剪辑属性。

可以将嵌入的视频导出为 Macromedia Flash 视频 (FLV) 文件，它会保留在创建 FLV 文件时所应用的压缩设置。请参阅Macromedia Flash 视频 (FLV)。

有关视频处理的课程，请参阅“帮助”中的 >“如何”>“快速任务”>“创建文档”或“导入并编辑视频”。

要导入嵌入的视频剪辑：

  1. 执行以下其中一项操作：
    • 要将视频剪辑直接导入到当前 Flash 文档的舞台中，请选择“文件”>“导入”>“导入到舞台”。
    • 要将视频剪辑导入到当前 Flash 文档的库中，请选择“文件”>“导入”>“导入到库”。
  2. 执行以下其中一项操作：
    • 要导入整个视频剪辑而不编辑它，请选择“导入整个视频”。单击“下一步”。执行步骤 3 以继续选择视频的压缩选项。
    • 要在导入视频剪辑之前对其进行编辑，请选择“先编辑视频”。单击“下一步”。要为视频选择编辑选项，请参阅在“视频导入”向导中编辑视频剪辑下的说明。
  3. 执行以下其中一项操作：
    • 要应用预定义的压缩配置文件，请从弹出菜单中选择一个“带宽”选项。
    • 要创建自定义的压缩配置文件，请选择“创建新配置文件”，或从“压缩配置文件”弹出菜单中选择预定义的压缩率，然后单击“编辑”。有关详细信息，请参阅在“视频导入”向导中编辑视频剪辑。
  4. 要应用高级视频编码以指定颜色、尺寸、轨道和音频选项，请从“高级设置”弹出菜单中选择“创建新配置文件”。有关详细信息，请参阅选择“视频导入”向导中的高级设置。
  5. 单击“结束”以关闭“视频导入”向导和完成视频导入过程。

要在外部编辑器中编辑嵌入的视频剪辑后对其进行更新：

  1. 在“库”面板中选择视频剪辑。
  2. 在“库”面板右上角的选项菜单中选择“属性”。
  3. 在“嵌入视频属性”对话框中，单击“更新”。

    即会用编辑过的文件更新嵌入的视频剪辑。您初次导入该视频时选择的压缩设置会重新应用到更新的剪辑。


在“视频导入”向导中编辑视频剪辑

“视频导入”向导提供编辑选项，使您可以在导入嵌入视频时对其进行编辑。您可以选择剪辑的开始和停止导入点、从一个导入的剪辑中创建多个剪辑和选择其他编辑选项。导入视频剪辑时进行编辑对于毛片特别有用。

要编辑嵌入的视频剪辑：

  1. 导入嵌入的视频剪辑。
  2. 选择“先编辑视频”，然后单击“下一步”以打开“视频导入”向导的“编辑”窗格。
  3. 要浏览视频中的帧，请执行以下操作之一：
    • 沿播放栏拖动播放头。
    • 单击“播放”按钮进行播放，单击“暂停”按钮在所需的帧上停止。
    • 单击“控制器”中的“后退”和“前进”按钮，一次向后或向前移动一帧。
  4. 要设置开始和停止导入点（开始和结束帧），请执行以下操作之一：
    • 拖动开始和停止导入点（播放栏下面的三角形）。
    • 单击播放栏下面的按钮控件中的“开始导入”或“停止导入”按钮，以在播放头的当前位置设置开始或结束帧。
  5. 要播放视频，请执行以下操作之一：
    • 单击按钮控件中的“播放”按钮以从当前播放头位置播放视频。
    • 单击“预览”以在当前开始或停止导入点播放视频。

      注意：单击按钮控件中的“停止”按钮可停止视频回放。

  6. 要利用当前开始和停止导入点创建剪辑，请单击“创建剪辑”。剪辑出现在“编辑”窗格左侧的滚动窗格中。

    要从同一个文件中创建其他剪辑，则按第 4 步所述选择剪辑的开始和停止导入点，然后再次单击“创建剪辑”。

  7. 要重命名剪辑，在滚动窗格中选择该剪辑并输入新的名称。
  8. 要重新编辑剪辑，在滚动窗格中选择该剪辑。按第 4 步所述选择新的开始和停止导入点，然后单击“更新剪辑”。
  9. 要将滚动窗格中的所有剪辑合并为单一剪辑以便导入，请选择“导入后将剪辑列表合并到单一库项目”。
  10. 要更改滚动窗格中的剪辑的顺序，请在滚动窗格中选择一个剪辑并单击“向上箭头”或“向下箭头”按钮。

    注意：滚动窗格中剪辑的顺序是指，如果您将它们合并为单一剪辑以便导入，它们将出现的顺序。

  11. 要从滚动窗格中删除剪辑，请选择此剪辑并单击“删除”(-) 按钮。
  12. 当您完成编辑过程时，请单击“下一步”以进入“视频导入”向导的下一个窗格。


选择“视频导入”向导中的压缩配置文件

“视频导入”向导提供了一组在导入过程中用于压缩视频剪辑的选项。在“编码”面板中，您可以输入“带宽”或“品质”的值、控制关键帧的频率、确保关键帧中图像品质的一致、提高编码速度，以及使导入视频的回放速度与 Flash 文档主时间轴的回放速度同步。

选择压缩配置文件即决定将应用于导入的嵌入视频的压缩级别。可以根据带宽或视频品质选择配置文件。

  • 自定义带宽选项的范围从 0 Kbps 到 750 Kbps，并且指定了视频的大致下载速度，单位为千位/秒。预设选项包括 56 Kbps 调制解调器、256Kbps、512 Kbps 和 786 Kbps DSL 或电缆。为了获得一致的下载速度，各帧的品质设置可能会有所变动。
  • 视频品质设置（范围从 0 到 100）为所有帧指定了压缩级别。也可以指定关键帧的帧频。为了获得一致的压缩级别，下载速度可能会有所变动。

要降低压缩文件所需的时间，可以选择“快速压缩”。

可以将嵌入视频的帧频与主影片时间轴的帧频进行同步。也可以调整视频帧频与主时间轴帧频的比率，以便在回放期间从导入视频中删除一些帧。

有些情况下，您可能不希望嵌入视频与 SFW 文件同步，而是希望防止嵌入视频中的帧被删除或复制。例如，假如您要将帧频为 29.97 帧/秒 (fps) 的 NTSC 视频剪辑导入到帧频为 30 fps 的 Flash 影片中。取消选择“同步”选项可以防止删除嵌入视频中的帧，从而防止在回放期间因删除了帧而出现停顿。

可以将自定义的压缩配置文件保存为命名的设置。新的设置将出现在“压缩配置文件”弹出菜单中。

要创建自定义压缩配置文件：

  1. 从“编码”面板的“压缩配置文件”弹出菜单中选择“创建新配置文件”或预定义的压缩率，然后单击“编辑”。
  2. 执行以下其中一项操作：
    • 选择“带宽”，然后拖动滑块或输入介于 0 至 750 Kbps 之间的带宽值。带宽选项指定了视频的大致下载速度，单位为千位/秒。为了获得一致的下载速度，各帧的品质设置可能会有所变动。
    • 选择“品质”，然后拖动滑块或输入介于 0 至 100 之间的品质值。品质选项指定了所有帧的压缩级别。品质值较高可改善图像效果，但增加了下载时间。为了获得一致的压缩级别，下载速度可能会有所变动。
  3. 对于“关键帧间隔”，拖动滑块或输入一个值，以控制视频剪辑中关键帧（具有完整数据的帧）的频率。例如，如果关键帧间隔为 30，则 Flash 每隔 30 帧存储一个完整的帧。对于间隔之间的帧，Flash 只存储与前一帧不同的数据。如果间隔较小，则可以更快速地快进或后退至特定的帧，但是文件会较大。

    注意：如果关键帧间隔为 1，则视频的每个帧都存储完整的帧。建议只对非常小的视频文件使用此设置。

  4. 如果是使用某个带宽值对视频进行编码，请选择“高品质关键帧”以确保各关键帧具有一致的图像品质。如果不选择此选项，则使用一致的带宽速度可能会降低关键帧的品质。
  5. 选择“快速压缩”以降低压缩文件所需的时间。提高编码速度也可能会降低图像品质。
  6. 选择“将视频同步到 Macromedia Flash 文档的帧频”，以使导入视频的回放速度与 Flash 文档主时间轴的回放速度同步。取消选择此选项将禁止帧频同步。
  7. 为“对于一定数量的 Flash 帧进行编码的视频帧数量”选择一个值，以指定导入的视频帧与 Flash 主时间轴帧之间的比率。例如，要对于每个 Flash 主时间轴帧播放一个导入视频帧，请选择“1:1”；要对于每两个主时间轴帧播放一个导入视频帧，则请选择“1:2”。

    从导入视频中删除帧并不会减慢视频的运行。相反，由于每秒钟显示的帧数更少，因此视频在回放时显得更不连贯。

  8. 单击“下一步”。
  9. 在“编码（第 3 部分，保存）”面板中输入名称以及说明。单击“下一步”以保存设置。
  10. 执行以下其中一项操作：
    • 编辑“高级”设置。
    • 单击“结束”。
  11. 如果为“跟踪选项”选择“当前时间轴”或“图形元件”，则在导入的剪辑比当前时间轴包含更多的帧时，将出现一则通知。执行以下其中一项操作：
    • 单击“是”向当前时间轴跨度添加所需数量的帧。
    • 单击“否”保持该跨度的当前大小。除非随后向该跨度添加帧，否则将不会显示导入剪辑中超出该跨度中帧数的那些帧。


选择“视频导入”向导中的高级设置

在“视频导入”向导中，可以对导入的视频应用高级设置。颜色纠正选项可让您调整色相、饱和度、亮度、对比度和灰度系数，以便控制颜色品质。尺寸选项可让您缩小导入视频的缩放比例，或者从上边缘、下边缘、左边缘或右边缘裁切视频。

跟踪选项可让您选择导入的视频将会是何种类型的对象：当前时间轴上的视频对象、Flash 文档的第一帧上的影片剪辑或当前时间轴上的图形元件。音频选项可让您将音轨作为单独的文件或视频文件的集成部分导入，或者将音轨排除在导入内容之外。

可以将自定义的高级设置保存为命名的配置文件。新的设置将出现在“高级设置”弹出菜单中。

要应用高级视频编码设置：

  1. 在“视频导入”向导中，在指定了“压缩配置文件”的选项之后，从“高级设置”弹出菜单中选择“创建新配置文件”。（如果先前创建了“高级设置”配置文件，您可以从该弹出菜单中选择一个已命名的设置。）
  2. 在“颜色”选项下输入数值或拖动弹出滑块，以便对视频图像应用颜色纠正：

    “色相”测量颜色值，通常由颜色名称（如红色或绿色）表示。色相标识为在标准色轮中的位置。色相值可介于 -180 和 180 之间。

    “饱和度”测量颜色的强度或纯度。饱和度测量与色相相比的灰色数量，以介于 -100 至 +100 之间的百分比表示。饱和度值越小表示灰色越多。值越高表示颜色越多。

    “亮度”测量颜色的相对亮度或暗度，以介于 -100 至 +100 之间的百分比表示。值越小表示越黑，值越大表示越白。

    “对比度”测量图像中的暗明对比，以介于 -100 至 +100 之间的百分比值表示。值越小表示对比度越低。

    “灰度系数”测量整体亮度级别，以介于 0.1 至 1.8 之间的值表示。值越小表示图像越暗。值越大，图像中的黑暗成份会保持黑暗，而明亮的成份会变得更亮。

    “重置”将所有“颜色”选项重置为默认值。

  3. 在“尺寸”选项下，输入数值或拖动弹出滑块以调整视频尺寸：
    • 对于“缩放”，输入一个介于 0 至 100 之间的值以降低视频的缩放比例。“宽度”和“高度”值以像素为单位指示视频的大小。（不能将视频的缩放比例增加到超过其原始大小。）
    • 对于“裁切”，输入右边缘、左边缘、上边缘和下边缘的值以裁切视频。预览窗口中的辅助线表明裁切将发生的位置。
  4. 在“跟踪选项”下，为“导入至”选择一个选项，以指定导入的视频将为何种类型的对象：

    “当前时间轴”将视频导入为 Flash 文档内当前时间轴中的视频对象。如果当前时间轴中没有足够的帧容纳此视频，Flash 将提示您为导入添加更多的帧。通过此选项，可以在当前时间轴中浏览视频帧。但是，无法对视频对象应用特效。

    “影片剪辑”将视频导入为 Flash 文档的第一帧中的影片剪辑。通过此选项，您可以应用特效。然而，无法在当前时间轴中浏览视频帧。（要浏览帧，必须打开影片剪辑的时间轴。）

    “图形元件”将视频导入为当前时间轴中的一个图形元件。如果当前时间轴中没有足够的帧容纳此视频，Flash 将提示您为导入添加更多的帧。通过此选项，您可以在当前时间轴中浏览视频帧，而且可以对视频应用特效。

  5. 对于“音频轨道”，选择某个选项以指定音频的导入方式：

    “分离”将音轨作为声音对象导入（与视频文件分离）。

    “集成”将音轨作为视频文件的一部分导入。

    “无”不导入音轨。

  6. 单击“下一步”。
  7. 为此“高级设置”输入名称和说明以保存设置。此名称在您下次使用“视频导入”向导时出现在“高级设置”弹出菜单中。单击“下一步”。
  8. 单击“结束”以关闭“视频导入”向导和导入视频。
  9. 如果为“跟踪选项”选择“当前时间轴”或“图形元件”，则在导入的剪辑比当前时间轴包含更多的帧时，将出现一则通知。执行以下其中一项操作：
    • 单击“是”向当前时间轴跨度添加所需数量的帧。
    • 单击“否”保持该跨度的当前大小。除非随后向该跨度添加帧，否则将不会显示导入剪辑中超出该跨度中帧数的那些帧。


导入 Macromedia Flash 视频 (FLV) 文件

Macromedia Flash 视频 (FLV) 文件格式使您可以导入或导出带编码音频的静态视频流。此格式可以用于通信应用程序，如视频会议。

FLV 格式的文件是使用 Sorensen 编解码器压缩的。请参阅关于 Sorenson Spark 编解码器。

可以使用“导入”或“导入到库”命令，或者“嵌入视频属性”对话框中的“导入”按钮导入 FLV 格式的文件。

要导入 FLV 格式的视频剪辑，请执行以下操作之一：

  • 选择“文件”>“导入”或“文件”>“导入到库”。
  • 在“库”面板中选择任意现有视频剪辑，然后从“库”选项菜单中选择“属性”。在“嵌入视频属性”对话框中，单击“导入”。定位到您要导入的文件，然后在“打开”对话框中单击“打开”。


预览链接的 QuickTime 影片

如果要导入 QuickTime 视频剪辑，可以从 Flash 文件链接到该视频，而不是嵌入该视频。导入到 Flash 中的链接 QuickTime 影片并不会成为 Flash 文件的一部分，而是在 Flash 中保留指向该源文件的指针。

如果链接到一个 QuickTime 视频，则必须将该影片发布为 QuickTime 影片。不能以 SWF 格式显示链接的 QuickTime 影片。该 QuickTime 影片包含 Flash 轨道，但是链接的视频剪辑仍然保持 QuickTime 格式。

有关将 Flash 文件发布为 QuickTime 影片的详细信息，请参阅指定 QuickTime 影片的发布设置。

可以在 Flash 中缩放、旋转 QuickTime 影片和将其制作为动画。但是，无法在 Flash 中补间链接的 QuickTime 影片内容。

注意：QuickTime Player 目前不支持 Flash Player 6 文件。有关详细信息，请参阅“指定 QuickTime 影片的发布设置。

要将 QuickTime 视频导入为链接文件：

  1. 执行以下其中一项操作：
    • 要将视频剪辑直接链接到当前的 Flash 文档，请选择“文件”>“导入”>“导入到舞台”。
    • 要将视频剪辑链接到当前 Flash 文档的库，请选择“文件”>“导入”>“导入到库”。
  2. 在“导入视频”向导中，选择“链接到外部视频文件”。单击“下一步”。
  3. 如果在步骤 1 中将视频剪辑直接导入到舞台中，则倘若导入剪辑中所含帧数多于您将该剪辑放入当前 Flash 文档中的跨度所含的帧数，会出现一则警告。执行以下其中一项操作：
    • 单击“是”将该跨度扩展到所需的帧数。
    • 单击“否”保持该跨度的当前大小。除非随后向该跨度添加帧，否则将不会显示导入剪辑中超出该跨度中帧数的那些帧。

可以在发布 SWF 文件之前预览链接的 QuickTime 影片。当您导入链接的 QuickTime 影片时，Flash 会添加为预览 QuickTime 影片而需要的帧数，这与对嵌入视频所进行的操作一样。

注意：您无法使用“测试影片”命令预览链接的 QuickTime 影片内容。

要预览链接的 QuickTime 影片：

  • 单击“控制”>“播放”。


设置链接的 QuickTime 影片的目录路径

可以在当前 Flash 文档的库中设置链接的 QuickTime 视频剪辑的目录路径。

要设置链接的 QuickTime 视频剪辑的目录路径：

  1. 选择“窗口”>“库”，然后选择要编辑的链接的 QuickTime 影片。
  2. 在“库”面板右上角的选项菜单中选择“属性”。
  3. 单击“链接视频属性”对话框中的“设置路径”。
  4. 在“打开”对话框中，定位到链接的视频剪辑的文件并选择它，然后单击“打开”。
  5. 在“链接视频属性”对话框中，单击“确定”。


关于动态回放外部 FLV 文件

作为将视频导入到 Flash 创作环境的替代方法，您可以使用动作脚本在 Flash Player 中动态地回放外部 FLV 文件。可以回放发布为 HTTP 下载文件或本地媒体文件的 FLV 文件。要回放 FLV 文件，请使用 NetStream 对象和 Video 对象的 attachVideo 方法。

可以通过将视频导入到 Flash 创作工具，然后导出为 FLV 文件来创建 FLV 文件。有关将视频导出为 FLV 文件的信息，请参阅Macromedia Flash 视频 (FLV)。如果具有 Macromedia Flash MX Professional 2004，则可使用“FLV 导出”插件从支持的视频编辑应用程序中导出 FLV 文件。请参阅从视频编辑应用程序中导出 FLV 文件（仅限 Flash Professional）。

要回放外部 FLV 文件，您必须将 FLV 文件发布至某个 URL（http 站点或本地文件夹），并向 Flash 文档添加动作脚本代码，以便访问该文件和在运行时期间控制回放。

使用外部 FLV 文件时，有一些功能是在使用导入视频时没有的：

  • 可以在 Flash 文档中使用较长的视频剪辑，而不会减慢影片的回放速度。外部 FLV 文件是使用高速缓存 进行播放的。这意味着大文件被分为小块进行存储而且是动态访问的，并且要求的内存无需与嵌入的视频文件一样多。
  • 外部 FLV 文件可以与它在其中播放的 Flash 文档有不同的帧频。例如，可以将 Flash 文档的帧频设置为 30 fps，而将视频的帧频设置为 21 fps。这使您能更好地进行控制以确保流畅的视频回放。
  • 利用外部 FLV 文件，Flash 文档回放就不会在视频文件进行加载时中断。导入的视频文件有时可能会中断文档回放以执行一些功能，例如访问 CD-ROM 驱动器。FLV 文件可以独立于 Flash 文档而执行一些功能，因此不会中断回放。
  • 对于外部 FLV 文件，给视频内容加标题比较容易，这是因为可以使用回调函数访问视频的元数据。

有关回放 FLV 文件的详细信息，请参阅动态回放外部 FLV 文件。


更改视频剪辑属性

使用“属性”检查器，可以更改舞台上嵌入或链接视频剪辑的实例的属性。在“属性”检查器中，可以为实例指定实例名称和更改其宽度、高度以及在舞台上的位置。还可以交换 视频剪辑的实例 为视频剪辑的实例指定另一个元件。为实例分配不同的元件会在舞台上显示不同的实例，但是不会改变所有其他的实例属性（例如尺寸和注册点）。

“嵌入视频属性”对话框使您可以查看导入的视频剪辑的信息，包括它的名称、路径、创建日期、像素尺寸、长度和文件大小。您可以更改视频剪辑名称、更新视频剪辑（如果在外部编辑器中对其进行了修改），以及导入 FLV 视频以替换选定的剪辑。

注意：还可以使用“嵌入视频属性”对话框将视频剪辑导出为 FLV 文件。请参阅Macromedia Flash 视频 (FLV)。

要在“属性”检查器中更改视频实例属性：

  1. 在舞台上选择嵌入视频剪辑或链接视频剪辑的实例。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器中，执行以下任意一项操作：
    • 在“属性”检查器左侧的名称文本框中输入实例名称。
    • 输入 W 和 H 值以更改视频实例的尺寸。
    • 输入 X 和 Y 值以更改实例左上角在舞台上的位置。
    • 单击“交换”。在“交换嵌入视频”对话框中，选择一个视频剪辑以替换当前分配给该实例的视频剪辑。

      注意：只能用一个嵌入视频剪辑交换另一个嵌入视频剪辑，并且只能用一个链接视频剪辑交换另一个链接视频剪辑。

要在“嵌入视频属性”对话框中查看视频剪辑属性：

  1. 在“库”面板中选择一个视频剪辑。
  2. 从“库”选项菜单中选择“属性”。

要为视频剪辑指定新名称：

  1. 在“库”面板中选择视频剪辑。
  2. 从“库”选项菜单中选择“属性”。
  3. 在“嵌入视频属性”对话框中，在“名称”文本框中输入新名称。

要更新视频剪辑：

  1. 在“库”面板中选择视频剪辑。
  2. 从“库”选项菜单中选择“属性”。
  3. 在“嵌入视频属性”对话框中，单击“更新”。
  4. 定位到已更新的视频文件，然后单击“打开”。此文件将重新导入到 Flash 文档。

要用 FLV 剪辑替换视频剪辑：

  1. 在“库”面板中选择视频剪辑。
  2. 从“库”选项菜单中选择“属性”。
  3. 在“嵌入视频属性”对话框中，单击“导入”。
  4. 定位到将替换当前剪辑的 FLV 文件，然后单击“打开”。


使用行为控制视频回放

视频行为提供一种方法控制视频回放。行为是预先编写的“动作脚本”脚本，可以将其添加到某个对象（如视频剪辑）以便控制此对象。行为使您可以将动作脚本编码的强大功能、控制能力以及灵活性添加到文档中，而不必自己创建动作脚本代码。视频行为使您可以播放、停止、暂停、后退、快进、显示及隐藏视频剪辑。

要使用行为控制视频剪辑，您可以使用“行为”面板将行为应用于触发对象（如按钮）。您需要指定触发行为的事件（如释放按钮），选择目标对象（行为将影响的视频），并在必要时选择行为的设置，如后退的帧数。

以下行为已随附于 Flash MX 2004 和 Flash MX Professional 2004 中，用于控制嵌入视频。

行为 | 目的 | 参数
播放视频 | 在当前文档中播放视频。 | 目标视频实例名称
停止视频 | 停止该视频。 | 目标视频实例名称
暂停视频 | 暂停该视频。 | 目标视频实例名称
后退视频 | 按指定的帧数后退视频。 | 目标视频实例名称 帧数
快进视频 | 按指定的帧数快进视频。 | 目标视频实例名称 帧数
隐藏视频 | 隐藏该视频。 | 目标视频实例名称
显示视频 | 显示视频。 | 目标视频实例名称

有关视频处理的课程，请选择“帮助”>“如何”>“快速任务”>“创建文档”或“导入并编辑视频”。

要添加和配置行为：

  1. 选择将触发行为的对象，如按钮。
  2. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“添加”(+) 按钮，然后从“嵌入的视频”子菜单中选择所需的行为。
  3. 在出现的对话框中，选择要利用行为控制的视频。
  4. 选择“相对”或“绝对”路径。有关详细信息，请参阅使用绝对和相对目标路径。
  5. 若有必要，选择行为参数的设置，然后单击“确定”。

    行为的默认事件和动作即出现在“行为”面板中。

  6. 在“事件”下，单击“释放时”（默认事件），并从菜单中选择一个鼠标事件。如果要使用“释放时”事件，请保持该选项不变。


关于使用时间轴控制视频回放

可以通过控制包含视频的时间轴来控制嵌入或链接视频文件的回放。例如，要暂停正在主时间轴上播放的视频，可以调用以此时间轴为目标的 stop() 动作。同样地，可以通过控制某个影片剪辑元件的时间轴的回放来控制该元件中的视频对象。

可以对影片剪辑中导入的视频对象应用以下动作：goTo、play、stop、toggleHighQuality、stopAllSounds、getURL、FScommand、loadMovie、unloadMovie、ifFrameLoaded 和 onMouseEvent。要对视频对象应用这些动作，必须首先将视频对象转换为影片剪辑。有关详细信息，请参阅Video 类。

也可以使用动作脚本显示来自摄像机的实时视频流。首先，使用“库”面板中的“新建视频对象”将视频对象放在舞台上。然后，使用 Video.attachVideo 将视频流附加到视频对象。有关详细信息，请参阅Video.attachVideo()。


从视频编辑应用程序中导出 FLV 文件（仅限 Flash Professional）

如果您的系统装有 Macromedia Flash MX Professional 2004 和 QuickTime 6.1.1，则可以使用“FLV 导出”插件从支持的视频编辑应用程序中导出 FLV 文件。然后，可以将这些 FLV 文件直接导入到 Flash 以用于 Flash 文档。另外，可以在运行时期间在 Flash 文档中动态回放外部 FLV 文件。请参阅关于动态回放外部 FLV 文件。

从视频编辑应用程序中导出 FLV 文件极大地简化了在 Flash 文档中使用 FLV 文件的工作流程。通过“FLV 导出”插件，您可以在导出时选择视频和音频内容的编码选项，包括帧频、比特率、品质和其他选项。然后可以将 FLV 文件直接导入到 Flash，而无需在导入后对视频进行重新编码。有关视频格式和导入到 Flash 的详细信息，请参阅 http://www.macromedia.com/go/flash_support_cn/ 上的“Video Fundamentals”。

“FLV 导出”插件支持以下视频编辑应用程序：

  • Adobe After Effects（Windows 和 Macintosh）
  • Anystream Agility (Windows)
  • Apple FinalCut Pro (Macintosh)
  • Apple QuickTime Pro (Macintosh)
  • Avid Xpress DV（Windows 和 Macintosh）
  • Discreet Cleaner（Windows 和 Macintosh）
  • Discreet Cleaner XL（Windows 和 Macintosh）

您可以在安装完 Flash MX Professional 2004 后安装“FLV 导出”插件。此插件位于 QuickTime 文件夹中。从该位置，此“FLV 导出”插件可供使用 QuickTime 6.1.1 的任何应用程序使用，甚至在 FLV 安装之后添加的程序也能够使用它。

要安装“FLV 导出”插件：

  • 单击安装程序，然后遵循屏幕上的说明。

当您从某个编辑应用程序导出视频时，“Flash Video (FLV) Exporter”（Flash 视频导出器）可用来设置各种编码选项。Flash Video Exporter 分为三个主要部分：视频、音频和其他。“视频”部分包含 FLV 视频编码选项，“音频”部分包含了 MP3 音频编码比特率选项，而“其他”部分使您能够设置缩放比例和取消交错选项。

要从支持的应用程序中导出 FLV 文件：

  1. 当视频文件在视频编辑应用程序中打开时，请选择“文件”>“导出”>QuickTime。
  2. 在“导出”对话框的“导出”选项下，选择“Macromedia Flash 视频 (FLV)”，然后单击“选项”。

  3. 在 Flash Video (FLV) Exporter 对话框中，从弹出菜单中选择一种“编码方法”：

    Baseline (1 Pass) 是最基本的编码方法。此方法完全读取一遍文件，加载每一帧时对其进行压缩，并估算每一帧的比特率。产生的文件大小与在“限制数据速率”文本框中输入的值密切相关，原因是数据速率不能够因帧而异，尽管所需的数据多少不一。

    Better (1 Pass VBR) 与 Baseline（基线）相同，但编码使用的是“Variable Bitrate Encoding”（可变比特率编码，VBR）。“VBR（可变比特率编码）”使平均比特率等于或低于为视频指定的目标数据速率。这使得数据速率能够根据剪辑内容波动。如果能够以较少的数据编码帧，VBR 会自动做到。产生的文件类似于使用 Baseline 选项创建的文件，但文件大小可能会更小。

    屏幕录制编解码器用于以无损压缩录制屏幕操作。此压缩优化描述计算机屏幕的内容；例如，显示指针跨计算机屏幕移动的说明性视频。当选中“屏幕录制编解码器”时，“品质”、“限制数据速率”和“动画预计”项变灰。

  4. 对于“每秒帧数”，请输入一个值或从弹出菜单中选择一个帧频。要保留原始源剪辑的临时品质，请使用与原始源相同的帧频。如果将帧频降为较低的数据速率，“每秒帧数”应为源帧频的均分数（例如，为源帧频的一半或四分之一）。“每秒帧数”文本框旁边的弹出菜单包含了常用的帧频。
  5. 对于“限制数据速率”，请执行以下操作之一：
    • 选择预设的“品质”设置（正常、较好或最好）以自动选择一个限制数据速率值。此值由输出 FLV 文件的分辨率和帧频确定。当从此菜单中选择“低”、“中”和“高”时，“限制数据速率”文本框将更新以反映选择的值。
    • 使用弹出菜单窗口为“Kb/秒”选择一个值。
    • 如果发现预设的品质设置不适用于您特定的源镜头，请在“限制数据速率”文本框中输入一个较高的数据速率。
  6. 对于“关键帧”，请输入一个值以控制视频剪辑中关键帧（具有完整数据的帧）的频率。例如，如果关键帧间隔为 30，则 Flash 在剪辑中每隔 30 帧存储一个完整的帧。对于间隔之间的帧，Flash 只存储与前一帧不同的数据。较小的间隔存储较多的完整帧，会生成一个较大的文件。
  7. 对于“动画预计”，若要求较快的编码速度及较低的视频品质，则选择“快速”；若要求较慢的编码速度及较好的视频品质，则选择“最佳”。
  8. 对于“音频编码”，请选择以下选项：
    • 选择“音频”将音频内容随视频文件一起导出。取消选择此选项将不导出文件的音频。
    • 选择“单声道”将所有音频内容以单声道导出，或选择“立体声”将音频内容以立体声导出。
    • 对于“比特率”，请指定传输音频内容时的最大比特率。（音频在文件中是与视频内容分别编码的，因此可以有不同的比特率。）
  9. 在“其他”下，执行以下操作之一以调整视频大小：
    • 从弹出菜单中选择预设的图像大小。
    • 指定以像素为单位的“宽度”和“高度”值。
    • 指定原始图像大小的百分比。
  10. 检查“锁定高宽比”以保持与源剪辑相同尺寸的高宽比。
  11. 对于“取消交错”，选择“无”不会应用取消交错，选择“下部”会对 NTSC 格式取消交错，或选择“上部”对 PAL 格式取消交错。此选项使您能够选择是否从交错的源视频文件中去掉“上部”或“下部”字段。
  12. 单击“确定”。
  13. 选择保存导出的文件的位置，然后单击“保存”。


链接 MediaController 和 MediaDisplay 实例（仅限 Flash Professional）

采用 Flash MX Professional 2004 媒体组件，您可以在您的文档中快速而轻松地添加 Flash 视频和回放控件。再使用线索点，即可让您的视频与动画、文字和图片同步起来。例如，您可以创建一个 Flash 演示文稿，在该文稿中，视频在屏幕的一个区域播放，而文字和图片显示在另一区域中。插入视频中的线索点触发文字和图片的更新，使它们与视频的内容保持对应。

媒体组件包由三个组件构成：MediaDisplay，MediaController 和 MediaPlayback。有了 MediaDisplay 组件，若要将媒体添加到 Flash 文档，只需将组件拖到舞台并在“组件检查器”面板中对其进行配置即可。除了可以在“组件检查器”面板中设置参数以外，还可以添加触发其他动作的线索点。MediaDisplay 组件在回放期间不可见。只有视频剪辑是可见的。有关详细信息，请参阅媒体组件（仅限 Flash Professional）。。

MediaController 组件提供可让用户与流媒体交互的用户界面控制。控制器具有“播放”、“暂停”和“后退到开始处”按钮以及一个音量控制。它还有一个播放条，指出载入了多少媒体以及播放了多少媒体。可以向前或向后拖动播放条上的播放头滑块，以便快速移动到视频的不同部分。使用行为或动作脚本，您可以轻松地将该组件链接到 MediaDisplay 组件以显示视频流并提供用户控制。请参阅媒体组件（仅限 Flash Professional）。

MediaPlayback 组件提供最轻松快捷的方式，让您将视频和控制器添加到 Flash 文档。MediaPlayback 组件将 MediaDisplay 和 MediaController 组件组合成一个单一的集成组件。MediaDisplay 和 MediaController 组件实例自动相互链接以便进行回放控制。有关详细信息，请参阅媒体组件（仅限 Flash Professional）。

用“组件检查器”面板来配置所有三个组件的回放、大小和布局参数。这三个媒体组件在处理 MP3 音频内容时的表现都同样出色。

向 Flash 文档添加 MediaPlayback 组件：

  1. 打开“组件”面板（“窗口”>“开发面板”>“组件”），然后将 MediaPlayback 组件拖到舞台上。请参阅向 Flash 文档中添加组件。
  2. 选定组件后，打开“属性”检查器（“窗口”>“属性”），然后输入实例名称。
  3. 打开“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”），然后选择 FLV（默认设置）作为媒体类型。
  4. 输入参数值或使用默认设置：

    “视频长度”由播放条组件用来确定回放的进度。

    “毫秒”确定播放条和线索点是使用帧还是使用毫秒。

    “fps”设置视频回放时每秒播放的帧数。选定“毫秒”时，每秒帧数这一控制被禁用。

    “URL”设置媒体的路径和文件名或 URL。

    “自动播放”设置媒体在可用时即播放。

    “使用首选媒体大小”以 FLV 视频剪辑本身的大小和高宽比显示该剪辑。取消选择此选项时，媒体的高度和宽度与在组件检查器中设置的高度和宽度相同。

    “保持高宽比”在被选中时会维持媒体的原始高宽比。

    “控件位置”确定控制器是否位于视频剪辑的上方、下方、右方或左方。

    “控件可见性”确定控制器是否根据鼠标位置打开或关闭，或者锁定在打开或关闭状态。

向 Flash 文档添加 MediaDisplay 组件：

  1. 打开“组件”面板（“窗口”>“开发面板”>“组件”），然后将 MediaDisplay 组件拖到舞台上。请参阅向 Flash 文档中添加组件。
  2. 选定组件后，打开“属性”检查器（“窗口”>“属性”），然后输入实例名称。
  3. 打开“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”），然后选择 FLV（默认设置）作为媒体类型。
  4. 输入参数值或使用默认设置：

    “视频长度”由播放条组件用来确定回放的进度。

    “毫秒”确定播放条和线索点是使用帧还是使用毫秒。

    “fps”设置视频回放时每秒播放的帧数。选定“毫秒”时，每秒帧数这一控制被禁用。

    “URL”设置媒体的路径和文件名或 URL。

    “自动播放”设置媒体在可用时即播放。

    “使用首选媒体大小”以 FLV 视频剪辑本身的大小和高宽比显示该剪辑。取消选择此选项时，媒体的高度和宽度与在组件检查器中设置的高度和宽度相同。

    “保持高宽比”在被选中时会维持媒体的原始高宽比。

向 Flash 文档添加 MediaController：

  1. 打开“组件”面板（“窗口”>“开发面板”>“组件”），然后将 MediaController 组件拖到舞台上。请参阅向 Flash 文档中添加组件。
  2. 选定组件后，打开“属性”检查器（“窗口”>“属性”），然后输入组件的实例名称。
  3. 打开“组件检查器”面板，设置以下参数：

    “ActivePlayControl”在 SWF 文件打开时将播放条设置为“播放”或“暂停”状态。该参数与 MediaDisplay 组件中的“自动播放”配合使用。

    “BackgroundStyle”指示控制器的背景是否显示为默认设置或没有背景。

    “ControllerPolicy”确定控制器是否根据鼠标位置打开或关闭，或者锁定在打开或关闭状态。

    “水平”确定控制器的方向是水平的还是垂直的。

    “已启用”允许用户访问回放控件。

    “可见”允许用户看到控制器。

    “MinHeight”设置该实例允许的最小高度（以像素为单位）。

    “MinWidth”设置该实例允许的最小宽度（以像素为单位）。

媒体组件用事件来与其他媒体组件和 Flash 文档中的其他元素交互。MediaController 实例在其按钮被单击或滑块被拖动时广播事件。MediaDisplay 实例在以下时刻广播事件：回放开始和结束时、播放头移动时、媒体从来源下载完毕时，以及播放头通过线索点时。

为了使 MediaController 和 MediaDisplay 实例一起工作，它们必须倾听对方的事件并做出相应的响应。例如，用户单击 MediaController 上的“暂停”按钮时，它广播“单击”事件，具体内容为“暂停”。MediaDisplay 实例收到该事件时，它通过暂停回放做出响应。

Flash MX Professional 2004 包含两种行为：“关联控制器”和“关联显示”，这两种行为连接 MediaDisplay 和 MediaController 组件实例。只需这两种行为中的一种即可链接这两种组件。两种行为的最终结果都是一样的。

要将 MediaDisplay 实例链接到 MediaController 实例：

  1. 在将一个 MediaDisplay 实例和一个 MediaController 实例添加到文档时（请参阅向 Flash 文档添加 MediaDisplay 组件：和向 Flash 文档添加 MediaController：），选择 MediaDisplay 实例。
  2. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“添加”(+) 按钮，然后从“媒体”子菜单中选择“关联控制器”行为。
  3. 在“关联控制器”对话框中，浏览到 MediaController 实例的位置并选择该实例。如果您尚未命名实例，将提示您输入名称，输入后请单击“确定”。

    此行为将插入使组件实例可以相互倾听的代码。


定义线索点（仅限 Flash Professional）

当播放头位置等于在“位置”字段中输入的值时，线索点触发一个动作。每个线索点由名称及其出现的时间组成。默认情况下，线索点时间的格式为“时:分:秒:帧”，默认帧频为 30 帧/秒，并且可以设置为任何帧频。线索点与毫秒数或帧数配合使用。

还可以用动作脚本通过 addCuePoint () 和 removeCuePoint () 方法添加和删除线索点。有关详细信息，请参阅媒体组件（仅限 Flash Professional）。。

向 MediaDisplay 实例添加线索点：

  1. 选择 MediaDisplay 实例。
  2. 在“组件检查器”（“窗口”>“开发面板”>“组件检查器”）中，单击“线索点”面板中的“添加”(+) 按钮。
  3. 输入帧或幻灯片的名称，以及动作的触发时间。


向线索点添加动作（仅限 Flash Professional）

Flash MX Professional 2004 提供两种线索点行为供用户向 Flash 文档添加动作：“已标记帧线索点导航”和“幻灯片线索点导航”。“已标记帧线索点导航”行为添加一个动作，指示时间轴定位到与指定线索点名称相同的帧。“幻灯片线索点导航”行为指示基于幻灯片的 Flash 文档定位到与指定线索点名称和时间相同的幻灯片。

要添加“已标记帧线索点导航”行为：

  1. 在与 MediaDisplay 或 MediaPlayback 组件相同的时间轴上添加一个空白的关键帧（“插入”>“时间轴”>“空白关键帧”），然后在“属性”检查器中输入帧的标签。
  2. 选择将触发动作的 MediaDisplay 或 MediaPlayback 组件。
  3. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“添加”(+) 按钮，然后从“媒体”子菜单中选择“已标记帧线索点导航”行为。
  4. 在“已标记帧线索点导航”对话框中选择帧标签所在的时间轴（通常为 _root）。
  5. 选择“相对”并单击“确定”。

    当视频播放了线索点指示的一段时间以后，Flash 文档将定位到在线索点中输入的帧标签。

要添加“幻灯片线索点导航”行为：

  1. 创建一个幻灯片演示文稿并命名各个屏幕。有关详细信息，请参阅使用屏幕（仅限于 Flash Professional）。
  2. 选择将触发动作的 MediaDisplay 或 MediaPlayback 组件。
  3. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“添加”(+) 按钮，然后从“媒体”子菜单中选择“幻灯片线索点导航”行为。
  4. 在“幻灯片线索点导航”对话框中选择演示文稿的主幻灯片。
  5. 选择“相对”并单击“确定”。

    当视频播放了线索点指示的一段时间以后，Flash 文档将定位到在线索点中输入的屏幕。


使用声音概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了许多使用声音的方式。可以使声音独立于时间轴连续播放，或使动画和一个音轨同步播放。向按钮添加声音可以使按钮具有更强的互动性，通过声音淡入淡出还可以使音轨更加优美。

在 Flash 中有两种类型的声音：事件声音和音频流。事件声音必须完全下载后才能开始播放，除非明确停止，它将一直连续播放。音频流在前几帧下载了足够的数据后就开始播放；音频流可以通过和时间轴同步以便在 Web 站点上播放。

通过选择压缩选项可以控制导出的 SWF 文件中的声音品质和大小。使用“声音属性”对话框可以为单个声音选择压缩选项，而在文档的“发布设置”对话框中可以定义所有声音的设置。

可以使用共享库中的声音，从而将声音从一个库链接到多部文档。请参阅使用共享库资源。在声音完成时，您也可以使用动作脚本的 onSoundComplete 事件来触发一个事件。请参阅关于 onSoundComplete 事件。

可以使用行为（预先编写的“动作脚本”脚本）来加载和控制声音的回放。与行为类似，媒体组件包含预先编写的“动作脚本”脚本用于加载和控制声音（仅 MP3 声音），但同时还提供了用于诸如停止、暂停、后退等动作的控制器。有关使用媒体组件的详细信息，请参阅用媒体组件播放 FLV 视频剪辑（仅限 Flash Professional）。

注意：也可以使用动作动态地载入声音。请参阅 Sound.attachSound() 和 Sound.loadSound()。


导入声音

通过将声音文件导入到当前文档的库中，可以把声音文件加入 Flash。

注意：当将声音放在时间轴上时，应将声音置于一个单独的层上。有关详细信息，请参阅向文档中添加声音。

可以将以下声音文件格式导入到 Flash 中：

  • WAV（仅限 Windows）
  • AIFF（仅限 Macintosh）
  • MP3（Windows 或 Macintosh）

如果系统上安装了 QuickTime 4 或更高版本，则可以导入这些附加的声音文件格式：

  • AIFF（Windows 或 Macintosh）
  • Sound Designer II（仅限 Macintosh）
  • 只有声音的 QuickTime 影片（Windows 或 Macintosh）
  • Sun AU（Windows 或 Macintosh）
  • System 7 声音（仅限 Macintosh）
  • WAV（Windows 或 Macintosh）

Flash 在库中保存声音以及位图和元件。和图形元件一样，您只需要一个声音文件的副本就可在文档中以各种方式使用这个声音。

如果想在 Flash 文档之间共享声音，则可以把声音包含在共享库中。请参阅处理公用库。通过在“元件链接属性”对话框中给声音文件分配一个标识字符串，可以在一个共享库中使用声音。标识符也可以用来访问动作脚本中作为对象的声音。有关动作脚本中的对象的信息，请参阅通过声音对象使用声音。

声音要使用大量的磁盘空间和 RAM。但是，MP3 声音数据经过了压缩，比 WAV 或 AIFF 声音数据小。通常，当使用 WAV 或 AIFF 文件时，最好使用 16 位 22 kHz 单声（立体声的数据量是单声的两倍），但是 Flash 只能导入采样比率为 11 kHz、22 kHz 或 44 kHz，8 位或 16 位的声音。在导出时，Flash 会把声音转换成采样比率较低的声音。请参阅压缩声音用于导出。

注意：当将声音导入到 Flash 时，如果声音的记录格式不是 11 kHz 的倍数（例如 8、32 或 96 kHz），将会重新采样。

如果要向 Flash 中添加声音效果，最好导入 16 位声音。如果 RAM 有限，就使用短的声音剪辑或用 8 位声音而不是 16-位声音。

导入声音：

  1. 选择“文件”>“导入”>“导入到库”。
  2. 在“导入”对话框中，定位并打开所需的声音文件。

    注意：也可以将声音从公用库拖入当前文档的库中。请参阅处理公用库。


向文档中添加声音

要将声音从库中添加到文档，可以把声音分配到一个层，然后在“属性”检查器的“声音”控件中设置选项。建议将每个声音放在一个独立的层上。

使用“声音”对象的 loadSound 方法，可以在运行时将声音载入 SWF 文件中。有关详细信息，请参阅 Sound.loadSound()。

要测试添加到文档中的声音，可以使用与预览帧或测试 SWF 文件相同的方法：在包含声音的帧上面拖动播放头，或使用在控制器或“控制”菜单中的命令。

向文档中添加声音：

  1. 如果还没有将声音导入库中，请将其导入库中。请参阅导入声音。
  2. 选择“插入”>“时间轴”>“层”，为声音创建一个层。
  3. 选定新建的声音层后，将声音从“库”面板中拖到舞台中。声音就添加到当前层中。

    可以把多个声音放在同一层上，或放在包含其他对象的层上。但是，建议将每个声音放在一个独立的层上。每个层都作为一个独立的声音通道。当回放 SWF 文件时，所有层上的声音就混合在一起。

  4. 在时间轴上，选择包含声音文件的第一个帧。
  5. 选择“窗口”>“属性”，并单击右下角的箭头以展开“属性”检查器。
  6. 在“属性”检查器中，从“声音”弹出菜单中选择声音文件。
  7. 从“效果”弹出菜单中选择效果选项：

    “无”不对声音文件应用效果。“选择”此选项将删除以前应用过的效果。

    “左声道”/“右声道”只在左或右声道中播放声音。

    “从左到右淡出”/“从右到左淡出”会将声音从一个声道切换到另一个声道。

    “淡入”会在声音的持续时间内逐渐增加其幅度。

    “淡出”会在声音的持续时间内逐渐减小其幅度。

    “自定义”使您可以通过使用“编辑封套”创建自已的声音淡入和淡出点。请参阅使用声音编辑控件。

  8. 从“同步”弹出菜单中选择“同步”选项：

    “事件”选项会将声音和一个事件的发生过程同步起来。事件声音在它的起始关键帧开始显示时播放，并独立于时间轴播放完整个声音，即使 SWF 文件停止也继续播放。当播放发布的 SWF 文件时，事件声音混合在一起。

    事件声音的一个示例就是当用户单击一个按钮时播放的声音。如果事件声音正在播放，而声音再次被实例化（例如，用户再次单击按钮），则第一个声音实例继续播放，另一个声音实例同时开始播放。

    “开始”与“事件”选项的功能相近，但如果声音正在播放，使用“开始”选项则不会播放新的声音实例。

    “停止”选项将使指定的声音静音。

    “流”选项将同步声音，以便在 Web 站点上播放。Flash 强制动画和音频流同步。如果 Flash 不能足够快地绘制动画的帧，就跳过帧。与事件声音不同，音频流随着 SWF 文件的停止而停止。而且，音频流的播放时间绝对不会比帧的播放时间长。当发布 SWF 文件时，音频流混合在一起。

    音频流的一个示例就是动画中一个人物的声音在多个帧中播放。

    注意：如果您使用 MP3 声音作为音频流，则必须重新压缩声音，以便能够导出。可以将声音导出为 MP3 文件，所用的压缩设置与导入它时的设置相同。请参阅压缩声音用于导出。

  9. 为“重复”输入一个值，以指定声音应循环的次数，或者选择“循环”以连续重复声音。

    要连续播放，请输入一个足够大的数，以便在扩展持续时间内播放声音。例如，要在 15 分钟内循环播放一段 15 秒的声音，输入 60。

    注意：不建议循环播放音频流。如果将音频流设为循环播放，帧就会添加到文件中，文件的大小就会根据声音循环播放的次数而倍增。


向按钮添加声音

可以将声音和一个按钮元件的不同状态关联起来。因为声音和元件存储在一起，它们可以用于元件的所有实例。

向按钮添加声音：

  1. 在“库”面板中选择按钮。
  2. 从面板右上角的选项菜单中选择“编辑”。
  3. 在按钮的时间轴上，添加一个声音层。
  4. 在声音层中，创建一个常规或空白的关键帧，对应于想添加声音的按钮状态。

    例如，要添加一段在单击按钮时播放的声音，可以在标签为“Down”的帧中创建一个关键帧。

  5. 单击刚刚创建的关键帧。
  6. 选择“窗口”>“属性”。
  7. 从“属性”检查器的“声音”弹出菜单中选择一个声音文件。
  8. 从“同步”弹出菜单中选择“事件”。

    要将不同的声音和按钮的每个关键帧关联在一起，请创建一个空白的关键帧，然后给每个关键帧添加其他声音文件。也可以使用同一个声音文件，然后为按钮的每一个关键帧应用不同的声音效果。请参阅使用声音编辑控件。


通过声音对象使用声音

可以使用动作脚本中的 Sound 对象将声音添加到文档中并在文档中控制声音对象。控制声音包括在播放声音时调整音量或左右平衡声道。请参阅创建声音控件。

要在“声音”动作中使用声音，请在“元件链接”对话框中给声音分配一个标识字符串。

给声音分配标识字符串：

  1. 在“库”面板中选择声音。
  2. 执行以下其中一项操作：
    • 从面板右上角的选项菜单中选择“链接”。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh)“库”面板中的声音名称，然后从上下文菜单中选择“链接”。
  3. 在“元件链接属性”对话框中的“链接”下面，选择“为动作脚本导出”。
  4. 在文本框中输入一个标识字符串，然后单击“确定”。


关于使用 Flash Player 访问 MP3 文件中的 ID3 属性

Macromedia Flash Player 7 及更高版本支持 ID3 v2.4 和 v2.4 标记。使用此版本，当使用 attachSound() 或 loadSound() 方法加载 MP3 声音时，ID3 标记属性在声音数据流的开始位置提供。onID3 事件在初始化 ID3 数据时执行。

Flash Player 6 的 40 及更高版本支持带 ID3 v1.0 和 v1.1 标签的 MP3 文件。使用 ID3 v1.0 和 v1.1 标记，属性在数据流的结束位置提供。如果声音不包含 ID3v1 标签，则 ID3 属性将是未定义的。要使 ID3 属性起作用，用户必须拥有 Flash Player 6 的 40 或更高版本。

有关使用 ID3 属性的详细信息，请参阅Sound.ID3。


使用声音编辑控件

要定义声音的起始点或控制播放时的音量，可以使用“属性”检查器中的声音编辑控件。

Flash 可以改变声音开始播放和停止播放的位置。这对于通过删除声音文件的无用部分来减小文件的大小是很有用的。

编辑声音文件：

  1. 在帧中添加声音（请参阅向文档中添加声音），或选择一个已包含声音的帧。
  2. 选择“窗口”>“属性”。
  3. 单击“属性”检查器右边的“编辑”按钮。
  4. 执行以下任意操作：
    • 要改变声音的起始点和终止点，请拖动“编辑封套”中的“开始时间”和“停止时间”控件。
    • 要更改声音封套，请拖动封套手柄来改变声音中不同点处的级别。封套线显示声音播放时的音量。单击封套线可以创建其他封套手柄（总共可达 8 个）。要删除封套手柄，请将其拖出窗口。
    • 单击“放大”或“缩小”，可以改变窗口中显示声音的多少。
    • 要在秒和帧之间切换时间单位，请单击“秒”和“帧”按钮。
  5. 单击“播放”按钮，可以听编辑后的声音。


使用行为控制声音回放

可以使用声音行为来控制声音回放。行为是预先编写的“动作脚本”脚本，您可以将它们应用于对象（如按钮）以便控制目标对象（如声音）。行为使您可以将动作脚本编码的强大功能、控制能力以及灵活性添加到文档中，而不必自己创建动作脚本代码。

可以使用“从库加载声音”或“加载流式 MP3 文件”行为将声音添加到文档。使用这些行为添加声音将会创建声音的实例。实例名称稍后将用于控制声音。

要使用行为控制声音，您可以使用“行为”面板将行为应用于触发对象（如按钮）。您需要指定触发行为的事件（如单击按钮），选择目标对象（行为将影响的声音），并选择行为参数设置以指定将如何执行行为。

要使用行为将声音载入文件：

  1. 选择要用于触发行为的对象（如按钮）。
  2. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮，然后从“声音”子菜单中选择“从库加载声音”或“加载流式 MP3 文件”。
  3. 在出现的对话框中，输入链接标识符（请参阅通过声音对象使用声音）或声音位置（外部 MP3 文件）。接下来输入声音的此实例的名称，并单击“确定”。
  4. 在“事件”下，单击“释放时”（默认事件），并从菜单中选择一个鼠标事件。如果要使用 OnRelease 事件，请保持该选项不变。

要使用行为控制声音：

  1. 选择要用于触发行为的对象（如按钮）。
  2. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮，然后从“声音”子菜单中选择所需的行为。

    行为的默认事件和动作即出现在“行为”面板中。

  3. 在“事件”下，单击“释放时”（默认事件），并从菜单中选择一个鼠标事件。如果要使用 OnRelease 事件，请保持该选项不变。
  4. 在出现的对话框中，从“目标”对话框中选择目标对象（行为将影响的声音）。
  5. 选择行为参数的设置，然后单击“确定”。


在关键帧中开始播放和停止播放声音

在 Flash 中与声音相关的最常见任务是与动画同步播放和停止播放关键帧中的声音。

停止播放和开始播放关键帧中的声音：

  1. 向文档中添加声音。请参阅向文档中添加声音。

    要使此声音和场景中的事件同步，请选择一个与场景中事件的关键帧相对应的开始关键帧。可以选择任何同步选项。

  2. 在声音层时间轴中要停止播放声音的帧上创建一个关键帧。

    在时间轴中将出现声音文件的表示。

  3. 选择“窗口”>“属性”，并单击右下角的箭头以展开“属性”检查器。
  4. 在“属性”检查器的“声音”弹出菜单中，选择同一声音。
  5. 从“同步”弹出菜单中选择“停止”。

    在播放 SWF 文件时，声音会在结束关键帧处停止播放。

  6. 要回放声音，只需移动播放头。


关于 onSoundComplete 事件

动作脚本“声音”对象的 onSoundComplete 事件使您可以在附加的声音文件结束时触发 Flash 应用程序中的一个事件。“声音”对象是个内置的对象，使您可以控制 Flash 应用程序中的声音。有关详细信息，请参阅Sound 类。在附加的声音文件结束播放时，将自动调用一个声音对象的 onSoundComplete 事件。如果声音循环播放有限的次数，当声音停止循环播放时将触发该事件。

“声音”对象有两个可与 onSoundComplete 事件结合使用的属性。Duration 属性是一个只读属性，表示附加到声音对象的声音采样的持续时间（以毫秒为单位）。Position 属性是一个只读属性，表示在每个循环中声音已播放的毫秒数。

onSoundComplete 事件使您可以通过各种功能强大的方法处理声音，如下所述：

  • 创建动态的播放列表或音序器
  • 创建多媒体演示文稿，在进入下一个帧或场景前检查叙述是否结束
  • 建立游戏，让声音和特定的事件或场景同步，并在不同的声音之间平滑地过渡
  • 根据声音设定图像的变换，例如当声音播放到一半时变换图像


默认压缩选项

可以选择单个事件声音的压缩选项，然后用这些设置导出声音。也可以给单个音频流选择压缩选项。但是，文档中的所有音频流都将导出为单个的流文件，而且所用的设置是所有应用于单个音频流的设置中的最高级别。这包括视频对象中的音频流。

在“声音属性”对话框中选择单个声音的压缩选项。也可以在“发布设置”对话框中为事件声音或音频流选择全局压缩设置。如果没有在“声音属性”对话框中给声音选择压缩设置，那么这些全局设置就会应用于单个事件声音或所有的音频流。请参阅发布 Flash 文档。

也可以通过选择“发布设置”对话框的“覆盖声音设置”覆盖在“声音属性”对话框中指定的导出设置。如果要创建一个较大的高保真音频文件以供本地使用，并创建一个较小的低保真版本以供在 Web 上使用，则此选项非常有用。请参阅为 Flash SWF 文件格式设置发布选项。

采样比率和压缩程度会造成导出的 SWF 文件中声音的品质和大小有很大的不同。声音的压缩倍数越大，采样比率越低，声音文件就越小，声音品质也越差。应当通过实验找到声音品质和文件大小的最佳平衡。

在处理导入的 MP3 文件时，可以选择使用导入文件时的相同设置将文件导出为 MP3 格式。

注意：在 Windows 中，也可以通过使用“文件”>“导出”>“导出影片”将文档中的所有声音导出为一个 WAV 文件。请参阅导出 Flash 内容和图像。

给单个声音设置导出属性：

  1. 执行以下操作之一：
    • 双击“库”面板中的声音图标。
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh)“库”面板中的声音文件，然后从上下文菜单中选择“属性”。
    • 在“库”面板中选择一个声音，然后在面板右上角中的选项菜单中选择“属性”。
    • 在“库”面板中选择一个声音，然后单击“库”面板底部的属性图标。
  2. 如果声音文件已经在外部编辑过了，请单击“更新”。
  3. 对于“压缩”，可以选择“默认”、“ADPCM”、“MP3”、“原始”或“语音”。要选择您所选的压缩格式的选项，请参阅与所选格式相对应的部分：
    • 使用 ADPCM 压缩选项
    • 使用 MP3 压缩选项
    • 使用“原始”压缩选项
    • 使用“语音”压缩选项
  4. 设置导出设置。
  5. 单击“测试”，播放声音一次。如果要在结束播放之前停止测试，请单击“停止”。
  6. 如果必要，请调整导出设置，直到获得理想的声音品质为止。
  7. 单击“确定”。

当导出 SWF 文件时，“默认”压缩选项使用“发布设置”对话框中的全局压缩设置。如果选择“默认”，则没有可用的附加导出设置。


使用 ADPCM 压缩选项

“ADPCM”压缩选项用于 设置 8 位或 16 位声音数据的压缩设置。当导出像单击按钮这样的短事件声音时，请使用“ADPCM”设置。

使用 ADPCM 压缩：

  1. 在“声音属性”对话框中，从“压缩”菜单选择“ADPCM”。
  2. 对于“预处理”，选择“转换立体声成单声”会将混合立体声转换为单声（非立体声）。（单声不受此选项影响。）
  3. 对于“采样比率”，选择一个选项以控制声音的保真度和文件大小。较低的采样比率可以减小文件大小，但也降低声音品质。“比率”选项如下所示：

    对于语音来说，5 kHz 是最低的可接受标准。

    对于音乐短片断，11 kHz 是最低的建议声音品质，而这只是标准 CD 比率的四分之一。

    22 kHz 是用于 Web 回放的常用选择，这是标准 CD 比率的二分之一。

    44 kHz 是标准的 CD 音频比率。

    注意：Flash 不能增加导入声音的 kHz 比率，使之高于导入时的比率。


使用 MP3 压缩选项

通过“MP3”压缩选项可以用 MP3 压缩格式导出声音。当导出像乐曲这样较长的音频流时，请使用“MP3”选项。

如果要导出一个以 MP3 格式导入的文件，可以使用和导入时相同的设置来导出文件。

使用和导入时同样的设置导出 MP3 文件：

  1. 在“声音属性”对话框中，从“压缩”菜单中选择“MP3”。
  2. 选择“使用导入的 MP3 品质”（默认设置）。如果取消选择此选项，则可以选择其他 MP3 压缩设置，如下所示。

要使用 MP3 压缩：

  1. 在“声音属性”对话框中，从“压缩”菜单中选择“MP3”。
  2. 取消选择“使用导入的 MP3 品质”（默认设置）。
  3. 请选择一个“比特率”选项，以确定导出的声音文件中每秒播放的位数。Flash 支持 8 Kbps 到 160 Kbps CBR（恒定比特率）。当导出音乐时，需要将比特率设为 16 Kbps 或更高，以获得最佳效果。
  4. 对于“预处理”，选择“转换立体声成单声”会将混合立体声转换为单声（非立体声）。（单声不受此选项影响。）

    注意：“预处理”选项只有在选择的比特率为 20 Kbps 或更高时才可用。

  5. 选择一个“品质”选项，以确定压缩速度和声音品质：

    “快速”选项的压缩速度较快，但声音品质较低。

    “中”选项的压缩速度较慢，但声音品质较高。

    “最佳”选项的压缩速度最慢，但声音品质最高。


使用“原始”压缩选项

“原始”压缩选项在导出声音时不进行压缩。

使用原始压缩：

  1. 在“声音属性”对话框中，从“压缩”菜单中选择“原始”。
  2. 对于“预处理”，选择“转换立体声成单声”会将混合立体声转换为单声（非立体声）。（单声不受此选项影响。）
  3. 对于“采样比率”，选择一个选项以控制声音的保真度和文件大小。较低的采样比率可以减小文件大小，但也降低声音品质。“比率”选项如下所示：

    对于语音来说，5 kHz 是最低的可接受标准。

    对于音乐短片断，11 kHz 是最低的建议声音品质，而这只是标准 CD 比率的四分之一。

    22 kHz 是用于 Web 回放的常用选择，这是标准 CD 比率的二分之一。

    44 kHz 是标准的 CD 音频比率。

    注意：Flash 不能增加导入声音的 kHz 比率，使之高于导入时的比率。


使用“语音”压缩选项

语音压缩选项使用一个特别适合于语音的压缩方式导出声音。

使用语音压缩：

  1. 在“声音属性”对话框中，从“压缩”菜单中选择“语音”。
  2. 对于“采样比率”，选择一个选项以控制声音的保真度和文件大小。较低的采样比率可以减小文件大小，但也会降低声音品质。从以下选项中进行选择：

    对于语音来说，5 kHz 是可接受标准。

    建议对语音使用 11 kHz 比率。

    对于 Web 上的大多数音乐类型，22 kHz 是可接受的。

    44 kHz 是标准的 CD 音频比率。但是，由于应用了压缩，SWF 文件中的声音就不是 CD 品质了。


导出 Flash 文档声音的准则

除了采样比率和压缩外，还可以使用下面几种方法在文档中有效地使用声音并减小文件的大小：

  • 设置切入和切出点，避免静音区域保存在 Flash 文件中，从而减小声音文件的大小。
  • 通过在不同的关键帧上应用不同的声音效果（例如音量封套，循环播放和切入/切出点），从同一声音中获得更多的变化。只使用一个声音文件就可以得到许多声音效果。
  • 循环播放短声音作为背景音乐。
  • 不要将音频流设置为循环播放。
  • 当从嵌入的视频剪辑中导出音频时，请记住音频是使用“发布设置”对话框中选择的全局流设置来导出的。
  • 当在编辑器中预览动画时，使用流同步使动画和音轨保持同步。如果计算机不够快，绘制动画帧的速度跟不上音轨，那么 Flash 就会跳过帧。
  • 当导出 QuickTime 影片时，可以根据需要使用任意数量的声音和声道，不必担心文件大小。当将声音导出为 QuickTime 文件时，将被混合在一个单音轨中。使用的声音数不会影响最终的文件大小。


在用于移动设备的 Flash 文档中使用声音（仅限于 Flash Professional）

使用 Flash MX Professional 2004，您可以在创作文档时包括事件声音，以便在移动设备上回放。本节中描述嵌入声音所需的一般过程和工具。有关针对移动设备进行创作的详细信息，请参阅“Mobile and Devices Development Center”(www.macromedia.com/devnet/devices) 上的“Content Development Kits”。

Flash 不支持为移动设备使用的声音文件格式（如 MIDI 和其他格式），在针对移动设备进行创作时，必须在 Flash 文档中临时放置一个具有支持格式（如 MP3、WAV 或 AIFF）的代理声音。文档中的代理文件稍后将链接到外部移动设备声音（如 MIDI 文件）。在文档发布过程中，代理声音将被链接的外部声音替换。生成的 SWF 文件包含外部声音，并使用它在移动设备上进行回放。

在将声音添加到 Flash 文档以便在移动设备上回放时，请谨记以下几点：

  • 此功能仅适用于事件声音。
  • 移动设备上不支持“特效”、“同步”和“循环”选项。
  • 必须为文档中的每个声音指定一个外部设备声音文件。
  • 如同外部文件一样，必须在发布过程中提供设备声音文件，但 SWF 文件并不需要该文件进行回放。

要将事件声音添加到用于在移动设备上进行回放的 Flash 文档：

  1. 将声音文件导入 Flash 文档中的库（“文件”>“导入”>“导入到库”）。有关支持的文件格式和导入过程的信息，请参阅导入声音。
  2. 在“库”面板中，右击 (Windows) 或按住 Control 键单击 (Macintosh) 该声音，然后选择“属性”。
  3. 在“设备声音”文本框中输入一个路径，或者单击文件夹图标并浏览到移动设备声音文件所在的位置。单击“确定”关闭“属性”检查器。
  4. 将按钮实例从“按钮”公用库添加到舞台（“窗口”>“其他面板”>“公用库”>“按钮”）。有关公用库的详细信息，请参阅处理公用库。
  5. 将链接的声音添加到按钮的“点击”帧。有关详细信息，请参阅向按钮添加声音。
  6. 打开“发布设置”对话框（“文件”>“发布设置”），然后单击“Flash”选项卡。
  7. 选择“导出设备声音”。系统将自动从“版本”弹出菜单中选择“Flash Lite”。单击“确定”。

    SWF 文件现在即包含链接的移动设备声音。

  8. 选择“控制”>“测试影片”测试 Flash 应用程序。
  9. 选择“控制”>“禁用快捷键”。
  10. 按 Tab 键选择按钮，然后按 Enter 或 Return 键播放声音。

    备注：取决于开发所针对的设备，事件声音的触发方式可以会有某些限制。有关更详细的信息，请参阅“Mobile Articles on the Mobile and Devices Development Center”(www.macromedia.com/devnet/devices) 上的“Mobile Articles”。


使用屏幕概述（仅限于 Flash Professional）

在 Macromedia Flash MX Professional 2004 中，屏幕提供了一个具有结构化构件的创作用户界面，它使您可以轻松创建复杂的分层 Flash 文档（如幻灯片演示文稿或基于表单的应用程序）。

屏幕提供了用于创建应用程序的高层容器。可以使用屏幕在 Flash 中构建复杂的应用程序，而无需在主时间轴上使用多个帧和层。事实上，您无需查看主时间轴即可创建复杂的应用程序。

在创作基于屏幕的文档时，屏幕排列在您创建的结构化层次结构中。通过将屏幕嵌套在分支树中即可建立文档的结构。可以轻松地预览和修改基于屏幕的文档的结构。

可以创建两种不同类型的基于屏幕的文档：Flash 幻灯片演示文稿（适用于顺序内容，如幻灯片或多媒体演示文稿）或 Flash 表单应用程序（适用于基于表单的非线性应用程序，包括功能丰富的 Internet 应用程序）。基于屏幕的文档只能保存为 Flash Player 6 及更高版本的格式，而不能保存为任何早期版本的 Flash Player 格式。有关建立 Flash 表单应用程序的介绍，请参见 Macromedia On Demand 上的“On Demand”讨论会“Flash MX Professional 2004：屏幕开发”。

新的 Flash 幻灯片演示文稿的默认工作区详图。屏幕缩略图出现在工作区左侧的“屏幕轮廓”窗格中，而时间轴处于折叠状态。


基于屏幕的文档和屏幕创作环境（仅限于 Flash Professional）

基于屏幕文档的创作环境为您提供了各种处理这些文档的方式。有关如下内容的信息：可以使用屏幕创建的文档类型、组织和导航屏幕的方式，以及将动作脚本、组件或 Flash 辅助功能用于屏幕的方式，请参阅以下部分：

  • 幻灯片演示文稿和表单应用程序（仅限于 Flash Professional）
  • 文档结构和层次结构（仅限于 Flash Professional）
  • 幻灯片屏幕和表单屏幕（仅限于 Flash Professional）
  • 使用“屏幕轮廓”窗格（仅限于 Flash Professional）
  • 关于屏幕的撤消和重做命令（仅限于 Flash Professional）
  • 使用屏幕上下文菜单（仅限于 Flash Professional）
  • 关于将影片浏览器用于处理屏幕（仅限于 Flash Professional）
  • 关于将时间轴用于处理屏幕（仅限于 Flash Professional）
  • 关于将动作脚本用于处理屏幕（仅限于 Flash Professional）
  • 关于将组件用于处理屏幕（仅限于 Flash Professional）
  • Flash 屏幕创作环境中的辅助功能（仅限于 Flash Professional）


创作基于屏幕文档的工作流程（仅限于 Flash Professional）

要创建基于屏幕的文档，应当首先创建一个新的幻灯片演示文稿或表单应用程序文档。然后添加屏幕、配置屏幕和并添加内容，并添加行为以创建屏幕的控件和过渡。

有关详细信息，请参阅以下部分中介绍的过程：

  • 创建新的基于屏幕的文档（仅限于 Flash Professional）
  • 将屏幕添加到文档（仅限于 Flash Professional）
  • 命名屏幕（仅限于 Flash Professional）
  • 设置屏幕的属性和参数（仅限于 Flash Professional）
  • 关于将媒体内容添加到屏幕（仅限于 Flash Professional）
  • 选择和移动屏幕（仅限于 Flash Professional）
  • 使用行为为屏幕创建控件和过渡（仅限于 Flash Professional）


幻灯片演示文稿和表单应用程序（仅限于 Flash Professional）

可以创建两种不同类型的基于屏幕的文档。所选择的文档类型确定文档中默认屏幕的类型。

  • Flash 幻灯片演示文稿使用幻灯片屏幕作为默认屏幕类型。幻灯片屏幕具有针对顺序演示文稿设计的功能。
  • Flash 表单应用程序使用表单屏幕作为默认屏幕类型。表单屏幕具有针对基于表单的非线性应用程序设计的功能，并在一个直观的空间中提供了多个选项。

尽管每个文档都具有默认屏幕类型，但您可以在任何基于屏幕的文档中同时包括幻灯片屏幕和表单屏幕。有关幻灯片屏幕和表单屏幕的信息，请参阅幻灯片屏幕和表单屏幕（仅限于 Flash Professional）。


文档结构和层次结构（仅限于 Flash Professional）

每个文档的顶层中都有一个主屏幕。在 Flash 幻灯片演示文稿中，顶层屏幕在默认情况下称为“演示文稿”。在 Flash 表单应用程序中，顶层屏幕在默认情况下称为“应用程序”。

顶层屏幕是容纳向文档中添加的任何内容（包括其他屏幕）的容器。您可以将内容放在顶层屏幕上，但不能删除或移动顶层屏幕。

屏幕在某些方面与嵌套的影片剪辑相似：子屏幕继承父屏幕的行为；并且，您可以使用动作脚本中的目标路径将消息从一个屏幕发送到另一个屏幕。但是，屏幕不会出现在库中，您无法创建屏幕的多个实例。有关将动作脚本与屏幕配合使用的信息，请参阅关于将动作脚本用于处理屏幕（仅限于 Flash Professional）。

可以将多个屏幕添加到文档，并可以根据需要将屏幕嵌套在任意多个层中的其他屏幕内。在另一屏幕内部的屏幕是前者的子项。包含另一屏幕的屏幕是前者的父项。如果某个屏幕嵌套了若干层深，则在该屏幕之上的所有屏幕都是它的始祖。位于同一层中的屏幕称为兄弟 屏幕。嵌套在另一屏幕中的所有屏幕都是前者的后代。子屏幕包含其始祖屏幕的所有内容。

一个 Flash 幻灯片演示文稿的“屏幕轮廓”窗格，该窗格中包含嵌套了三层深的屏幕。


幻灯片屏幕和表单屏幕（仅限于 Flash Professional）

可以在一个文档中创建两种不同类型的屏幕：幻灯片屏幕和表单屏幕。Flash 幻灯片演示文稿使用幻灯片屏幕作为默认屏幕类型。Flash 表单应用程序使用表单屏幕作为默认屏幕类型。但是，您可以在任何基于屏幕的文档中混用幻灯片屏幕和表单屏幕，以便同时利用两者功能的优点，并在演示文稿或应用程序中创建更加复杂的结构。

可以在“属性”检查器中设置幻灯片屏幕或表单屏幕的参数。请参阅设置屏幕的参数（仅限于 Flash Professional）。也可以使用动作脚本来控制屏幕。请参阅Screen 类（仅限 Flash Professional）、Form 类（仅限 Flash Professional）和 Slide 类（仅限 Flash Professional）。

幻灯片屏幕 可用于创建包含顺序内容的 Flash 文档（如幻灯片）。默认行为使用户可以使用箭头键在幻灯片屏幕之间导航。顺序屏幕可以互相覆盖，因此在观看下一张幻灯片时，上一张幻灯片将保持可见。屏幕可以在隐藏后继续播放。如果要自动管理每个屏幕的可见性，请使用幻灯片屏幕。

注意：默认情况下，您可以使用箭头键在位于同一层的屏幕之间（而不是在嵌套屏幕之间）导航。有关嵌套屏幕的说明，请参阅文档结构和层次结构（仅限于 Flash Professional）。

表单屏幕 可用于创建基于表单的结构化应用程序，如在线注册表单或电子商务表单。表单屏幕是简单的容器，可用于建立基于表单的应用程序的结构。默认情况下，要创建表单屏幕的导航结构，您必须编写动作脚本。如果要自己管理各个屏幕的可见性，请使用表单屏幕。


使用“屏幕轮廓”窗格（仅限于 Flash Professional）

当使用基于屏幕的文档时，“文档”窗口左侧的“屏幕轮廓”窗格在可折叠的树形视图中显示当前文档中每个屏幕的缩略图。树表示文档的结构层次。嵌套屏幕位于包含它们的屏幕下面，并向内缩进。

将屏幕添加至文档时，屏幕出现在“屏幕轮廓”窗格中。请参阅将屏幕添加到文档（仅限于 Flash Professional）。

可以折叠和展开树以便隐藏和显示嵌套屏幕。可以隐藏、显示“屏幕轮廓”窗格并调整其大小。

单击“屏幕轮廓”窗格中的某个屏幕缩略图，即可在舞台上显示该屏幕。有关查看文档中的屏幕的信息，请参阅选择和移动屏幕（仅限于 Flash Professional）。

要隐藏或显示“屏幕轮廓”窗格：

  • 选择“窗口”>“屏幕”。

要展开或折叠树：

  • 在 Windows 中，单击屏幕旁边的 + 或 按钮以显示或隐藏嵌套在该屏幕中的屏幕。
  • 在 Macintosh 上，单击屏幕旁边的三角形以显示或隐藏嵌套在该屏幕中的屏幕。

要调整“屏幕轮廓”窗格的大小：

  • 拖动“屏幕轮廓”窗格和“文档”窗口之间的分界线。


关于屏幕的撤消和重做命令（仅限于 Flash Professional）

可以使用“编辑”>“撤消”和“编辑”>“重做”菜单命令撤消并重做对屏幕执行的以下操作：添加、剪切、复制、粘贴、删除和隐藏屏幕。在“历史记录”面板中将记录对屏幕执行的以下操作：添加屏幕、添加嵌套屏幕、选择屏幕、重命名屏幕以及删除屏幕。有关“撤消”和“重做”命令以及“历史记录”面板的信息，请参阅使用“撤消”、“重做”和“重复”菜单命令。


使用屏幕上下文菜单（仅限于 Flash Professional）

屏幕上下文菜单包含多个用于处理屏幕的命令。使用上下文菜单命令，您可以插入屏幕，剪切、复制和粘贴屏幕和执行其他操作。

注意：描述上述任务的各部分中提供了特定上下文菜单命令的说明。例如，要查找有关“插入屏幕”命令的信息，请参阅将屏幕添加到文档（仅限于 Flash Professional）。

要查看屏幕的上下文菜单：

  • 右击 (Windows) 或按住 Control 键单击 (Macintosh)“屏幕轮廓”窗格中的某个屏幕缩略图。


创建新的基于屏幕的文档（仅限于 Flash Professional）

可以使用两种屏幕类型之一来创建新的基于屏幕的文档：

  • Flash 幻灯片演示文稿使用幻灯片屏幕作为默认屏幕类型。
  • Flash 表单应用程序使用表单屏幕作为默认屏幕类型。

有关详细信息，请参阅幻灯片屏幕和表单屏幕（仅限于 Flash Professional）。

当创建新的基于屏幕的文档时，它包含一个顶层容器屏幕和一个默认类型的屏幕。请记住，基于屏幕的文档使用动作脚本 2.0 以 Flash Player 6 格式或更高版本发布。不能以任何更早的 Flash Player 格式保存基于屏幕的文档。

可以通过“开始”页或“新建文档”对话框创建新的基于屏幕的文档。

有关“开始”页的信息，请参阅使用“开始”页。有关“新建文档”对话框的信息，请参阅创建或打开文档及设置属性。

要通过“开始”页创建新的基于屏幕的文档：

  • 选择文档的屏幕类型。从“开始”下面的“打开文件”选项菜单中选择以下选项之一：

    Flash 幻灯片演示文稿创建以幻灯片屏幕作为默认屏幕类型的文档。

    Flash 表单应用程序创建以表单屏幕作为默认屏幕类型的文档。

要通过“新建文档”对话框创建新的基于屏幕的文档：

  1. 选择“文件”>“新建”。
  2. 单击“常规”选项卡，并在“类型”下选择以下选项之一：

    Flash 幻灯片演示文稿创建以幻灯片屏幕作为默认屏幕类型的文档。

    Flash 表单应用程序创建以表单屏幕作为默认屏幕类型的文档。


将屏幕添加到文档（仅限于 Flash Professional）

可以在当前选定屏幕所在的层中添加新屏幕。新屏幕是选定屏幕的兄弟 屏幕。也可以将嵌套屏幕添加到当前选定屏幕的下一层中。当添加屏幕时，您可以添加默认屏幕类型的屏幕，也可以选择屏幕类型。可以在“屏幕轮廓”窗格中查看文档中的所有屏幕。请参阅使用“屏幕轮廓”窗格（仅限于 Flash Professional）。

将屏幕添加到文档时，Flash 会表现出某些默认的行为：

  • 默认情况下，Flash 为新屏幕使用文档的屏幕类型（“幻灯片演示”的幻灯片类型或“表单应用程序”的表单类型）。使用屏幕上下文菜单中的“插入屏幕类型”命令，可以选择插入另一类型的屏幕。
  • Flash 将您添加的第一个屏幕直接插入到顶层屏幕之后，但比其低一层。
  • Flash 将新屏幕插入到当前选定屏幕之后，并与其在同一层上。如果文档中当前选定屏幕下包含嵌套屏幕，则会将新屏幕添加到嵌套屏幕之后，并与选定屏幕在同一层上。
  • Flash 将新的嵌套屏幕直接插入到当前选定屏幕之后，并向下嵌套一层。如果文档的当前选定屏幕下已经包含一个或多个嵌套屏幕，新的屏幕会插到已存在的所有嵌套屏幕之后，位于选定屏幕的下一层。

您也可以使用模板来添加一个新屏幕或一系列屏幕。Flash MX Professional 2004 包括各种类别中的屏幕模板。

要在当前屏幕层中添加默认类型的屏幕：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 执行以下其中一项操作：
    • 单击“屏幕轮廓”窗格顶部的“插入屏幕”(+) 按钮。
    • 选择“插入”>“屏幕”。
    • 从屏幕上下文菜单中选择“插入屏幕”。

在当前屏幕层中添加指定类型的屏幕：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 从上下文菜单中选择“插入屏幕类型”，然后选择一个屏幕类型。

添加默认类型的嵌套屏幕：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 执行以下其中一项操作：
    • 选择“插入”>“嵌套屏幕”。
    • 从屏幕上下文菜单中选择“插入嵌套屏幕”。

添加一个或一系列基于模板的屏幕：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 从上下文菜单中选择“插入屏幕类型”，然后选择“保存的模板”。
  3. 在“类别”下选择一个模板类别，然后在“模板”下选择一个模板。
  4. 单击“确定”关闭对话框，然后将基于模板的屏幕添加到文档中。


命名屏幕（仅限于 Flash Professional）

默认情况下，屏幕按创建顺序以它们的默认类型命名：幻灯片 1、幻灯片 2、表单 1、表单 2，等等。创建顺序不一定与屏幕在“屏幕轮廓”窗格中的顺序一致。例如，可以创建三个兄弟屏幕：幻灯片 1、幻灯片 2 和幻灯片 3。如果接下来在幻灯片 1 下面创建一个嵌套屏幕，则该嵌套屏幕为幻灯片 4。

您可以重命名屏幕（包括顶层屏幕）。屏幕名称在文档中必须唯一。也就是说，文档中只能有一个屏幕名为测验页。

默认屏幕名称用作实例名称，在动作脚本中使用该名称来控制屏幕。（请参阅关于将动作脚本用于处理屏幕（仅限于 Flash Professional）。）如果更改默认屏幕名称，则实例名称将被新名称更新；同样，如果更改实例名称，屏幕名称也会被更新。屏幕的链接标识符也与屏幕名称相同，因此，在屏幕名称或实例发生更新时，它也会随之更新。

实例名称必须符合以下要求：

  • 名称不能包含任何空格。
  • 第一个字符必须为字母、下划线 (_) 或美元符号 ($)。
  • 随后的每个字符必须为字母、数字、下划线或美元符号。
  • 实例名称必须唯一（不区分大小写）。也就是说，在同一应用程序中不能将一个屏幕命名为 screen1 并将另一屏幕命名为 Screen1。

您也可以在“属性”检查器中更改实例名称。请参阅设置屏幕的属性和参数（仅限于 Flash Professional）。

要重命名屏幕：

  • 在“屏幕轮廓”窗格中双击屏幕名称，然后输入新名称。


屏幕的属性和参数（仅限于 Flash Professional）

可以使用“属性”检查器设置各个屏幕的属性和参数。在“属性”检查器的左边，可以查看屏幕的实例名称、宽度、高度和注册点：

  • 实例名称是分配给屏幕的唯一名称，在动作脚本中确定目标屏幕时使用。每个屏幕都将根据其在“屏幕轮廓”窗格中的默认名称分配得到一个默认实例名称。实例名称和默认屏幕名称也与屏幕的链接标识符相同。如果更新实例名称，默认屏幕名称和链接标识符也会随之更新。
  • 宽度和高度是以像素为单位指定的。“W”和“H”字段中的值是只读的。宽度和高度由屏幕内容确定。可以自动对齐注册点，以确保在屏幕宽度和高度改变时它的相对位置不变。请参阅指定屏幕的动作脚本类和注册点（仅限于 Flash Professional）。
  • 屏幕注册点的 x 和 y 坐标是以像素为单位指定的。也可以使用注册点网格更改注册点。请参阅指定屏幕的动作脚本类和注册点（仅限于 Flash Professional）。

    通过更改子屏幕的 x 和 y 坐标，可以在舞台上移动子屏幕。如果选中子屏幕的“隐藏屏幕”上下文菜单选项（默认情况下它仅对于幻灯片屏幕是选中的），您必须在“屏幕轮廓”窗格中选择其父屏幕，然后在舞台上选择子屏幕。

可以为幻灯片和表单屏幕设置参数，以便控制回放期间的屏幕行为。请参阅设置屏幕的参数（仅限于 Flash Professional）。

要更改屏幕的实例名称：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器左边的“实例名称”文本框中输入一个名称。

    注意：如果更新实例名称，“屏幕轮廓”窗格中的屏幕名称和屏幕的链接标识符也会随之更新。

要在舞台上移动子屏幕：

  1. 如果选中了子屏幕的“隐藏屏幕”上下文菜单项（幻灯片屏幕的默认设置），请取消此项选择。
  2. 在“屏幕轮廓”窗格中选择屏幕的父项，然后在舞台上选择子屏幕。
  3. 选择“窗口”>“属性”。
  4. 在“属性”检查器中，为 x 和 y 坐标输入新值。


指定屏幕的动作脚本类和注册点（仅限于 Flash Professional）

在“属性”检查器的“属性”选项卡上，可以指定屏幕的动作脚本类和注册点：

  • 动作脚本类指定屏幕所属的类。类确定可用于屏幕的方法和属性。默认情况下，会将幻灯片屏幕指定为 mx.screens.Slide 类，而将表单屏幕指定为 mx.screens.Form 类。可以将屏幕指定为另一个不同的类。
  • 注册点网格指示屏幕注册点相对于其内容的位置。默认情况下，幻灯片屏幕的注册点位于其中心，而表单屏幕的注册点位于其左上角。可以使用网格更改注册点。即使在添加、删除或重新放置屏幕内容时，您也可以使用“自动对齐”选项将注册点保持在相对于屏幕内容相同的位置。

要牢记屏幕的高度和宽度是由其内容决定的。因此，屏幕左上角可能与舞台左上角不同。

注意：如果在另一个 Flash 文档中更改了信息面板中的坐标网格设置，则屏幕注册点的坐标网格可能会反映此更改。要检查信息面板坐标网格设置，请打开一个非基于屏幕的 Flash 文档并选择“窗口”>“设计面板”>“信息”。在基于屏幕的文档中工作时，如果要更改“信息”面板的设置，请在打开面板之前取消选择所有屏幕。

要更改屏幕的动作脚本类：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器中，单击“属性”选项卡。
  4. 在“类名称”文本框中输入一个类名称。有关动作脚本类的详细信息，请参阅使用动作脚本 2.0 创建类。

要更改屏幕的注册点：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 选择“窗口”>“属性”。
  3. 单击“属性”选项卡，然后单击注册网格中的某个点。

    单击注册点将自动选择“属性”选项卡上的“自动对齐”。当此选项处于选中状态时，注册点将相对于屏幕内容移动，但屏幕本身并不移动。


设置屏幕的参数（仅限于 Flash Professional）

在“属性”检查器的“参数”选项卡上，可以设置参数来控制回放期间屏幕的外观和行为。幻灯片屏幕和表单屏幕适用的参数有所不同。

以下参数仅适用于幻灯片屏幕：

  • 参数 autoKeyNav 确定幻灯片是否使用默认的键盘操作来控制转到下一张或上一张幻灯片的导航。如果将 autoKeyNav 设置为 true，则按下右箭头键或空格键将前进到下一张幻灯片，而按下左箭头键将返回到上一张幻灯片。如果将 autoKeyNav 设置为 false，则不会采用默认的键盘操作。如果将 autoKeyNav 设置为 inherit（默认设置），则幻灯片将从其父项继承 autoKeyNav 设置。如果幻灯片的父项也设置为 inherit，则会检查父项的始祖，直到找到一张 autoKeyNav 参数设置为 true 或 false 的幻灯片。如果幻灯片是根幻灯片，则将 autoKeyNav 设置为 inherit 的效果与设置为 true 时相同。

    注意：可以为每张幻灯片分别设置此属性，它将影响该幻灯片获得焦点时的键盘操作。

  • 参数 overlayChildren 指定在回放期间子屏幕是否在父屏幕上相互覆盖。如果将 overlayChildren 设置为 true，则子屏幕将相互覆盖。例如，假设存在两个子项（子项 1 和子项 2），它们是父屏幕上的项目。如果用户单击“继续”按钮，显示子项 1，然后再次单击“继续”，显示子项 2，则显示子项 2 时子项 1 仍然可见。如果将 overlayChildren 设置为 false（默认设置），则在子项 2 出现时，子项 1 不再显示。此参数只影响幻灯片的直接子项，而不会影响嵌套的后代。
  • 参数 playHidden 指定幻灯片在显示之后处于隐藏状态时是否继续播放。如果将 playHidden 设置为 true（默认设置），则幻灯片在显示之后处于隐藏状态时将继续播放。如果将 playHidden 设置为 false，则幻灯片处于隐藏状态时会停止播放，并在再次显示时从第 1 帧重新开始播放。

以下这个参数仅适用于表单屏幕：参数 Visible 指示屏幕在运行时期间是可见还是隐藏。如果将 visible 设置为 true，则屏幕在运行时可见。如果将 visible 设置为 false，则屏幕将隐藏。此属性不影响屏幕在创作环境中的可见性。

以下参数既适用于幻灯片屏幕，也适用于表单屏幕：

  • 参数 autoload 指示是自动加载内容 (true)，还是等到调用 Loader.load() 方法时才加载 (false)。默认值为 true。此参数继承自 Loader 组件。
  • 参数 contentPath 指示在调用 Loader.load() 方法时要加载的文件的绝对或相对 URL。相对路径必须指向加载内容的 SWF 文件。该 URL 必须与 Flash 内容当前驻留的 URL 位于相同的子域中。要在 Flash Player 中使用或用于“测试影片”命令，所有 SWF 文件必须存储在同一文件夹中，并且文件名不能包含文件夹或磁盘驱动器规范。默认值在加载开始之前未定义。此参数继承自 Loader 组件。

要指定屏幕的参数设置：

  1. 在“屏幕轮廓”窗格中选择屏幕。
  2. 选择“窗口”>“属性”。
  3. 在“属性”检查器中，单击“参数”选项卡。
  4. 单击某个参数的设置，然后从弹出菜单中选择一个设置。


关于将媒体内容添加到屏幕（仅限于 Flash Professional）

您可以将媒体内容添加到屏幕，就像将媒体内容添加到不包含屏幕的 Flash 文档中一样。可以将媒体内容添加到“屏幕轮廓”窗格中当前选定的屏幕。有关将媒体内容添加到 Flash 文档的一般信息，请参阅关于添加媒体内容。


选择和移动屏幕（仅限于 Flash Professional）

当您在“屏幕轮廓”窗格中选择单个屏幕时，该屏幕将显示在“文档”窗口中。可以在“屏幕轮廓”窗格中选择多个连续或不连续的屏幕，以便将修改一次应用到多个屏幕。当选择多个屏幕时，第一个所选屏幕的内容会显示在“屏幕轮廓”窗格中。

默认情况下，当在“文档”窗口中显示某个屏幕的父项时，该幻灯片屏幕的内容是不可见的（选择了“隐藏屏幕”上下文菜单选项）。可以通过取消此项选定来选择在幻灯片屏幕的父项显示时仍显示该幻灯片屏幕的内容。当取消选定“隐藏屏幕”上下文菜单选项时，您可以选择“舞台”上的子幻灯片屏幕。此功能只影响创作时的显示，而不会影响运行时的回放。（默认情况下，“隐藏屏幕”上下文菜单选项对于表单屏幕已取消选定。在创作期间您可以通过打开此选项以隐藏子表单屏幕的显示。）

您可以剪切、复制、粘贴和拖动“屏幕轮廓”窗格中的屏幕以改变它们在文档中的位置，并可以从文档中删除屏幕。

注意：术语子项、父项 和始祖 是指嵌套屏幕的层次关系。请参阅文档结构和层次结构（仅限于 Flash Professional）。

要在“文档”窗口查看屏幕，请执行以下操作之一：

  • 单击“屏幕轮廓”窗格中某个屏幕的缩略图来查看该屏幕。
  • 选择“视图”>“转到”并从子菜单中选择屏幕名称，或者选择“第一个”、“前一个”、“下一个”或“最后一个”以浏览各个屏幕。
  • 单击编辑栏右侧的“编辑屏幕”按钮，然后从弹出菜单中选择屏幕名称。

要在“屏幕轮廓”窗格中选择多个屏幕，请执行以下操作之一：

  • 要选择多个连续的屏幕，请按住 Shift 键并单击您希望选择的第一个和最后一个屏幕。
  • 要选择多个不连续的屏幕，请按住 Control 键单击 (Windows) 或按住 Command 键单击 (Macintosh) 每个屏幕。

要编辑屏幕上的项目：

  • 在“文档”窗口中选择项目。

在显示父屏幕时查看子屏幕的内容：

  • 在子屏幕的上下文菜单中单击“隐藏屏幕”以关闭“隐藏”功能。（默认情况下，“隐藏屏幕”对于幻灯片屏幕为选中状态。）

在舞台上选择子屏幕：

  1. 确保取消选择了“隐藏屏幕”上下文菜单项。（请参阅前面的步骤。）
  2. 在“屏幕轮廓”窗格中选择父屏幕。
  3. 单击舞台上子屏幕的内容。

要编辑当前屏幕的始祖屏幕上的项目：

  • 在“文档”窗口中双击项目。

    “智能单击”功能将在“文档”窗口中显示始祖屏幕，并选择要编辑的项目。

    注意：默认情况下，当前屏幕的始祖屏幕上的项目在“文档”窗口中会变灰。

要完全呈现始祖屏幕上的所有项目：

  • 选择“视图”>“预览模式”>“完整”。

    有关预览模式的信息，请参阅加速文档显示。

要剪切或复制屏幕：

  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 屏幕，然后从上下文菜单中选择“剪切”或“复制”。

要粘贴屏幕：

  • 在剪切或复制屏幕后，右击 (Windows) 或按住 Control 键单击 (Macintosh) 另一屏幕，然后从上下文菜单中选择“粘贴”。剪切或复制的屏幕即被粘贴到选定屏幕的后面。

    要在选定屏幕内嵌套粘贴的屏幕，请从上下文菜单中选择“粘贴嵌套屏幕”。

要在“屏幕轮廓”窗格中拖动屏幕：

  • 使用鼠标将屏幕拖动到“屏幕轮廓”窗格中的任意其他位置。当屏幕位于所需位置时，松开鼠标按钮。要在另一个屏幕中嵌套屏幕，请将其拖放在父项下的“屏幕轮廓”窗格的右边。

要删除屏幕，请执行以下操作之一：

  • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 屏幕，然后从上下文菜单中选择“剪切”或“删除”。
  • 选择屏幕，然后单击“屏幕轮廓”窗格顶部的“删除屏幕”(-) 按钮。
  • 按 Backspace 键 (Windows) 或 Delete 键 (Macintosh)。


使用行为为屏幕创建控件和过渡（仅限于 Flash Professional）

可以使用行为为屏幕创建控件和过渡。控件启用屏幕之间的流程，例如，您可以转到另一个屏幕、隐藏屏幕或显示屏幕。过渡创建直观的动画，当 Flash 文档的显示从一个屏幕变换到另一个屏幕时，将会播放该动画。

行为是添加到对象的内置“动作脚本”脚本（如屏幕），用于控制该对象。行为使您可以将动作脚本编码的强大功能、控制能力以及灵活性添加到文档中，而不必自己创建动作脚本代码。行为可用于 Flash 中的多种对象，其中包括影片剪辑、文本字段以及视频和声音文件。


使用行为将控件添加到屏幕（仅限于 Flash Professional）

要使用行为添加控件，您需要将行为附加到触发器（如按钮、影片剪辑或屏幕），并确定希望受行为影响的目标屏幕。您可以选择触发行为的事件。

可以添加以下行为来控制幻灯片屏幕：“转到第一张幻灯片”、“转到最后一张幻灯片”、“转到下一张幻灯片”、“转到上一张幻灯片”、“转到幻灯片”（指定幻灯片名称）。

注意：“转到下一张幻灯片”和“转到上一张幻灯片”导航到同一层上的屏幕，而不是父项或子项。有关父项和子项的说明，请参阅文档结构和层次结构（仅限于 Flash Professional）。

可以添加以下行为来控制幻灯片屏幕或表单屏幕：“显示指定屏幕”（如果屏幕此前已隐藏）、“隐藏指定屏幕”（如果屏幕此前已显示）。

要添加控制行为：

  1. 选择将触发行为的按钮、影片剪辑或屏幕。
  2. 在“行为”面板中，单击“增加”(+) 按钮。
  3. 选择“屏幕”，然后从子菜单中选择所需的控制行为。
  4. 如果行为要求您选择目标屏幕，则会出现“选择屏幕”对话框。在树形控件中选择目标屏幕。单击“相对”以使用相对目标路径，或单击“绝对”以使用绝对目标路径，然后单击“确定”。（有关目标路径的信息，请参阅使用绝对和相对目标路径。）

    注意：某些行为会默认选择目标屏幕；例如，“转到第一张幻灯片”屏幕会自动将目标定为第一个屏幕。这些行为不会显示“选择屏幕”对话框。

  5. 在“事件”列中，单击新行为的行，然后从列表中选择一个事件。这将指定触发行为的事件，例如，用户单击按钮、影片剪辑加载或屏幕获得焦点。可用事件的列表取决于正在用于触发行为的对象类型。


使用行为将过渡添加到屏幕（仅限于 Flash Professional）

屏幕过渡行为使您能够在屏幕之间添加动画过渡：使屏幕淡入或淡出、在屏幕出现或消失时旋转屏幕、使屏幕从文档的边缘飞入以及创建其他效果。要使用行为添加过渡，请将行为直接附加到屏幕。

可以选择过渡方向：“进入”，屏幕首次在文档中出现时播放动画；或“跳出”，在屏幕从文档中消失时播放动画。也可以选择持续时间（以秒为单位）。

扩大选项使您可以修改过渡以实现不同的效果。例如，“弹跳”扩大选项使屏幕在过渡完成时看起来像在弹跳。

某些过渡具有可以修改的附加参数。当您选择过渡时，参数将出现在“过渡”对话框中。

在添加过渡时，请遵循以下准则：

  • 对于大多数情况，建议使用“进入”选项。
  • 将 on(reveal) 事件应用于过渡时，请使用“进入”选项。
  • 当应用使用 on(hide) 事件的过渡时，请使用“跳出”选项。
  • 不要在演示文稿中的“进入”过渡之前立即添加“跳出”过渡。
  • 要将同一过渡附加到给定幻灯片的所有子项，请将这个过渡附加到父项的 on(revealChild) 或 on(hideChild) 事件，而不要在所有子幻灯片上复制该过渡。

要添加过渡行为：

  1. 选择要应用行为的屏幕。
  2. 在“行为”面板中，单击“增加”(+) 按钮。
  3. 从子菜单中选择“屏幕”>“过渡”。
  4. 从“过渡”对话框的滚动列表中选择一个过渡。

    预览窗口中会播放该过渡的动画预览，并且说明字段中会出现该过渡的简短说明。动画会根据您在以下步骤中为过渡选择的选项发生变化。

  5. 对于“方向”，选择“进入”可在屏幕出现在文档中时播放过渡，选择“跳出”可在屏幕从文档中消失时播放过渡。
  6. 对于“持续时间”，请输入一个以秒为单位的时间。
  7. 对于“扩大”，请选择用于定义过渡样式的选项。
  8. 如果过渡具有附加参数，请选择选项或者在提供的字段中输入这些参数的值。
  9. 单击“确定”。
  10. 在“行为”面板中，转到“事件”列并单击新行为的行，然后从列表中选择一个事件。这将指定哪一个事件将触发行为，例如，当鼠标指针在屏幕上移动时。


关于将影片浏览器用于处理屏幕（仅限于 Flash Professional）

可以使用影片浏览器来查看和组织包含屏幕的文档的内容。影片浏览器处理包含屏幕的文档的方式与处理不包含屏幕的文档的方式很相似，只是在以下方面不同：

  • 影片浏览器只会显示当前屏幕（“屏幕轮廓”窗格中选定的屏幕）的内容。
  • 您不能在影片浏览器中查看场景，因为包含屏幕的文档不能包含场景。

有关使用影片浏览器的信息，请参阅使用影片浏览器。


关于将时间轴用于处理屏幕（仅限于 Flash Professional）

每个屏幕都有自己的时间轴。时间轴在默认情况下处于折叠状态。必须将其展开才能处理帧或层。

不能查看或修改基于屏幕的文档的主时间轴。

您可以添加帧、关键帧和层，并且可以处理屏幕的时间轴上的内容。有关使用时间轴的信息，请参阅使用时间轴。

在时间轴中，嵌套屏幕的工作方式与嵌套的影片剪辑很相似，只是在以下方面不同。请参阅屏幕与动作脚本的交互方式（仅限于 Flash Professional）。


对屏幕使用动作脚本（仅限于 Flash Professional）

可以使用动作脚本来控制文档中的屏幕。您可以插入、删除、重命名屏幕或更改屏幕的顺序，也可以执行其他操作。

在控制屏幕时，动作脚本使用屏幕的实例名称、类名称和注册点。请参阅屏幕实例名称、类名称和注册点（仅限于 FlashProfessional）。动作脚本还使用屏幕参数。请参阅设置屏幕的参数（仅限于 Flash Professional）。

屏幕和影片剪辑与动作脚本进行交互的方式很相似，但有一些重要差异。请参阅屏幕与动作脚本的交互方式（仅限于 Flash Professional）。

有关使用动作脚本控制屏幕的详细信息，请参阅 Screen 类（仅限 Flash Professional）、Form 类（仅限 Flash Professional）和Slide 类（仅限 Flash Professional）。


屏幕实例名称、类名称和注册点（仅限于 FlashProfessional）

屏幕名称用于自动生成屏幕的实例名称和类名称。在使用动作脚本以多种方式处理屏幕时需要这些识别标记。可以更改屏幕的注册点来调整屏幕的行为。可以用多种方式使用这些功能：

  • 实例名称是分配给屏幕的唯一名称，在动作脚本中确定目标屏幕时使用。可以在“属性”检查器中更改实例名称。实例名称与“屏幕轮廓”窗格中的屏幕名称和屏幕的链接标识符相同。如果更新实例名称，屏幕名称和链接标识符也会随之更新。请参阅设置屏幕的属性和参数（仅限于 Flash Professional）。

    注意：元件实例（包括影片剪辑、按钮和图形）也具有实例名称。有关元件实例的详细信息，请参阅使用元件、实例和库资源。

  • 类名称标识屏幕被指定为的动作脚本类。默认情况下，会将幻灯片屏幕指定为 mx.screens.Slide 类，而将表单屏幕指定为 mx.screens.Form 类。可以将屏幕指定为不同的类，以便修改可用于该屏幕的方法和属性。有关动作脚本类的详细信息，请参阅使用动作脚本 2.0 创建类。
  • “属性”检查器在 x 和 y 坐标字段和注册点网格中指明注册点。请参阅设置屏幕的属性和参数（仅限于 Flash Professional）。您可能需要移动注册点以便在处理屏幕内容时获得更大程度的控制。例如，如果要在屏幕的中心创建一个自旋形状，您可以将屏幕注册点重新定位到屏幕的中心，然后环绕其注册点旋转屏幕。


屏幕与动作脚本的交互方式（仅限于 Flash Professional）

屏幕和嵌套影片剪辑在与动作脚本交互的方式上很相似。（请参阅嵌套的影片剪辑。）但是，仍然存在某些差异。

在对屏幕使用动作脚本时，请谨记以下准则：

  • 在“屏幕轮廓”窗格中选择屏幕并添加动作脚本时，会将脚本作为对象动作直接添加到屏幕中（与将动作脚本直接添加到影片剪辑相似）。对简单代码使用对象动作（如在屏幕之间创建导航）而对较复杂的代码使用外部 AS 文件通常是最佳的方式。
  • 最好在添加动作脚本之前组织文档结构并确定屏幕名称。如果重命名屏幕，实例名称会自动更改，并且您必须在您已经编写的任何动作脚本代码中更新实例名称。
  • 如果要将帧操作添加到某个屏幕的时间轴，您必须选择该屏幕，展开时间轴（默认情况下处于折叠状态），然后选择时间轴中的第一帧。但是，对屏幕上的复杂代码使用外部 AS 文件（而不是帧动作）通常是最佳的方式。
  • 不能查看或处理基于屏幕的文档的主时间轴。但是，可以通过在目标路径中使用 _root 将目标定为主时间轴。
  • 每个屏幕均基于它的类与动作脚本自动关联。（请参阅幻灯片屏幕和表单屏幕（仅限于 Flash Professional）。）您可以更改指定给屏幕的类，并可以在“属性”检查器中设置屏幕的某些参数。请参阅设置屏幕的属性和参数（仅限于 Flash Professional）。
  • 可以使用“屏幕”类、“幻灯片”类和“表单”类通过动作脚本来控制屏幕。
  • 只要有可能，请使用组件来创建交互性。一个 FLA 文件中总共可以放置的组件实例不能超过 125 个。
  • 若要在幻灯片之间创建导航，请使用 rootSlide。例如，要获取当前幻灯片，请使用 rootSlide.currentSlide。
  • 不要尝试在 on(reveal) 或 on(hide) 处理函数内执行幻灯片导航。
  • 不要向控制屏幕的动作脚本代码中添加 on(keydown) 或 on(keyup) 事件。

有关使用动作脚本控制屏幕的详细信息，请参阅 Screen 类（仅限 Flash Professional）、Form 类（仅限 Flash Professional）和Slide 类（仅限 Flash Professional）。


对屏幕使用“查找”和“替换”（仅限于 Flash Professional）

在使用屏幕的 Flash 文档中,可以使用“查找”和“替换”功能来查找和替换指定的元素。可以搜索文本字符串、字体、颜色、元件、声音文件、视频文件或导入的位图文件。

可以在整个文档或当前屏幕中搜索元素。

要对包含屏幕的文档使用“查找”和“替换”：

  1. 选择“编辑”>“查找和替换”。
  2. 执行以下其中一项操作：
    • 要搜索整个文档，请从“搜索范围”弹出菜单中选择“当前文档”。
    • 要搜索屏幕，请单击“屏幕轮廓”窗格，然后从“搜索范围”弹出菜单中选择“当前屏幕”。

      有关搜索文本、字体、颜色等的说明，请参阅使用“查找和替换”。


关于将组件用于处理屏幕（仅限于 Flash Professional）

可以将组件用于处理屏幕，以便在 Flash 中创建复杂的结构化应用程序。在与表单结合使用以创建显示数据并启用非线性用户交互的结构化应用程序时，组件特别有用。例如，可以使用表单来填充容器组件。

在对屏幕使用组件时，您可以使用焦点管理器在组件之间创建自定义导航。焦点管理器指定当用户按下 Tab 键在应用程序中导航时组件获得焦点的顺序。例如，您可以自定义表单应用程序，以便用户可以按 Tab 键浏览字段并按 Return (Macintosh) 或 Enter (Windows) 键提交表单。

有关焦点管理器的信息，请参阅创建自定义焦点导航和FocusManager 类。

也可以使用“辅助功能”面板创建一个 Tab 键顺序。请参阅查看与创建 Tab 键顺序和读取顺序。


Flash 屏幕创作环境中的辅助功能（仅限于 Flash Professional）

辅助功能支持可用于 Flash 创作环境中基于屏幕的文档。用户可以使用快捷键来导航文档和使用界面元素，包括屏幕、面板、“属性”检查器、对话框、“舞台”以及“舞台”上的对象，而不必使用鼠标。

基于屏幕的文档的辅助功能支持与其他文档的辅助功能支持相似，只有一点不同：当使用快捷键（Control+Alt+Tab (Windows) 或 Command+Option+Tab (Macintosh)）来导航面板时，“屏幕轮廓”窗格将在第一次使用快捷键时获得焦点。（对于其他文档，时间轴将首先获得焦点。）

要在“屏幕轮廓”窗格中的各个屏幕之间循环，请使用箭头键。

只有在第一次循环选择面板时，“屏幕轮廓”窗格才会获得焦点。也就是说，如果在到达最后一个面板时再次按下快捷键，“屏幕轮廓”窗格将被跳过，下一个面板将获得焦点。

有关 Flash 创作环境中的辅助功能的完整信息，请参阅Flash 创作环境中的辅助功能。


创建多语言文本概述

随着销往世界各地的应用程序越来越多，创作可用多种语言来显示的应用程序正逐渐成为一种趋势。Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了几种新功能，显著地改进了创作基于 Unicode 的多语言应用程序的工作流程。您可以用各种方式将多语言文本包含在文档中：

  • 新的“字符串”面板使本地化人员可以在 Flash 内的一个集中位置编辑字符串，或者用他们的首选软件或翻译记忆库在外部的 XML 文件中编辑字符串。请参阅用“字符串”面板创作多语言文本。
  • 您可以选择在应用程序中嵌入哪些字符集，从而限制所发布的 SWF 文件中字型的数量并减小文件大小。请参阅使用嵌入字体。
  • 您可以用西式键盘在舞台上用中文、日语和韩文创建文本。请参阅用西式键盘在舞台上输入亚洲字符。
  • 如果您的系统装有 Unicode 字体，则可以在文本字段中直接输入文本。因为并未嵌入字体，所以您的用户也必须装有 Unicode 字体。请参阅不使用“字符串”面板创建含有多语言文本的文档。

将多语言文本包含在影片中的其它不常用的方法有以下几种：

  • 您可以用 #include 动作将外部文本文件包含在动态或输入文本字段内。请参阅用 #include 动作创建含有多语言文本的文档。
  • 使用 loadVariables 动作、getURL 动作、LoadVars 对象或 XML 对象，可以在运行时将外部文本或 XML 文件加载到 Flash 应用程序中。请参阅用动作脚本加载外部文件。
  • 您可以在动态或输入文本字段变量的字符串值中输入 Unicode 转义字符。请参阅用文本变量创建含有多语言文本的文档。

要正确显示 Unicode 编码的文本，用户必须能使用含有该文本所用字型（字符）的字体。这一点对所有文本都是如此。请参阅使用未采用 Unicode 编码的外部文本或 XML 文件。


关于选择编码语言

计算机中的所有文本均被编码为一系列字节。可以用很多种不同的编码格式（因此字节数也不同）来表示文本。不同类型的操作系统使用不同类型的文本编码。例如，西文 Windows 操作系统通常使用 CP1252 编码；西文 Macintosh 操作系统通常使用 MacRoman 编码；日语 Windows 和 Macintosh 系统通常使用 Unicode 编码。

Unicode 可以对世界各地使用的绝大多数语言和字符进行编码。计算机使用的其它文本编码格式是 Unicode 格式的子集，专为世界上的特定地区定制。在这些格式中，有部分格式在某些范围内是兼容的，而在另一些范围内则不兼容，因此使用正确的编码非常重要。

Unicode 有几种格式。Flash Player 版本 6 和 7 支持以下格式的文本或外部文件：8 位 Unicode 格式 UTF-8、16 位 Unicode 格式 UTF-16 BE (Big Endian) 和 UTF-16 LE (Little
Endian)。请参阅Flash Player 7 中的文本编码。


Unicode 和 Macromedia Flash Player

Macromedia Flash Player 6 及更高版本支持 Unicode 文本编码。任何具有 Flash Player 6 或更高版本的用户，无论运行该播放器的操作系统使用何种语言，只要安装了正确的字体，均可查看多语言文本。

Flash Player 6 及更高版本假定 Flash Player 应用程序关联的所有外部文本文件均采用 Unicode 编码，除非您告知该播放器采用的是其它编码。如果使用非 Unicode 编码的外部文本文件，您可以将 system.useCodepage 属性设置为 true，以便指示 Flash Player 使用运行该播放器的操作系统的传统代码页。请参阅使用未采用 Unicode 编码的外部文本或 XML 文件。

对于用 Flash MX 或更低版本创作的 Macromedia Flash Player 5 或更低版本的 Flash 应用程序，Flash Player 6 和更低版本使用运行该播放器的操作系统的传统代码页显示文本。

有关 Unicode 的背景知识，请参阅 www.Unicode.org。


Flash Player 7 中的文本编码

默认情况下，Flash Player 7 假定其遇到的所有文本均采用 Unicode 编码。如果文档加载外部文本或 XML 文件，这些文件中的文本应采用 UTF-8 编码。要创建这些文件，既可使用“字符串”面板，也可使用可将文件保存为 Unicode 格式的文本或 HTML 编辑器，例如 Macromedia Dreamweaver MX 2004。

Flash Player 7 支持 8 位 Unicode 格式 UTF-8、16 位 Unicode 格式 UTF-16 BE
(Big Endian) 及 UTF-16 LE (Little Endian)。请参阅Flash Player 支持的 Unicode 编码格式。


Flash Player 支持的 Unicode 编码格式

在 Flash 中读取文本数据时，Flash Player 通过检查文件中的前两个字节来检测字节顺序标记 (BOM)，该标记是用于标识 Unicode 编码格式的标准格式规范。如果未检测到 BOM，则将文本编码解释为 UTF-8（一种 8 位编码格式）。建议您在应用程序中使用 UTF-8 编码。

如果 Flash Player 检测到以下 BOM 之一，则将按以下说明解释文本编码格式：

  • 如果文件的第一和第二个字节分别为 OxFE 和 OxFF，则将编码解释为 UTF-16 BE
    (Big Endian)。这用于 Macintosh 操作系统。
  • 如果文件的第一和第二个字节分别为 OxFF 和 OxFE，则将编码解释为 UTF-16 LE (Little Endian)。这用于 Windows 操作系统。

大多数可以将文件保存为 UTF-16BE 或 LE 的文本编辑器会自动将 BOM 添加到文件。

注意：如果您将 system.useCodepage 属性设置为 true，则会使用运行该播放器的操作系统的传统代码页来解释文本，而不将文本解释为 Unicode。请参阅使用未采用 Unicode 编码的外部文本或 XML 文件。


关于外部 XML 文件中的编码

您不能通过更改编码标记更改 XML 文件的编码。对于所有外部文件，Flash Player 使用相同的规则来识别外部 XML 文件的编码：如果在文件开始处未遇到字节顺序标记，则假定文件采用 UTF-8 编码。如果遇到字节顺序标记，则将文件解释为 UTF-16BE 或 LE。请参阅Flash Player 支持的 Unicode 编码格式。


Unicode 编码文本的字体选择

您使用 Unicode 编码的外部文件时，您的用户必须能使用含有文本文件内所有字型的字体。默认情况下，Flash MX 2004 存储动态或输入文本文件中使用的字体名称。在 SWF 文件回放期间，Flash Player 7（和更低版本）会在运行该播放器的操作系统中查找这些字体。

如果 SWF 文件中的文本含有指定的字体不支持的字型，Flash Player 7 会尝试在用户的系统中查找确实支持这些字型的字体。该播放器并不是总能找到适合的字体。此功能的行为取决于用户系统及运行 Flash Player 的操作系统中的可用字体。


使用嵌入字体

您可以为动态或输入文本字段嵌入字体。但是，某些字体（特别是用于亚洲语言的字体），在嵌入时可能会显著增加 SWF 文件的大小。使用 Flash MX 2004 和 Flash MX Professional 2004，您可以选择要嵌入的字体范围。

要选择和嵌入字体范围：

  1. 在舞台上选择文本字段。然后，显示“属性”检查器（“窗口”>“属性”）。
  2. 单击“字符”按钮以显示“字符选项”对话框。
  3. 选择以下选项之一：

    “无字符” 如果您不想嵌入任何字符，而宁愿使用在创作时指定的字体，或者在使用设备字体时提供适当的替换字体，请选择此选项。

    “指定范围” 要选择嵌入到 SWF 文件的字符范围，请选择此选项。通过只选择要嵌入的字符，您可以创建更小更有效的 SWF 文件。

  4. 如果您已选择“指定范围”，请通过以下操作选择要嵌入的字体集范围：
    • 在弹出菜单中单击一种字体集。
    • 通过按住 Shift 键单击一组相邻字体的第一个和最后一个字体，或者通过按住 Control 键 (Windows) 或 Command 键 (Macintosh) 单击不相邻的字体，选择多个字体。

    每个字体集的大小显示在字体名称旁边的括号内。在您选择多个字体集时，面板会显示您已选择的字型总数。

    注意：例如，要同时嵌入中文字符和西文字符，您需要同时选择中文和西文字体集。但是，请只选择您要嵌入的字体集，这样便不会超过创作工具的内部最大字型数量（约为 30,000）。如果您选择的数量超过最大数量，则会出现一个警告对话框。

  5. 单击“确定”。如果您超过了创作工具的内部最大字型数量，则会出现一个警告对话框。

    注意：Flash 不会对所选择的字符集执行错误检查，以确定字型确实存在于字体中。在实际的发布或导出过程中，只有字体中存在的字型才被嵌入到 SWF 文件中。

要从舞台上的文本嵌入字体集：

  1. 在舞台上选择文本。
  2. 在“属性”检查器（“窗口”>“属性”）中，单击“字符”按钮以显示“字符选项”对话框。
  3. 如有必要，选择“指定范围”。
  4. 单击“自动填充”按钮。
  5. 单击“确定”。

    选定字体的字型被嵌入。

XML 字体嵌入表

选定字体的列表作为外部 XML 文件进行存储与维护，并位于用户的配置文件夹中。该文件的名称为 Unicode_Table.xml，并包含在某种特定语言和所有必需的 Unicode 字型范围之间存在的一对多关系，如以下韩文示例所示。

字体集组合的基础是 Unicode 协会定义的 Unicode 块。在 Flash 中，是按照可以快速而轻松地进行选择的方式来组织这些字体集的。为提供更加简单的工作流程，在您选择某种特定语言时，所有相关的字型范围均被嵌入，即使它们散布于不连续的组合中。

例如，如果您选择“韩文”，则会嵌入以下 Unicode 字符范围。

3131-318E Hangul 符号

3200-321C Hangul 特殊字符

3260-327B Hangul 特殊字符

327F-327F 韩文符号

AC00-D7A3 Hangul 符号

如果您选择“韩文 + CJK”，则会嵌入更大的字体集：

3131-318E Hangul 符号

3200-321C Hangul 特殊字符

3260-327B Hangul 特殊字符

327F-327F 韩文符号

4E00-9FA5 CJK 符号

AC00-D7A3 Hangul 符号

F900-FA2D CJK 符号

字体集选择

下表提供了有关各个字体集选择更为详细的信息。

范围 | 说明
大写 [A - Z] | 基本拉丁语大写字型
小写 [a - z] | 基本拉丁语小写字型
数字 [0 - 9] | 基本拉丁语数字字型
标点 [!@#%...] | 基本拉丁语标点
基本拉丁语 | Unicode 范围 0x0021 至 0x007E 内的基本拉丁语字型
日语假名 | 平假名和片假名字型（包括半宽格式）
日语汉字 - 第 1 级 | 日语汉字字符
日语（全部） | 日语假名和汉字（包括标点和特殊字符）
基本 Hangul | 最常用的韩文字符、罗马字符、标点和特殊字符/符号
Hangul（全部） | 11,720 个韩文字符（按 Hangul 音节排序）、罗马字符、标点和特殊字符/符号
繁体中文 - 第 1 级 | 台湾最常用的 5000 个繁体中文字符
繁体中文（全部） | 台湾和香港使用的所有繁体中文字符和标点
简体中文 - 第 1 级 | 中国大陆最常用的 6000 个简体中文字符和标点
中文（全部） | 所有繁体和简体中文字符与标点
泰语 | 所有泰语字型
梵文 | 所有梵文字型
拉丁语 I | Latin-1 补充范围 0x00A1 至 0x00FF（包括标点、上标和下标、货币符号和与字母类似的符号）
拉丁语扩展 A | 拉丁语扩展 A 范围 0x0100 至 0x01FF（包括标点、上标和下标、货币符号和与字母类似的符号）
拉丁语扩展 B | 拉丁语扩展 B 范围 0x0180 至 0x024F（包括标点、上标和下标、货币符号和与字母类似的符号）
拉丁语扩展 Add'l | 拉丁语扩展补充范围 0x1E00 至 0x1EFF（包括标点、上标和下标、货币符号和与字母类似的符号）
希腊语 | 希腊语和科普特语，外加希腊语扩展（包括标点、上标和下标、货币符号和与字母类似的符号）
西里尔字符 | 西里尔字符（包括标点、上标和下标、货币符号和与字母类似的符号）
亚美尼亚语 | 亚美尼亚语加连字符号
阿拉伯语 | 阿拉伯语加表达形式 A 与表达形式 B
希伯来语 | 希伯来语加表达形式（包括标点、上标和下标、货币符号和与字母类似的符号）


用“字符串”面板创作多语言文本

新的“字符串”面板提供了简化的多语言文本创作流程。工作流程的总体步骤如下所示。

  • 用一种语言创作 FLA 文件。您希望用其它语言输入的任何文本必须位于动态或输入文本字段内。
  • 在“字符串”面板的“设置”对话框内，选择要包括的语言，并将其中的一种选作默认语言。
  • 选择一种语言后，会为该语言向“字符串”面板添加一列。当您保存、测试或发布应用程序时，将为每种语言创建一个含有 XML 文件的文件夹。请参阅选择要译成的语言。
  • 在“字符串”面板中，为每个文本字符串编制一个 ID。请参阅将字符串添加到“字符串”面板。
  • 发布应用程序。
  • Flash 会为您选择的每种语言创建一个文件夹，每个语言文件夹内都有一个用于该语言的 XML 文件。请参阅发布和部署多语言文本。
  • 将发布的 FLA 文件和 XML 文件夹及文件发送给您的翻译人员。您可以用母语进行创作，然后让翻译人员进行翻译。他们可以在 XML 文件或 FLA 文件中直接使用翻译软件。 在“字符串”面板或 XML 文件中翻译文本。
  • 当您收到翻译人员返回的翻译文件后，将翻译好的 XML 文件重新导入到 FLA 文件中。请参阅将 XML 文件导入到“字符串”面板。

有关多语言文档的范例，请参阅开发多语言内容。


选择要译成的语言

在翻译时，您可以选择多达 100 种不同的语言，这些语言均可显示在舞台和“字符串”面板中。您选择的每种语言都会成为“字符串”面板中的一列。您可以更改舞台语言，以便在舞台上以所选的任何语言显示文本。发布或测试文件时，会显示选定的语言。

选择语言时，您可以使用弹出菜单中的任何一种语言，以及 Unicode 支持的其它语言。

要选择一种语言：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 单击“设置”按钮以显示“设置”对话框。
  3. 通过执行以下操作之一添加一种语言：
    • 在“语言”弹出菜单中，突出显示您要选择的语言，然后单击“添加”按钮。
    • 如果弹出菜单中未显示所要的语言，则在“选择语言”弹出菜单下方的空白字段中，键入语言代码和可选的国家/地区代码，格式为 xx_XX。然后，单击“添加”按钮。第一部分 xx 是 ISO 639-1 规定的语言代码，而 XX 是 ISO 3166-1 规定的大写两字母国家/地区代码（可选）。

    单击“添加”按钮后，语言显示在“可用语言”字段中。

  4. 重复步骤 3，直到添加了所有要添加的语言。
  5. 在“默认语言”字段中，选择一种默认语言。对于没有您选择的其中一种可用语言的系统，会显示该语言。
  6. 如果您希望在运行时从另一个 URL 加载语言的 XML 文件，请在“URL”文本框中键入该 URL。

    注意：Flash 生成的 XML 文件存储在 SWF 发布路径所指示的文件夹下。请参阅发布 Flash 文档。如果未选择 SWF 发布路径，这个 XML 文件将存储在该 FLA 文件的文件夹内相应于该语言的文件夹下。

  7. 单击“确定”。

    每种选定语言都会在“字符串”面板中显示一列。这些列按字母顺序显示。

  8. 保存 FLA 文件。保存 FLA 文件时，将在 SWF 发布路径所指示的相同文件夹下为您所选择的每种语言各创建一个文件夹。请参阅发布 Flash 文档。如果未选择 SWF 发布路径，将在该 FLA 文件所在的文件夹下创建语言文件夹。在各个语言文件夹内，将创建一个用于装载翻译文本的 XML 文件。

要删除一种语言：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 单击“设置”按钮以显示“设置”对话框。
  3. 在“可用语言”字段中，突出显示您要删除的语言，然后单击“删除”按钮。

    该语言不再显示在“可用语言”字段中。

  4. 重复步骤 3，直到所有要删除的语言均已被删除。
  5. 删除完语言后，单击“确定”。

    每种已删除语言的列不再显示在“字符串”面板中。


将字符串添加到“字符串”面板

将文本字符串指定到“字符串”面板的方法有以下几种：可以将字符串 ID 指定到动态或输入文本字段；将字符串添加到“字符串”面板而不将其指定到文本字段；或者，将现有的字符串 ID 指定到现有的动态或输入文本字段。有关创建动态和输入文本字段的信息，请参阅创建文本。

要将字符串 ID 指定到文本字段：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 从工具栏中选择“文本”工具。在舞台上，创建一个输入或动态文本字段。
  3. 选择该文本字段，然后在“字符串”面板中的“ID”字段内输入唯一的 ID。

    注意：如果在舞台上选择了一个静态文本框，则“字符串”面板上“舞台文本选择”部分会显示消息“当前文本不会有与之相关的 ID。”如果选择了非文本项目或选择了多个项目，则显示消息“当前的选择不会有与之相关的 ID。”

  4. 在“字符串”面板中，在“字符串”文本框中键入字符串。
  5. 单击“应用”将字符串添加到“字符串”面板。

    注意：您也可以按 Enter 键将 ID 应用到文本字段。

要将字符串 ID 添加到“字符串”面板而不将其指定到文本字段：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 在“字符串”面板中键入新的字符串 ID 和新的字符串，然后单击“应用”按钮。

    注意：您也可以按 Enter 键将 ID 应用到文本字段。

  3. 准备将新的字符串指定到文本字段时，请按照以下过程中的步骤进行。

要将现有的 ID 指定到文本字段：

  1. 从工具栏中选择“文本”工具。在舞台上，创建一个输入或动态文本字段。
  2. 在“字符串”面板的“ID”部分中键入现有 ID 的名称。
  3. 单击“应用”。

    对于舞台上显示的字符串文本字段，该 ID 已被指定到其文本字符串。

    注意：您也可以按 Enter 键将 ID 应用到文本字段。

更改舞台上显示的语言

您可以将舞台上显示的语言更改为先前选择的任何可用语言。请参阅选择要译成的语言。

要用另一种语言显示舞台上的文本：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 在“舞台语言”弹出菜单中，选择您希望使用的舞台语言。这必须是您先前作为可用语言添加的语言。

    更改舞台语言后，您在舞台上键入的任何新文本将以更改后的语言显示。如果您先前在“字符串”面板中为该语言输入了文本字符串，则舞台上的任何文本均以选定的语言显示。如果未输入，则舞台上现有的文本字段是空的。

关于在“字符串”面板中编辑文本

在“字符串”面板中输入文本后，您可以用几种方式来编辑文本：

  • 您可以在“字符串”面板的单元格中直接编辑文本。
  • 您可以使用语言编辑功能，例如查找与替换（请参阅查找和替换文本）和拼写检查（请参阅使用检查拼写功能），用所选舞台语言对舞台上的文本进行编辑。使用这些功能会更改舞台和“字符串”面板中的文本。
  • 您可以直接编辑 XML 文件。请参阅在“字符串”面板或 XML 文件中翻译文本。


发布和部署多语言文本

保存、发布或测试 FLA 文件时，将为您在“字符串”面板中选择的每种可用语言创建一个含有 XML 文件的文件夹。XML 文件夹和文件的默认位置与 SWF 发布路径所指示的文件夹相同。请参阅发布 Flash 文档。如果未选择 SWF 发布路径，则 XML 文件夹和文件将保存在该 FLA 文件所在的文件夹下。例如，如果您有一个名为 Test 的文件位于 mystuff 目录下，并且您选择了英语 (en)、德语 (de) 和西班牙语 (es) 作为可用语言，但您未选择 SWF 发布路径，那么在保存该 FLA 文件时，将创建以下文件夹结构：

\mystuff\Test.fla
\mystuff\de\Test_de.xml
\mystuff\en\Test_en.xml
\mystuff\es\Test_es.xml

部署 SWF 文件时，您还需要在 Web 服务器中部署含有字符串译文的关联 XML 文件。含有文本的第一帧在整个 XML 文件下载后才会显示。

自动语言检测功能和默认语言

您可以将默认语言更改为已选作可用语言的任何语言。当打开自动语言检测功能并在语言操作系统平台上查看 SWF 文件时，在那些默认语言未设置为您所选语言的系统上，将会显示默认语言。例如，如果您将默认语言设置为英语，并且选择了 JP、EN 和 FR 作为可用语言，则倘若用户将其系统语言设置为日语、英语或法语，他们将自然而然地看到以其系统语言显示的文本字符串。但是，如果用户将其系统语言设置为瑞典语（这不是您选择的语言之一），他们会自然而然地看到以您所选的默认语言显示的文本字符串 - 在本例中为英语。

但是，在您发布 Flash 应用程序（选择“文件”>“发布”）时，在“字符串”面板“设置”对话框中指定的默认语言设置会发布到所生成的 SWF 文件中。例如，如果在“字符串”面板“设置”对话框中设置的默认语言为法语，但操作系统和 Flash 使用的是英语，则发布的影片 SWF 文件使用的是默认语言，在本例中为法语。

注意：在您测试 Flash 应用程序（选择“控制”>“测试影片”）时，在“字符串”面板中指定的舞台语言设置会发布到所生成的 SWF 文件中。例如，如果在“字符串”面板“设置”对话框中设置的舞台语言为英语，并且默认语言是法语，则测试 SWF 文件使用的是舞台语言，在本例中为英语。

要选择默认语言和自动语言检测功能：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 单击“设置”按钮以显示“设置”对话框。
  3. 在“默认语言”弹出菜单中，选择您要用作默认语言的语言。这必须是您先前作为可用语言添加的语言。
  4. 如果您想启用自动语言检测功能，请确保选择了“插入动作脚本以便自动进行语言检测”。
  5. 单击“确定”。


XML 文件格式

导出的 XML 采用 UTF-8 格式，并符合 XML 本地化交换文件格式 (XLIFF) 1.0 标准。该标准用于定义可扩展本地化交换格式的规范，从而使软件供应商开发出本地化服务供应商可接收并理解的单一交换格式。有关 XLIFF 的详细信息，请参阅 www.oasis-open.org/committees/xliff/。

XLIFF 示例

如果在“字符串”面板中输入以下任何字符，则在导出到 XML 文件时，它们会被适当的实体引用所替换：

字符 | 替换为
& | &amp;
' | &apos;
" | &quot;
< | &lt;
> | &gt;

导出的 XML 文件范例

在以下范例中，分别显示了以源语言（在本例为英语）和其它语言（在本例为法语）表示的“字符串”面板生成的 XML 文件。

英语源语言版范例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN"
"http://www.oasis-open.org/committees/xliff/documents/xliff.dtd" >
<xliff version="1.0" xml:lang="en">
<file datatype="plaintext" original="MultiLingualContent.fla" source-language="EN">
    <header></header>
    <body>
      <trans-unit id="001" resname="IDS_GREETINGS">
        <source>welcome to our web site!</source>
      </trans-unit>
      <trans-unit id="002" resname="IDS_MAILING LIST">
        <source>Would you like to be on our mailing list?</source>
      </trans-unit>
      <trans-unit id="003" resname="IDS_SEE YOU">
        <source>see you soon!</source>
      </trans-unit>
      <trans-unit id="004" resname="IDS_TEST">
        <source></source>
      </trans-unit>
    </body>
  </file>
</xliff>

法语版范例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN"
"http://www.oasis-open.org/committees/xliff/documents/xliff.dtd" >
<xliff version="1.0" xml:lang="fr">
<file datatype="plaintext" original="MultiLingualContent.fla" source-language="EN">
    <header></header>
    <body>
      <trans-unit id="001" resname="IDS_GREETINGS">
        <source>Bienvenue sur notre site web!</source>
      </trans-unit>
      <trans-unit id="002" resname="IDS_MAILING LIST">
        <source>Voudriez-vous être sur notre liste de diffusion?</source>
      </trans-unit>
      <trans-unit id="003" resname="IDS_SEE YOU">
        <source>A bientt!</source>
      </trans-unit>
      <trans-unit id="004" resname="IDS_TEST">
        <source></source>
      </trans-unit>
    </body>
  </file>
</xliff>


在“字符串”面板或 XML 文件中翻译文本

在完成了文档的创作、在“字符串”面板中将 ID 指定到所有文本，以及选择了要将文档翻译成的所有语言之后，即可将文档发送给翻译人员。向翻译人员发送文件时，不仅要发送 FLA 文件，还要发送 XML 文件的文件夹和每种语言的 XML 文件。

翻译人员既可直接在“字符串”面板的语言列中工作，也可在每种语言的 XML 文件中工作，将 FLA 文件翻译成选定的语言。如果直接在 XML 文件中进行翻译，您必须将 XML 文件导入到“字符串”面板，或将其保存在该语言的默认目录中。请参阅将 XML 文件导入到“字符串”面板。

要在“字符串”面板中翻译文本：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 对于每种要翻译的语言，选择适当的语言列，然后键入将与每个字符串 ID 关联的该语言的译文。
  3. 要用您选定的语言显示舞台上的文本，在“舞台语言”字段中选择该语言。
  4. 结束时，保存、发布或测试文件。

    “字符串”面板中的信息会覆盖所有语言的所有 XML 文件。

    注意：如果您想保存 XML 文件中的译文，请将其保存在不同的文件夹中。

要在 XML 文件中翻译文本：

  1. 用 XML 文件编辑器或翻译软件打开所需语言的文件夹，然后打开该语言的 XML 文件。XML 文件中被填入了用于各个文本字符串的 ID。
  2. 在 ID 旁边输入该语言的文本字符串。请参阅英语源语言版范例和法语版范例。
  3. 如有必要，将翻译好的 XML 文件导入到“字符串”面板。请参阅将 XML 文件导入到“字符串”面板。


将 XML 文件导入到“字符串”面板

修改 XML 文件后，如果您将其放入在“字符串”面板中指定的该语言的目录或文件夹，则在打开 FLA 文件时会将 XML 文件加载到该文件中。

您也可以从其它位置将 XML 文件导入到“字符串”面板。导入 XML 文件后，在您保存、测试或发布文件时，为该语言指定的文件夹内的 XML 文件会被覆盖。除非已在“字符串”面板中将某种语言选为可用语言，否则您无法导入该语言的 XML 文件。您也可以添加一种语言并导入含有该语言译文的 XML 文件。

要将 XML 文件导入到“字符串”面板：

  1. 选择“窗口”>“其他面板”>“字符串”打开“字符串”面板。
  2. 单击“导入 XML”以显示“导入 XML”对话框。
  3. 在“选择语言”弹出菜单中，选择您要导入的 XML 文件的语言，然后单击“确定”。
  4. 定位到要导入的 XML 文件的文件夹及该文件。

    XML 信息被加载到“字符串”面板中的语言列，该语言是指您在步骤 3 中选定的语言。

    注意：确保在步骤 3 和步骤 4 中选择了相同的语言。否则，您可能会将法语 XML 文件导入到德语的列。

无论导入的 XML 文件位于什么位置，在您保存、测试或发布该 Flash 文档 (FLA) 时，都将在指定的 SWF 文件发布位置为“字符串”面板中的每种语言各创建一个文件夹，并为每种语言各创建一个 XML 文件。请参阅发布 Flash 文档。如果未指定发布路径，这些文件夹和文件将保存在该 FLA 文件所在的文件夹下。“字符串”面板生成的 XML 文件始终用“字符串”面板中的信息填充。


不使用“字符串”面板创建多语言文档

您可以不使用“字符串”面板创建含有多语言文本的文档。请参阅以下部分：

用 XMLConnector 组件连接到外部 XML 文件

用西式键盘在舞台上输入亚洲字符

用动作脚本加载外部文件

用 #include 动作创建含有多语言文本的文档

用文本变量创建含有多语言文本的文档


用 XMLConnector 组件连接到外部 XML 文件

您可以用 XMLConnector 组件连接到外部 XML 文档，以便绑定到文档中的属性。这样做的目的是，用 HTTP GET 操作、POST 操作或这两种操作来读写 XML 文档。这在其它组件与外部 XML 文档之间起到连接器的作用。XMLConnector 使用 Flash Professional 创作环境中的数据绑定功能或动作脚本代码与应用程序中的组件进行通信。有关详细信息，请参阅XMLConnector 组件（仅限 Flash Professional）。


用西式键盘在舞台上输入亚洲字符

使用 Flash MX 2004，您可以用标准的西式键盘通过输入法编辑器 (IME) 在舞台上输入亚洲字符。Flash 支持二十四种以上的不同 IME。

例如，如果您想创建一个面向东亚各地的访问者的 Web 站点，只需更改输入法编辑器，就可以用标准的西式键盘创建中文、日语和韩文文本。

在以前版本的 Flash 中，不能用标准的西式键盘输入韩文字符。使用 Flash MX 2004，只需将 IME 在日语、中文和韩文字符输入之间切换，即可用韩文、日语和中文字符输入文本。

注意：这只影响舞台上的文本输入，而不影响在“动作”面板中输入的文本。该功能适用于所有支持的 Windows 操作系统和 Macintosh OSX。

要在日语、中文和韩文字符输入之间切换：

  1. 选择“编辑”>“首选参数”，然后单击“首选参数”对话框中的“编辑”选项卡。
  2. 在“输入语言设置”下，选择以下一个选项：
    • 选择“中文和日语”以便用西式键盘输入中文和日语字符。（这是默认设置，对于西方语言，也应选择此项。）
    • 选择“韩文”以便用西式键盘输入韩文字符。
  3. 单击“确定”。


用动作脚本加载外部文件

如果您当前有想加载的 XML 数据，或者不想使用“字符串”面板而喜欢用另一种格式的 XML 文件，则可以通过以下方法创建一个包含多语言文本的文档：将文本放入外部文本文件或 XML 文件中，用 loadVariables 动作、getURL 动作、LoadVars 对象或 XML 对象在影片运行时加载该文件。

您应使用支持以下这些格式的应用程序，将外部文件保存为 UTF-8（推荐格式）、UTF-16BE 或 UTF-16LE 格式。如果使用 UTF-16BE 或 UTF-16LE 格式，文件必须以字节顺序标记 (BOM) 开始，以便 Flash Player 识别编码格式。请参阅Flash Player 支持的 Unicode 编码格式。

注意：如果外部文件为 XML 文件，您无法用 XML 编码标记来更改文件的编码。您应将文件保存为支持的 Unicode 格式。请参阅关于外部 XML 文件中的编码。

要用外部加载的文件包含多语言文本：

  1. 在 Flash 创作工具中，创建一个动态或输入文本字段，以便显示文档中的文本。有关详细信息，请参阅处理文本。
  2. 在选中文本字段时，在“属性”检查器中为文本字段指定实例名称。
  3. 创建用于定义文本字段变量值的文本文件或 XML 文件。
  4. 将文件保存为 UTF-8（推荐格式）、UTF-16BE 或 UTF-16LE 格式。

    如果您使用 UTF-16 格式，确保在文件的开始处包含了标识编码的字节顺序标记：

    • 对于 UTF-16BE，文件的第一个字节应为 OxFE，第二个字节应为 OxFF。
    • 对于 UTF-16LE，文件的第一个字节应为 OxFF，第二个字节应为 OxFE。

    注意：大多数可以将文件保存为 UTF-16BE 或 LE 格式的文本编辑器会自动在文件中添加 BOM。

  5. 用以下一个动作脚本过程引用外部文件，并将其加载到动态或输入文本字段：
    • 用 loadVariables 动作加载外部文件。有关详细信息，请参阅loadVariables()。
    • 用 getURL 动作从指定的 URL 加载外部文件。有关详细信息，请参阅getURL()。
    • 用 LoadVars 对象（一个预定义的客户端-服务器对象）从指定的 URL 加载外部文本文件。有关详细信息，请参阅LoadVars 类。
    • 用 XML 对象（一个预定义的客户端-服务器对象）从指定的 URL 加载外部 XML 文件。有关详细信息，请参阅XML 类。


用 #include 动作创建含有多语言文本的文档

您可以用 #include 动作创建含有多种语言的文档。

您应将文本文件保存为 UTF-8 格式。用支持 UTF-8 编码的应用程序（例如 Dreamweaver）保存文件。

您必须将以下标题作为文件的第一行，以便 Flash 创作工具将文件识别为 Unicode：

//!-- UTF8

注意：确保在第二条虚线 (-) 之后有一个空格。

默认情况下，Flash 创作应用程序假定，使用 #include 动作的外部文件以运行该创作工具的操作系统的传统代码页进行编码。在文件中使用 //!-- UTF8 标题可告知创作工具外部文件的编码是 UTF-8。

要用 #include 动作包含多语言文本：

  1. 在 Flash 创作工具中，创建一个动态或输入文本字段，以便显示文档中的文本。有关详细信息，请参阅处理文本。
  2. 在选中文本字段时，在“属性”检查器中为文本字段指定实例名称。
  3. 创建用于定义文本字段变量值的文本文件。请记住在文件的开始处加入标题 //!-- UTF8。
  4. 将文件保存为 UTF-8 格式。
  5. 用 #include 动作将外部文件包含到动态或输入文本字段中。有关详细信息，请参阅#include。


用文本变量创建含有多语言文本的文档

您可以用语法 \uXXXX 将 Unicode 编码的内容包含在文本变量中，其中 XXXX 是 Unicode 字符的四位十六进制码点或转义字符。Flash 创作工具支持 \uFFFF 之前的 Unicode 转义字符。要找出 Unicode 字符的码点，请参考位于 www.Unicode.org 的 Unicode 标准。

您只能在文本字段变量中使用 Unicode 转义字符。您不能在外部文本或 XML 文件中包含 Unicode 转义字符；Flash Player 6 不能识别外部文件中的 Unicode 转义字符。

例如，要设置一个含有日语、韩文、中文、英语、希伯来语、希腊字符及欧元符号的动态文本字段（变量名称为 myTextVar），您可以输入以下内容：

myTextVar = "\u304B\uD55C\u6C49hello\u05E2\u03BB\u20AC";

SWF 文件播放时，该文本字段显示以下内容：

为了在创建含有多种语言的文本字段时获得最佳效果，请务必使用一种含有文本所需的所有字型的字体。请参阅使用未采用 Unicode 编码的外部文本或 XML 文件。


使用未采用 Unicode 编码的外部文本或 XML 文件

如果您加载到 Flash Player 7 应用程序的外部文件没有采用 Unicode 编码，则当 Flash Player 试图以 Unicode 显示外部文件中的文本时，将无法正确显示这些文本。您可以指示 Flash Player 使用运行该播放器的操作系统的传统代码页。为此，将以下代码作为代码的第一行添加到加载数据的 Flash 应用程序的第一帧：

system.useCodepage = true;

在文档中请只设置一次 system.useCodepage 属性；不要为了使播放器将某些外部文件解释为 Unicode 并将另一些文件解释为其它编码，而多次使用该属性，原因是这样做会产生无法预料的结果。

如果将 system.useCodepage 属性设置为 true，请记住，运行播放器的操作系统的传统代码页必须包含外部文本文件中使用的字型，这样才能显示文本。例如，如果您加载含有中文字符的外部文本文件，则不能在使用 CP1252 代码页的系统上显示这些字符，原因是该代码页未包含中文字符。为了确保所有平台上的用户均可查看 Flash 应用程序使用的外部文本文件，应使所有外部文本文件的编码都是 Unicode，并保留 system.useCodepage 属性的默认设置 false。这会使 Flash Player 将文本解释为 Unicode。有关详细信息，请参阅System.useCodepage。


数据集成概述

Macromedia Flash MX Professional 2004 提供了灵活的基于组件的体系结构和对象模型，用于连接到外部数据源、管理数据和将数据绑定到用户界面组件。数据集成包含以下三个主要方面：

  • 数据连接：组件体系结构的连接器层，提供了发送和从各种数据源（如 Web 服务和 XML）接收数据的功能。请参阅数据连接（仅限于 Flash Professional）。
  • 数据管理：组件体系结构的数据储备库层，提供了对常见数据操作（如编辑、排序、筛选、聚合和更改转换）的智能管理。请参阅数据管理（仅限于 Flash Professional）。
  • 数据绑定：体系结构的数据管道层，提供了在组件属性之间共享数据的机制。管道集成了诸如格式器和编码器等对象，可以提供对组件间的数据传播方式的完全控制。请参阅数据绑定（仅限于 Flash Professional）。

下图描绘了 Flash 应用程序内的数据流，并标出了组成 Flash 数据体系结构的不同元素。数据绑定由组件之间的红色箭头表示。

注意：请务必明白 Flash 是一种客户端技术。Flash 数据集成提供了所有必需的工具和功能，可用于访问数据、处理数据并以多种不同的格式将数据重新发送到服务器。在服务器上建立和公开业务逻辑是服务器开发人员的工作，因此，使用特别针对该任务设计的产品（如 Cold Fusion、J2EE Application Server 和 ASP.NET）进行实施可获得最佳效果。

有关介绍 Flash 数据体系结构的教程，请访问
www.macromedia.com/go/fl_documentation_cn。


关于数据连接（仅限于 Flash Professional）

Flash MX Professional 2004 中的数据连接提供了连接到外部数据源以检索并发送数据的功能。此功能在 Flash 创作环境中通过连接器和解析程序组件提供。

注意：外部数据是指可通过 HTTP 访问的任何数据。


关于数据连接和 Flash Player 中的安全性（仅限于 Flash Professional）

通过任何连接器组件访问外部数据受 Flash Player 中的“沙箱”安全性功能所限。此功能限制 Flash 文档访问来自与它的来源域不同的域中的数据（包括公共 Web 服务）。如果从创作工具中测试应用程序或在放映文件内显示应用程序，则可以访问来自任何域的外部数据。然而，如果将影片发布到 www.abc.com，则它只能检索来自 www.abc.com 的数据。

注意：如果其他域包含的策略文件声明可以接受来源于您所在域的数据请求，则可以访问来自该域的外部数据。请参阅使用外部数据。


连接器组件（仅限于 Flash Professional）

可以使用连接器组件与外部数据源通信。连接器组件包含用于处理特定数据源的专门功能。Flash MX Professional 2004 包括 WebServiceConnector 组件（能让您连接到 Web 服务）和 XMLConnector 组件（能让您连接到通过 HTTP 返回 XML 的任何外部数据源，如 JSP、ASP、Servlet 或 ColdFusion）。连接器组件用于从服务器获取数据，以及将更新数据包重新发送到服务器。应用程序中的一个典型屏幕可能包含多个用于检索和/或更新数据的连接器组件。

XMLConnector 和 WebServiceConnector 组件在运行时应用程序中没有可视外观。高级开发人员可以根据需要建立其他连接器组件。有关详细信息，请参阅创建组件。


WebServiceConnector 组件（仅限于 Flash Professional）

WebServiceConnector 组件能让您使用业界标准 SOAP（简单对象访问协议）协议访问服务器公开的远程方法。Web 服务可以接受参数并返回结果。使用 Flash MX Professional 2004 创作工具和 WebServiceConnector 组件，您可以对远程 Web 服务和 Flash 应用程序之间的数据进行内部检查、访问和绑定。WebServiceConnector 组件的单个实例可用于多次调用同一操作。尽管这样，但如果要调用多个操作，仍然需要为每个操作使用不同的 WebServiceConnector 组件实例。

Web 服务的方法（有时称为操作）由 Web 服务说明语言 (WSDL) 文件定义。WSDL 文件指定 Web 服务所公开的操作、参数和结果（称为架构）的列表。

WSDL 文件可使用 URL 访问。在 Flash MX Professional 2004 中，您可以查看任意 Web 服务的架构，方法是使用“Web 服务”面板输入其 WSDL 文件的 URL。一旦标识了 WSDL 文件，Web 服务即可用于您创建的任何应用程序。

注意：请记住，访问 Web 服务（如同任何外部数据一样）受 Flash Player 安全性功能限制。请参阅关于数据连接和 Flash Player 中的安全性（仅限于 Flash Professional）。

有关 WebServiceConnector 组件（包括其属性、方法和事件）的详细信息，请参阅WebServiceConnector（仅限 Flash Professional）。

WebServiceConnector 组件参数

WebServiceConnector 组件具有以下参数：

operation 字符串，代表 Web 服务的方法的名称。在创作 UI 中，此参数以弹出菜单的形式出现，并将在您更改 WSDLURL 时随时更新。

multipleSimultaneousAllowed 布尔值，如果将此参数设置为 true，它允许 trigger() 操作在另一个 trigger() 操作正在进行时启动。多个同时进行的 trigger() 操作可能不会按调用它们时的相同顺序完成。同时，Flash Player 可能会对同时进行的网络操作数目加以限制。此限制因版本和平台而异。如果将该参数设置为 false，则 trigger() 操作不能在另一个操作正在进行时启动。

suppressInvalidCalls 布尔值，如果将此参数设置为 true，它会在数据参数无效时中止 trigger() 操作。如果将其设置为 false，trigger() 操作将在需要时执行和使用无效数据。

WSDLURL 字符串，代表 Web 服务 WSDL 文件的 URL。

WebServiceConnector 组件的通用工作流程

WebServiceConnector 组件的典型工作流程如下所示。

要使用 WebServiceConnector 组件：

  1. 使用“Web 服务”面板输入 Web 服务 WSDL 文件的 URL。
  2. 通过选择方法，右击 (Windows) 或按住 Control 键单击 (Macintosh)，然后从上下文菜单中选择“添加方法调用”，从而添加对 Web 服务的方法的调用。这将在应用程序中创建 WebServiceConnector 组件实例。可在“组件检查器”面板的“架构”选项卡上找到组件的架构。可以根据需要随意编辑此架构，例如，提供附加格式或验证设置。

    注意：创作者每次更改 WSDLURL 或 operation 参数时，params 和 results 组件属性的架构会随之更新。这将覆盖您所编辑的任何设置。

  3. 使用“组件检查器”面板中的“绑定”选项卡，将架构中现在定义的 Web 服务参数和结果绑定到应用程序内的组件。
  4. 添加触发器以启动数据绑定操作：使用附加至按钮的“触发器数据源”行为，或添加动作脚本。

Web 服务的架构

Web 服务的架构是通过其 WSDL 文件定义的。Flash MX Professional 2004 本身支持对 WSDL 进行内部检查以及生成架构。

以下示例演示如何查看 Web 服务的架构。

注意：此示例需要有效的 Internet 连接，因为它使用公共 Web 服务。如果在应用程序中使用 Web 服务，该 Web 服务必须位于与应用程序的 SWF 文件相同的域中，以便应用程序能够在 Web 浏览器中工作。请参阅应用程序和 Web 服务。

  1. 将 WebServiceConnector 组件拖到舞台上。
  2. 选择 WSDLURL 参数，并键入以下 URL：
    http://www.xmethods.net/sd/2001/BabelFishService.wsdl
  3. 选择“操作”，然后选择 BabelFish 方法。
  4. 单击“架构”选项卡。您现在将看到以下自动生成的架构：

    这是所调用服务的示意图。参数以及结果结构是在架构内定义的。这种架构表明 BabelFish 服务在被调用时期望两个字符串参数，并将返回一个字符串作为调用的结果。

    架构内标识的项目现在可以绑定到各种 UI 控件，以便为参数提供值或显示 Web 服务的结果。

应用程序和 Web 服务

许多开发人员都乐意使用业界标准（如 SOAP）Web 服务作为客户机和服务器之间的数据交换机制。这种方法之所以受到青睐的原因之一在于：使用 SOAP 支持逻辑公开的常用服务器数量日益增加。

然而，在某些情况下，您可能希望客户机软件使用由第三方发布的 Web 服务或由处于 Flash Player“沙箱”外部的服务器托管的 Web 服务。有很多方法可以达到此目的，并可以同时保留 Flash Player“沙箱”提供的最终用户安全和隐私。这些方法涉及到创建一个驻留在服务器上的中间对象，以便充当客户机和要使用的公共服务之间的桥梁。这种方法具有多个优点：

  • 可以聚合多个公共 Web 服务。利用此方法，您可以在发生数据请求时提供故障恢复安全和负载均衡。
  • 可保持对应用程序中的数据流的控制。如果 Web 服务不可用或 URL 无法访问，您可以决定如何响应。
  • 可对数据进行优化。可以缓存多个请求。
  • 您可以拥有自定义错误处理方法。可以确定向客户机返回什么错误。
  • 可以处理、转换或组合数据。可以从多个来源中提取数据，然后随组合的信息一起返回一个数据包。

您建立的许多基于 SOAP 的应用程序将使用服务器上托管的专用 Web 服务。一旦确定了实施和公开您自己的 Web 服务的最佳方法，就可以轻松地使公共 Web 服务可供客户机应用程序使用。如果您控制服务器，则可以提供完整的解决方案。服务器是放置业务逻辑的理想位置，它可以确定回应数据请求的最佳方式以及应向客户机返回的结果。这同时也是建立应用程序最安全的方式。服务器可以提供附加处理，以确保用户只能访问某些服务，并保护客户机不被返回有害数据的恶意服务调用。请参阅关于数据连接和 Flash Player 中的安全性（仅限于 Flash Professional）。

迟滞解码

当 WebServiceConnector 组件收到来自 Web 服务的多条数据记录时，它会将这些记录转换为一个动作脚本数组，以便可以在应用程序中访问它们。将 XML/SOAP 中的多条数据记录转换为动作脚本本机数据的过程可能非常消耗时间（大数组可能会消耗数秒或数十秒）。WebServiceConnector 组件支持一种称为迟滞解码的功能，该功能可以延迟转换。因此，不会立即将数组形式的结果值从 XML 转换为动作脚本。作为替代，传递给用户的结果值是一个特殊的对象，该对象充当类似于数组的功能，并仅在实际请求时才转换 XML 数据。您通过使用 myArray[myIndex] 命令请求数据。此功能的实际效果在于：它通过将工作负载分布在更长的时间期内，从而使人感觉 Web 服务的效率有所提高。

注意：只能通过使用 myArray[myIndex] 语法访问结果值。不能使用 for..in 循环（如 for (var i in myArray)）对其进行访问。


XMLConnector 组件（仅限于 Flash Professional）

XMLConnector 组件使应用程序能够访问通过 HTTP 返回或接收 XML 的任何外部数据源。连接外部 XML 数据源并为应用程序使用该数据源的参数和结果的最简单方法是指定架构，即在可绑定至的文档中标识数据元的 XML 文档的结构。可以通过“组件检查器”面板手动创建架构，也可以使用创作环境自动创建一个架构。

有关 XMLConnector 组件（包括其属性、方法和事件）的详细信息，请参阅XMLConnector 组件（仅限 Flash Professional）。

注意：创作环境接受要连接的外部 XML 文档的副本作为架构的模型。如果熟悉 XML 脚本撰写，您可以创建可用于生成架构的示例 XML 文件。

XMLConnector 组件参数

XMLConnector 组件具有以下参数：

direction 字符串，定义调用 trigger() 时要通过 HTTP 执行的操作的类型。send、sendAndLoad 或 load 分别对应于 receive、receive/send 和 send。

ignoreWhite 布尔值，默认设置为 false。如果将此参数设置为 true，则仅包含空格的文本节点在分析过程中会被放弃。带有前导或尾部空格的文本节点不受影响。

multipleSimultaneousAllowed 布尔值，如果将此参数设置为 true，它允许 trigger() 操作在另一个 trigger() 操作正在进行时启动。多个同时进行的 trigger() 操作可能不会按调用它们时的相同顺序完成。同时，Flash Player 可能会对同时进行的网络操作数目加以限制。此限制因版本和平台而异。如果将该参数设置为 false，则 trigger() 操作不能在另一个操作正在进行时启动。

suppressInvalidCall 布尔值，如果将此参数设置为 true，它会在数据参数无效时中止 trigger() 操作。如果将其设置为 false，trigger() 操作将在需要时执行和使用无效数据。

URL 字符串，指向外部 XML 数据源。

XMLConnector 组件的通用工作流程

XMLConnector 组件的典型工作流程如下所示。

要使用 XMLConnector 组件：

  1. 将 XMLConnector 组件的一个实例添加到应用程序，并为其指定一个实例名称。
  2. 使用“组件检查器”面板的“参数”选项卡，输入要访问的外部 XML 数据源的 URL。
  3. 使用“组件检查器”面板的“架构”选项卡指定 XML 文档的架构。

    注意：可以使用“导入示例架构”按钮使此过程自动化。

  4. 使用“组件检查器”面板的“绑定”选项卡将数据元（params 和 results）从 XML 文档绑定到应用程序中可视组件的属性。例如，您可以连接到提供天气数据的 XML 文档，并将“地点”和“温度”数据元绑定到应用程序中的标签组件。指定城市的名称和温度在运行时即会出现在应用程序中。
  5. 添加触发器以启动数据绑定操作：使用附加至按钮的“触发器数据源”行为，或添加动作脚本。

导入 XML 数据源的架构

使用 XML 文档和数据绑定的关键在于导入架构（出现在“架构”面板中的数据结构），您可以稍后绑定到架构。

要导入示例架构：

  1. 将 XMLConnector 组件拖到舞台上。
  2. 单击“组件检查器”面板的架构选项卡，然后选择“结果”。
  3. 单击“架构”选项卡右上角的“导入示例架构”按钮以导入架构。
  4. 选择要用作示例的文件，然后单击“打开”。

    架构出现在“架构”选项卡中。

    例如，名为 Animals.xml 的文件的架构如下所示：

    这是 XML 文件的结构示意图。它表明 XMLConnector 组件的 results 属性是一个 XML 对象。该对象的根元素称为“库存”，它包含诸如“供应商”、“类别”等元素。“供应商”元素包含一个名为“名称”的单一元素，它是字符串。类别字段包含一个名为“禽类”的元素，它包含属性 labelname。“禽类”元素还包含一个名为“禽类”的对象数组。每个这些对象都具有两个属性：name 和 url。它还包含一个名为关键字的单一元素，该元素包含属性 id。

    字符串和整数字段可以绑定到多种 UI 组件。数组字段“禽类”可以绑定到“列表”、“数据网格”或“组合框”组件，您也可以将 UI 组件直接绑定到数组内的字段。处理数据的应用程序的典型工作流程包括将数组从 XMLConnector 组件绑定到 DataSet 组件的 dataProvider 属性。在此方案下，数据集可用于管理数据。然后，可以使用数据绑定将数据集内的字段映射到任意 UI 组件。

虚拟 XML 架构

如果提供给应用程序的 XML 数据的结构不是所需的格式，虚拟架构能让您在执行绑定时更改基础数据结构的解释方式。新的结构是使用 XPath 语句派生的。请参阅支持的 XPath 表达式。

例如，前面所述的 animals.xml 文件的架构（请参阅导入 XML 数据源的架构）定义了名为“禽类”的对象数组。每个对象包含两个字段（name 和 url）。它们还包含带有一个名为 id 的字段的子元素。如果将“禽类”数组绑定到带有三个字段（name、url 和 id）的 DataSet 组件（使用 dataProvider 属性），则从该数组中返回的每一项都是使用以下算法构建的：

对于 XML 中的每一项：

  1. 创建一个空项目。
  2. 遍历定义的架构属性，从 XML 数据中抽取每个属性的值，然后将这些值指定给创建的项目。“名称”和“URL”字段将具有值。
  3. 将此项目提供给 DataSet 组件。

    该项目中不存在“ID”字段，因此，DataSet 组件的每个指定项目都有一个空白条目。

    该解决方法将在“禽类”数组内的对象下创建一个新的架构字段。新的架构字段名为 id。每个架构字段都具有一个名为 path 的属性，该属性接受指向 XML 文件中的数据的 XPath 语句。在这种情况下，XPath 语句将为 key/@id。当您进行到此过程的第二步时，数据绑定将为对象查找 id 字段。它会检查 path 属性，并使用 XPath 语句从 XML 文件中获取正确的数据。然后，将正确的数据传递到 DataSet 组件。有关手动创建架构的信息，请参阅在“架构”选项卡中处理架构（仅限于 Flash Professional）。

支持的 XPath 表达式

支持下列 XPath 表达式：

  • 绝对路径：

    /A/B/C

  • 相对路径：

    A/B/C

  • 使用节点名称或通配符进行的节点选择：

    /A/B/C（节点选择：按名称）

    /A/B/*（节点选择：按通配符选择 /A/B 的所有子节点）

    /*/*/C（节点选择：选择恰好具有两个始祖的所有 C 节点）

  • 用于进一步指定要选择的节点的断言语法：

    /B[C] （子节点语法；选择拥有 C 节点作为子项的所有 B 节点）

    /B[@id] （属性存在语法；选择具有名为 id 的属性的所有 B 节点）

    /B[@id="A1"] （属性值语法；选择具有值为 A1 的 id 属性的所有 B 节点）

  • 对断言比较运算符的支持：

    =

  • 支持在断言中使用布尔值 AND 和 OR 值：

    /B[@id=1 AND @customer="macromedia"]

注意：不支持以下运算符： "<", ">", "//".


关于数据管理（仅限于 Flash Professional）

Flash MX Professional 2004 为开发人员提供了用于在 Flash 应用程序内管理数据的高级功能。术语受管数据 是指对本机数据缓存执行高级操作（包括多项排序、筛选、查找和脱机缓存处理）的能力。此外，可以跟踪那些通过 UI 组件对数据所做的更改，并使用这些更改生成一个优化的指令集 (DeltaPacket)，该指令集可以处理为特定格式，以供各种外部数据源使用。

注意：除了跟踪对数据进行的更改之外，还可以跟踪方法调用。


受管数据与非受管数据（仅限于 Flash Professional）

Flash 创作环境中有两种用于处理数据的基本方案：

非受管 在此方案下，可以将连接器组件的结果直接绑定到 Flash 文档内的 UI 组件。

受管 将连接器组件的结果绑定到 DataSet 组件，然后将 DataSet 组件的字段绑定到 Flash 文档内的 UI 组件。此外，可以将 DataSet 组件绑定到解析程序组件，以便在将数据发送到外部数据源之前对其进行格式化。

受管数据解决方法需要较多的设置，但允许您对数据进行更大程度的控制。通常应为以下方案使用受管数据方法：

  • 您计划使用“数据集”和解析程序组件的内置功能将更新重新发送到外部数据源（如自动跟踪可转换为多种格式的数据更改）。
  • 您需要对数据应用多字段排序、筛选或排列。
  • 您正在建立提供脱机工作能力的应用程序（对数据进行的更改是脱机缓存的，并可以在稍后应用）。
  • 您想从服务器接收更改，并将它们应用到本机数据缓存。
  • 您想创建自己的传输对象实现，以便补充服务器上的业务类。


DataSet 组件（仅限于 Flash Professional）

DataSet 组件是专用于管理项目集合（传输对象）的引擎，其中每个项目代表外部数据源中的一条数据记录。可以使用筛选、排序、排列和随机访问对集合内的项目进行迭代。将 DataSet 组件和连接器及解析程序组件结合使用提供了用于对 Flash 应用程序和外部数据源之间的数据进行访问、管理和更新的完整解决方法。

DataSet 组件仅在 Flash Player 7 中起作用。

DataSet 组件参数

可以为 DataSet 组件设置以下参数：

itemClassName 字符串，代表每次在 DataSet 组件内创建新项目时实例化的传输对象类的名称。必须在代码内的某个位置对这个类进行全限定引用，以确保将它编译到应用程序中（如 private var myItem:my.package.myItem;）。

DataSet 组件使用传输对象来表示从外部数据源中检索的数据。如果将此参数留空，数据集将为您创建一个匿名传输对象。如果为此参数指定值，数据集将在每次添加新数据时对传输对象进行实例化。

filtered 布尔值，默认为 false。如果将此参数设置为 true，则会对 DataSet 组件应用一个过滤器，使该组件仅包含匹配过滤器条件的对象。

logChanges 布尔值，默认为 true。如果将此参数设置为 true，数据集将记录对数据进行的所有更改或方法调用。

readOnly 布尔值，默认为 false。如果将此参数设置为 true，则无法修改数据集。

DataSet 组件的通用工作流程

DataSet 组件的典型工作流程如下所示。

要使用 DataSet 组件：

  1. 将 DataSet 组件的实例添加到应用程序，并为其指定一个实例名称。
  2. 为 DataSet 组件选择“架构”选项卡，并创建组件属性以表示数据集的永久性字段。
  3. 利用外部数据源中的数据加载 DataSet 组件。有关详细信息，请参阅关于加载 DataSet 组件。
  4. 使用“组件检查器”面板的“绑定”选项卡将数据集字段绑定到应用程序内的 UI 组件。

    在 DataSet 组件内选定一条新记录（传输对象）时，UI 控件将收到通知，并随之更新。此外，在修改 UI 控件内的数据时，Dataset 组件将收到通知，并使用 DeltaPacket 跟踪更改。

  5. 在应用程序内调用 DataSet 组件的方法来管理数据。

    注意：除了上述步骤之外，您还可以将 DataSet 组件绑定到连接器和解析程序组件，以便提供用于对外部数据源中的数据进行访问、管理和更新的完整解决方法。

    有关 DataSet 组件的详细信息，请参阅DataSet 组件（仅限 Flash Professional）。

关于加载 DataSet 组件

请务必记住，DataSet 组件是传输对象的集合。它与之前的组件实现不同，因为之前它只是数据的简单内存中缓存（记录对象的数组）。传输对象通过 public 属性或 accessor 方法公开外部数据源中的业务数据。DataSet 组件使企业开发人员能够处理映射其服务器端副本的复杂客户端对象，或客户端对象最简单的形式，即代表数据记录内的字段的匿名对象（带有 public 属性）的集合。

可以使用两种数据结构将数据载入 DataSet 组件：

  • 对象数组
  • 实现 DataProvider 接口的对象

可以将对象数组绑定或指定到代码中的 DataSet.items 属性。可以将实现 DataProvider 接口的类绑定或指定到代码中的 DataSet.dataProvider 属性。

以下示例将对象载入 DataSet 组件：

匿名对象 本示例将 100 个匿名对象指定到 DataSet 组件。每个对象代表一条数据记录。

function loadData() {
   var recData = new Array();
   for( var i:Number=0; i<100; i++ ) {
      recData[i]= {id:i, name:String("name"+i), price:i*.5};
   }
   myDataSet.items = recData;
}

Remoting RecordSet 本示例假定您已进行了返回 RecordSet 的远程调用。RecordSet 对象实现 DataProvider 接口。

function getSQLData_Result(result) {
  myDataset.dataProvider = result;
}

从 Web 服务中返回的对象数组 使用数据绑定，您可以将从 Web 服务中返回的对象数组指定到 DataSet 组件的items 属性。

从 XMLConnector 组件中返回的对象数组 本示例假定您已读入包含对象数组的 XML 文件的架构。在此方案下，从 XMLConnector 组件中返回的实际数据是 XML 节点的数组，DataSet 组件不支持该数组。然而，数据绑定（用于将数据从 XMLConnector 组件复制到 DataSet 组件的传输机制）可以实现 DataProvider 接口。因此，您可以将 XML 节点的数组指定到 DataSet.dataProvider 属性，数据绑定功能将完成其余的工作。

传输对象

当您将数据载入 DataSet 组件时，数据即会转换为传输对象的集合。在最简单的方案下，DataSet 组件会创建并将数据载入匿名对象。每个匿名对象都可实现 TransferObject 接口，DataSet 组件只需该接口即可管理对象。DataSet 组件会跟踪对数据进行的更改和对对象进行的任何方法调用。如果在匿名对象上调用方法，则不会产生任何效果，因为方法并不存在。然而，DataSet 组件会在 DeltaPacket 中跟踪这些方法调用，从而保证将它们发送到外部数据源（适用时可在其中进行方法调用）。

在企业解决方案中，可以创建映射服务器端传输对象的客户端动作脚本传输对象。此客户机对象可以实现用于处理数据或应用客户端约束的附加方法。开发人员可以使用 DataSet 组件的 itemClassName 参数标识应创建的客户端传输对象的类名。在此方案下，DataSet 组件会生成指定类的多个实例，并使用加载的数据对其进行初始化。在 DataSet 组件上调用 addItem() 时，将使用 itemClassName 来创建客户端传输对象的空实例。

如果进一步采用企业解决方案，则可以实现使用 Web 服务或 Flash Remoting 的客户端传输对象。在此方案下，对象将在服务器上直接进行调用，并可能对 DeltaPacket 中的调用进行排序。

注意：通过创建实现 TransferObject 接口的类，您可以创建自己的自定义传输对象以供 DataSet 组件使用。有关 TransferObject 接口的详细信息，请参阅组件字典。

访问数据

一旦将数据载入 DataSet 组件，就需要对其进行访问。在运行时访问数据十分简单。传输对象通过可在代码中引用的属性公开数据。DataSet 组件包含了游标（指向当前选定的传输对象）的概念。以下代码使用客户信息加载 DataSet 组件，然后在跟踪窗口中显示每个客户的名称：

var recData = [{id:0, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true},
              {id:1, firstName:"Susan", lastName:"Meth", age:55, usCitizen:true},
              {id:2, firstName:"Pablo", lastName:"Picasso", age:108, usCitizen:false}];
myDataSet.items = recData;
myDataSet.first();
while ( myDataSet.hasNext() ) {
  //通过 Dataset 属性访问数据
  trace(myDataSet.firstName + " " + myDataSet.lastName);
  myDataSet.next();
}

要在设计时设置对此数据的绑定，您可以为 DataSet 组件创建表示传输对象的属性的永久性字段，如以下示例中所示。

要在设计时访问数据：

  1. 将 DataSet 组件拖到舞台上。将其命名为 myDataSet。
  2. 在时间轴中选择一个层，然后按 F9 键打开“动作”面板。键入以下代码：
    var recData = [{id:0, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true},
              {id:1, firstName:"Susan", lastName:"Meth", age:55, usCitizen:true},
              {id:2, firstName:"Pablo", lastName:"Picasso", age:108, usCitizen:false}];
myDataSet.items = recData;
  3. 在 DataSet 组件处于选定状态的情况下，单击“组件检查器”面板的“架构”选项卡，然后单击“添加组件属性”(+) 按钮。
  4. 将“字段名称”的值设置为 firstName，并将“数据类型”保持为“字符串”。
  5. 再创建两个组件属性（“字段名称”= lastName，“数据类型”=“字符串”）以及（“字段名称”= usCitizen，“数据类型”=“布尔值”）。
  6. 将“数据网格”组件拖到舞台上，并将其命名为 myGrid。
  7. 选择“数据网格”组件，然后单击“组件检查器”面板的“绑定”选项卡。
  8. 单击“添加绑定”(+) 按钮添加新的绑定。选择“dataProvider”。
  9. 单击“绑定到”，然后选择 DataSet 组件的 dataProvider 属性。
  10. 单击“方向”并选择“输入”。
  11. 运行应用程序。

    数据网格中即会显示数据集内传输对象中包含的数据。

在设计时为 DataSet 组件创建字段是向数据绑定公开传输对象属性的最便捷方式。一旦定义了字段，您就可以在设计时直观地将 UI 控件绑定到数据。同时，在设计时还可以为 DataSet 字段设置许多附加属性（架构项目设置），这些属性影响在运行时对数据进行编码、格式化和验证的方式。请参阅在“架构”选项卡中处理架构（仅限于 Flash Professional）。

在设计时使用添加到“架构”选项卡的动态组件属性的功能是 DataSet 组件的一项特殊功能。DataSet 组件使用这些属性的字段名称，以便将它们映射为传输对象的属性。设置将在设计时应用到这些属性，并随后由数据集在运行时使用。

如果没有为 DataSet 组件创建永久性字段，并且您将该组件绑定到 WebServiceConnector 组件或定义架构的 XMLConnector 组件，则 DataSet 组件将尝试根据连接器组件的架构创建正确的字段。

注意：为 DataSet 组件定义的永久性字段优先于连接器组件的架构。


解析程序组件（仅限于 Flash Professional）

可以将解析程序组件与 DataSet 组件结合使用（Flash 数据体系结构中数据管理功能的一部分）。解析程序组件使您可以将应用程序内对数据进行的更改转换为适合所更新外部数据源的格式。Flash MX Professional 2004 包括 XUpdateResolver 和 RDBMSResolver 组件。XUpdateResolver 组件以 XML 数据源为目标，而 RDBMSResolver 组件以关系数据库为目标。这些组件在运行时没有可视外观。开发人员也可以根据需要建立其他解析程序组件。

如果在应用程序中使用 DataSet 组件，它会生成一个描述在运行时对数据进行的更改的优化指令集 (DeltaPacket)。解析程序组件会将此指令集转换为适当的格式（更新数据包）。将更新发送到服务器时，服务器可能会发送一个包含附加更新或错误的响应（结果数据包）作为更新操作的结果。解析程序组件可以将此信息重新转换为随后可应用到数据集的 DeltaPacket，以使它保持与外部数据源同步。解析程序组件使您可以保持应用程序与外部数据源同步，而无需编写额外的动作脚本代码。


XUpdateResolver 组件（仅限于 Flash Professional）

XUpdateResolver 组件将应用程序中对数据进行的更改转换为外部数据源可处理的 XUpdate 语句。XUpdate 是一种描述对 XML 文档所进行更改的标准，各种 XML 数据库（如 Xindice 和 Xhive）都支持该标准。

注意：您也可以使用 XUpdateResolver 组件将数据更新发送到能够解析 Xupdate 语言的任何外部数据源（例如，ASP 页、Java servlet 或 ColdFusion 组件）。有关详细信息，请参阅 XUpdate 规范。

XUpdateResolver 组件使用 DataSetDeltaToXUpdateDelta 编码器与 DataSet 组件通信。此编码器负责创建 XPath 语句，该语句根据 DataSet 组件的 DeltaPacket 内包含的信息唯一标识 XML 文件中的节点。XUpdateResolver 组件使用此信息生成 XUpdate 语句。有关 DataSetDeltaToXUpdateDelta 编码器的详细信息，请参阅架构编码器（仅限于 Flash Professional）。

XUpdateResolver 组件仅在 Flash Player 7 中起作用。

XUpdateResolver 组件参数

XUpdateResolver 组件具有一个参数，即 includeDeltaPacketInfo 参数（布尔值类型）。如果将此参数设置为 true，更新数据包将包含数据集中的附加信息，外部数据源可以使用该信息生成可重新发送到应用程序的结果。此信息包含一个唯一的事务和操作 ID（由数据集内部使用）。

注意：更新数据包中包含的附加信息会使 Xupdate 无效。这是预期行为。只有在要将此信息存储在服务器对象内并使用它来生成结果数据包时，您才需要选择添加此信息。在此方案下，服务器对象将根据自己的需要从更新数据包中提取信息，然后将（现在有效的）XUpdate 传递到数据库。

示例（使用 false 设置）：

<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">
    <xupdate:remove select="/datapacket/row[@id='100']"/>
</xupdate:modifications>

示例（使用 true 设置）：

<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate"
      transId="46386292065:Wed Jun 25 15:52:34 GMT-0700 2003">
    <xupdate:remove select="/datapacket/row[@id='100']" opId="0123456789"/>
</xupdate:modifications>

XUpdateResolver 组件的通用工作流程

XUpdateResolver 组件的典型工作流程如下所示。

要使用 XUpdateResolver 组件：

  1. 将 XMLConnector 组件的两个实例以及每个 DataSet 组件和 XUpdateResolver 组件的一个实例添加到应用程序，并为它们指定实例名称。
  2. 选择第一个 XMLConnector 组件，然后使用“组件检查器”面板的“参数”选项卡输入要访问的外部 XML 数据源的 URL。
  3. 在 XMLConnector 组件仍然处于选定状态的情况下，单击“组件检查器”面板的“架构”选项卡，并导入示例 XML 文件以生成架构。

    注意：如果要访问绑定到数据集的数组的子元素，您可能需要为 XML 文件创建一个虚拟架构。有关详细信息，请参阅虚拟 XML 架构。

  4. 使用“组件检查器”面板的“绑定”选项卡将 XMLConnector 组件内的数组绑定到 DataSet 组件的 dataProvider 属性。
  5. 选择 DataSet 组件，并使用“组件检查器”面板的“架构”选项卡创建将绑定到数组内对象的字段的 DataSet 字段。
  6. 使用“组件检查器”面板的“绑定”选项卡将数据元（DataSet 字段）绑定到应用程序中的可视组件。
  7. 选择 XUpdateResolver 组件的“架构”选项卡。在 deltaPacket 组件属性处于选定状态的情况下，使用“架构属性”窗格将 encoder 属性设置为 DataSetDeltaToXUpdateDelta 编码器。
  8. 选择“编码器选项”，并输入唯一标识 XML 文件中的行节点的 rowNodeKey 值。

    注意：rowNodeKey 值结合了 XPath 语句和字段参数来定义应如何为 DeltaPacket 内包含的更新数据生成唯一的 XPath 语句。有关 DataSetDeltaToXUpdateDelta 编码器的信息，请参阅架构编码器（仅限于 Flash Professional）。

  9. 单击“绑定”选项卡，并在 XUpdateResolver 组件的 deltaPacket 属性和 DataSet 组件的 deltaPacket 属性之间创建一个绑定。
  10. 创建另一个从 xupdatePacket 属性到第二个 XMLConnector 组件的绑定，以便将数据重新发送到外部数据源。

    注意：xupdatePacket 属性包含将发送到服务器的格式化 DeltaPacket（XUpdate 语句）。

  11. 添加触发器以启动数据绑定操作：使用附加至按钮的“触发器数据源”行为，或添加动作脚本。

    注意：除了这些步骤之外，您还可以创建绑定以应用通过 XupdateResolver 组件从服务器重新发送到数据集的结果数据包。

    有关详细信息，请参阅XUpdateResolver 组件（仅限 Flash Professional）。

发送到外部数据源的更新

发送到服务器的更新数据包使用 XUpdate 格式。下面是一个 XUpdate 数据包示例：

<?xml version="1.0"?>
<xupdate:modifications version="1.0" xmlns:xupdate="http://www.xmldb.org/xupdate">
   <xupdate:insert-after select="/addresses/address[1]" >
      <xupdate:element name="address">
         <xupdate:attribute name="id">2</xupdate:attribute>
         <fullname>Lars Martin</fullname>
         <born day='2' month='12' year='1974'/>
         <town>Leizig</town>
         <country>Germany</country>
      </xupdate:element>
   </xupdate:insert-after>
</xupdate:modifications>

从外部数据源接收结果

服务器完成更新数据包之后，不管成功与否，它都应发送回一个包含错误或附加 XML 更新（由更新操作产生）的结果数据包。在没有消息的情况下应该仍会发送结果数据包，但该数据包将没有操作结果节点。

下面是一个既不包含错误也不包含 XML 更新的更新数据包的结果数据包示例：

<results_packet nullValue="{_NULL_}" transID="46386292065:Wed Jun 25 15:52:34 GMT-0700 2003"/>

包含 XML 更新的结果数据包示例如下：

<results_packet nullValue="{_NULL_}" transID="46386292065:Wed Jun 25 15:52:34 GMT-0700 2003">
    <operation op="remove" id="11295627479" msg="The record could not be found"/>
    <operation op="update" id="02938027477">
       <attribute name="id" curValue="105" msg="Invalid field value" />
    </operation>
 </results_packet>

结果数据包可以包含无限多个操作节点。操作节点包含更新数据包中的操作结果。每个操作节点均应具有以下属性/子节点：

  • op：描述所尝试操作的类型的属性。必须为 insert、delete 或 update。
  • id：包含所发出操作节点中的 ID 的属性
  • msg（可选）：包含描述尝试操作时所出现问题的消息字符串的属性
  • field：提供字段级别特定信息的 0 个、1 个或多个子节点。每个字段节点至少应具有一个 name 属性（包含字段名）和一个 msg 属性（提供字段级别消息）。它还可以根据需要包含 curValue 属性，该属性包含服务器上该行中该字段的最新值。


RDBMSResolver 组件（仅限于 Flash Professional）

RDBMSResolver 组件创建可发送到外部数据源（如 ASP/JSP 页、servlet 等）的 XML 数据包。该 XML 数据包可以轻松地转换为可用于更新任何标准 SQL 关系数据库的 SQL 语句

注意：可以使用 RDBMSResolver 组件将数据更新发送到可解析 XML 并依据数据库生成 SQL 语句的任何外部数据源（例如，ASP 页、Java servlet 或 ColdFusion 组件）。

RDBMSResolver 组件仅在 Flash Player 7 中起作用。

RDBMSResolver 组件参数

RDBMSResolver 组件具有以下参数：

tableName 放在 XML 中的表名，代表应更新的 DB 表。此表名应该与为应更新的任何字段的任何 fieldInfo 项目（或者它们应为空）输入的值相同。

updateMode 此参数具有多个值，这些值确定在生成 XML 更新数据包时标识关键字段的方式，如下所示：

umUsingAll：此设置使用 FxDataset 内所有字段的旧值来标识要更新的记录。这是进行更新最安全的方法，因为它使您可以保证另一用户在您检索记录之后未对其进行修改。然而，此方法较消耗时间，并会生成较大的更新数据包。

umUsingModified：此设置使用 FxDataset 内已修改的所有字段的旧值来标识要更新的记录。此方法使您可以保证在您检索记录之后另一用户未修改记录中的相同字段。

umUsingKey：这是此参数的默认值：此设置使用 FxDataset 内关键字段的旧值。它包含一个当今大多数数据库系统使用的开放式并发模型。此方法保证您修改的记录与从数据库中检索出的记录是同一条。您所做的更改将覆盖任何其他用户对相同数据进行的更改。

nullValue 放在字段的值中用于指示空值的值。可以自定义此参数，以防与空字符串 ("") 或另一个有效值混淆。

fieldInfo 如果数据源是数据库表，则它应具有一个或多个唯一标识表中的记录的关键字段。另外，可能还会有一些已计算或从另一个表连接的字段。必须对这些字段加以标识，以便可以在 XML 更新数据包内设置关键字段，并将不应更新的字段排除在 XML 更新数据包之外。

为了实现该目的，RDBMSResolver 组件提供了 fieldInfo 参数。此参数允许您定义无限多个需要特殊处理的字段。每个 fieldInfo 项目包含三个属性：

fieldName：字段的名称。此参数应映射到数据集中的字段。

ownerName（可选）：此参数用于标识组件 TableName 参数中定义的相同表未“包含”的字段。如果使用与 TableName 参数相同的值填充此参数或将其留空，则字段将以正常方式包含在 XML 更新数据包中。如果填充的内容不同，则此字段将被排除在更新数据包之外。

isKey：一个布尔值，对于要更新的表的所有键字段，此值均应设置为 true。

以下示例标识客户表中的关键字段。客户表有一个键字段 "id"，因此应创建具有以下值的 fieldInfo 项目：

fieldName = "id"，ownerName = 将此值留空，isKey = "true"

进一步举例说明，假设通过查询中的连接添加了字段 "custType"，并且不希望在更新中包含该字段。可以创建具有以下值的字段项目：

fieldName = "custType"，ownerName = "joinedField"，isKey = "false"

一旦定义了字段项目，RDBMSResolver 组件即可使用它们自动生成要发送到外部数据源的 XML 更新数据包。

注意：FieldInfo 参数使用 Flash 中称为“集合编辑器”的功能。选择 FieldInfo 参数时，“集合编辑器”对话框即会打开。可以从此处添加新的 FieldInfo 项目，并集中设置它们的 fieldName、ownerName 和 isKey 属性。

RDBMSResolver 组件的通用工作流程

RDBMSResolver 组件的典型工作流程如下所示。

要使用 RDBMSResolver 组件：

  1. 将 WebServicesConnector 组件的两个实例以及每个 DataSet 和 RDBMSResolver 组件的一个实例添加到应用程序，并为它们指定实例名称。
  2. 选择第一个 WebServicesConnector 组件，并使用“组件检查器”面板的“参数”选项卡为从外部数据源公开数据的 Web 服务输入 WSDLURL。

    注意：Web 服务必须返回要绑定到数据集的记录数组。

  3. 使用“组件检查器”面板的“绑定”选项卡将 WebServicesConnector 组件绑定到 DataSet 组件。
  4. 选择 DataSet 组件，然后使用“组件检查器”面板的“绑定”选项卡将数据元（DataSet 字段）绑定到应用程序中的可视组件。
  5. 将 DataSet 组件绑定到 RDBMSResolver 组件。

    注意：在调用 DataSet 组件的 applyUpdates 方法时，更新指令将从 DataSet 组件发送到 RDBMSResolver 组件。

  6. 选择 RDBMSResolver 组件并将其绑定到第二个 WebServiceConnector 组件，以便将数据重新发送到外部数据源。
  7. 添加触发器以启动数据绑定操作：使用附加至按钮的“触发器数据源”行为，或添加动作脚本。

    注意：除了这些步骤之外，您还可以创建绑定以应用通过 RDBMSResolver 组件从服务器重新发送到 DataSet 组件的结果数据包。

    有关详细信息，请参阅RDBMSResolver 组件（仅限 Flash Professional）。

关于将更新发送到外部数据源

XML 更新数据包包含三种不同类型的节点：delete、insert 和 update。其中每个节点代表对数据库表中的行的一种更改。每个节点都包含查找要更新的记录以及描述所做的修改（如果有）的字段节点。

从解析程序组件发送的更新采用 XML 更新数据包的形式，该数据包是通过连接器组件发送到外部数据源的。下面是 RDBMSResolver 组件的一个 XML 更新数据包示例（通过将 updateMode 参数设置为 umUsingKey 生成）：

<update_packet tableName="customers" nullValue="{_NULL_}" transID="46386292065:Wed Jun 25 15:52:34 GMT-0700 2003">
      <delete id="11295627477">
         <field name="id" type="numeric" oldValue="10" key="true"/>
      </delete>
      <insert id="12345678901">
         <field name="id" type="numeric" newValue="20" key="true"/>
         <field name="firstName" type="string" newValue="Davey" key="false"/>
         <field name="lastName" type="string" newValue="Jones" key="false"/>
      </insert>
      <update id="98765432101"> <field name="id" type="numeric" oldValue="30" key="true"/>
         <field name="firstName" type="string" oldValue="Peter" newValue="Mickey" key="false"/>
         <field name="lastName" type="string" oldValue="Tork" newValue="Dolenz" key="false"/>
      </update>
   </update_packet>

XML 更新数据包中包括以下元素：

  • transID：DeltaPacket 生成的唯一标识此事务的 ID。此信息应附带在返回到该组件的结果数据包中。
  • delete：此类型的节点包含有关被删除的行的信息。
  • insert：此类型的节点包含有关被添加的行的信息。
  • update：此类型的节点包含有关被修改的行的信息。
  • id：唯一标识事务内的操作的编号。此信息应附带在返回到该组件的结果数据包中。
  • newValue：此属性包含被修改的字段的新值。只有在字段值改变时，此属性才会出现。
  • key：如果应使用字段查找要更新的行，则此属性为 true。此值由 RDBMSResolver 组件的 updateMode 参数、fieldInfo.isKey 设置和操作的类型（插入、删除或更新）共同确定。

下表描述如何确定这些关键属性值。如果使用 RDBMSResolver 组件的 fieldInfo 参数将某个字段定义为关键字段，它将始终出现在更新数据包中，并且 key="true"。否则，更新数据包中字段的 key 属性将根据下表进行设置：

节点类型 | umUsingKey | umUsingModified | umUsingAll
delete | false | true | true
insert | false | true | false
update | false | 如果字段被修改，则为 true，否则为 false | true

关于从外部数据源接收结果

服务器完成更新数据包之后，不管成功与否，它都应发送回一个包含错误或附加更新（由更新操作产生）的结果数据包。在没有消息的情况下应该仍会发送结果数据包，但该数据包将没有操作结果节点。

下面是 RDBMSResolver 组件结果数据包的一个示例（同时包含更新结果和更改信息节点）：

<results_packet nullValue="{_NULL_}" transID="46386292065:Wed Jun 25 15:52:34 GMT-0700 2003">
      <operation op="delete" id="11295627479" msg="The record could not be found"/>
      <delete>
         <field name="id" oldValue="1000" key="true" />
      </delete>
      <insert>
         <field name="id" newValue="20"/>
         <field name="firstName" newValue="Davey"/>
         <field name="lastName" newValue="Jones"/>
      </insert>
      <operation op="update" id="02938027477" msg="Couldn't update employee.">
         <field name="id" curValue="105" msg="Invalid field value" />
      </operation>
      <update>
         <field name="id" oldValue="30" newValue="30" key="true" />
         <field name="firstName" oldValue="Peter" newValue="Mickey"/>
         <field name="lastName" oldValue="Tork" newValue="Dolenz"/>
      </update>
   </results_packet>

结果数据包包含四种不同类型的节点：

  • Operation 节点包含更新数据包中的操作结果。每个操作节点均应具有以下属性/子节点：

    op：描述所尝试操作的类型的属性。必须为 insert、delete 或 update。

    id：包含所发出操作节点中的 ID 的属性

    msg（可选）：包含描述尝试操作时所出现问题的消息字符串的属性

    field：提供字段级别特定信息的 0 个、1 个或多个子节点。每个字段节点至少应具有一个 name 属性（包含字段名）和一个 msg 属性（提供字段级别消息）。它还可以根据需要包含 curValue 属性，该属性包含服务器上该行中该字段的最新值。

  • Update 节点包含有关自上次更新客户机后已修改的记录的信息。Update 节点应包含一些子节点，这些子节点列出唯一标识删除的记录所必需的字段，并描述修改的字段。每个字段节点均应具有以下属性：

    name：包含字段的名称

    oldValue：包含修改之前字段的旧值。只有在包括了 key 属性并将其设置为 true 时，此字段才是必需的。

    newValue：包含应为字段提供的新值。如果未修改字段（也就是说，字段被包括在列表中的原因仅仅在于它是关键字段），则不能包括此字段。

    key：包含布尔值 true 或 false，该值确定是否使用此字段作为关键字在客户机上查找相应记录。应为所有关键字段包括此属性，并将其设置为 true。对于所有其他字段则是可选的。

  • Delete 节点包括有关自上次更新客户机后已删除的记录的信息。Delete 节点应包含一些子节点，这些子节点列出唯一标识删除的记录所必需的字段。每个字段节点均必须具有一个 name 属性、一个 oldValue 属性以及一个 key 属性（值设置为 true）。
  • Insert 节点包含有关自上次更新客户机后已添加的记录的信息。Insert 节点应包含一些子节点，这些子节点描述在添加记录时设置的字段值。每个字段节点均必须具有一个 name 属性和一个 newValue 属性。


对结果进行格式设置

默认情况下，解析器组件使用在连接器组件上指定的架构对发送到服务器的值进行格式设置。对于来自外部数据源的格式为“MM/DD/YYYY”的日期值，此方法可以确保以相同的格式将其发送回外部数据源。

但是，在某些情况下，您可能会发现发送到外部数据源的值格式不正确。如果不使用连接器检索数据，或者如果想更改要发送到外部数据源的数据的格式，则可能会出现这种情况。在这种情况下，可以通过在解析程序组件上创建架构来控制格式设置。例如，如果数据集中有一个名为“Billable”的布尔型字段，可以在更新包中将该字段的值设置为“true”或“false”。如果希望将其设置为“yes”或“no”，则可以在解析程序的架构选项卡内创建一个名为“Billable”的新组件属性。使用架构设置可以将数据类型设置为“Boolean”，将编码器设置为“Boolean”，将编码器选项设置为“yes”或“no”。解析程序在创建更新包时将应用此编码器，使“Billable”字段的值以“yes”或“no”表示。

有关详细信息，请参阅将组件属性添加到架构。

DataHolder 组件（仅限于 Flash Professional）

DataHolder 组件是 DataSet 组件的简化版本，其唯一的用途是容纳数据。可以使用它作为组件之间的连接器。它通过数据绑定与其他组件通信。DataHolder 组件最初具有单一的可绑定属性 data。如果需要，用户可以使用架构面板添加更多属性。DataHolder 组件没有运行时可视外观。

DataHolder 组件的每个可绑定属性（包括内置属性 data 或任何其他您添加的属性）均按如下方式工作：通过数据绑定或使用自己的动作脚本代码，您可以将任何类型的数据指定给 DataHolder 属性。每次当您指定数据时，DataHolder 组件都会发出一个名称与属性相同的事件，该事件可在适当时执行任何绑定。

大多数情况下，您不会使用此组件来构建应用程序。只有在由于某些原因无法将外部数据直接绑定到另一组件并且您不想使用 DataSet 组件时，才需要该组件。在以下这些情况中，您将会使用 DataHolder 组件：

  • 数据值由动作脚本代码生成，但您想要将数据值绑定到其他组件。对于这种情况，您可以使用已根据需要进行数据绑定的 DataHolder 组件；动作脚本代码可以随时将新值指定给组件，并将分配这些值。
  • 数据值可能（通过数据绑定）来源于多个数据源（例如，全部返回同类查询结果的多个 Web 服务）。在这种情况下，您可以将数据从所有数据源绑定到 DataHolder 组件，然后再从 DataHolder 组件绑定到显示数据的 UI 组件。
  • 数据值是由复杂的已建立索引的数据绑定产生的，如以下示意图中所示。在这种情况下，将数据值绑定到 DataHolder 组件然后再使用该组件绑定到 UI 将十分方便。

注意：DataHolder 组件不应该对数据实施与 DataSet 组件相同的控制。它不管理或跟踪数据，也不具有更新数据的能力。它是一个在数据改变时用于存储数据和生成事件的存储库。


关于数据绑定（仅限于 Flash Professional）

数据绑定是将组件相互连接起来的方式。可以将组件视为具有属性的简单黑箱。属性能让您将数据放进组件中并从中取出数据。绑定 是一个语句，内容为“当组件 A 的属性 X 改变时，将新值复制到组件 B 的属性 Y”。您可以使用“组件检查器”面板的“绑定”选项卡在创作工具内执行数据绑定。可以从此处添加、查看和删除组件的绑定。

尽管数据绑定适用于任何组件，但它的主要用途是将 UI 组件连接到外部数据源（如 Web 服务和 XML 文档）。这些外部数据源是以带属性（可绑定到其他组件属性）的组件的形式提供的。“组件检查器”面板是 Flash MX Professional 2004 内用于数据绑定的主要工具。它包含一个“架构”选项卡（用于定义组件的架构）和一个“绑定”选项卡（用于在组件属性之间创建绑定）。

以下示例演示如何通过将一个 UI 组件连接到另一个 UI 组件来创建基本数据绑定。

要连接 UI 组件以创建数据绑定：

  1. 将 NumericStepper 组件添加到应用程序中，并将其命名为 A。
  2. 添加另一个 NumericStepper 组件，并将其命名为 B。
  3. 在 A 处于选定状态的情况下，打开“组件检查器”面板并单击“绑定”选项卡。
  4. 单击“添加绑定”(+) 按钮以添加绑定。
  5. 在“添加绑定”对话框中选择“值”，然后单击“确定”。
  6. 在“绑定”选项卡底部的“名称/值”部分中，单击“名称”下的“绑定到”项目，然后单击“值”下“绑定到”项目正对的放大镜图标。
  7. 在“绑定到”对话框中的“组件路径”下选择“组件 B”，然后单击“确定”。
  8. 选择“控制”>“测试影片”。单击组件 A 上的向上和向下按钮。

    每次单击 A 上的按钮时，A 的 value 属性会被复制到 B 的 value 属性。每次单击 B 上的按钮时，B 的 value 属性会被复制到 A 的 value 属性。

  9. 返回以编辑应用程序。
  10. 创建另一个 NumericStepper 组件，并将其命名为 C。
  11. 创建一个名为 D 的文本输入组件。
  12. 重复步骤 4-7，并将 C 的 value 属性绑定到 D 的 text 属性。
  13. 选择“控制”>“测试影片”。在文本输入字段键入一个数字，然后按 Tab 键。

    每次输入新值时，D 的 text 属性会被复制到 C 的 value 属性。每次单击 C 上的向上和向下按钮时，C 的 value 属性会被复制到 D 的 text 属性。

注意：只有当组件存在于主时间轴的第 1 帧、影片剪辑的第 1 帧或屏幕的第 1 帧中时，才支持在组件之间进行数据绑定。

有关介绍 Flash 数据体系结构的教程，请访问 www.macromedia.com/go/fl_documentation_cn。


在“架构”选项卡中处理架构（仅限于 Flash Professional）

“架构”选项卡能让您查看选定组件的架构。架构包含组件的可绑定属性、它们的数据类型、它们的内部结构以及各种特殊属性的列表。数据绑定功能需要此信息才能正确处理数据。

“架构树”窗格（“架构”选项卡的顶部窗格）显示选定组件的可绑定属性，以及它们由一个或多个架构字段表示的内部结构（组件属性和架构字段也称为架构项目）。“架构属性”窗格（“架构”选项卡的底部窗格）显示有关选定架构项目的详细信息。

注意：所有组件均具有属性，但在默认情况下，为了避免 UI 过于混乱，“架构”选项卡只显示通常包含动态数据的那些属性。这些属性称为可绑定属性。通过手动将属性添加到架构面板或使用动作脚本代码，您可以绑定到任何属性。请参阅在“绑定”选项卡中处理绑定（仅限于 Flash Professional）。

组件的架构描述数据的结构和类型，但与数据的实际存储方式无关。例如，WebServiceConnector 组件或 XMLConnector 组件的结果可以具有相同的架构，即使 Web 服务结果存储为动作脚本数据结构（对象、数组、字符串、布尔值和数字），而 XMLConnector 组件结果存储为 XML 对象。使用数据绑定访问组件架构内的字段时，您可以使用相同的过程，不管数据是如何存储的。

组件标识了它的哪些属性是可绑定的。这些可绑定属性以顶层架构项目（组件属性）的形式出现在“架构”面板中。组件属性可以具有自己的内部结构（架构），该结构定义可绑定到应用程序内其他组件属性的附加属性（架构字段）。您为 WebServiceConnector 组件对 WSDL 进行内部检查就是一个很好的实例。WSDL 定义描述 Web 服务的参数和结果。WebServiceConnector 组件包含两个可绑定属性（params 和 results）。当 WebServiceConnector 组件对 WSDL 进行内部检查时，创作工具将自动为 params 和 results 属性创建架构，以便它映射 WSDL 内定义的架构。

为组件创建架构的方法有多种：

  • 对于某些组件，可以导入 XML 示例文件来定义属性的架构。
  • 对于某些组件，组件内已预定义了架构。
  • 对于某些组件，架构是作为对外部架构定义（如 Web 服务的 WSDL）进行内部检查的结果而派生的。
  • 对于某些组件，可以使用“架构”面板内的“架构”工具栏定义架构。

导入示例 XML 文件以用作架构

当您导入示例 XML 文件用作架构时，Flash MX Professional 2004 将检查示例文档并创建一个架构，该架构代表文档的 XML 元素和属性以及文本值的数据类型（数字、布尔值或字符串）的嵌套结构。任何出现多次的元素在架构中显示为数组。

要导入示例 XML 文件为组件属性定义架构：

  1. 选择组件属性。
  2. 执行以下其中一项操作：
    • 单击“架构”选项卡右上角的“导入示例架构”按钮。
    • 单击“组件检查器”面板右上角的选项菜单控件，并从菜单中选择“导入 XML 架构”。
  3. 在“打开文件”对话框中，选择一个 XML 文件。XML 文件是数据的代表性示例。

    架构出现在“架构”选项卡中。现在即可在 XML 元素和应用程序内的组件属性之间创建绑定。

    注意：某些 XML 文档可能具有 Flash MX Professional 2004 无法表示的结构，例如，包含混在一起的文本和子元素的元素。

将架构字段添加到架构项目

使用以下过程将架构字段添加到架构项目。

要将架构字段添加到架构项目：

  1. 在“架构”选项卡中，选择要添加字段的架构项目。
  2. 单击“在所选字段下添加一个字段”(+) 按钮。

    新字段即被添加为选定属性的子字段。

  3. 在“架构属性”窗格中，输入“字段名称”的值。适当填写其他属性。

    视架构项目的类型而定，有三种可能的方案：

    • 对象类型的架构项目，可能具有子字段和/或 @ 属性
    • 数组类型的架构项目，始终正好具有一个名为 [n] 的子字段，该子字段可以为任何类型（包括对象、字符串等）
    • 其它类型（如布尔值、字符串、数字）的架构项目，不具有子字段，但可能具有 @ 属性

将组件属性添加到架构

如果将任何组件属性添加到架构，您可以使它们成为可绑定属性。以下过程说明如何创建使用 CheckBox 组件指示 TextInput 组件是否可编辑的应用程序。然而，在本示例中，TextInput 组件的 editable 属性不可绑定，因此必须修改它的架构。

要将组件属性添加到架构：

  1. 将 TextInput 组件和 CheckBox 组件的实例添加到应用程序，并为它们指定实例名称。
  2. 选择 TextInput 组件，然后单击“组件检查器”面板上的“架构”选项卡。
  3. 单击“架构”选项卡左上角的“添加组件属性”(+) 按钮，以便添加组件属性。
  4. 在“架构属性”窗格（“架构”选项卡的底部窗格）中，输入 editable 作为字段名的值，并选择“布尔值”作为数据类型值。
  5. 单击“绑定”选项卡，然后单击“添加绑定”(+) 按钮以添加绑定。
  6. 在“添加绑定”对话框中选择 editable 属性，然后单击“确定”。
  7. 在“绑定”选项卡底部的“绑定属性”窗格中，单击“名称”下的“绑定到”项目，然后单击“值”下“绑定到”项目正对的放大镜图标。
  8. 在“绑定到”对话框中的“组件路径”下选择 CheckBox 组件，然后单击“确定”。
  9. 在舞台上选择 Checkbox 组件，然后单击“组件检查器”面板中的“参数”选项卡。
  10. 选择“控制”>“测试影片”。要测试功能，请在 TextInput 组件中键入一个值，然后取消选择 CheckBox 组件。现在应该无法在 TextInput 组件中输入文本。

架构项目设置

组件的架构显示可使用什么属性和字段进行数据绑定。每个属性或字段都有一些控制验证、格式化、类型转换和其他功能的设置，这些设置影响数据绑定和数据管理组件处理字段数据的方式。“架构属性”窗格（“架构”选项卡的底部窗格）显示了这些设置，您可以查看并进行编辑。这些设置依据所控制的功能分为五组：

基本设置 每个字段或属性都具有以下基本架构设置。在大多数情况下，只需将这些设置绑定到字段。

  • 名称：每个字段需要一个名称。
  • 数据类型：每个字段都具有一个从可用数据类型列表中选择的数据类型。字段的数据类型在以下两个方面影响数据绑定：通过数据绑定将新值指定给字段时，数据类型确定检查数据有效性所使用的规则。在具有不同数据类型的字段之间进行绑定时，数据绑定功能会尝试正确地转换数据。
  • 存储类型：每个字段都有一个存储类型。通常，视字段的数据类型而定，它默认为四个值其中之一。存储类型的可用值为“简单”、“属性”、“数组”或“复杂”。

    注意：开发人员几乎不用更改此设置。然而，在某些情况下，XML 文件架构内所包含属性的储存类型在应设置为“属性”时可能默认为“标量”。

  • 路径（可选）：如果创建的是虚拟架构，则可以使用此属性标识此架构字段数据的位置。

验证设置 验证设置适用于充当绑定目标的任何字段。如果要控制对最终用户所输入数据进行的验证，您通常将修改这些设置。要进行设置，请完成从 UI 组件到数据组件的绑定，然后为数据组件的字段选择适当的验证设置。一个常见的例子是将用户输入绑定到连接器组件（如 XMLConnector 组件或 WebServiceConnector 组件）的 params 属性。另一个常见的例子是将 UI 组件绑定到 DataSet 组件的数据字段。

验证按以下方式进行：在执行任何绑定之后，将根据目标字段的数据类型的验证规则对新数据进行检查。然后生成一个组件事件来显示检查的结果。如果数据有效，则生成有效事件；否则生成无效事件。绑定中涉及的两种组件均可发出事件。可以忽略这些事件。如果希望进行任何操作作为这些事件的结果（如向最终用户提供反馈），您必须编写一些接收有效和/或无效事件的动作脚本代码。

  • 验证选项：验证选项是影响此字段验证规则的附加设置。这些设置显示在“验证选项”对话框中，该对话框在您选择此项目时出现。这些设置随数据类型而异。例如，字符串数据类型具有针对允许的最小和最大数据长度的设置。XML 数据类型具有一个用于控制从字符串转换到 XML 时是否忽略空白的设置。
  • 必需：该布尔值确定此字段是否必须具有非空值。如果 required=true 但尚未设置值，则验证失败。
  • 只读：该布尔值确定是否允许此字段通过数据绑定接收新值。如果 readonly=true，则对此字段执行任何绑定均会生成无效事件，并且字段将发生更改。

格式程序设置 在需要将字段的值转换为字符串时，将应用格式程序设置。大多数情况下这种设置将用于显示目的，如将 DataSet 字段的数据绑定到“标签”或“文本区域”组件的 text 属性。在将字段的数据绑定到数据类型不是字符串的某些组件时，该字段的格式程序设置将被忽略。

  • 格式程序：将此字段转换为字符串时使用的格式程序的名称。请从可用格式程序的列表中选择此值。
  • 格式程序选项：这些选项是影响格式程序的附加设置。这些设置显示在“格式选项”对话框中，该对话框在您选择此项目时出现。这些设置随格式程序而异。例如，布尔值格式程序具有针对表示 true 和 false 值的文本的设置。

注意：如果未指定格式程序，则在字段的值需要为字符串时，将会应用默认转换。

有关格式程序的完整列表，请参阅架构格式程序（仅限于 Flash Professional）。

种类和编码器设置 种类和编码器设置用于激活某些特殊功能。有关信息，请参阅使用种类和编码器。

  • 种类：此字段的种类设置。请从可用种类设置的列表中选择此值。
  • 种类选项：影响种类设置的附加设置。这些设置显示在“种类选项”对话框中，该对话框在您选择此项目时出现。这些设置随种类而异。
  • 编码器：此字段的编码器设置。请从可用编码器设置的列表中进行选择。
  • 编码器选项：影响编码器的附加设置。这些设置显示在“编码器选项”对话框中，该对话框在您选择此项目时出现。这些设置随编码器而异。

默认设置 这些设置使您可以设置各种情况的默认值。这些设置有两个用途：

  • 如果字段的值未定义，当使用字段的值作为数据绑定的来源时，将会使用默认值作为替代。例如，DataSet 组件的数据字段或连接器组件的 results 属性允许具有未定义值。
  • 当您在 DataSet 组件中创建一个新的数据行时，将会使用默认值作为新创建记录的值。

何时编辑架构项目设置

在使用数据组件和/或数据绑定建立应用程序时，您需要对应用程序中组件的某些（但不一定是全部）字段应用架构项目设置。下表摘要列出了架构项目设置最常见的用途，并帮助您确定何时需要编辑这些设置。

组件 | 属性/字段 | 设置 | 何时使用
任何连接器 | params（及其子字段） | 验证选项，只读，必需 | 如果需要验证
 | results（及其子字段） | 格式程序，格式程序选项 | 用于需要格式化以显示为文本的字段
 |  | 默认值 | 用于字段值有时未定义的字段
DataSet | 任何数据字段 | 名称，数据类型 | 必须为每个定义的数据集字段进行这些设置
 |  | 验证选项，只读，必需 | 如果需要验证
 |  | 格式程序，格式程序选项 | 用于需要格式化以显示为文本的字段
 |  | 默认值 | 用于字段值有时未定义的字段，或指定新创建数据集记录的初始值
UI 组件 | 通常不需要对 UI 组件的架构设置进行任何更改 |  |
任何组件 | 任何属性或字段 | 种类，种类选项，编码，编码选项 | 各种目的，如使用种类和编码器中所述
任何连接器 | results（及其子字段） | 路径 | 标识虚拟架构字段数据的位置

使用种类和编码器

种类和编码器是对架构项目的数据执行附加特殊处理的插入模块。它们通常相互结合使用以完成常见任务。下面是种类和编码器常见用途的列表。

已计算 DataSet 字段 已计算字段是基础数据表中不存在的虚拟字段。已计算字段使开发人员能够在运行时创建和更新动态字段值。在根据对记录中其他字段执行的计算和级联计算和显示值时，它尤为方便（例如，可以创建将名和姓字段组合在一起的已计算字段，以便向用户显示全名）。

要为 DataSet 组件设置已计算字段：

  1. 选择 DataSet 组件，然后单击“组件检查器”的“架构”选项卡。
  2. 使用“添加组件属性”(+) 按钮为 DataSet 组件创建一个永久性字段。
  3. 使用“架构属性”窗格为新组件属性指定一个字段名，并将其种类设置为已计算。
  4. 使用 DataSet 组件的 calcFields 事件在运行时为此字段指定一个值。

    注意：只能在 DataSet 组件的 calcFields 事件内将值指定给已计算字段。

设置 XML 文档的架构 在 XML 文档中，所有数据都是以字符串形式存储的。有时您希望以除字符串之外的数据类型提供 XML 文档的字段。以下示例显示从 XML 文件中提取数据的应用程序。

<datapacket>
   <row id="1" billable="yes" rate="50" hours="3" />
   <row id="2" billable="no" rate="50" hours="6" />
</datapacket>

如果使用此 XML 文件为 XMLConnector 组件的 results 属性导入架构，它将生成以下内容：

results :XML
   datapacket :Object
      row :Array
         [n] :object
            @billable :布尔型
            @hours :Integer
            @id :Integer
            @rate :Integer

但是，假设您想将行节点处理为网格内的记录，并且想将 @billable 属性处理为布尔值并在网格中显示 true 或 false 值（而不是 yes 或 no）。使数据进入网格十分简单。您只需将行架构字段绑定到网格的 dataProvider 属性。以下过程说明如何将 @billable 属性处理为布尔值，并显示 true 或 false 值。

要使 @billable 属性显示 true 或 false 值：

  1. 选择 XMLConnector 组件，并单击“架构”选项卡。
  2. 选择 @billable 架构字段，然后在“架构属性”窗格中选择 encoder 属性。
  3. 确保“编码器”设置为布尔值。选择“编码器选项”。您现在可以选择定义哪些字符串代表 true 值，哪些字符串代表 false 值。
  4. 输入 yes 作为将表示 true 的字符串，输入 no 作为将表示 false 的字符串。

    编码器现在将按原始格式（字符串）提取 XML 数据，并将其转换为正常格式（动作脚本类型布尔值）。使用编码器选项，它知道如何对字符串值进行正确编码。

  5. 单击“格式程序”并选择“布尔值”。选择“格式程序选项”。您现在可以选择定义应如何将 true 和 false 值显示为字符串。
  6. 为表示 true 的字符串输入 True，并为表示 false 的字符串输入 False。

    格式程序现在将提取正常格式（动作脚本类型布尔值），并将其格式化为字符串值 true 或 false 以供显示。

设置架构路径

架构字段的 path 属性是可选设置，在组件架构不恰当时的特殊情况下使用。使用此设置，您可以创建虚拟架构字段（存在于某个位置但从另一个位置提取字段值的字段）。此属性的值是使用以下格式之一输入的路径表达式：

  • 对于包含动作脚本数据的架构，路径遵循格式 field [.field]...，其中 field 是字段的名称（如 addresslist.street）。
  • 对于包含 XML 数据的架构，路径遵循格式 XPath，其中 XPath 是标准 XPath 语句（如 addressList/street）。

执行数据绑定时，Flash 将检查架构字段是否存在路径表达式。如果存在，它即会使用路径表达式查找正确的值。请参阅虚拟 XML 架构。

注意：路径表达式始终是相对于架构字段的父节点执行的。

关于编辑“架构属性”窗格的内容

您可以编辑“架构属性”窗格内的任何内容，甚至可以编辑来自外部来源（如 Web 服务 WSDL 文件）的架构。可以随时更改任何架构的任何字段的任何值，但有以下限制：

  • 如果更改了类型，则所有其他架构项目属性会被重置为新数据类型的默认值。
  • 如果选择完全重新载入组件属性的架构，您将丢失之前在“架构属性”窗格中所做的所有编辑。

    注意：可以使用多种方式重新载入组件属性的架构，其中包括输入新的 WSDL URL、为 Web 服务选择不同的操作或从示例 XML 文件导入新的 XML 架构。


架构设置如何工作（仅限于 Flash Professional）

每个架构项目都具有四个属性：数据类型、编码器、格式程序和种类。这些设置控制数据绑定如何处理它从组件中获取和放置到组件中的数据值。

架构的设置方式将改变流入和流出组件的数据

当 Flash 想从组件中获取数据时，它将根据“种类”设置从组件中提取数据。此时，数据采用组件提供的任何格式（数据的原始格式）。例如，XMLConnector 组件始终以字符串形式提供数据，NumericStepper 组件提供 nNumber，诸如此类。编码器负责将此数据转换为动作脚本数据类型，例如，从 XML 文档中获取的字符串数据可能实际上代表日期或数字（数据的正常格式）。如果数据绑定需要数据采用字符串格式（例如，因为要将数据指定到文本组件），则会使用格式程序来完成此转换。如果字段中存在多个绑定，则只会对分配到类型为字符串的字段的那些绑定使用格式程序。

如果要将数据放置到组件中，您首先需要将数据转换为正常格式。取决于“数据类型”设置，这种转换是自动进行的。如果数据为字符串且存在“格式程序”设置，则会使用格式程序将数据从字符串转换为正常格式。“数据类型”设置还控制是否对数据进行检查，以便确定数据是否有效，并相应返回有效或无效事件。然后使用编码器将数据从正常格式转换为原始格式，种类最终将数据传递到组件。

只有在通过数据绑定访问数据字段时，才会进行这种处理。可以从动作脚本代码中直接访问组件属性，但如果这样做，您处理的将是数据的原始值，而不是数据类型、编码器、格式程序和种类的活动所产生的数据值。


更改架构项目设置默认值的准则（仅限于 Flash Professional）

以下准则指定何时需要更改架构项目设置的默认值：

  • 您始终需要一个种类。然而，如果保持 Kind = "none"，则等同于声明 Data，该设置通常是首选设置。
  • 如果组件未按需要的格式提供数据，则需要一个编码器。最常见的例子是属性为 XML 数据的 XMLConnector 组件或任何其他组件。这是因为 XML 以字符串形式存储所有数据（包括数字、日期和布尔值）。因此，如果要使用实际数据（数字、布尔值或日期）而不是代表数据的字符串，您需要使用编码器。
  • 如果想控制将数据转换为字符串（通常用于显示目的）的方式，您需要一个格式程序。
  • 如果希望进行数据验证和/或更好地转换某些数据类型，您需要一个数据类型。


架构种类（仅限于 Flash Professional）

种类确定应如何在运行时访问组件的架构项目。允许使用的种类数量不受限制，并且您可以创建其他自定义种类。种类是由 Flash MX Professional 2004 Configuration/Kinds 文件夹中的 XML 文件定义的。该定义包括以下元数据：

  • 一个将被实例化以充当访问数据的媒介的动作脚本类
  • 一个“种类选项”对话框

Flash MX Professional 2004 自带了以下种类：

None 默认种类。此种类与“数据”种类相同。

Data 架构项目是数据结构，并且数据字段存储在由字段的架构位置指定的数据结构内。这是正常情况。数据结构可以为动作脚本或 XML 格式。

Calculated 此种类与 DataSet 组件结合使用。它用于定义已计算字段（值已在运行时计算的虚拟字段）。在获取或放置已计算字段的值时，无需进行特殊处理。例如，您可以在 DataSet 组件中定义三个字段，分别称为价格、数量和总价。您想要将总价的种类属性设置为已计算，以便可以在运行时为其指定值，如下面的示例代码中所示：

function calculatedFunct(evt) {
      evt.target.totalPrice = (evt.target.price * evt.target.quantity);
    }
    ds.addEventListener('calcFields', calculatedFunct);
}

AutoTrigger 此种类用于自动触发组件（例如，连接器）的触发器方法。可以为 WebService 连接器的参数设置此种类。每次设置参数值时，都会触发该连接器。


架构编码器（仅限于 Flash Professional）

编码器确定应如何在运行时对组件的架构项目进行编码/解码。允许使用的编码器数量不受限制，并且您可以创建其他自定义编码器/解码器。编码器是由 Flash MX Professional 2004 Configuration/Encoders 文件夹中的 XML 文件定义的。该定义包括以下元数据：

  • 一个将被实例化以对数据进行编码/解码的动作脚本类。这个类必须是 mx.databinding.DataAccessor 的子类。
  • “编码器选项”对话框

Flash MX Professional 2004 自带了以下编码器：

None 默认编码器。不执行编码/解码。

Boolean 将字符串数据转换为布尔值动作脚本类型。必须（通过“编码器选项”属性）指定一个或多个将被解释为 true 的字符串，以及一个或多个将被解释为 false 的字符串。这些设置区分大小写。

Date 将字符串数据转换为日期动作脚本类型。必须（通过“编码器选项”属性）指定一个模板字符串，该模板字符串按如下方式工作：

  • 模板字符串应包含 "YYYY"、"MM"、"DD"、"HH"、"NN" 和/或 "SS" 的 0 个或 1 个实例，以及任何其他字符的组合。
  • 将日期转换为字符串时，会将数值形式的年份、月份、日期、小时、分钟和秒分别代入模板中，替代 YYYY、MM 等。
  • 将字符串转换为日期时，字符串必须与模板完全 匹配，并且年份、月份、日等其中每一个的数字位数必须正确无误。

DateToNumber 将日期对象转换为与其相当的数字。DataSet 组件为日期类型的字段使用此编码器。这些值以数字形式存储在 DataSet 组件内，以便可以正确地对它们进行排序。

Number 将字符串数据转换为数字动作脚本类型。此编码器没有创作设置。

DatasetDeltaToXUpdateDelta 此编码器与 DataSet 组件结合使用。它从 DeltaPacket 中提取信息并生成 XPath 语句，该语句被传递到 XupdateResolver 组件中以生成 Xupdate 语句。此编码器从以下两处获取生成 XPath 语句所需的信息：

  • rowNodeKey 属性，必须通过“编码器选项”属性（在下面定义）指定此属性。
  • 在用于最初检索数据的 XMLConnector 组件的架构内。

使用此信息，编码器可以生成在 XML 文件内标识数据所需的正确 XPath 语句。

编码器选项包含一个属性：

  • rowNodeKey 属性（字符串类型）。为了使某个 XML 文件可更新，该文件必须具有如下结构：即代表数据集中记录的节点可以使用 Xpath 语句唯一标识。此属性结合 XPath 语句和字段参数来唯一标识 XML 文件内的行节点，以及使其唯一的数据集内的字段。

    在以下示例中，行节点代表 XML 文件内的记录。id 属性的值使行具有唯一性。

    <datapacket>
   <row id="1" date="01/01/2003" rate="50" hours="5" />
   <row id="2" date="02/04/2003" rate="50" hours="8" />
</datapacket>

    用于唯一标识行节点的 XPath 将如下所示：

    datapacket/row[@id=’xxx’]

    其中 xxx 代表 id 属性的值。通常情况下，XML 文件中的 id 属性将绑定到 DataSet 组件的 id 字段。因此，rowNodeKey 值将如下所示：

    datapacket/row[@id=?id’]

    ? 标识出这是一个字段参数。id 值指定数据集中字段的名称。XUpdateResolver 组件将在运行时替换数据集的 id 字段中的值，以便为所指记录生成正确的 Xpath。

    在下一个示例中，“管理”的联系人节点（带有类别属性）代表 XML 文件内的记录，而雇员标识子节点包含使记录唯一的值：

    <datapacket>
   <company id="5" name="ABC tech">
      <contacts category="Mgmt">
        <contact>
          <empId>555</employeeId>
          <name>Steve Woo</name>
          <email>steve.woo@abctech.com</email>
        </contact>
        <contact>
          <empId>382</employeeId>
          <name>John Phillips</name>
          <email>john.phillips@abctech.com</email>
        </contact>
        ...
        ...
      </contacts>
      <contacts category="Executives">
        ...
        ...
      </contacts>
      ...
      ...
   </company>
</datapacket>

    此 XML 文件的 rowNodeKey 值将如下所示：

    datapacket/company/contacts[@category=’Mgmt’]/contact[empId=?empId’]


架构格式程序（仅限于 Flash Professional）

格式程序是一种在原始数据类型和字符串数据之间执行双向转换的对象。该对象具有可在创作时设置的参数，以及用于执行转换的运行时方法。允许使用的格式程序数量不受限制，并且您可以创建其他自定义格式程序。格式程序是由 Flash MX Professional 2004 Configuration/Formatters 文件夹下的 XML 文件定义的。该定义包括以下元数据：

  • 将被实例化以执行格式设置的动作脚本类
  • 一个“格式程序选项”对话框

Flash MX Professional 2004 自带了以下格式程序：

None 默认格式程序。不执行格式化。

Boolean 此格式程序将布尔值格式化为字符串。可以为表示 true 的字符串（例如，1、是、是的）和表示 false 的字符串（例如，0、否、不是）设置布尔值选项。

Compose String 此格式程序将数据对象转换为字符串。可以使用字符串模板定义输出格式。该模板是可按以下方式之一引用数据字段的任意文本。

  • <field-name>
  • <field-name.field-name>，使用点追溯到数据结构中
  • <.>，代表整个对象。例如，当原始对象是字符串时可以使用此选项。在这种情况下，<.> 只是字符串的值。

Custom Formatter 此格式程序允许您通过指定类名来指定自己的格式程序。格式程序的动作脚本类应具有以下格式：

class MyFormatter extends mx.data.binding.CustomFormatter{
function getTypedValue(requestedType:String) :mx.data.binding.TypedValue{
...
}
function getGettableTypes() :Array /* of String */{
...
}
function setTypedValue(newValue:mx.data.binding.TypedValue) :Array /* of String */{
...
}
function getSettableTypes() :Array /* of String */{
...
}
}

Rearrange Fields 此格式程序基于绑定中的原始数组创建新的对象数组。可通过使用以下格式的字符串模板定义新数组中的字段：

fieldname1=definition1；fieldname2=definition2；诸如此类。

fieldnameN 是新数组或记录中的字段的名称。definitionN 是以下值之一：

  • 原始记录中的字段的名称
  • 括在单引号中的字符串（混合包含文本和标记）。标记是原始数组中的字段的名称，括在 < 和 > 中。
  • 一个圆点“.”（表示整个原始记录）

例如，假设您要使用数据绑定将数组指定到“列表”组件的 DataProvider 属性。数据内的对象没有 label 属性（如果可用，列表将使用该属性）。可以使用此格式程序通过数据绑定来创建新数组，数据绑定将复制原始数组内的对象，并使用您定义的值将 label 属性添加到每个对象。以下模板将达到此目的（依赖于数组和“列表”组件的 DataProvider 属性之间的绑定）：

label='My name is <firstName> <lastName>'

此语法假定对象具有名为 firstName 和 lastName 的两个属性。label 属性将被添加到新数组内的每个对象中。

注意：此格式程序可用于以绑定方式接受记录数组的任何组件。

Number Formatter 此格式程序能让您指定将数字转换为文本时出现的小数位数。


架构数据类型（仅限于 Flash Professional）

数据类型是一种对象，该对象代表支持特定数据类型所需的所有运行时逻辑。数据类型可以为标量类型（如 int、string、date、currency amount 或 zipcode）。它也可以是带有诸如子字段等内容的复杂类型。数据类型可以对数据值进行测试，以确定它对于该数据类型是否有效。允许使用的数据类型数量不受限制，并且您可以创建其他自定义数据类型。数据类型是由 Flash MX Professional 2004 Configuration/DataTypes 文件夹中的 XML 文件定义的。该定义包括以下元数据：

  • 一个将被实例化以进行验证和类型转换的动作脚本类
  • 一个“验证选项”对话框
  • 标准格式程序的名称（可使用 formatter 属性覆盖）
  • 必需、只读和默认值的初始值

Flash MX Professional 2004 自带了以下数据类型：

注意：以下数据类型能够执行验证：Custom、Integer、Number、PhoneNumber、SocialSecurity、String、ZipCode。这些数据类型能够在您将各种其他数据类型指定给它们时从该数据类型进行转换：Boolean、DataProvider、Integer、Number、String、XML.

Array 数组数据类型。没有验证选项。

Attribute XML 属性。没有验证选项。

Boolean 布尔值数据类型。没有验证选项。

Custom 允许您添加自己的自定义类以检查这种特殊的验证。动作脚本类必须位于类路径中，并且具有以下格式：

class myCustomType extends mx.databinding.CustomValidator {
  function validate(value) {
      ... 此处为一些代码
   }
}

DataProvider DataProvider 数据类型。没有验证选项。

Integer 整数数据类型。可以设置验证选项以定义整数值的最小和最大范围。

Number 数字数据类型。与 Integer 类似，此选项能让您设置最小和最大数字值的范围。

Object 没有验证选项。

PhoneNumber 没有验证选项。

SocialSecurity 没有验证选项。

String 此选项能让您设置字符串值的最小和最大字符数。

XML 此选项可用于指定将字符串转换为 XML 时是否忽略空白。

ZipCode 没有验证选项。


在“绑定”选项卡中处理绑定（仅限于 Flash Professional）

“绑定”选项卡能让您查看、添加和删除绑定。此处显示了组件的所有绑定。“绑定列表”窗格（“绑定”选项卡的顶部窗格）显示组件的绑定属性（表示为它们的架构位置）。“绑定属性”窗格（底部窗格）显示所选绑定的名称/值对。

单击“绑定”选项卡中的“添加绑定”(+) 按钮时，“添加绑定”对话框即会出现。

此对话框显示组件的所有架构项目。可以使用此对话框选择要绑定到的架构项目。组件属性显示为架构树内的根节点。箭头图标表示架构项目是否具有读/写权限，如下所示：向右指的箭头表示只写属性，向左指的箭头表示只读属性，双向箭头表示读写属性。

输入路径表达式

组件的架构定义哪些架构项目是可绑定的。然而，您可能需要绑定到未在架构树中标出的架构项目。可以通过输入路径表达式来达到此目的。

要输入路径表达式：

  1. 在“组件检查器”面板的“绑定”选项卡中，单击“添加绑定”(+) 按钮。
  2. 在“添加绑定”对话框中，选择“使用路径表达式”。

    如果选择该选项，架构树中只会出现组件属性名称。

  3. 从树中选择要为其创建表达式的组件属性。选择了组件属性之后，“路径表达式”文本框即会变为活动状态。
  4. 输入路径表达式以标识要绑定到的架构项目。请按以下格式输入路径表达式：
    • 对于包含动作脚本数据的属性，路径采用此格式：

      field [.field]...

      其中 field 与字段的名称相同（如 addresslist.street）。

    • 对于包含 XML 数据的属性，路径采用此格式：

      XPath

      其中 XPath 是标准 XPath 语句（如 addressList/street）。

  5. 单击“确定”返回到“绑定”选项卡。

使用“绑定到”对话框

在“绑定”选项卡的“绑定属性”窗格中单击“绑定到”时，“绑定到”对话框即会出现。“绑定到”对话框包括“组件路径”窗格和“架构位置”窗格。

“组件路径”窗格显示具有可绑定属性的组件树。此组件树的显示方式取决于当前的舞台编辑环境。

  • 如果舞台显示文档根节点的内容，则会显示相对于文档根节点的单一组件路径树。

    注意：只有当组件实例存在于已编辑文档根节点的第一帧中，或存在于任何其实例位于已编辑文档根节点中的屏幕/剪辑的第一帧中时，它们才会显示。此窗格只显示组件，而不显示文本字段。

  • 如果舞台显示正在从库中进行编辑的影片剪辑的内容，则会显示两个组件路径树。第一个组件路径树从所编辑元件的根节点开始显示，第二个组件路径树从文档的根节点开始显示，以便允许在文档内绑定到实例。

    注意：到第二个组件树的绑定不会显示在“绑定到”实例中（如果已选择这些绑定）。它们只会显示为“绑定自”组件实例中的绑定。

“架构位置”窗格显示“组件路径”窗格中所选组件的架构树。

注意：此信息与“组件检查器”面板“架构”选项卡的“架构树”窗格中显示的信息相同。

可以为“绑定到”属性使用动态值或常数值。

要为“绑定到”属性使用动态值：

  1. 在“组件路径”窗格中选择一个组件。
  2. 执行以下操作之一，为数据选择一个架构项目：
    • 使用位于“架构位置”窗格内的架构树选择一个架构项目。
    • 选择“使用路径表达式”，然后从架构树中选择一个组件属性，并输入路径表达式。请参阅输入路径表达式。

为“绑定到”属性使用常数值：

  • 选择“使用常数值”，然后输入一个常数值（如 3、一个字符串或 true）。可以使用任何对于架构项目有效的值。如果使用常数值，则选定的组件路径、架构位置和路径表达式都会被忽略。只有将绑定的“方向”属性设置为“输入”时才能绑定到常数值。

绑定属性

在绑定列表内选择了绑定时，您可以进一步使用位于“绑定属性”窗格（“绑定”选项卡的底部窗格）内的属性对其进行定义。您可以在此处指定附加信息，如“方向”、“绑定到”、“格式程序”等。“绑定属性”窗格包含适用于所有绑定的若干属性：

“方向” 显示可为绑定设置的方向列表：

  • 输入：选定架构项目是绑定的目标。当另一端的绑定发生更改时，它将接收新值。
  • 输出：选定架构项目是绑定的来源。每次它的值发生更改时，都会将值复制到绑定的另一端。
  • 输入/输出：当绑定任何一端的值发生更改时，将会复制新的数据值。

“绑定到” 标识此架构项目所绑定到的目标架构项目（另一个组件的架构项目）。

“格式程序” 显示可用格式程序的列表，这些格式程序确定如何显示此绑定。请参阅架构格式程序（仅限于 Flash Professional）。

“格式程序选项” 显示“格式程序选项”对话框。此对话框中的设置用于在运行时控制从此架构项目指定到目标架构项目（在“绑定到”属性中定义）的数据的格式化。这些设置优先于来源架构项目的默认格式化设置。

索引 为架构项目创建绑定时，如果该架构项目定义为包含在数组内的对象的字段，则必须为该数组指定一个索引（也就是说，如果该架构项目的位置为 results.Theaters[].PlayingMovies，则必须为 Theaters[] 定义一个索引）。在这种情况下，将在“绑定属性”窗格中动态添加一个新设置。

注意：如果架构项目位置包含多个数组引用，如 "foo/bar[]/abc[]/def[]"，则会将三个 index for 设置动态添加到“架构属性”窗格，每个需要建立索引的数组一个。

要定义索引：

  1. 在“绑定属性”窗格中选择索引设置。
  2. 单击“值”列中的放大镜图标。

    “绑定索引”对话框即会出现。此对话框的工作方式与“绑定到”对话框相同。请参阅使用“绑定到”对话框。

  3. 使用“绑定索引”对话框定义动态索引值（如“数据网格”组件的 selectedIndex 属性）或常数值（如数组的索引）。如果使用动态索引值，则在每次动态索引值发生更改时都会重新执行绑定。

    在本示例中，用户选择“数据网格”组件的 selectedIndex 属性作为索引。每次当最终用户在数据网格中选择新记录时，数组的索引将会更新，以便显示与新记录关联的数据。

    注意：index for 属性只会出现在充当数组内的对象字段的架构项目的绑定属性中。如果为“数据网格”组件选择“绑定”选项卡，则 index for 属性不会出现在选定索引架构项目的“绑定属性”窗格中。

有时您可能需要手动定义将架构项目标识为对象（包含在数组内）的字段的架构。在下例中，@id、@billable、@rate 和 @duration 架构字段都是被视为行数组内包含的对象的字段：

results :XML
   datapacket :Object
      row :Array
         [n] :object
            @id :Integer
            @billable :布尔型
            @rate :Number
            @duration :Integer

如果为这些项目中的任何一个创建了绑定，则 index for 'row' 属性将出现在“绑定属性”窗格中，以便可以为行数组指定索引。创作环境使用 [n] 架构字段来标识这种关系。因此，如果手动创建架构，您可能需要复制此条目。为此，您需要在“row :Array”节点下添加新的架构字段，并将架构字段的“字段名称”设置为 [n]。创作工具将读取此值，并创建 index for 属性（如果在绑定内使用）。


Flash Player 7 与 Flash Player 6 中数据绑定的比较

组件之间的绑定基于默认组件事件触发（例如，每次在数据网格或数据集中选择一条新记录时，都将触发数据网格和数据集的 selectedIndex 之间的绑定）。只要触发了该事件，绑定即会排入队列，以便尽快执行。但这会因您所使用的 Flash Player 版本而有所不同。如果发布到 Flash Player 7，绑定将立即执行。而如果发布到 Flash Player 的早期版本，绑定将排到下一帧的最开始。

注意：如果组件（例如，数据集）提供了自己的事件用于访问可能会与数据绑定不同步的数据，将绑定排到下一帧有可能会导致这些组件出现问题。但是，这些组件只能用于 Flash Player 7。我们建议您在使用数据绑定时发布到 Flash Player 7。


关于调试数据绑定和 Web 服务（仅限于 Flash Professional）

数据绑定是为了响应事件（如以下事件）而进行的一系列操作：

  • 组件属性的数据发生更改。
  • 完成了 Web 服务调用。
  • 获取了 XML 文档。

数据绑定或 Web 服务执行的所有操作均会报告到日志中，您可以通过启用跟踪日志对其进行控制：

_global.__dataLogger=new mx.data.binding.Log();  //启用跟踪日志

也可以禁用跟踪日志：

_global.__dataLogger=null; //禁用跟踪日志。

在运行启用了跟踪的应用程序时，数据绑定和 Web 服务事件的详细日志将会出现在“输出”窗口中。将会报告以下类型的信息：

  • 正在执行绑定
  • 正在调用 Web 服务方法
  • 正在获取 XML 文档
  • Web 服务和 XML 组件中的状态和结果事件
  • 已验证数据字段中的有效和无效事件
  • 检查出的各种错误、无效设置等。

通过运行应用程序并随后检查日志，您通常可以找到程序未按预计方式工作的原因。有时错误是明确报告出来的，例如，缺少 Web 服务参数。有时数据绑定到了错误的组件或未绑定到组件，诸如此类。如果发现日志中的信息太多，请通过从上下文菜单中选择“清除”来清理“输出”窗口，以便保持日志尽可能简短。


在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）

您可以在运行时处理数据绑定和 Web 服务，而无需使用任何创作功能，如“组件检查器”面板中的“绑定”和“架构”面板，或 WebServiceConnector 组件。可以通过创建 DataBinding 或 WebService 类的实例达到此目的。有关详细信息，请参阅Binding 类（仅限 Flash Professional）和Web 服务类（仅限 Flash Professional）。

DataBinding 和 WebService 类的字节代码包含在 SWC 文件内，为了编译和生成输出 SWF 文件，您的库中必须有该文件。这些 SWC 文件包含在“类”公用库中。

要将 SWC 文件添加到您的库中：

  1. 通过选择“窗口”>“其他面板”>“公用库”>“类”选择“类”库。
  2. 通过选择“窗口”>“库”打开文档的库。
  3. 将一个或多个相应的 SWC 文件（DataBindingClasses 和/或 WebServiceClasses）从“类”库拖到文档的库中。

    注意：这是将需要的类加入到文档中以便文档能够编译和运行的唯一方式。


发布概述

在准备将 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 内容提供给观众时，您可以将其发布以进行回放。在默认情况下，“发布”命令将创建 Flash SWF 文件，以及将 Flash 内容插入浏览器窗口中的 HTML 文档。“发布”命令还将为 Flash 4 及更高版本创建和复制检测文件。如果更改发布设置，Flash 将使用该文档保存更改。为了以多种方式快速地发布文档，您可以创建发布配置文件，以便命名和保存“发布设置”对话框的不同配置。在创建发布配置文件之后，可以将其导出以便在其他文档中使用，或供在同一项目上工作的其他人使用。请参阅使用发布配置文件。

如果要发布针对 Flash Player 4 或更高版本的内容，您可以进行 Flash Player 检测，以便对用户的 Flash Player 版本进行检查。如果用户没有指定的版本，则可以引导用户访问替代 Web 页。请参阅配置用于 Flash Player 检测的发布设置。

Macromedia Flash Player 6 及更高版本支持 Unicode 文本编码。使用 Unicode 支持，用户可以查看多语言文本，与运行播放器的操作系统使用的语言无关。请参阅创建多语言文本。

也可以以其他文件格式（如 GIF、JPEG、PNG 和 QuickTime 格式）发布 FLA 文件，以及在浏览器窗口中显示这些文件所需的 HTML 文件。上面补充的这些格式可使那些没有安装指定 Flash Player 的用户在浏览器中浏览 SWF 文件动画和交互。当以其他文件格式发布 FLA 文件时，每种文件格式的设置都会存储在该 FLA 文件中。

同样也可以以多种格式导出 FLA 文件。导出 FLA 文件类似于以其他文件格式发布 FLA 文件，只是每种文件格式的设置不存储在 FLA 文件中。请参阅导出。

如果您精通 HTML，那么可以不使用“发布”命令，而使用任意 HTML 编辑器创建自己的 HTML 文档，并在其中包括显示 SWF 文件所需的标记。请参阅关于为 Flash 配置 Web 服务器。

在发布 SWF 文件之前，请务必使用“测试影片”和“测试场景”命令测试 SWF 文件的运行情况。


播放 Flash SWF 文件

Macromedia Flash SWF 文件格式用于部署 Flash 内容。

可以用以下方式播放 Flash 内容：

  • 在 Internet 浏览器（如安装了 Flash Player 7 的 Netscape Navigator 和 Internet
    Explorer）上播放
  • 在 Director 和 Authorware 中用 Flash Xtra 播放
  • 利用 Microsoft Office 和其他 ActiveX 主机中的 Flash ActiveX 控件播放
  • 作为 QuickTime 影片的一部分播放
  • 作为一种称作放映文件的独立影片播放

Flash SWF 格式是其他应用程序所支持的一种开放标准。有关 Flash 文件格式的详细信息，请访问 Macromedia Web 站点，网址为：www.macromedia.com/go/flashplayer_cn/。


关于发布安全 Flash 文档

Flash Player 7 包含多个有助于确保 Flash 文档安全的功能。

缓冲区溢出保护

缓冲区溢出保护可以防止在 Flash 文档中故意滥用外部文件来覆盖用户的内存，或者插入破坏性代码（如病毒）。这样可以防止 Flash 文档读写用户系统上文档的指定内存空间之外的数据。缓冲区溢出保护是自动启用的。

关于用于在 Flash 文档间共享数据的精确域匹配

Flash Player 7 执行比 Flash Player 的以前版本更为严格的安全模型。Flash Player 6 和 Flash Player 7 的安全模型主要有两大差异：

精确域匹配 Flash Player 6 允许来自相似域（例如，www.macromedia.com 和 store.macromedia.com）的 SWF 文件互相或与其他文档自由通信。在 Flash Player 7 中，为了使域相互通信，要访问的数据的域必须与数据提供程序的域精确 匹配。

HTTPS/HTTP 限制 使用非安全（非 HTTPS）协议加载的 SWF 文件无法访问使用安全（HTTPS）协议加载的内容，即使两者精确地位于同一域中也无法访问。

有关确保 Flash 内容按期望使用新的安全模型执行的详细信息，请参阅Flash Player 安全功能。


关于发布 Flash 文档

要发布 Flash 文档，请首先选择发布文件格式，然后使用“发布设置”命令选择文件格式设置。然后用“发布”命令发布 Flash 文档。在“发布设置”对话框中建立的发布配置将随文档一起保存。您也可以创建并命名发布配置文件，以便可以随时使用已建立的发布设置。

根据您在“发布设置”对话框中指定的选项，“发布”命令会创建下列文件：

  • Flash SWF 文件
  • 当 Flash Player 不可用时，则会自动出现各种不同格式（GIF、JPEG、PNG 和 QuickTime）的替代图像。
  • 在浏览器中显示 SWF 内容（或替代图像）和控制浏览器设置所需的 HTML 支持文档。
  • 三个 HTML 文件（如果保持默认选项“检测 Flash 版本”为选中状态）：检测文件、内容文件和替代文件
  • 用于 Windows 和 Macintosh 系统的独立放映文件以及 Flash 内容中的 QuickTime 视频（分别是 EXE、HQX 或 MOV 文件）。

注意：要修改或更新由“发布”命令创建的 SWF 文件，必须编辑原始的 Flash 文档，然后再用“发布”命令保留所有的创作信息。将 Flash SWF 文件导入到 Flash 中会删除一些创作信息。

有关发布设置的信息，请参阅配置用于 Flash Player 检测的发布设置。有关一般信息，请参阅指定发布设置以创建带有嵌入 Flash 内容的 HTML 文档。

要设置常规的 Flash 文档发布设置：

  1. 打开“发布设置”对话框。执行以下其中一项操作：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 在“发布设置”对话框中，选择要创建的每种文件格式的选项。

    默认情况下会选定 Flash SWF 格式。默认情况下也会选定 HTML 格式，因为在浏览器中显示 SWF 文件需要 HTML 文件。与选定文件格式对应的选项卡会出现在该对话框的当前面板上（Windows 或 Macintosh 放映文件格式除外，该文件格式没有相应的设置）。有关个别文件格式的发布设置的详细信息，请参阅以下各部分。

  3. 在每个选定格式的“文件”文本框中，接受与文档名称相对应的默认文件名，或者输入带有相应扩展名（如用于 GIF 文件的 .gif 和用于 JPEG 文件的 .jpg）的新文件名。
  4. 选择发布文件的位置。默认情况下，这些文件会发布到与 FLA 文件相同的位置。要更改文件的发布位置，请单击文件名旁边的文件夹，然后浏览到要发布文件的其他位置。
  5. 要创建独立的放映文件，可选择 Windows 放映文件或 Macintosh 放映文件。

    注意：Windows 版本的 Flash 会为 Macintosh 放映文件的文件名添加 .hqx 扩展名。可以使用 Windows 版本的 Flash 创建 Macintosh 放映文件，但必须使用文件转换器（如 BinHex）使转换后的文件成为 Macintosh Finder 中的应用程序文件。

  6. 单击要更改的格式选项的选项卡。指定每种格式的发布设置，如以下各部分所述。
  7. 设置完选项后，请执行以下其中一项操作：
    • 要生成所有指定文件，请单击“发布”。
    • 要在 FLA 文件中保存设置并关闭对话框，而不进行发布，请单击“确定”。

在不选择新的发布设置的情况下发布 Flash 文档：

  • 选择“文件”>“发布”，以“发布设置”对话框中指定的格式和位置（可能是默认设置、以前选定的设置或选定的发布配置文件）创建文件。


为 Flash SWF 文件格式设置发布选项

当发布 Flash 文档时，可以设置图像和声音压缩选项和防止对 SWF 文件进行导入操作的选项。使用“发布设置”对话框的“Flash”面板中的控件来更改设置。

要为 Flash 文档设置发布选项：

  1. 打开“发布设置”对话框。执行以下其中一项操作：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 单击“Flash”选项卡，并从“版本”弹出菜单中选择一个播放器版本。

    并非所有 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 功能都能在使用早于 Flash Player 7 的 Flash Player 版本的已发布 SWF 文件中起作用。

    如果要检测特定的 Flash Player，在“发布设置”对话框的“HTML”选项卡中，您必须选择 Flash Player 4 或更高版本。有关 Flash Player 检测的详细信息，请参阅配置用于 Flash Player 检测的发布设置。

  3. 选择加载顺序，指定 Flash 如何加载 SWF 文件各层以显示 SWF 文件的第一帧：“由下而上”或“由上而下”。

    此选项控制着 Flash 在速度较慢的网络或调制解调器连接上先绘制 SWF 文件的哪些部分。

  4. 在“动作脚本版本”弹出菜单中，选择动作脚本 1.0 或 2.0 以反映文档中使用的版本。

    如果选择动作脚本 2.0 并创建了类，则可以单击“设置”按钮来设置类文件的相对类路径，该路径与“首选参数”中设置的默认目录路径不同。有关详细信息，请参阅设置类路径。

  5. 要启用对已发布 Flash SWF 文件的调试操作，可选择以下任意一个选项：

    “生成大小报告”可生成一个报告，按文件列出最终 Flash 内容中的数据量。

    “省略跟踪动作”会使 Flash 忽略当前 SWF 文件中的跟踪动作 (trace)。 如果选择了此选项，来自跟踪动作的信息就不会显示在“输出”面板中。

    有关详细信息，请参阅使用“输出”面板。

    “防止导入”选项可防止其他人导入 SWF 文件并将其转换回 Flash (FLA) 文档。如果选择此选项，您可以决定使用密码来保护 Flash SWF 文件。

    “允许调试”会激活调试器并允许远程调试 Flash SWF 文件。如果选择此选项，您可以决定使用密码来保护 SWF 文件。

    “压缩影片”压缩 SWF 文件以减小文件大小和缩短下载时间。此选项默认情况下处于选中状态，当文件包含大量文本或动作脚本时，此选项大有裨益。经过压缩的文件只能在 Flash Player 6 及更高版本中播放。

    “针对 Flash Player 6 r65 优化”如果在“版本”弹出菜单中选择 Flash Player 6，您可以选择此选项来将版本指定为 Flash Player 6。更新的版本使用动作脚本寄存器分配来提高性能。用户必须拥有 Flash Player 6 或更高版本。

  6. 如果在步骤 5 中选择“允许调试”或“防止导入”，则可以在“密码”文本框中输入密码。如果添加了密码，那么其他人必须先输入密码才能调试或导入 SWF 文件。要删除密码，请清除“密码”文本框。

    有关调试器的详细信息，请参阅编写和调试脚本。

  7. 要控制位图压缩，请调整“JPEG 品质”滑块或输入一个值。

    图像品质越低，生成的文件就越小；图像品质越高，生成的文件就越大。请尝试不同的设置，以确定在文件大小和图像品质之间的最佳平衡点；值为 100 时图像品质最佳，压缩比最小。

  8. 要为 SWF 文件中的所有声音流或事件声音设置采样率和压缩，请单击“音频流”或“音频事件”旁边的“设置”按钮，然后在“声音设置”对话框中选择“压缩”、“比特率”和“品质”选项。完成后单击“确定”。

    注意：只要前几帧下载了足够的数据，声音流就会开始播放；它与时间轴同步。事件声音需要完全下载后才能播放，在明确停止之前，它将一直持续播放。

    有关声音的详细信息，请参阅处理声音。

  9. 如果要使用步骤 8 中选定的设置来覆盖在“属性”检查器的“声音”部分中为个别声音选定的设置，请选择“覆盖声音设置”。要创建一个较小的低保真版本的 SWF 文件，您可能需要选择此选项。

    注意：如果取消选择“覆盖声音设置”选项，那么 Flash 会扫描文档中的所有音频流（包括导入视频中的声音），然后按照各个设置中最高的设置发布所有音频流。如果一个或多个音频流具有较高的导出设置，就会增大文件大小。

  10. （仅限于 Flash Professional）要导出适合于设备（包括移动设备）的声音而不是原始库声音，请选择“导出设备声音”。有关其它信息，请参阅在用于移动设备的 Flash 文档中使用声音（仅限于 Flash Professional）。要保存当前文件中的设置，单击“确定”。

设置类路径

要使用已定义的动作脚本类，Flash 必须能够找到包含类定义的外部动作脚本 2.0 文件。Flash 在其中搜索类定义的文件夹列表称为类路径。类路径存在于全局/应用程序层和文档层中。有关类路径的详细信息，请参阅理解类路径。

要修改文档层类路径：

  1. 选择“文件”>“发布设置”，打开“发布设置”对话框。
  2. 单击“Flash”选项卡。
  3. 验证是否在“动作脚本版本”弹出菜单中选择了动作脚本 2.0，然后单击“设置”。
  4. 在“动作脚本设置”对话框的“导出用于类的框架”文本框中，指定类定义应驻留的框架。
  5. 执行以下任意操作：
    • 要将文件夹添加到类路径，请单击“浏览到路径”按钮浏览到要添加的文件夹，然后单击“确定”。

      或者，单击“添加新路径”(+) 按钮在“类路径”列表中添加一个新行。双击新行，键入相对或绝对路径，然后单击“确定”。

    • 要编辑现有类路径文件夹，请在“类路径”列表中选择路径，单击“浏览到路径”按钮浏览到要添加的文件夹，然后单击“确定”。

      或者，请双击“类路径”列表中的路径，键入所需的路径，然后单击“确定”。

    • 要从类路径中删除文件夹，请在“类路径”列表中选择路径，然后单击“从路径删除”按钮。


指定发布设置以创建带有嵌入 Flash 内容的 HTML 文档

在 Web 浏览器中播放 Flash 内容需要一个能激活 SWF 文件并指定浏览器设置的 HTML 文档。该文档会由“发布”命令通过模板文档中的 HTML 参数自动生成。

模板文档可以是任何一种包含适当模板变量的文本文件，包括含有特定解释程序（如 ColdFusion 或活动服务器页面 (ASP)）的代码的普通 HTML 文件或 Flash 附带的模板（有关详细信息，请参阅关于为 Flash 配置 Web 服务器）。

可以自定义内置模板（请参阅自定义 HTML 发布模板），或者使用任意 HTML 编辑器手动输入 Flash 的 HTML 参数（请参阅编辑 Flash HTML 设置）。

HTML 参数确定 Flash 内容出现在窗口中的位置、背景颜色、SWF 文件大小等等，并设置 object 和 embed 标记的属性。可以在“发布设置”对话框的“HTML”面板中更改这些设置和其他设置。更改这些设置会覆盖已在 SWF 文件中设置的选项。

要发布显示 Flash SWF 文件所需的 HTML：

  1. 执行以下操作之一以打开“发布设置”对话框：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 在“格式”选项卡上，HTML 文件类型默认处于选中状态。在 HTML 文件的“文件”文本框中，选择与文档名称匹配的默认文件名，或者输入唯一的名称（包括 .html 扩展名）。
  3. 单击“HTML”选项卡以显示 HTML 设置，并从“模板”弹出菜单中选择要使用的已安装模板。然后，单击右边的“信息”按钮以显示选定模板的说明。默认选项是“仅 Flash”。
  4. 如果在前一步骤中您选择的不是“图像映射”或“QuickTime”HTML 模板，并且在“Flash”选项卡中已将“版本”设置为 Flash Player 4 或更高版本，则可以选择“Flash 版本检测”。

    注意：“Flash 版本检测”将对文档进行配置，以检测用户拥有的 Flash Player 的版本并在用户没有指定的播放器时向用户发送替代 HTML 页。有关版本检测的详细信息，请参阅配置用于 Flash Player 检测的发布设置。

  5. 选择一种“尺寸”选项，设置 object 和 embed 标记中 width 和 height 属性的值：

    “匹配影片”（默认设置）使用 SWF 文件的大小。

    “像素”会在“宽度”和“高度”字段中输入宽度和高度的像素数量。

    “百分比”指定 SWF 文件将占浏览器窗口的百分比。

  6. 选择“回放”选项可以控制 SWF 文件的回放和各种功能，如下所示：

    “开始时暂停”会一直暂停播放 SWF 文件，直到用户单击按钮或从快捷菜单中选择“播放”后才开始播放。默认情况下，该选项处于取消选择状态，Flash 内容一旦加载就立即开始播放（PLAY 参数值设置为 true）。

    “循环”将在 Flash 内容到达最后一帧后再重复播放。取消选择此选项会使 Flash 内容在到达最后一帧后停止播放。（默认情况下，LOOP 参数处于启用状态。）

    “显示菜单”会在用户右击 (Windows) 或按住 Control 键单击 (Macintosh) SWF 文件时，显示一个快捷菜单。如果取消选择此选项，那么快捷菜单中就只有“关于 Flash”一项。默认情况下，此选项处于选中状态（MENU 参数设置为 true）。

    “设备字体”（仅限 Windows）会用消除锯齿（边缘平滑）的系统字体替换用户系统上未安装的字体。使用设备字体可使小号字体清晰易辨，并能减小 SWF 文件的大小。此选项只影响那些包含用设备字体显示的静态文本（在创作 SWF 文件时创建并且在 Flash 内容播放时不会改变的文本）的 SWF 文件。有关详细信息，请参阅使用设备字体（仅适用于静态水平文本）。

  7. 选择“品质”选项以在处理时间和外观之间确定一个平衡点，如下所示。此选项设置 object 和 embed 标记中的 QUALITY 参数的值。

    “低”主要考虑回放速度，基本不考虑外观，并且不使用消除锯齿功能。

    “自动降低”主要强调速度，但是也会尽可能改善外观。回放开始时，消除锯齿功能处于关闭状态。如果 Flash Player 检测到处理器可以处理消除锯齿功能，就会打开该功能。

    “自动升高”在开始时同等强调回放速度和外观，但在必要时会牺牲外观来保证回放速度。回放开始时，消除锯齿功能处于打开状态。如果实际帧频降到指定帧频之下，就会关闭消除锯齿功能以提高回放速度。使用此设置可模拟 Flash 中的“查看”>“消除锯齿”设置。

    “中”选项会应用一些消除锯齿功能，但并不会平滑位图。该设置生成的图像品质要高于“低”设置生成的图像品质，但低于“高”设置生成的图像品质。

    “高”（默认设置）主要考虑外观，基本不考虑回放速度，它始终使用消除锯齿功能。如果 SWF 文件不包含动画，则会对位图进行平滑处理；如果 SWF 文件包含动画，则不会对位图进行平滑处理。

    “Best”提供最佳的显示品质，而不考虑回放速度。所有的输出都已消除锯齿，而且始终对位图进行光滑处理。

  8. 选择“窗口模式”选项，该选项控制 object 和 embed 标记中的 HTML wmode 属性。窗口模式修改 Flash 内容限制框或虚拟窗口与 HTML 页中内容的关系，如下所示：

    “窗口”不会在 object 和 embed 标记中嵌入任何窗口相关属性。Flash 内容的背景不透明，并使用 HTML 背景颜色。HTML 无法呈现在 Flash 内容的上方或下方。“窗口”为默认设置。

    “不透明无窗口”将 Flash 内容的背景设置为不透明，并遮蔽 Flash 内容下面的任何内容。“不透明无窗口”使 HTML 内容可以显示在 Flash 内容的上方或顶部。

    “透明无窗口”将 Flash 内容的背景设置为透明。此选项使 HTML 内容可以显示在 Flash 内容的上方和下方。

    注意：在某些情况下，透明无窗口模式中复杂的呈现方式可能会导致动画在 HTML 图像同样复杂的情况下速度变慢。

    请参阅本过程后面附带的表格，了解支持无窗口模式的浏览器。

  9. 选择一个“HTML 对齐”选项，确定 Flash SWF 窗口在浏览器窗口中的位置：

    “默认”使 Flash 内容在浏览器窗口内居中显示，如果浏览器窗口小于应用程序，则会裁剪边缘。

    “左对齐”、“右对齐”、“上对齐”或“下对齐”对齐选项会将 SWF 文件与浏览器窗口的相应边缘对齐，并根据需要裁剪其余的三边。

  10. 如果已经改变了文档的原始宽度和高度，选择一种“缩放”选项可将 Flash 内容放到指定的边界内。“缩放”选项设置 object 和 embed 标记中的 SCALE 参数。

    “默认（显示全部）”会在指定的区域显示整个文档，并且不会发生扭曲，同时保持 SWF 文件的原始高宽比。边框可能会出现在应用程序的两侧。

    “无边框”选项会对文档进行缩放，以使它填充指定的区域，并保持 SWF 文件的原始高宽比，同时不会发生扭曲，并根据需要裁剪 SWF 文件边缘。

    “精确匹配”会在指定区域显示整个文档，它不保持原始高宽比，这可能会导致发生扭曲。

    “无缩放”选项将禁止文档在调整 Flash Player 窗口大小时进行缩放。

  11. 选择一个“Flash 对齐”选项可设置如何在应用程序窗口内放置 Flash 内容以及在必要时如何裁剪它的边缘。此选项设置 object 和 embed 标记的 SALIGN 参数。
    • 对于“水平”对齐，选择“左对齐”、“居中”或“右对齐”。
    • 对于“垂直”对齐，选择“上对齐”、“居中”或“下对齐”。
  12. 选择“显示警告消息”选项可在标记设置发生冲突时显示错误消息，例如在某个模板的代码引用了尚未指定的替代图像时。
  13. 要保存当前文件中的设置，单击“确定”。

以下浏览器支持无窗口模式：

Internet Explorer

Netscape

其他

Macintosh OS X 10.1.5 及 10.2

IE 5.1 及 IE 5.2

7.0 及更高版本
  • Opera 6 或更高版本
  • Mozilla 1.0 或更高版本
  • AOL/Compuserve

Windows

IE 5.0、5.5 和 6.0

7.0 及更高版本
  • Opera 6 及更高版本
  • Mozilla 1.0 及更高版本
  • AOL/Compuserve


配置用于 Flash Player 检测的发布设置

可以配置文档来检测用户的 Flash Player 版本。如果在“发布设置”对话框中选择了“检测 Flash 版本”，则访问 Flash 应用程序的用户将被以透明的方式引导到包含 SWF 文件（设计用于检测 Flash Player 版本）的 HTML 文件。如果用户拥有指定的版本或更高版本，SWF 文件将再次将用户引导到内容 HTML 文件，SWF 文件会按照设计的方式播放。如果用户没有指定的版本，则会被重新引导到 Flash 创建或您已创建的替代 HTML 文件。

要启用 Flash Player 检测：

  1. 在“发布设置”对话框的“HTML”选项卡中选择“检测 Flash 版本”。有关一般信息，请参阅指定发布设置以创建带有嵌入 Flash 内容的 HTML 文档。

    注意：只有在“发布设置”对话框的“Flash”选项卡中选择了 Flash Player 4 或更高版本，并且未选择“QuickTime”或“图像映射”作为模板时，此选项才可用。

  2. 为“检测 Flash 版本”单击“设置”。对话框将显示您在“发布设置”对话框的“Flash”选项卡中选择的 Flash Player 版本。可以使用“主要修订”和“次要修订”文本框来指定 Flash Player 的精确修订。
  3. “检测文件”文本框显示包含 SWF 文件的 HTML 文件的名称，该 SWF 文件设计用于检测播放器版本并将用户重新引导到相应的 HTML 页。您可以接受或更改默认名称。

    注意：更改默认名称也会更改“发布设置”对话框“格式”选项卡上“HTML”文本框中的名称。

  4. 使用“内容文件”文本框来指定包含 Flash 内容的 HTML 模板的名称。默认名称为带 _content 的文档名称。
  5. 执行以下操作之一，为没有 Flash Player 指定版本的用户创建替代 HTML 页：
    • 如果希望 Flash 自动创建替代 HTML 页，请选择“生成默认项”并接受“替代文件”文本框中的默认文件名，或者输入一个新文件名。
    • 如果已创建用作替代文件的 HTML 文件，请选择“使用现有文件”，然后单击“浏览”并选择该 HTML 文件。
  6. 单击“确定”返回到“发布设置”对话框。


指定 GIF 文件的发布设置

GIF 文件提供了一种简单的方法来导出绘画和简单动画，以供在 Web 页中使用。标准 GIF 文件是一种简单的压缩位图。

GIF 动画文件（有时也称作 GIF89a）提供了一种简单的方法来导出简短的动画序列。Flash 可以优化 GIF 动画文件，并且只存储逐帧更改。

除非通过在“属性”检查器输入帧标签 #Static 来标记要导出的其他关键帧，否则 Flash 会将 SWF 文件的第一帧导出为 GIF 文件。除非通过在相应的关键帧中输入帧标签 #First 和 #Last 来指定导出帧的范围，否则 Flash 会将当前 SWF 文件中的所有帧导出为一个 GIF 动画文件。

Flash 可以为 GIF 文件生成一个图像映射，以保留原始文档中按钮的 URL 链接。使用“属性”检查器，在想创建图像映射的关键帧中放入帧标签 #Map。如果没有创建帧标签，Flash 会使用 SWF 文件最后一帧中的按钮创建图像映射。只有在您选择的模板中有 $IM 模板变量时，才可以创建图像映射。请参阅创建图像映射。

要将 Flash 文件发布为 GIF 文件：

  1. 执行以下操作之一以打开“发布设置”对话框：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 在“格式”选项卡上，选择“GIF 图像”类型。在 GIF 图像的“文件”文本框中，使用默认文件名，或输入带 .gif 扩展名的新文件名。
  3. 单击“GIF”选项卡以显示文件设置。
  4. 对于“尺寸”，输入导出的位图图像的宽度和高度值（以像素为单位），或者选择“匹配影片”使 GIF 和 Flash SWF 文件大小相同并保持原始图像的高宽比。
  5. 选择一种“回放”选项，确定 Flash 创建的是静止（“静态”选项）图像还是 GIF 动画（“动画”选项）。如果选择“动画”，可选择“不断循环”或输入重复次数。
  6. 选择一个选项以指定导出的 GIF 文件的外观设置范围：

    “优化颜色”将从 GIF 文件的颜色表中删除所有不使用的颜色。此选项会使文件大小减小 1000 到 1500 字节，而且不影响图像品质，只是稍稍提高了内存要求。该选项对最适色彩调色板没有影响。（最适色彩调色板会分析图像中的颜色，并为选定的 GIF 文件创建一个唯一的颜色表。）

    “交错”会使导出的 GIF 文件在下载时在浏览器中逐步显示。交错使用户可以在文件完全下载之前看到基本的图形内容，并可以在网络连接较慢时以较快的速度下载。不要交错 GIF 动画图像。

    “平滑”会消除导出位图的锯齿，从而生成较高品质的位图图像，并改善文本的显示品质。不过，平滑可能导致彩色背景上的已消除锯齿的图像周围出现灰色像素的光晕，并且它也会增大 GIF 文件的大小。如果出现光晕，或者如果要将透明的 GIF 放置在彩色背景上，那么在导出图像时不要使用平滑操作。

    “抖动纯色”用于抖动纯色和渐变色。请参阅步骤 8 中的抖动选项。

    “删除渐变色”默认情况下是关闭的，该选项使用渐变色中的第一种颜色将 SWF 文件中的所有渐变填充转换为纯色。渐变色会增大 GIF 文件的大小，而且通常品质欠佳。如果使用该选项，请小心选择渐变色的第一种颜色，以免出现意想不到的结果。

  7. 选择一种透明选项，以确定应用程序背景的透明度以及将 Alpha 设置转换为 GIF 时采用的方式：

    “不透明”会将背景变为纯色。

    “透明”使背景透明。

    “Alpha”设置局部透明度。可以输入一个介于 0 和 255 之间的阈值。值越低，透明度越高。值 128 对应 50% 的透明度。

  8. 选择一种抖动选项，指定如何组合可用颜色的像素以模拟当前调色板中不可用的颜色。抖动可以改善颜色品质，但是也会增加文件大小。从以下选项中进行选择：

    “无”会关闭抖动，并用基本颜色表中最接近指定颜色的纯色替代该表中没有的颜色。如果关闭抖动，则产生的文件较小，但颜色不能令人满意。

    “有序”可以提供高质量的抖动，同时文件大小的增长幅度也最小。

    “扩散”可以提供最佳的抖动品质，但会增加文件大小和延长处理时间。而且，它只能在选定了“网页 216 色”调色板时才起作用。

  9. 选择一种调色板类型，以便定义图像的调色板：

    “网页 216 色”使用标准的 216 色浏览器安全调色板来创建 GIF 图像，这样会获得较好的图像品质，并且在服务器上的处理速度最快。

    “最适色彩”会分析图像中的颜色，并为选定的 GIF 文件创建一个唯一的颜色表。此选项对于显示成千上万种颜色的系统而言最佳；它可以创建最精确的图像颜色，但会增加文件大小。要减小用最适色彩调色板创建的 GIF 文件的大小，可使用步骤 10 中的“最多颜色”选项来减少调色板中的颜色数量。

    “接近网页最适色”与“最适色彩”调色板选项相同，只是它将非常接近的颜色转换为网页 216 色调色板。生成的调色板已针对图像进行优化，但 Flash 会尽可能使用网页 216 色调色板中的颜色。如果在 256 色系统上启用了网页 216 色调色板，此选项将使图像的颜色更出色。

    “自定”可以指定已针对选定图像优化的调色板。自定调色板的处理速度与网页 216 色调色板的处理速度相同。要使用此选项，您应知道如何创建和使用自定调色板。要选择自定调色板，请单击对话框底部“调色板”框右边的省略号 (...) 按钮，然后选择一个调色板文件。Flash 支持以 ACT 格式保存的调色板和由 Macromedia Fireworks 及其他主要图形应用程序导出的调色板；有关详细信息，请参阅导入和导出调色板。

  10. 如果在步骤 9 选择了“最适色彩”或“接近网页最适色”调色板，可输入“最多颜色”的值来设置 GIF 图像中使用的颜色数量。选择颜色数量较少，生成的文件就会较小，但却可能会降低图像的颜色品质。
  11. 单击“确定”以保存当前文件的设置。


指定 JPEG 文件的发布设置

JPEG 格式使您可将图像保存为高压缩比的 24 位位图。通常，GIF 格式对于导出线条绘画效果较好，而 JPEG 格式更适合显示包含连续色调（如照片、渐变色或嵌入位图）的图像。

除非您通过输入帧标签 #Static 来标记要导出的其他关键帧，否则 Flash 会将 SWF 文件的第一帧导出为 JPEG。

要将 Flash SWF 文件发布为 JPEG 文件：

  1. 执行以下操作之一以打开“发布设置”对话框：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 在“格式”选项卡上，选择“JPEG 图像”类型。对于 JPEG 文件名，请使用默认文件名，或者输入带 .jpg 扩展名的新文件名。
  3. 单击“JPEG”面板，显示它的设置。
  4. 对于“尺寸”，输入导出的位图图像的宽度和高度值（以像素为单位），或者选择“匹配影片”使 JPEG 图像和舞台大小相同并保持原始图像的高宽比。
  5. 对于“品质”，拖动滑块或输入一个值来控制所使用的 JPEG 文件压缩量。

    图像品质越低则文件越小，反之亦然。请尝试使用不同的设置来确定文件大小和图像品质之间的最佳平衡点。

    注意：通过使用“位图属性”对话框改变每个对象的压缩设置，可以设置每个对象的位图导出品质。如果在“位图属性”对话框中选择默认的压缩选项，就会使用“发布设置”的“JPEG 品质”选项。请参阅设置位图属性。

  6. 选择“渐进”可在 Web 浏览器中逐步显示连续的 JPEG 图像，从而以较快的速度在低速网络连接上显示加载的图像。

    此选项类似于 GIF 和 PNG 图像中的交错选项。

  7. 要保存当前文件中的设置，单击“确定”。


指定 PNG 文件的发布设置

PNG 是唯一支持透明度（Alpha 通道）的跨平台位图格式。它也是用于 Macromedia Fireworks 的本地文件格式。

除非您通过输入帧标签 #Static 来标记要导出的其他关键帧，否则 Flash 会将 SWF 文件中的第一帧导出为 PNG 文件。

要将 Flash SWF 文件发布为 PNG 文件：

  1. 执行以下操作之一以打开“发布设置”对话框：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 在“格式”选项卡上，选择 PNG 图像类型。对于 PNG 文件名，请使用默认文件名，或者输入带 .png 扩展名的新文件名。
  3. 单击“PNG”选项卡。对于“尺寸”，输入导出的位图图像的宽度和高度值（以像素为单位），或者选择“匹配影片”使 PNG 和 Flash SWF 文件大小相同并保持原始图像的高宽比。
  4. 选择一种位深度，以设置创建图像时要使用的每个像素的位数和颜色数：
    • 对于 256 色的图像，请选择“8 位”。
    • 对于数千种颜色的图像，请选择“24 位”。
    • 对于有数千种颜色并带有透明度（32 位）的图像，请选择“24 位 Alpha”。

    位深度越高，文件就越大。

  5. 选择选项以指定导出 PNG 的外观设置：

    “优化颜色”将从 PNG 文件的颜色表中删除所有未使用的颜色。此选项会使文件大小减小 1000 到 1500 字节，而且不影响图像品质，只是稍稍提高了内存要求。该选项对最适色彩调色板没有影响。

    “交错”选项会使导出的 PNG 在下载时在浏览器中逐步显示。交错使用户可以在文件完全下载之前看到基本的图形内容，并可以在网络连接较慢时以较快的速度下载。不要交错 PNG 动画文件。

    “平滑”会消除导出位图的锯齿，从而生成较高品质的位图图像，并改善文本的显示品质。不过，平滑可能导致彩色背景上的已消除锯齿的图像周围出现灰色像素的光晕，并且它也会增大 PNG 文件的大小。如果出现光晕，或者如果要将透明的 PNG 放置在彩色背景上，那么在导出图像时不要使用平滑操作。

    “抖动纯色”用于抖动纯色和渐变色。请参阅步骤 6 中的抖动选项。

    “删除渐变色”默认情况下是关闭的，该选项使用渐变色中的第一种颜色将应用程序中的所有渐变填充转换为纯色。渐变色会增大 PNG 文件的大小，而且通常品质欠佳。如果使用该选项，请小心选择渐变色的第一种颜色，以免出现意想不到的结果。

  6. 如果在步骤 4 中将“位深度”选择为 8 位，则要选择一个抖动选项来指定如何组合可用颜色的像素来模拟当前调色板中没有的颜色。抖动可以改善颜色品质，但是也会增加文件大小。从以下选项中进行选择：

    “无”会关闭抖动，并用基本颜色表中最接近指定颜色的纯色替代该表中没有的颜色。如果关闭抖动，则产生的文件较小，但颜色不能令人满意。

    “有序”可以提供高质量的抖动，同时文件大小的增长幅度也最小。

    “扩散”可以提供最佳的抖动品质，但会增加文件大小和延长处理时间。而且，它只能在选定了“网页 216 色”调色板时才起作用。

  7. 选择调色板类型定义 PNG 图像的调色板：

    “网页 216 色”使用标准的 216 色浏览器安全调色板来创建 PNG 图像，这样会获得较好的图像品质，并且在服务器上的处理速度最快。

    “最适色彩”会分析图像中的颜色，并为选定的 PNG 文件创建一个唯一的颜色表。该选项对于显示成千上万种颜色的系统而言最佳；它可以创建最精确的图像颜色，但所生成的文件要比用“网页 216 色”创建的 PNG 文件大。

    “接近网页最适色”与“最适色彩”调色板选项相同，只是它将非常接近的颜色转换为网页 216 色调色板。所生成的调色板会针对图像进行优化，但是 Flash 会尽可能使用网页 216 色调色板中的颜色。如果 256 色系统上启用了网页 216 色调色板，该选项会使图像的颜色更为出色。

    要减少用最适色彩调色板创建的 PNG 文件的大小，可使用“最多颜色”选项减少调色板颜色数量，如下一步所述。

    “自定”可以指定已针对选定图像优化的调色板。自定调色板的处理速度与网页 216 色调色板的处理速度相同。要使用此选项，您应知道如何创建和使用自定调色板。要选择自定调色板，请单击对话框底部“调色板”框右边的省略号 (...) 按钮，然后选择一个调色板文件。Flash 支持以 ACT 格式保存的调色板和由 Macromedia Fireworks 及其他主要图形应用程序导出的调色板；有关详细信息，请参阅导入和导出调色板。

  8. 如果在步骤 7 选择了“最适色彩”或“接近网页最适色”调色板，可输入“最多颜色”的值来设置 PNG 图像中使用的颜色数量。选择颜色数量较少，生成的文件就会较小，但却可能会降低图像的颜色品质。
  9. 选择“过滤器选项”，选择一种逐行过滤方法使 PNG 文件的压缩性更好，并用一幅特定图像对不同的过滤选项进行实验：

    “无”会关闭过滤功能。

    “下”选项会传递每个字节和前一像素相应字节的值之间的差。

    “上”会传递每个字节和它上面相邻像素的相应字节的值之间的差。

    “平均”会使用两个相邻像素（左侧像素和上方像素）的平均值来预测该像素的值。

    “路径”会计算三个相邻像素（左侧、上方、左上方）的简单线性函数，然后选择最接近计算值的相邻像素作为预测值。

    “最适色彩”会分析图像中的颜色，并为选定的 PNG 文件创建一个唯一的颜色表。该选项对于显示成千上万种颜色的系统而言最佳；它可以创建最精确的图像颜色，但所生成的文件要比用“网页 216 色”创建的 PNG 文件大。通过减少最适色彩调色板的颜色数量，可以减小用该调色板创建的 PNG 的大小。

  10. 要保存当前文件中的设置，单击“确定”。


指定 QuickTime 影片的发布设置

“QuickTime 发布设置”选项将以计算机上安装的 QuickTime 格式来创建影片。例如，如果安装了 QuickTime 5，则 Flash 会以版本 5 格式发布 QuickTime 影片。

在 QuickTime 影片中播放 Flash 文档与在 Flash Player 中完全相同，同样也保留了影片自身的所有交互功能。如果 Flash 文档也包含一个 QuickTime 影片，则 Flash 会将它复制到新 QuickTime 文件中它自己的轨道上。

QuickTime Player 的最新版本（至截稿时止）支持回放 Flash Player 4 SWF 文件。为了获得最佳效果，导出为 QuickTime 格式的 Flash 内容只能包含 Flash Player 4 支持的那些功能。QuickTime Player 将来的版本可能会支持其他 Flash 文件格式。

如果试图将 Flash Player 6 或 7 的内容导出为 QuickTime 格式，则会出现一条错误信息，指出安装的 QuickTime 版本不支持该版本的 Flash Player。

要解决此问题，可以从“发布设置”对话框“Flash”选项卡上的“版本”弹出菜单中选择“Flash Player 4”。有关详细信息，请参阅为 Flash SWF 文件格式设置发布选项。

当可以获得支持 Flash Player 6 及更高版本的 QuickTime Player 更新版本时，您就能够安装更新后的 QuickTime 版本，并将文档发布为用以上 Flash Player 版本播放的 QuickTime 文件。

有关 QuickTime 影片的详细信息，请参阅 QuickTime 文档。

要将 Flash SWF 文件发布为 QuickTime 影片：

  1. 执行以下操作之一以打开“发布设置”对话框：
    • 选择“文件”>“发布设置”。
    • 在文档的“属性”检查器（未选择对象时可用）中，单击“设置”按钮。

    注意：要为即将指定的发布设置创建发布配置文件，请参阅使用发布配置文件。

  2. 在“格式”选项卡上，选择 QuickTime 文件类型。对于 QuickTime 文件名，请使用默认文件名，或者输入带 .mov 扩展名的新文件名。
  3. 单击“QuickTime”面板，显示它的设置。
  4. 对于“尺寸”，输入导出的 QuickTime 影片的宽度和高度值（以像素为单位），或选择“匹配影片”使 QuickTime 影片与 Flash SWF 文件具有相同的大小并保持其高宽比。
  5. 选择一个 Alpha 选项，用以控制 Flash 轨道在 QuickTime 影片中的透明度 (alpha) 模式，同时不影响 Flash 应用程序中的任何 Alpha 设置：

    “Alpha 透明”会使 Flash 轨道 SWF 文件透明并显示 Flash 轨道后面轨道中的所有内容。

    “复制”会使 Flash 轨道不透明并遮住 Flash 轨道后面轨道中的所有内容。

    “自动”使 Flash 轨道在任何其他轨道上方时会变为透明，但如果它位于 SWF 文件的底部或者是 SWF 文件中的唯一轨道，则不透明。

  6. 选择一个“图层”选项，用以控制 Flash 轨道在 QuickTime 影片的堆叠顺序中播放的位置：

    “顶部”可以将 Flash 轨道始终放在 QuickTime 影片中其他轨道的上方。

    “底部”可以将 Flash 轨道始终放在其他轨道的后面。

    “自动”在 Flash 应用程序中 Flash 对象位于视频对象的前面时将 Flash 轨道放在其他轨道的前面，如果 Flash 对象不在前面，就将 Flash 轨道放在所有其他轨道的后面。

  7. 选择“声音流”会让 Flash 将 Flash SWF 文件中的所有流式音频导出到 QuickTime 音轨中，并使用标准的 QuickTime 音频设置重新压缩音频。要更改这些选项，可单击“音频设置”；有关详细信息，请参阅 QuickTime 文档。
  8. 选择控制器以指定用于播放导出影片的 QuickTime 控制器类型（“无”、“标准”或“QuickTime VR”）。
  9. 选择“回放”选项控制 QuickTime 播放影片的方式：

    “循环”将在影片到达最后一帧后再重复播放。

    “开始时暂停”会一直暂停播放影片，直到用户单击影片中的按钮或从快捷菜单中选择“播放”后才开始播放。默认情况下，该选项处于取消选择状态，也就是说，影片一旦加载就立即开始播放。

    “播放每帧”将播放影片的每一帧而不会为保持时间而跳过某些帧，但不播放声音。

  10. 选择“文件平面化（成自包含文件）”会将 Flash 内容和导入的视频内容结合在一起，组成一部 QuickTime 影片。取消选择此选项会使 QuickTime 影片从外部引用导入的文件；若这些文件丢失，影片将无法正常播放。
  11. 要保存当前文件中的设置，单击“确定”。


发布配置文件

您可以创建一个发布配置文件来保存发布设置的配置。然后，您可以导出该发布配置文件，以便在其他文档中使用或供其他人使用。相反地，您还可以导入发布配置文件以便在文档中使用。发布配置文件提供了很多优点，包括以下各项：

  • 您可以创建配置文件，从而以多种媒体格式进行发布。
  • 您可以创建发布配置文件，从而以内部方式发布文件，与为客户机发布文件的方式不同。
  • 公司可以创建标准的发布配置文件，从而确保以一致的方式发布文件。

与默认发布设置类似，发布配置文件保存在文档中，而不是保存在应用程序层。要在另一文档中使用发布配置文件，请将其导出，然后再将该发布配置文件导入到需要使用它的文件中。请参阅导出发布配置文件和导入发布配置文件。


创建发布配置文件

“发布设置”对话框包含一个“创建新配置文件”按钮，使用该按钮，可以基于您指定的发布设置创建配置文件。

要创建发布配置文件：

  1. 在“发布设置”对话框中，单击“创建新配置文件”(+) 按钮。
  2. 在“创建新配置文件”对话框中，为发布配置文件命名，然后单击“确定”。

    新创建的发布配置文件将以选项的形式出现在“发布设置”对话框的“当前配置文件”弹出菜单中。

  3. 在“发布设置”对话框（“文件”>“发布设置”）中指定文档的发布设置，然后单击“确定”。有关配置发布设置的详细信息，请参阅发布 Flash 文档。


重制发布配置文件

如果修改了发布配置文件的发布设置并且要保存修改，则可以创建重制配置文件。

要重制发布配置文件：

  1. 从“发布设置”对话框（“文件”>“发布设置”）的“当前配置文件”弹出菜单中，选择要复制的发布配置文件。
  2. 单击“重制配置文件”按钮。
  3. 在“重制配置文件”对话框的“重制名称”文本框中输入配置文件名称，然后单击“确定”。

    重制的发布配置文件将以选项的形式出现在“发布设置”对话框的“当前配置文件”弹出菜单中。


修改发布配置文件

要修改发布配置文件，只需在“发布设置”对话框中更改设置即可。

要修改发布配置文件：

  1. 从“发布设置”对话框（“文件”>“发布设置”）的“当前配置文件”弹出菜单中，选择要复制的发布配置文件。
  2. 为文档指定新的发布设置，然后单击“确定”。有关如何在对话框中选择选项的详细信息，请参阅发布 Flash 文档。


导出发布配置文件

可以将发布配置文件导出为 XML 文件，以便导入其他文档。导入之后，发布配置文件将以选项的形式出现在“发布设置”对话框的“当前配置文件”弹出菜单中。

要导出发布配置文件：

  1. 从“发布设置”对话框（“文件”>“发布设置”）的“当前配置文件”弹出菜单中，选择要导出的发布配置文件。
  2. 单击“导入/导出配置文件”按钮，然后选择“导出”。
  3. 在“导出配置文件”对话框中，接受默认位置或浏览到新的位置来保存配置文件，然后单击“保存”。


导入发布配置文件

其他用户可以创建和导出发布配置文件，反过来，您可以导入这些配置文件，并选择它们作为发布设置选项。

要导入发布配置文件：

  1. 在“发布设置”对话框（“文件”>“发布设置”）中，单击“导入/导出配置文件”，然后选择“导入”。
  2. 在“导入配置文件”对话框中，浏览到发布配置文件 XML 文件，然后单击“打开”。


删除发布配置文件

当不再需要发布配置文件时，可以将其从文档中删除。

要删除发布配置文件：

  1. 在“发布设置”对话框（“文件”>“发布设置”）的“当前配置文件”弹出菜单中，选择要删除的发布配置文件。
  2. 单击“删除配置文件”按钮。在要求确认删除的对话框中，单击“确定”。


关于 HTML 发布模板

Flash HTML 模板是一个文本文件，包含不变的 HTML 代码及模板代码或变量（这些变量不同于动作脚本变量）。当发布 Flash SWF 文件时，Flash 用您的 HTML 设置代替在“发布设置”对话框中选定的模板中的变量，并生成一个包含嵌入 SWF 文件的 HTML 页。

Flash 提供了各种模板，能够满足大多数用户的需要，这样就不需要编辑包含 Flash SWF 文件的 HTML 页。例如，一个模板只需将 Flash SWF 文件放在生成的 HTML 页上，安装了插件的用户就可以通过 Web 浏览器来观看该文件。

可以轻松地使用同一模板、更改设置和发布新的 HTML 页。如果您精通 HTML 语言，也可以用任何 HTML 编辑器创建自己的模板。创建模板和创建标准的 HTML 页是相同的，只是要用以美元 ($) 符号开头的变量替代与 Flash SWF 文件有关的特定值。

Flash HTML 模板具有以下特性：

  • 出现在“模板”弹出菜单上的单行标题
  • 单击“信息”按钮时出现的详细说明。
  • 以 $ 开头的模板变量，这些变量指定了当 Flash 生成输出文件时，应在什么位置替代参数值。

    注意：如果需要在文档中将 $ 用作其他用途，请使用反斜杠加美元符号 (\ $)。

  • 分别符合 Microsoft Internet Explorer 和 Netscape Communicator/Navigator 的标记要求的 HTML object 和 embed 标记。要在 HTML 页上正确显示 SWF 文件，必须符合这些标记要求。Internet Explorer 使用 object HTML 标记打开 Flash SWF 文件；Netscape 使用 embed 标记。有关详细信息，请参阅使用 object 和 embed 标记。


HTML 发布模板

如果您熟悉 HTML，则可以修改 HTML 模板变量来创建图像映射、文本报告或 URL 报告，或者可以为一些最常用的 Flash object 和 embed 参数（分别对应于 Internet Explorer 和 Netscape Communicator/Navigator）插入您自己的值。

Flash 模板可以包括应用程序的任何 HTML 内容，甚至还可以包含特定解释程序（例如 ColdFusion 和 ASP）的代码。

修改 HTML 发布模板：

  1. 使用 HTML 编辑器打开要更改的 Flash HTML 模板。可以在以下位置中找到这些模板。

    对于 Windows 操作系统：

    Windows 2000 或 XP <boot drive>:\Documents and Settings\<user>\Local Settings\Application Data\Macromedia\Flash MX 2004\<language>\Configuration\HTML

    • <boot drive> 是引导 2000 或 XP 的驱动器（通常为 C）。
    • <user> 是登录到 2000 或 XP 的人员的用户名。
    • <language> 设置为缩写的语言名称。例如，<language> 在美国设置为“en”（表示英语）。

    注意：Application Data 文件夹通常是隐藏文件夹，您可能需要更改 Windows 资源管理器的设置才能看到该文件夹。

    Windows 98 <boot drive>:\Program Files\Macromedia\Flash MX 2004\<language>\First Run\HTML

    对于 Macintosh 操作系统：

    Macintosh OS 10.1.5 和 10.2.6 及更高 <Macintosh HD>/Applications/Macromedia Flash MX 2004/First Run/HTML

  2. 根据需要编辑该模板。
    • 有关 Flash 中支持的变量的信息，请参阅本过程后面附带的表格。
    • 有关创建图像映射、文本报告或 URL 报告，或者为 object 和 embed 参数插入您自己的值的信息，请参阅此过程后有关这些主题的章节。
  3. 当编辑完这些变量后，请将模板保存在从中检索出该模板的同一文件夹中。
  4. 要对 Flash SWF 文件应用模板设置，请选择“文件”>“发布设置”，选择“HTML”面板，然后选择您修改的模板。

    Flash 只更改“发布设置”对话框中选定的模板中的模板变量。

  5. 选择其余的发布设置，然后单击“确定”。有关详细信息，请参阅发布 Flash 文档。


使用 HTML 模板变量

下表列出了 Flash 所能识别的模板变量。有关这些变量使用的所有标记的定义，请参阅编辑 Flash HTML 设置。

属性/参数 | 模板变量
Template title | $TT
Template description start | $DS
Template description finish | $DF
Flash (SWF file) title | $T1
Width | $WI
Height | $HE
Movie | $MO
HTML alignment | $HA
Looping | $LO
Parameters for object | $PO
Parameters for embed | $PE
Play | $PL
Quality | $QU
Scale | $SC
Salign | $SA
Wmode | $WM
Devicefont | $DE
Bgcolor | $BG
Movie text（写入影片文本的区域） | $MT
Movie URL（SWF 文件 URL 的位置） | $MU
Image width（未指定图像类型） | $IW
Image height（未指定图像类型） | $IH
Image filename（未指定图像类型） | $IS
Image map name | $IU
Image map tag location | $IM
QuickTime width | $QW
QuickTime height | $QH
QuickTime filename | $QN
GIF width | $GW
GIF height | $GH
GIF filename | $GN
JPEG width | $JW
JPEG height | $JH
JPEG filename | $JN
PNG width | $PW
PNG height | $PH
PNG filename | $PN


创建图像映射

Flash 可以生成图像映射来显示任何图像，并保持链接至 URL 的按钮的功能。当 HTML 模板包括 $IM 模板变量时，Flash 将插入图像映射代码。$IU 变量标识 GIF、JPEG 或 PNG 文件的名称。

要创建图像映射：

  1. 在 Flash 文档中，选择用于图像映射的关键帧，然后在帧“属性”检查器中将其标注为 #Map（如果看不到“属性”检查器，请选择“窗口”>“属性”）。可以使用具有附加了 GetURL 动作的按钮的任何关键帧。

    如果没有创建帧标签，Flash 会使用 SWF 文件最后一帧中的按钮创建图像映射。这种选择会生成嵌入的图像映射，而不是嵌入的 Flash SWF 文件。

  2. 要选择用于显示图像映射的帧，请执行以下其中一项操作：
    • 对于 PNG 或 GIF 文件，将那个要用于显示的帧标注为 #Static。
    • 对于 JPEG 文件，在发布操作期间，将播放头放置在要用于显示的帧上。
  3. 在 HTML 编辑器中，打开要修改的 HTML 模板。Flash 将 HTML 模板存储在以下位置中：<boot drive>:\Program Files\Macromedia\Flash MX 2004\<language>\
    First Run\HTML。
  4. 保存模板。
  5. 选择“文件”>“发布设置”，单击“格式”选项卡，然后选择图像映射的格式（GIF、JPEG 或 PNG）。
  6. 单击“确定”保存设置。

    例如，将下列代码插入模板中：

    $IM
<img src=$IS usemap=$IU width=$IW height=$IH BORDER=0>

    会在由“发布”命令创建的 HTML 文档中生成如下代码：

    <map name="mymovie">
<area coords="130,116,214,182" href="http://www.macromedia.com">
</map>
<img src="mymovie.gif" usemap="#mymovie" width=550 height=400 border=0>


创建文本报告

$MT 模板变量会使 Flash 将当前 Flash SWF 文件中的所有文本作为注释插入 HTML 代码中。如果要为 SWF 文件的内容编制索引并使搜索引擎可以搜索这些内容，该变量非常有用。


创建 URL 报告

$MU 模板变量使 Flash 生成当前 SWF 文件中的动作所引用的 URL 列表，并将它作为注释插入到当前位置。这样，链接验证工具就可以查看和验证 SWF 文件中的链接。


使用速记模板变量

$PO（用于 object 标记）和 $PE（用于 embed 标记）模板变量是非常有用的速记元素。两种变量都会使 Flash 将一些最常见的 Flash object 和 embed 参数（包括 PLAY ($PL)、QUALITY ($QU)、SCALE ($SC)、SALIGN ($SA)、WMODE ($WM)、DEVICEFONT ($DE) 和 BGCOLOR ($BG)）的任何非默认值插入模板。要了解这些变量的示例，请查看以下部分中的范例模板。


范例模板

此处作为范例显示的是 Flash 中的 Default.HTML 模板文件，它包括许多常用的模板变量。

$TTFlash Only
$DS
Display Macromedia Flash Movie in HTML.
$DF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
$CS
<title>$TI</title>
</head>
<body bgcolor="$BG">
<!--url's used in the movie-->
$MU
<!-- text used in the movie-->
$MT
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=$FV,0,0,0" width="$WI" height="$HE" id="$TI" align="$HA">
<param name="allowScriptAccess" value="sameDomain" />
$PO
<embed $PEwidth="$WI" height="$HE" name="$TI" align="$HA" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>


更改 Flash HTML 设置

HTML 文档是在 Web 浏览器上播放 Flash SWF 文件和指定浏览器设置所需要的文档。如果您熟悉 HTML，则可以在 HTML 编辑器中手动更改或输入 HTML 参数，或者创建自己的 HTML 文件来控制 Flash SWF 文件。

您也可以在发布 SWF 文件时让 Flash 自动创建 HTML 文档；请参阅发布 Flash 文档。有关自定义 Flash 中包含的 HTML 模板的信息，请参阅自定义 HTML 发布模板。


使用 object 和 embed 标记

要在 Web 浏览器中显示 Flash SWF 文件，HTML 文档必须使用具有正确参数的 object 和 embed 标记。

对于 object，其中的四个设置（height、width、classid 和 codebase）是出现在 object 标记内的属性；所有其他设置都是出现在单独的名为 param 标记内的参数。例如：

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100"
height="100" codebase="http://active.macromedia.com/flash7/cabs/
swflash.cab#version=7,0,0,0">
<param name="movie" value="moviename.swf">
<param name="play" value="true">
<param name="loop" value="true">
<param name="quality" value="high">
</object>

对于 embed 标记，所有设置（如 height、width、quality 和 loop）都是出现在开始 embed 标记的两个尖括号之间的属性。例如：

<embed src="moviename.swf" width="100" height="100" play="true"
loop="true" quality="high"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed>

若要一起使用这两种标记，请将 embed 标记正好放在结束 object 标记的前面，如下所示：

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100"
height="100" codebase="http://active.macromedia.com/flash7/cabs/
swflash.cab#version=6,0,0,0">
<param name="movie" value="moviename.swf">
<param name="play" value="true">
<param name="loop" value="true">
<param name="quality" value="high">

<embed src="moviename.swf" width="100" height="100" play="true?
loop="true" quality="high"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed>

</object>

注意：如果既使用 object 标记也使用 embed 标记，则对每个属性或参数都要使用相同的值以确保能在各种浏览器上进行一致的回放。参数 swflash.cab#version=6,0,0,0 是可选参数，如果您不想检查版本号，则可以省略此参数。


参数和属性

下列标记属性和参数描述了由“发布”命令创建的 HTML 代码。在编写自己的用于显示 Flash 内容的 HTML 时，可以参考此列表。除非特别说明，否则所有条目都同时适用于 object 标记和 embed 标记。可选条目也在此列出。Internet Explorer 可以识别用于 object 标记的参数，而 Netscape 则可以识别用于 embed 标记的参数。属性既可用于 object 标记，也可用于 embed 标记。当自定义模板时，可以用此处列出的模板变量替代相应的值。请参阅自定义 HTML 发布模板。

注意：此部分中列出的属性和参数特意以小写字母显示，以符合 XHTML 标准。

devicefont 属性/参数

值

true | false

模板变量：$DE

说明

（可选）对于未选定“设备字体”选项的静态文本对象，指定是否仍使用设备字体进行绘制（如果操作系统提供了所需字体）。

src 属性

值

movieName.swf

模板变量：$MO

说明

指定要加载的 SWF 文件的名称。仅适用于 embed。

movie 参数

值

movieName.swf

模板变量：$MO

说明

指定要加载的 SWF 文件的名称。仅适用于 object。

classid 属性

值

clsid:d27cdb6e-ae6d-11cf-96b8-444553540000

说明

标识浏览器的 ActiveX 控件。输入的值必须与上面的显示完全一致。仅适用于 object。

width 属性

值

n 或 n%

模板变量：$WI

说明

以像素值或浏览器窗口的百分比值来指定应用程序的宽度。

height 属性

值

n 或 n%

模板变量：$HE

说明

以像素值或浏览器窗口的百分比值来指定应用程序的高度。

注意：因为 Flash 应用程序是可缩放的，所以只要高宽比保持不变，不论以任何尺寸播放，它们的品质都不会降低。（例如，以下尺寸的高宽比都是 4:3：640 x 480 像素、320 x 240 像素和 240 x 180 像素。）

codebase 属性

值

http://active.macromedia.com/flash7/cabs/swflash.cab#version=7,0,0,0

说明

标识 Flash Player ActiveX 控件的位置，以便在尚未安装该控件时，浏览器可以自动下载它。输入的值必须与上面的显示完全一致。仅适用于 object。

pluginspage 属性

值

http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash

说明

标识 Flash Player 插件的位置，以便在尚未安装该插件时，用户可以下载它。输入的值必须与上面的显示完全一致。仅适用于 embed 。

swliveconnect 属性

值

true | false

说明

（可选）指定第一次加载 Flash Player 时浏览器是否应启动 Java。如果忽略此属性，默认值为 false。如果在同一页面上同时使用 JavaScript 和 Flash，Java 必须处于运行状态，FSCommand() 函数才能起作用。但是，如果您运行 JavaScript 只是为了检测浏览器或用于其他与 fscommand() 动作无关的目的，则可以通过将 SWLIVECONNECT 设置为 false，从而防止 Java 启动。当没有将 JavaScript 和 Flash 一起使用时，也可以通过将 SWLIVECONNECT 属性明确设置为 true，强制 Java 启动。启动 Java 会显著增加启动 SWF 文件所需的时间，因此，只有在必要时才应将此标记设置为 true。仅适用于 embed。

使用 fscommand() 动作可从独立的放映文件中启动 Java。

play 属性/参数

值

true | false

模板变量：$PL

说明

（可选）指定应用程序是否在浏览器中加载时就开始播放。如果您的 Flash 应用程序是交互式的，则可以让用户通过单击按钮或执行某些其他任务来开始播放。在这种情况下，将 play 属性设置为 false 可禁止应用程序自动开始播放。如果忽略此属性，默认值为 true。

loop 属性/参数

值

true | false

模板变量：$LO

说明

（可选）指定 Flash 内容在它到达最后一帧后是无限制重复播放还是停止。如果忽略此属性，默认值为 true。

quality 属性/参数

值

low | medium | high | autolow | autohigh | best

模板变量：$QU

说明

（可选）指定在应用程序回放期间使用的消除锯齿级别。因为消除锯齿需要更快的处理器先对 SWF 文件的每一帧进行平滑处理，然后再将它们呈现到观众屏幕上，所以需要根据要优化速度还是优化外观来选择一个值：

“Low”使回放速度优先于外观，而且从不使用消除锯齿功能。

“Autolow”优先考虑速度，但是也会尽可能改善外观。回放开始时，消除锯齿功能处于关闭状态。如果 Flash Player 检测到处理器可以处理消除锯齿功能，就会打开该功能。

“Autohigh”在开始时是回放速度和外观两者并重，但在必要时会牺牲外观来保证回放速度。回放开始时，消除锯齿功能处于打开状态。如果实际帧频降到指定帧频之下，就会关闭消除锯齿功能以提高回放速度。使用此设置可模拟 Flash 中的“消除锯齿”命令（“查看”>“预览模式”>“消除锯齿”）。

“Medium”会应用一些消除锯齿功能，但并不会平滑位图。该设置生成的图像品质要高于“Low”设置生成的图像品质，但低于“High”设置生成的图像品质。

“High”使外观优先于回放速度，它始终应用消除锯齿功能。如果 SWF 文件不包含动画，则会对位图进行平滑处理；如果 SWF 文件包含动画，则不会对位图进行平滑处理。

“Best”提供最佳的显示品质，而不考虑回放速度。对所有输出都进行消除锯齿处理，并且对所有位图都进行平滑处理。

如果忽略 quality 属性，其默认值为 high。

bgcolor 属性/参数

值

#RRGGBB（十六进制 RGB 值）

模板变量：$BG

说明

（可选）指定应用程序的背景色。使用此属性来覆盖在 Flash SWF 文件中指定的背景色设置。此属性不影响 HTML 页面的背景色。

scale 属性/参数

值

showall | noborder | exactfit

模板变量：$SC

说明

（可选）当 width 和 height 值是百分比时，定义应用程序如何放置在浏览器窗口中。

“Showall”（默认值）使整个 Flash 内容显示在指定区域中，且不会发生扭曲，同时保持它的原始高宽比。边框可能会出现在应用程序的两侧。

“Noborder”对 Flash 内容进行缩放以填充指定区域，不会发生扭曲，它会使应用程序保持原始高宽比，但有可能会进行一些裁剪。

“Exactfit”使整个 Flash 内容显示在指定区域中，但不尝试保持原始高宽比。可能会发生扭曲。

如果忽略此属性（而且 width 和 height 值是百分比），则它的默认值是 showall。

align 属性

值

Default | L | R | T | B

模板变量：$HA

说明

指定 object、embed 和 img 标记的 align 值，并确定如何在浏览器窗口内放置 Flash SWF 文件。

“默认”使应用程序在浏览器窗口内居中显示，如果浏览器窗口小于应用程序，则会裁剪边缘。

L、R、T 和 B 让应用程序分别沿着浏览器窗口的左、右、上、下边缘对齐，并根据需要裁剪其余三边。

salign 参数

值

L | R | T | B | TL | TR | BL | BR

模板变量：$SA

说明

（可选）指定缩放的 Flash SWF 文件在由 width 和 height 设置定义的区域内的位置。有关这些条件的详细信息，请参阅scale 属性/参数。

L、R、T 和 B 让应用程序分别沿着浏览器窗口的左、右、上、下边缘对齐，并根据需要裁剪其余三边。

TL 和 TR 让应用程序分别与浏览器窗口的左上角和右上角对齐，并根据需要裁剪底边和剩余的右侧或左侧边缘。

BL 和 BR 让应用程序分别与浏览器窗口的左下角和右下角对齐，并根据需要裁剪顶边和剩余的右侧或左侧边缘。

如果忽略此属性，Flash 内容会在浏览器窗口中居中显示。

base 属性

值

基本目录或 URL

说明

（可选）指定用于解析 Flash SWF 文件中的所有相对路径语句的基本目录或 URL。如果 SWF 文件保存在与您的其他文件不同的目录下，这个属性是非常有用。

menu 属性/参数

值

true | false

模板变量：$ME

说明

（可选）指定当观众在浏览器中右击 (Windows) 或按住 Command 键单击 (Macintosh) 应用程序区域时将显示的菜单类型。

“true” 显示完整的菜单，让用户使用各种选项增强或控制回放。

“false” 显示的是一个只包含“关于 Macromedia Flash Player 6”选项和“设置”选项的菜单。

如果忽略此属性，默认值为 true。

wmode 属性/参数

值

Window | Opaque | Transparent

模板变量：$WM

说明

（可选）使您可以使用 Internet Explorer 4.0 中的透明 Flash 内容、绝对定位和分层显示的功能。此标记/属性仅在带有 Flash Player ActiveX 控件的 Windows 中有效。

“Window”在 Web 页上用影片自己的矩形窗口来播放应用程序。“Window”表明 Flash 应用程序与 HTML 层没有任何交互，并且始终位于最顶层。

“Opaque” 使应用程序隐藏页面上位于它后面的所有内容。

“Transparent”使 HTML 页的背景可以透过应用程序的所有透明部分进行显示，这样可能会降低动画性能。

“Opaque windowless”和“Transparent windowless” 都可与 HTML 层交互，并允许 SWF 文件上方的层遮蔽应用程序。这两种选项之间的差异在于“Transparent”允许透明，因此，如果 SWF 文件的某一部分是透明的，则 SWF 文件下方的 HTML 层可以透过该部分显示出来。

如果忽略此属性，默认值为 Window。仅适用于 object。

allowscriptaccess 属性/参数

值

always | never | samedomain

说明

使用 allowscriptaccess 使 Flash 应用程序可与承载它的 HTML 页通信。此参数是必需的，因为 fscommand() 和 getURL() 操作可能导致 JavaScript 使用 HTML 页的权限，而该权限可能与 Flash 应用程序的权限不同。这与跨域安全性有着重要关系。

always 允许随时执行脚本操作。

never 禁止所有脚本执行操作。

samedomain 只有在 Flash 应用程序来自与 HTML 页相同的域时才允许执行脚本操作。

所有 HTML 发布模板使用的默认值均为 samedomain。


预览发布格式和设置

要使用您选定的发布格式和设置来预览 Flash SWF 文件，可以使用“发布预览”命令。该命令会导出文件，并在默认浏览器上打开预览。如果预览 QuickTime 影片，“发布预览”会启动 QuickTime Movie Player。如果预览放映文件，Flash 会启动该放映文件。

要用“发布预览“命令预览文件：

  1. 使用“发布设置”命令定义文件的导出选项；请参阅发布 Flash 文档。
  2. 选择“文件”>“发布预览”，然后从子菜单中选择要预览的文件格式。

    通过使用当前的“发布设置”值，Flash 会在与 Flash 文档 (FLA) 相同的位置创建一个指定类型的文件。在覆盖或删除该文件之前，它一直会保留在此位置上。


使用 Flash Player

Flash Player 播放 Flash 内容与用 Web 浏览器或 ActiveX 主机应用程序播放的效果是一样的。播放器已随 Flash 应用程序一起安装。当您双击 Flash 内容时，操作系统会启动 Flash Player，Flash Player 会接着播放 SWF 文件。使用播放器，可以使那些没有使用 Web 浏览器或 ActiveX 主机应用程序的用户也能够观看 Flash 内容。

可以使用菜单命令或 fscommand() 函数控制 Flash Player 中的 Flash 内容。例如，要使 Flash Player 占据整个屏幕，可以将 fscommand() 指定给某一帧或按钮，然后选择带有参数 true 的 fullscreen 命令。有关详细信息，请参阅向 Flash Player 发送消息以及从 Flash Player 接收消息。

您也可以使用 Flash Player 的上下文菜单打印 Flash 内容的各帧。请参阅从 Flash Player 的上下文菜单中打印。

要通过 Flash Player 控制应用程序，请执行以下操作之一：

  • 选择“文件”>“新建”或“文件”>“打开”打开一个新文件或现有文件。
  • 要更改应用程序的视图，选择“查看”>“缩放比率”，然后从子菜单中选择“显示全部”、“放大”、“缩小”或“100%”。
  • 选择“控制”>“播放”、“后退”或“循环”来控制 Flash 内容回放。


关于为 Flash 配置 Web 服务器

如果需要通过 Web 服务器访问文件，则该服务器必须能将这些文件正确识别为 Flash 内容，这样才能显示这些内容。如果没有 MIME 类型或服务器没有正确传送 MIME 类型，那么浏览器可能会显示错误消息或显示一个带有拼图片的空白窗口。

如果未正确配置服务器，您（或服务器管理员）必须将 Flash SWF 文件 MIME 类型添加至服务器的配置文件，并将以下 MIME 类型与 SWF 文件扩展名关联：

  • 具有 .swf 文件扩展名的 MIME 类型应用程序/x-shockwave-flash。
  • 具有 .spl 文件扩展名的 MIME 类型应用程序/futuresplash。

如果您管理着自己的服务器，请参考您的服务器软件文档资料，以获得关于添加或配置 MIME 类型的指导。如果您不管理自己的服务器，请与您的 Internet 服务供应商、网管或服务器管理员联系，以添加 MIME 类型信息。

如果您的站点在 Macintosh 服务器上，也必须设置下列参数：Action：Binary；
Type：SWFL；Creator：SWF2。


导出概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中的“导出影片”命令使您可以创建能够在其他应用程序中进行编辑的内容，并将 Flash 内容直接导出为单一的格式。例如，可以用以下文件格式导出整个文档：Flash SWF 文件；一系列位图图像；单一的帧或图像文件；或不同格式的活动和静止图像，包括 GIF、JPEG、PNG、BMP、PICT、QuickTime 或 AVI。

在以 SWF 格式导出 Flash 文件时，文本以 Unicode 格式编码，从而提供了对国际字符集的支持，包括对双字节字体的支持。Macromedia Flash Player 6 及更高版本支持 Unicode 编码。有关详细信息，请参阅创建多语言文本。

您如果有 Macromedia Dreamweaver，就可以轻松地将 Flash 内容添加到 Web 站点上。Dreamweaver 可以生成所有需要的 HTML 代码。可以从 Dreamweaver 内启动 Flash 以更新 Flash 内容。请参阅更新 Flash 内容用于 Dreamweaver UltraDev。


导出 Flash 内容和图像

要准备一些用于其他应用程序的 Flash 内容准备，或以特定文件格式导出当前 Flash 文档的内容，可以使用“导出影片”和“导出图像”命令。“导出”命令不会为每个文件单独存储导出设置，“发布”命令也一样。（您可以使用“发布”命令创建将 Flash 内容放到 Web 上所需的所有文件。请参阅发布 Flash 文档。）

“导出影片”命令使您可以将 Flash 文档导出为静止图像格式，而且可以为文档中的每一帧都创建一个带有编号的图像文件。您还可以使用“导出影片”命令将文档中的声音导出为 WAV 文件（仅限 Windows）。

要将当前帧内容或当前所选图像导出为一种静止图像格式或导出为单帧 Flash Player 应用程序，可以使用“导出图像”命令。

请记住以下注意事项：

  • 在将 Flash 图像导出为矢量图形文件（Adobe Illustrator 格式）时，可以保留其矢量信息。您可以在其他基于矢量的绘画程序中编辑这些文件，但是不能将这些图像导入大多数的页面布局和字处理程序中。
  • 将 Flash 图像保存为位图 GIF、JPEG、PICT (Macintosh) 或 BMP (Windows) 文件时，图像会丢失其矢量信息，仅以像素信息保存。您可以在图像编辑器（例如 Adobe Photoshop）中编辑导出为位图的 Flash 图像，但是不能再在基于矢量的绘画程序中编辑它们了。

要导出 Flash 文档文件或图像：

  1. 打开要导出的 Flash 文档，或者，如果要从文档中导出图像，请在当前文档中选择要导出的帧或图像。
  2. 选择“文件”>“导出影片”或“文件”>“导出图像”。
  3. 输入输出文件的名称。
  4. 从“格式”弹出菜单中选择文件格式。
  5. 单击“保存”。

    如果所选的格式需要更多信息，会出现一个“导出”对话框。

  6. 为所选的格式设置导出选项。请参阅关于导出文件格式。
  7. 单击“确定”，然后单击“保存”。


导出文件格式

您可以用数十种不同的格式导出 Flash 内容和图像，如下表中所示。Flash 内容将导出为序列文件，而图像则导出为单个文件。PNG 是唯一支持透明度（作为 Alpha 通道）的跨平台位图格式。某些非位图导出格式不支持 alpha（透明度）效果或遮罩层。

有关特定文件格式的详细信息，请参阅下面的部分：

文件类型 | 扩展名 | Windows | Macintosh
Adobe Illustrator | .ai |  |
GIF 动画、GIF 序列文件和 GIF 图像 | .gif |  |
位图 (BMP) | .bmp |  |
DXF 序列文件和 AutoCAD DXF 图像 | .dxf |  |
增强元文件 (Windows) | .emf |  |
EPS 3.0 预览 | .eps |  |
Flash 文档 (SWF) | .swf |  |
Macromedia Flash 视频 (FLV) | .flv |  |
JPEG 序列文件和 JPEG 图像 | .jpg |  |
PICT (Macintosh) | .pct |  |
PNG 序列文件和 PNG 图像 | .png |  |
QuickTime | .mov |  |
QuickTime 视频 (Macintosh) | .mov |  |
WAV 音频 (Windows) | .wav |  |
Windows AVI (Windows) | .avi |  |
Windows 元文件 | .wmf |  |


Adobe Illustrator

Adobe Illustrator 格式是 Flash 和其他绘画应用程序（例如 Macromedia Freehand）之间进行绘画交换的理想格式。这种格式支持对曲线、线条样式和填充信息的非常精确的转换。Flash 支持 Adobe Illustrator 88、3、5、6 和 8 直至 10 格式的导入和导出。（请参阅导入 Adobe Illustrator、EPS 或 PDF 文件。）Flash 不支持使用“打印”命令生成的 Photoshop EPS 格式或 EPS 文件。

Adobe Illustrator 版本 5 之前的格式不支持渐变填充，只有版本 6 支持位图。

“导出 Adobe Illustrator”对话框使您可以选择 Adobe Illustrator 版本 88、3.0、5.0 或 6.0。

您可以使用 Macromedia Flashwriter 插件将 SWF 格式的文件从 Adobe Illustrator 8 中导出。Adobe Illustrator 版本 9 和 10 有内置的对 SWF 导出的支持，因此 Macromedia Flashwriter 插件不需要这些应用程序。


GIF 动画、GIF 序列文件和 GIF 图像

Animated GIF、GIF Sequence 和 GIF 图像选项可让您导出 GIF 格式的文件。其设置与“发布设置”对话框的“GIF”选项卡中的设置相同，但是以下方面是不同的：

“分辨率”是按照每英寸的点数 (dpi) 为单位设置的。可以输入一个分辨率，也可以单击“匹配屏幕”，使用屏幕分辨率。

“包含”使您可以选择导出最小影像区域，或指定完整文档大小。

“颜色”使您可以将可用于创建导出图像的颜色数量设置为以下三种情况之一：黑白；4 色、6 色、16 色、32 色、64 色、128 色或 256 色；标准颜色（标准 216 色，对浏览器安全的调色板）。

也可以选择使用交错、平滑、透明或抖动纯色。有关这些选项的信息，请参阅配置用于 Flash Player 检测的发布设置。

“动画”仅在使用 GIF 动画导出格式时才可用，它使您可以输入重复的次数，如果为 0 则无限次重复。


位图 (BMP)

Bitmap (BMP) 格式使您可以创建位图图像，供您在其他应用程序中使用。“位图导出选项”对话框具有以下选项：

“尺寸”用于设置导出的位图图像的大小（以像素为单位）。Flash 确保指定的大小始终与原始图像保持相同的高宽比。

“分辨率”用于设置导出的位图图像的分辨率（以每英寸的点数 (dpi) 为单位），并且让 Flash 根据绘画的大小自动计算宽度和高度。要将分辨率设置为与显示器匹配，请选择“匹配屏幕”。

“颜色深度”用于指定图像的位深度。某些 Windows 应用程序不支持较新的 32 位深度的位图图像；如果在使用 32 位格式时出现问题，请使用较早的 24 位格式。

“平滑”会对导出的位图应用消除锯齿效果。消除锯齿可以生成较高品质的位图图像，但是在彩色背景中它可能会在图像周围生成灰色像素的光晕。如果出现光晕，请取消选择此选项。


DXF 序列文件和 AutoCAD DXF 图像

DXF Sequence 和 AutoCad DXF Image 3D 格式使您可以将 Flash 内容导出为 AutoCAD DXF 版本 10 文件，这样就可以在 DXF 兼容的应用程序中对它们进行其他编辑操作。

此格式没有可定义的导出选项。


增强元文件 (Windows)

增强元文件格式 (EMF) 是在 Windows 95 和 Windows NT 中使用的图形格式，它可以保存矢量和位图信息。EMF 对 Flash 绘画中使用的曲线的支持比较早版本的 Windows 元文件格式要好。但是，某些应用程序现在还不支持这种图形格式。

此格式没有可定义的导出选项。


EPS 3.0 预览

您可以将当前帧导出为 EPS 3 文件，以便可以放入其他应用程序（例如页面布局应用程序）中。EPS（内嵌 PostScript）文件可以用 PostScript 打印机进行打印。您可以选择将位图预览包括在导出的 EPS 文件中，以便可以在能够导入和打印 EPS 文件的应用程序（例如 Microsoft Word 和 Adobe PageMaker）中使用它们，但是不能在屏幕上显示它们。

Flash 没有可定义的 EPS 文件导出选项。


Flash 文档 (SWF)

您可以将整个文档导出为 Flash SWF 文件，以便将 Flash 内容放入其他应用程序（例如 Dreamweaver）中。导出文档时选择的选项可以与发布文档时使用的选项相同。请参阅发布 Flash 文档。


Macromedia Flash 视频 (FLV)

Macromedia Flash 视频 (FLV) 文件格式使您可以导入或导出带编码音频的静态视频流。此格式适用于通讯应用程序（如视频会议）以及包含从 Flash Communication Server 中导出的屏幕共享编码数据的文件。

在以 FLV 格式导出包含流式音频的视频剪辑时，将使用“发布设置”对话框中的“流式音频”设置对音频进行压缩。有关音频设置的信息，请参阅为 Flash SWF 文件格式设置发布选项。

FLV 格式的文件是使用 Sorensen 编解码器压缩的。请参阅关于 Sorenson Spark 编解码器。

以 FLV 格式导出视频剪辑：

  1. 在“库”面板中选择视频剪辑。
  2. 从“库”选项菜单中选择“属性”。
  3. 在“嵌入视频属性”对话框中，单击“导出”。
  4. 在“另存为”对话框中，为导出的文件输入一个名称。为该文件选择一个保存位置，然后单击“保存”。
  5. 在“嵌入视频属性”对话框中，单击“确定”以关闭对话框。


JPEG 序列文件和 JPEG 图像

JPEG 导出选项与“JPEG 发布设置”选项相似，只有一点不同：“匹配屏幕”导出选项会使导出的图像大小与 Flash 内容在屏幕上显示的大小相同。“匹配影片”发布选项会使 JPEG 图像大小与 Flash 内容的大小相同，并且保持原始图像的高宽比。

有关详细信息，请参阅指定 JPEG 文件的发布设置。


PICT (Macintosh)

PICT 是 Macintosh 上的标准图形格式，它可以包含位图或矢量信息。 使用“导出 PICT”对话框可以设置以下选项：

“尺寸”用于设置导出的位图图像的大小（以像素为单位）。Flash 确保指定的大小始终与原始图像保持相同的高宽比。

“分辨率”用于设置分辨率，以每英寸的点数 (dpi) 为单位，并可让 Flash 根据绘画的大小自动计算宽度和高度。要将分辨率设置为与显示器匹配，请选择“匹配屏幕”。通常，位图 PICT 图像的分辨率为 72 dpi 时在屏幕上显示的效果最好。

“包含”可以设置要导出的文档的部分，可以选择“最小影像区域”或“完整文档大小”。

“颜色深度”用于指定 PICT 文件是基于对象还是位图。基于对象的图像通常在打印时看起来效果更好，并且缩放不会影像它们的外观。位图 PICT 图像通常在屏幕上的显示效果最好，并且可以在诸如 Adobe Photoshop 的应用程序中进行处理。对于位图 PICT 文件，还可以选择各种不同的颜色深度。

“包含 Postscript”仅可用于基于对象的 PICT 文件，它包含一些用于优化 PostScript 打印机上的打印作业的信息。此信息使文件变得更大，而且不能为所有的应用程序所识别。

“平滑位图”仅可用于位图 PICT。此选项使用消除锯齿来平滑位图图像的锯齿状边沿。


PNG 序列文件和 PNG 图像

PNG 导出设置选项与“PNG 发布设置”选项（请参阅指定 PNG 文件的发布设置）相似，只是在以下方面不同：

“尺寸”会将导出的位图图像的大小设置为您在“宽度”和“高度”字段中输入的像素值。

“分辨率”用于输入一个分辨率，以每英寸的点数 (dpi) 为单位。要使用屏幕分辨率，并且保持原始图像的高宽比，请选择“匹配屏幕”。

“颜色”与“PNG 发布设置”选项卡中的“位深度”选项相同，用于设置创建图像时使用的每个像素的位数。对于具有 256 色的图像，请选择 8 位；对于具有数千种颜色的图像，请选择 24 位；对于具有数千种颜色并且带有透明度（32 位）的图像，请选择 24 位 Alpha。位深度越高，文件就越大。

“包含”使您可以选择导出最小影像区域，或指定完整文档大小。

“过滤器”选项与“PNG 发布设置”选项卡中的选项相匹配。

当导出 PNG 序列文件或 PNG 图像时，还可以应用“PNG 发布设置”中的其他选项，例如“交错”、“平滑”和“抖动纯色”。


QuickTime

QuickTime 导出选项将用与已安装在计算机上的相同的 QuickTime 格式创建具有 Flash 轨道的应用程序。此导出格式使您可以在一个 QuickTime 4 影片中联合使用 Flash 的交互式功能与 QuickTime 的多媒体和视频功能，从而使任何人都可以用 QuickTime 4 插件观看这种影片。

如果将视频剪辑（任意格式）作为嵌入文件导入到文档中，则可以将该文档发布为 QuickTime 影片。如果已将 QuickTime 格式的视频剪辑作为链接文件导入到文档中，也可以将该文档发布为 QuickTime 影片。

将 Flash 内容导出为 QuickTime 影片时，除非该 Flash 文档中包含导入的 QuickTime 影片，否则会将该 Flash 文档中的所有层导出为一个 Flash 轨道。导入的 QuickTime 影片在导出的应用程序中仍保留 QuickTime 格式。

这些导出选项与 QuickTime 发布选项相同。请参阅指定 QuickTime 影片的发布设置。


QuickTime 视频 (Macintosh)

QuickTime 视频格式会将 Flash 文档转换为一个位图序列，嵌入在文件的视频轨道中。Flash 内容将被导出为位图图像，因而不再具有任何交互性。此格式对于在视频编辑应用程序中编辑 Flash 内容非常有用。

“导出 QuickTime 视频”对话框包含以下选项：

“尺寸”用于指定 QuickTime 影片的帧的宽度和高度（以像素为单位）。默认情况下，您只能指定宽度和高度两种设置中的一种，另一个尺寸将自动设置，以保持原始文档的高宽比。要同时设置宽度和高度，请取消选择“保持高宽比”。

“格式”用于选择颜色深度。选项有黑白；4 位、8 位、16 位或 24 位颜色；以及 32 位颜色 alpha（透明度）。

“平滑”会对导出的 QuickTime 影片应用消除锯齿效果。消除锯齿可以生成较高品质的位图图像，但是在彩色背景上它可能会在图像的周围产生灰色像素的光晕。如果出现光晕，请取消选择此选项。

“压缩程序”用于选择一种标准的 QuickTime 压缩程序。有关详细信息，请参阅您的 QuickTime 文档。

“品质”用于控制 Flash 内容所使用的压缩量。影片效果取决于所选的压缩程序。

“声音格式”用于设置文档中声音的导出率。导出率越高，保真度就越高，文件也就越大。较低的导出率可以节省空间。


WAV 音频 (Windows)

“导出影片”中的“WAV”选项会只将当前文档中的声音文件导出到一个 WAV 文件中。可以指定新文件的声音格式。

选择“声音格式”，确定导出声音的采样频率、比特率以及立体声或单声设置。选择“忽略事件声音”可以从导出的文件中排除事件声音。


Windows AVI (Windows)

此格式会将文档导出为 Windows 视频，但是会丢失所有的交互性。Windows AVI 是标准的 Windows 影片格式，它是一种很好的、用于在视频编辑应用程序中打开 Flash 动画的格式。由于 AVI 是基于位图的格式，因此如果包含的动画很长或者分辨率比较高，文档就会非常大。

“导出 Windows AVI”对话框具有以下选项：

“尺寸”用于指定 AVI 影片的帧的宽度和高度（以像素为单位）。宽度和高度两者只能指定其一，另一个尺寸会自动设置，这样会保持原始文档的高宽比。取消选择“保持高宽比”就可以同时设置宽度和高度。

“视频格式”用于选择颜色深度。某些应用程序还不支持 Windows 32 位图像格式。如果在使用此格式时出现问题，请使用较早的 24 位格式。

“压缩视频”会显示一个对话框，用于选择标准的 AVI 压缩选项。

“平滑”会对导出的 AVI 影片应用消除锯齿效果。消除锯齿可以生成较高品质的位图图像，但是在彩色背景上它可能会在图像的周围产生灰色像素的光晕。如果出现光晕，请取消选择此选项。

“声音格式”使您可以设置音轨的采样比率和大小，以及是以单声还是以立体声导出声音。采样比率和大小越小，导出的文件就越小，但是这样可能会影响声音品质。有关将声音导出为 AVI 格式的详细信息，请参阅压缩声音用于导出。


Windows 元文件

Windows 元文件是标准 Windows 图形格式，大多数的 Windows 应用程序都支持该格式。此格式对导入和导出文件会生成很好的效果。它没有可定义的导出选项。请参阅增强元文件 (Windows)。


更新 Flash 内容用于 Dreamweaver UltraDev

如果系统上安装有 Dreamweaver UltraDev，则可以将 Flash SWF 文件直接导出到 Dreamweaver UltraDev 站点中。有关使用 Dreamweaver UltraDev 的详细信息，请参阅 使用 Dreamweaver。

在 Dreamweaver UltraDev 中，可以将 Flash 内容添加到您的页面上。只要单击一次，您就可以更新 Flash 文档 (FLA) 并重新将更新的 Flash 内容自动导出到 UltraDev。

要更新 Flash 内容用于 Dreamweaver UltraDev：

  1. 在 Dreamweaver UltraDev 中，打开包含 Flash 内容的 HTML 页面。
  2. 执行以下其中一项操作：
    • 选择 Flash 内容，然后在“属性”检查器中单击“编辑”。
    • 在“设计”视图中，按住 Control 键 (Windows) 或 Command 键 (Macintosh) 同时双击 Flash 内容。
    • 在“设计”视图中，右击 (Windows) 或按住 Control 键单击 (Macintosh) Flash 内容，然后从上下文菜单中选择“使用 Flash 编辑”。
    • 在“站点”面板中，右击 (Windows) 或按住 Control 键单击 (Macintosh)“设计”视图中的 Flash 内容，然后从上下文菜单中选择“使用 Flash 打开”。

    此时系统上启动 Flash 应用程序。

  3. 如果没有打开导出文件的 Flash 文档 (FLA)，则会出现一个文件定位器对话框。在“打开文件”对话框中定位到该 FLA 文件，然后单击“打开”。
  4. 如果用户使用了 Dreamweaver UltraDev 中的“更改整个站点链接”功能，则会显示一则警告。单击“确定”，对 Flash 内容应用链接更改。单击“不要再警告我”可以防止在更新 Flash 内容时出现该警告消息。
  5. 根据需要在 Flash 中更新该 Flash 文档 (FLA)。
  6. 要保存 Flash 文档 (FLA) 然后将该 Flash 内容重新导出到 Dreamweaver，请执行以下操作之一：
    • 要更新文件并且关闭 Flash，请单击舞台左上角上方的“完成”按钮。
    • 要更新文件并保持 Flash 打开，请选择“文件”>“更新用于 Dreamweaver”。


辅助功能概述

使用 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供的辅助功能，可以创建所有用户（包括残疾人士）都能访问的 Flash 内容。在设计辅助 Flash 应用程序时，应考虑用户将如何与内容进行交互。例如，视力受损的用户可能会依赖于辅助技术，如提供屏幕内容的音频版本的屏幕读取器；而听力受损的用户可能会阅读文档中的文本和字幕。此外，要对行动不便或感知能力受损的用户加以考虑。

有关如何创建可访问内容的快速课程，请选择“帮助”>“如何”>“快速任务”>“创建可访问的 Flash 内容”。要查看可访问应用程序的范例，请参阅在 Flash 中使用辅助功能。

通过使用创作环境用户界面中包含的辅助功能、利用专为实现辅助功能而设计的动作脚本，以及通过遵守建议的设计和开发准则，可以使用 Flash 创建辅助内容。要遵守的各项建议准则并未详述一切细节，它只是指出了要考虑的常见问题。取决于用户的需求，可能还会有其它要求。

视力受损的用户 对于视力受损的用户（包括色盲用户），请您记住以下设计建议：

  • 使用“辅助功能”面板或动作脚本为文档和非文本元素提供说明，以便与屏幕读取器配合使用。请参阅使用 Flash 输入用于屏幕读取器的辅助功能信息和使用动作脚本创建辅助功能。
  • 描述影片的布局和用于在 Flash 应用程序中浏览的各个控件。请参阅使用 Flash 输入用于屏幕读取器的辅助功能信息。
  • 使用“辅助功能”面板或动作脚本设计和实现符合逻辑的 Tab 键顺序。请参阅在“辅助功能”面板中为键盘浏览创建 Tab 键顺序索引（仅限 Flash Professional）和使用动作脚本为辅助对象创建 Tab 键顺序。
  • 设计文档时，使 Flash 内容中的恒定变更不会不必要地造成屏幕读取器进行刷新。例如，应将循环的元素进行分组或将它们隐藏。请参阅在屏幕读取器面前隐藏对象。
  • 为旁述的音频内容提供字幕。请注意，文档中的音频内容可能会干扰能听到屏幕读取器的用户。请参阅测试辅助内容。
  • 确保颜色并非是表达信息的唯一方式。此外，确保前景和背景的对比足以使视力较差或色盲的人士看清楚文本。

视力受损或行动不便的用户 对于视力受损或行动不便的用户，确保控制是与设备无关的（或可通过键盘访问）。

听力受损的用户 对于听力受损的用户，可以为音频内容配上字幕。请参阅听力受损用户的辅助功能。

感知能力受损的用户 感知能力受损的用户对于整齐有序且易于浏览的设计通常有最佳的反应。


世界各地的辅助功能标准

许多国家和地区，包括美国、澳大利亚、加拿大、日本和欧盟中的多个国家和地区，已经采用了根据“全球网联盟”(W3C) 制订的辅助功能标准发展而来的辅助功能标准。W3 发布了“Web 内容辅助功能准则”，在这份文档中，列出了设计者为使 Web 内容可访问而应采取的措施的优先次序。有关“Web 辅助功能倡议”的更多信息，请参阅 W3C 的 Web 站点，网址为 www.w3.org/WAI。

在美国，管制辅助功能的法律常称为第 508 条款，它是美国《康复法案》的修正案。第 508 条款禁止联邦机构购买、开发、扶持或使用残疾人士不能访问的电子技术。除了颁布标准之外，第 508 条款还允许政府雇员和公众在联邦法庭起诉那些违反该法的机构。

有关第 508 条款的其它信息，请参阅以下 Web 站点：

  • 美国政府主办的 Web 站点，网址为 www.section508.gov
  • Macromedia 辅助功能站点，网址为 www.macromedia.com/go/flash_accessibility_cn/


Macromedia Flash 辅助功能 Web 页

有关创建和查看辅助 Flash 内容的最新信息，包括支持的平台、屏幕读取器兼容性、文章和辅助示例，请参阅 Macromedia Flash 辅助功能 Web 页，网址为 www.macromedia.com/software/Flash/productinfo/accessibility/。


了解屏幕读取器技术

屏幕读取器是专为在 Web 站点中浏览并大声读出 Web 内容而设计的软件。视力受损的用户通常依赖于这种技术。可以创建特别设计的 Flash 内容，使其只能与 Windows 平台上的屏幕读取器配合使用。查看此 Flash 内容的用户必须安装 Windows 98 或更高版本，并且装有 Flash Player 6 或更高版本以及 Internet Explorer。

由 Freedom Scientific 开发的 JAWS 就是屏幕读取器软件的一个示例。可以在 Freedom Scientific 的 Web 站点访问 JAWS 页，网址为 www.hj.com/fs_products/software_jaws.asp。另一个常用的屏幕读取器程序是 GW Micro 开发的 Window-Eyes。要访问有关 Window-Eyes 的最新信息，请访问 GW Micro 的 Web 站点，网址为 www.gwmicro.com。要使屏幕读取器可以读出应用程序中的非文本对象，如矢量插图和动画，可以使用“辅助功能”面板将名称及说明与对象关联，以便屏幕读取器大声读出对象。

屏幕读取器帮助用户了解在 Web 页或 Flash 文档中包含了哪些内容。根据您定义的快捷键，可以使用户轻松利用屏幕读取器在文档中浏览。请参阅创建快捷键。

要揭示图形对象的存在，可以使用“辅助功能”面板或动作脚本提供说明。请参阅使用 Flash 输入用于屏幕读取器的辅助功能信息。

因为不同的屏幕读取器应用程序使用不同的方法将信息转换为语音，所以向用户呈现内容的方式将会不同。在设计辅助应用程序时，请记住您无法控制屏幕读取器的工作方式。您只能以这样一种方式标记 Flash 应用程序中的内容：揭示文本的存在并确保屏幕读取器用户可以激活控制。只能控制内容，而不能控制屏幕读取器。这就表示，您可以决定向屏幕读取器揭示影片中存在哪些对象，为它们提供说明，以及决定向屏幕读取器揭示这些对象的存在时的次序。但是，不能迫使屏幕读取器在特定的时间读出特定的文本，或者控制读出内容的方式。因此，请务必使用不同的屏幕读取器来测试应用程序，以确保它们按照您的设想工作。请参阅测试辅助内容。

Flash 和 Microsoft Active Accessibility（仅限于 Windows）

Flash Player 针对 Microsoft Active Accessibility (MSAA) 进行了优化，后者为应用程序和屏幕读取器提供了描述性很强和标准化的通信方式。MSAA 只适用于 Windows 操作系统。有关 Microsoft Accessibility 技术的详细信息，请访问 Microsoft Accessibility 的 Web 站点，网址为 www.microsoft.com/enable/default.aspx。

Flash Player 6 的 Windows ActiveX（Internet Explorer 插件）版本支持 MSAA，但是 Windows Netscape 和 Windows 的独立播放器不支持 MSAA。

小心：目前，在不透明无窗口和透明无窗口模式中不 支持 MSAA。（这些模式是“HTML 发布设置”面板中的选项，适用于具有 Flash ActiveX 控件的 Windows 版 Internet Explorer 4.0 或更高版本。）如果要求 Flash 内容能被屏幕读取器访问，请避免使用这些模式。

通过使用 MSAA，Flash Player 使屏幕读取器可以获得有关以下类型的辅助功能对象的信息。要了解如何为每个对象输入辅助信息，请参阅使用 Flash 输入用于屏幕读取器的辅助功能信息。

动态或静态文本 文本对象的主要属性是其名称。为了遵循 MSAA 规范，文本名称等同于文本字符串的内容。文本对象还可能有关联的说明字符串。对于输入文本字段，Flash 使用显示在该字段正上方或左侧的静态或动态文本来作为其标签。

注意：本身是标签的文本不 会传送给屏幕读取器，而会将该文本的内容用作它所标记的对象的名称。绝不会为创作者提供了名称的按钮或文本字段指定标签。

输入文本字段 输入文本对象具有值、可选的名称、说明字符串和快捷键字符串。像动态文本一样，输入文本对象的名称可能来自于在其上方或左侧的文本对象。

按钮 按钮对象具有状态（按下或未按下），支持会使按钮立即被按下的计划好的默认动作，并且可能还会有名称、说明字符串和快捷键字符串。对于按钮，Flash 会像对待文本输入字段一样，使用完全位于按钮内的文本作为该按钮的标签。

注意：出于辅助功能目的，对于用作按钮并且具有按钮事件处理函数（如 onPress）的影片剪辑，Flash Player 会将其视为按钮而不是影片剪辑。

组件 Flash UI 组件能实现特别的辅助功能。有关详细信息，请参阅使用辅助组件和使用动作脚本创建辅助功能。

影片剪辑 如果影片剪辑不包含任何其它辅助对象，或者使用“辅助功能”面板来为影片剪辑提供名称或说明，则会将影片剪辑作为图形对象向屏幕读取器揭示其存在。如果影片剪辑包含其它辅助对象，则会忽略剪辑本身，而屏幕读取器会获得包含在剪辑中的对象。

注意：所有 Flash 视频对象都被视为简单的影片剪辑。

Flash Player 中的基本辅助功能支持

Flash Player 为所有 Flash 文档都提供了一些基本的辅助功能支持，而不管这些文档是否是使用 Flash 创作工具中包含的辅助功能来设计的。为未使用任何辅助功能的文档提供的这种广泛支持包括以下几项：

动态或静态文本 文本作为名称传输给屏幕读取器程序，但不带任何说明。

输入文本 文本传输给屏幕读取器。不会传输任何名称（但遇到标记关系的情况除外），并且不会传输任何说明或快捷键字符串。

按钮 按钮的状态传输给屏幕读取器。不会传输任何名称（但遇到标记关系的情况除外），并且不会传输任何说明或快捷键字符串。

文档 文档状态传输给屏幕读取器，但不带任何名称或说明。


输入用于屏幕读取器的辅助功能信息

屏幕读取器会大声读出内容的说明和读出文本。此外，当用户在传统应用程序的用户界面（如菜单、工具栏、对话框和输入文本字段）中浏览时，屏幕读取器为其提供协助。

默认情况下，以下对象均被定义为在所有 Flash 文档中都是可访问的，并且包含在 Flash Player 向屏幕读取器软件提供的信息中：

  • 动态文本
  • 输入文本字段
  • 按钮
  • 影片剪辑
  • 完整的 Flash 应用程序

Flash Player 会自动为静态和动态文本对象提供名称，这些名称就是文本的内容。对于上述五种可访问对象的每一种，都可以为其设置说明性属性，以便屏幕读取器能大声读出这些对象。还可以控制 Flash Player 如何决定向屏幕读取器揭示哪些对象的存在。例如，可以指定根本不向屏幕读取器揭示某些可访问对象的存在。


Flash 的“辅助功能”面板

向屏幕读取器提供辅助功能信息的一种方法是使用 Flash 的“辅助功能”面板。另一种方法是使用动作脚本输入辅助功能信息。请参阅使用动作脚本创建辅助功能。

“辅助功能”面板是一个自包含的属性检查器，它可让您为个别 Flash 对象或整个 Flash 应用程序设置辅助功能选项。

如果您在舞台上选择了一个对象，则可以使该对象可访问，然后为其指定各种选项，如名称、说明、快捷键和 Tab 键索引顺序（仅限 Flash Professional）。对于影片剪辑，可以指定是否将子对象信息传送给屏幕读取器（如果使对象可访问，则默认情况下会选定此选项）。

在未选择舞台上任何对象的情况下，使用“辅助功能”面板可以为整个 Flash 应用程序指定辅助功能选项。可以使整个应用程序可访问、使子对象可访问、使 Flash 自动标记对象，以及为对象指定特定的名称和说明。

Flash 文档中的所有对象必须具有实例名称，这样您才能将辅助功能选项应用到这些对象。为对象创建实例名称是在“属性”检查器中进行的。实例名称用于在动作脚本中引用对象。

要打开“辅助功能”面板：

  1. 选择“窗口”>“其他面板”>“辅助功能”。
  2. 从可用的选项中进行选择：

    “使对象可访问”指示 Flash Player 将对象的辅助功能信息传送给屏幕读取器。默认情况下会选定此选项。如果禁用此选项，则不会向屏幕读取器传送对象的辅助功能信息。在测试内容的辅助功能时，您可能会发现禁用此选项很有用。这是因为，某些对象可能是无关重要或修饰性的，而使它们可访问可能会在屏幕读取器中产生混乱的结果。之后，可以手工为标记的对象指定名称，并通过取消选择“使对象可访问”来隐藏标记文本。禁用“使对象可访问”时，“辅助功能”面板上的所有其它控件都被禁用。

    “使子对象可访问”指示 Flash Player 向屏幕读取器传送子对象的信息。此选项只适用于影片剪辑，并且在默认情况下是选定的。启用此选项时，如果对某个影片剪辑禁用此选项，则会使该影片剪辑在辅助对象树中显示为单一的剪辑，即使它包含文本、按钮和其它对象也是如此。该影片剪辑中的所有对象也随即在对象树中隐藏起来。像“使对象可访问”选项一样，此选项的主要用处也是使无关重要的对象在屏幕读取器面前隐藏起来。

    注意：如果某个影片剪辑被用作按钮，则表示它具有一个指定给它的按钮事件处理函数（如 onPress 或 onRelease），此时会忽略“使子对象可访问”选项。这是因为，按钮总是会被视为简单的剪辑，并且绝不会检查其子项（除非是遇到标签的情况）。

    “自动标签”指示 Flash 这样做：使用与舞台上的对象关联的文本自动标记这些对象。请参阅使用自动标签功能。

    “名称”指定对象名称。屏幕读取器通过大声读出对象的名称来标识对象。如果辅助对象没有指定的名称，屏幕读取器可能会读出笼统的文字，例如按钮，从而可能会令人混乱。

    小心：对于在“辅助功能”面板中指定的对象名称，不要将其与在“属性”检查器中指定的实例名称混在一起。

    “描述”可让您输入传送给屏幕读取器的对象说明。此说明由屏幕读取器读出。

    “快捷键”用于向用户描述快捷键。在此文本框中输入的文本由屏幕读取器读出。在此输入快捷键文本不会为所选的对象创建快捷键。为了创建快捷键，必须提供动作脚本键盘处理函数。有关详细信息，请参阅创建快捷键。

    “Tab 键索引”（仅限 Flash Professional）创建 Tab 键顺序，当用户按下 Tab 键时会按此顺序来访问对象。Tab 键索引功能在使用键盘来浏览页面时有效，但对于屏幕读取器的读取顺序则无效。有关如何使用此字段的信息，请参阅在“辅助功能”面板中为键盘浏览创建 Tab 键顺序索引（仅限 Flash Professional）。

有关详细信息，请参阅 Macromedia Flash 辅助功能 Web 页。


为按钮、文本字段和整个 Flash 应用程序选择名称

可以使用“辅助功能”面板为按钮和输入文本字段指定名称，以便它们能被屏幕读取器正确辨识。有两种方法可以做到这一点：

  • 使用自动标签功能将对象附近或对象内的文本指定为标签。
  • 在“辅助功能”面板的名称字段中输入特定的标签。

使用自动标签功能

Flash 会自动为文档中的按钮或输入文本字段指定适当的名称，并会将该名称指定为您已放置在按钮或其它文本字段之上、内部或附近的文本标签。按钮的标签必须显示在按钮形状的边界内。对于下图中的按钮，大多数屏幕读取器会首先读出文字按钮，然后读出文本标签主页。用户可以按下 Return 键或 Enter 键来激活按钮。

表单可能会包含供用户输入其姓名的输入文本字段。带有文本姓名 的静态文本字段显示在输入文本字段的旁边。当 Flash Player 发现类似于这样的排列时，它会假定静态文本对象是用作输入文本字段的标签。

例如，当遇到以下的表单部分时，屏幕读取器会读出“请在此处输入您的姓名”。

在“辅助功能”面板中，如果自动标签功能不适合您的文档，则可以关闭该功能。还可以针对文档中的特定对象关闭自动标签功能。请参阅关闭对象的自动标签功能并指定名称。

为对象提供名称

如果不想将自动标签功能用于整个应用程序，则可以在“辅助功能”面板中关闭该功能并为对象提供名称。如果打开了自动标签功能，也可以选择特定的对象，并在“辅助功能”面板中的“名称”文本框中为该对象提供名称，以便使用该名称来代替对象的文本标签。

如果按钮或输入文本字段没有文本标签，或者如果标签位于 Flash Player 无法检测到的位置，则可以为该按钮或文本字段指定一个名称。如果文本标签位于按钮或文本字段的附近，但您并不想将该文本用作对象的名称，则也可以指定一个名称。

例如，在下图中，描述按钮的文本显示在按钮的外部和右侧。在这个位置中，Flash Player 无法检测到该文本，因此屏幕读取器不会读出它。

要纠正这种现象，请打开“辅助功能”面板，选择该按钮，然后在“名称”和“说明”文本框中分别输入所需的名称（如“左箭头”）和说明（如“转到前一页”）。为防止重复，使该文本对象不可访问。

注意：对象的辅助功能名称与动作脚本实例名称或与对象关联的动作脚本变量名称均无关。有关动作脚本如何处理文本字段中的实例名称和变量名称的信息，请参阅关于文本字段实例和变量名称。（此信息通常适用于所有对象。）

要为按钮、文本字段或整个 Flash 应用程序指定名称和说明：

  1. 执行以下其中一项操作：
    • 要为按钮或文本字段提供名称，请在舞台上选择对象。
    • 要为整个 Flash 应用程序提供名称，请在舞台上取消选择所有对象。
  2. 执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  3. 在“辅助功能”面板中，确保“使对象可访问”（对于按钮或文本字段）或“使影片可访问”（对于整个 Flash 应用程序）选项已被选定（默认设置）。
  4. 在“名称”文本框中为按钮、文本字段或 Flash 应用程序输入名称。
  5. 在“说明”文本框中为按钮、文本字段或 Flash 应用程序输入说明。

要为影片中的选定对象定义辅助功能：

  1. 在舞台上选择对象，然后执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  2. 在“辅助功能”面板中，执行以下其中一项操作：
    • 选择“使对象可访问”（默认设置）以向屏幕读取器揭示对象的存在，以及启用面板中的其它选项。
    • 取消选择“使对象可访问”可使对象在屏幕读取器面前隐藏起来。这会禁用面板中的其它选项。
  3. 根据需要，为选定的对象输入信息：

    动态文本 在“名称”文本框中为文本对象输入名称，并在“说明”文本框中输入可选的文本说明。（要为静态文本提供说明，必须将其转换为动态文本。）

    输入文本字段或按钮 为对象输入名称。在“说明”文本框中输入对象的说明。在“快捷键”文本框中输入快捷键。

    影片剪辑 为对象输入名称。在“说明”文本框中输入说明。选择“使子对象可访问”可向屏幕读取器公开影片剪辑内的对象。

    注意：如果应用程序可以用简单的文本短语描述，而且屏幕读取器可以轻易表达该文本短语，则关闭文档的“使子对象可访问”选项，然后键入适当的说明。

为屏幕读取器指定高级辅助功能选项

Flash 提供了几种辅助功能创作功能，它们比为对象提供名称这一简单功能要强大得多。除了为文本或文本字段、按钮或影片剪辑提供说明之外，以及除了为输入文本字段或按钮提供快捷键之外，还可以关闭文档的自动标签行为。

可以选择使选定的对象在屏幕读取器面前隐藏起来。例如，应隐藏重复的或不表达信息的对象。也可以决定将影片剪辑或 Flash 应用程序中包含的可访问对象隐藏起来，而只向屏幕读取器揭示影片剪辑或 Flash 应用程序本身的存在。

关闭对象的自动标签功能并指定名称

如果自动标签功能未提供正确的信息，可以为个别对象指定名称。

关闭个别对象的自动标签功能并为其指定名称：

  1. 在舞台上，选择您想控制其标签的按钮或输入文本字段。
  2. 执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  3. 在“辅助功能”面板上，选择“使对象可访问”（默认设置）。
  4. 在“名称”文本框中输入对象的名称。

    名称将作为按钮或文本字段的标签被读出。

  5. 要关闭自动标签的辅助功能（并在屏幕读取器面前隐藏标签），请在舞台上选择文本对象。
  6. 如果文本对象是静态文本，将其转换为动态文本：在“属性”检查器中，从“文本类型”弹出菜单中选择“动态文本”。
  7. 在“辅助功能”面板中，取消选择“使对象可访问”。

在屏幕读取器面前隐藏对象

只需关闭某个对象的辅助功能，即可在屏幕读取器面前隐藏该对象。只应隐藏重复的或不表达任何内容的对象。隐藏了某个对象后，屏幕读取器就会忽略该对象。

  1. 在舞台上，选择您想在屏幕读取器面前隐藏的按钮或输入文本字段。
  2. 执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  3. 在“辅助功能”面板中，执行以下其中一项操作：
    • 如果对象是影片剪辑、按钮、文本字段或其它对象，取消选择“使对象可访问”。
    • 如果对象是影片剪辑的子项，取消选择“使子对象可访问”。

创建快捷键

可以为对象（如按钮）创建快捷键，以使用户无需倾听整页的内容就能快速定位到该对象。例如，可以创建快捷键，使用户能快速定位到菜单、工具栏、下一页或提交按钮。

创建快捷键有两个步骤：

  • 编写动作脚本代码以便为对象创建快捷键。请参阅Key 类 。如果为输入文本字段或按钮提供快捷键，则还必须使用动作脚本的 Key 类检测用户在 Flash 内容回放时按下的键。请参阅捕获按键。
  • 选择对象，然后将快捷键的名称添加到“辅助功能”面板，以便屏幕读取器能读出它。

快捷键功能还依赖于所用的屏幕读取器软件。请务必使用多个屏幕读取器来测试 Flash 内容。例如，按键组合 Control+F 对于浏览器和屏幕读取器都是保留的按键。箭头键也是屏幕读取器保留的按键。通常，可以使用键盘上的按键 0-9 作为快捷键。但是，甚至连 0-9 这些按键也逐渐为屏幕读取器所使用，因此测试快捷键是很重要的。请参阅测试辅助内容。

为屏幕读取器指定快捷键的名称：

  1. 在舞台上，选择要为其创建快捷键的按钮或输入文本字段。
  2. 执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  3. 在“快捷键”字段中，按以下惯例键入快捷键的名称：
    • 拼写出按键的全称，如 Control 或 Alt。
    • 对于字母字符，使用大写字母。
    • 在按键名称之间使用加号 (+)，中间不留空格 - 例如 Control+A。

    警告：Flash 不会检查是否已创建了对快捷键进行编码的动作脚本。

快捷键示例

例如，如果想为实例名称是 myButton 的按钮创建快捷键 Control+7，可以执行以下操作：

  1. 在舞台上选择该按钮，显示“辅助功能”面板，然后在“快捷键”字段中键入 Control+7。
  2. 在“动作”面板中输入以下代码：
    function myOnPress() {
  trace( "您好" );
}

function myOnKeyDown() {
  if (Key.isDown(Key.CONTROL) && Key.getCode() == 55) // 55 是 7 的键控代码
  {
    Selection.setFocus( myButton );
    myButton.onPress();
  }
}

var myListener = new Object();
myListener.onKeyDown = myOnKeyDown;
Key.addListener( myListener );

myButton.onPress = myOnPress;
myButton._accProps.shortcut = "Ctrl+7"
Accessibility.updateProperties();

    注意：此示例将快捷键 Control+7 指定给实例名称为 myButton 的按钮，并且使屏幕读取器可以获得有关此快捷键的信息。在此示例中，当您按 Control+7 时，myOnPress 函数会在“输出”面板中显示文本“您好”。请参阅Key.addListener()。


使整个 Flash 应用程序可访问

在完成 Flash 文档并准备好进行发布之后，使整个 Flash 应用程序可访问。

为整个 Flash 应用程序定义辅助功能：

  1. 在完成并准备发布或导出 Flash 文档时，取消选择文档中的所有元素，然后执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  2. 在“辅助功能”面板中，选择“使影片可访问”（默认设置），以便向屏幕读取器揭示文档的存在。
  3. 选择或取消选择“使子对象可访问”选项，以便向屏幕读取器揭示文档中所有可访问对象的存在（或使屏幕读取器忽略这些对象）。
  4. 如果在步骤 3 中选择了“使影片可访问”，则根据需要为文档输入信息：
    • 在“名称”文本框中输入文档的名称。
    • 在“说明”文本框中输入文档的说明。
  5. 选择“自动标签”（默认设置），以便将文本对象用作文档中包含的可访问按钮或输入文本字段的自动标签。取消选择此选项会关闭自动标签功能，并将文本对象向屏幕读取器公开为文本对象。

配合屏幕读取器使用声音

对于绝大多数屏幕读取器的用户而言，声音是最重要的媒介。请考虑文档中的声音将如何与屏幕读取器大声读出的文本相互影响。如果 Flash 应用程序中有大量喧闹的声音，屏幕读取器的用户可能很难听清屏幕读取器读出的内容。


查看与创建 Tab 键顺序和读取顺序

Tab 键索引顺序有两个方面 - Tab 键顺序，用户按此顺序在 Web 内容中浏览；屏幕读取器读取内容时的顺序（称为读取顺序）。

Flash Player 使用从左到右和从上到下的 Tab 键索引顺序。但是，如果您不想使用此顺序，则可以在动作脚本中使用 tabIndex 属性来自定义 Tab 键顺序和读取顺序（在动作脚本中，tabIndex 属性与读取顺序的含义相同）。

Tab 键顺序 可以创建 Tab 键顺序，以确定在用户按 Tab 键时对象收到输入焦点的顺序。可以使用动作脚本来创建此顺序；或者，如果您具有 Flash MX 2004 Professional，则可使用“辅助功能”面板来指定 Tab 键顺序。请记住，在“辅助功能”面板中指定的 Tab 键索引不一定控制读取顺序。请参阅在“辅助功能”面板中为键盘浏览创建 Tab 键顺序索引（仅限 Flash Professional）。

读取顺序 也可以控制屏幕读取器在读取有关对象的信息时所依据的顺序（称为读取顺序）。要创建读取顺序，必须使用动作脚本为每个实例指定 Tab 键索引。必须为每个可访问对象创建 Tab 键索引，而不只是对可获得焦点的对象这样做。例如，即使用户无法通过按 Tab 键来选择动态文本，它也必须具有 Tab 键索引。如果未为指定帧中的每个可访问对象产生 Tab 键索引，则当屏幕读取器在运行时，Flash Player 会忽略该帧的所有 Tab 键索引，并改为使用默认的 Tab 键顺序。请参阅使用动作脚本为辅助对象创建 Tab 键顺序。


在“辅助功能”面板中为键盘浏览创建 Tab 键顺序索引（仅限 Flash Professional）

可以在“辅助功能”面板中为键盘浏览创建 Tab 键顺序索引。可以为以下对象创建自定义的 Tab 键顺序：

  • 动态文本
  • 输入文本
  • 按钮
  • 影片剪辑，包括编译的影片剪辑
  • 组件
  • 屏幕

注意：也可以使用动作脚本创建键盘浏览的 Tab 键顺序索引。请参阅使用动作脚本为辅助对象创建 Tab 键顺序。

Tab 键焦点按数字顺序出现，从最低的索引编号开始。一旦 Tab 键焦点到达最高的 Tab 键索引，焦点即会返回到最低的索引编号。

在文档中移动由用户设置了 Tab 键索引的对象时，或者将这些对象移到其它文档时，Flash 会保留索引属性。您应在移动后检查并解决索引冲突，如舞台上两个不同的对象具有相同的 Tab 键索引编号。

小心：如果指定帧中的两个或更多个对象具有相同的 Tab 键索引，Flash 会遵循对象在舞台上的放置顺序。因此，建议您解决所有的 Tab 键索引冲突，以确保能获得所需的 Tab 键顺序索引。

要创建 Tab 键顺序索引：

  1. 选择要指定 Tab 键顺序的对象，然后执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  2. 如果只是为选定的对象提供索引，请在“Tab 键索引”文本框中输入一个正整数（最大为 65535），以反映选定的对象接收焦点的顺序。

    注意：有关使用动作脚本创建 Tab 键顺序的信息，请参阅使用动作脚本为辅助对象创建 Tab 键顺序。如果启用了“显示 Tab 键顺序”选项，在动作脚本中创建的 Tab 键索引并不会显示在舞台上。

要查看 Tab 键顺序：

  • 选择“视图”>“显示 Tab 键顺序”。

    各对象的 Tab 键索引编号显示在对象的左上角。

    注意：如果启用了“显示 Tab 键顺序”选项，使用动作脚本代码而不是“辅助功能”面板创建的 Tab 键顺序并不会显示出来。


关于动画和视力受损者的辅助功能

在某些情况下，您可能想在影片回放的过程中更改某个可访问对象的属性。例如，您可能想指出在动画中的某个关键帧上发生的变化。

要更新某个可访问对象的属性：

  1. 显示您想更改其属性的帧。
  2. 执行以下其中一项操作：
    • 如果“属性”检查器没有显示，请选择“窗口”>“属性检查器”。在“属性”检查器中，单击“辅助功能”按钮。
    • 选择“窗口”>“其他面板”>“辅助功能”。
  3. 在“辅助功能”面板中，根据需要更改该对象的属性。

另外，您也可以使用动作脚本来更新辅助功能属性。请参阅使用动作脚本创建辅助功能。

不同的屏幕读取器会以不同的方式对待帧中的新对象。某些屏幕读取器可能只会读取新对象。另一些屏幕读取器可能会重复读取整个文档。

尽力避免将文档中的文本、按钮和输入文本字段制成动画。如果使这些类型的对象保持静态，则可减少使屏幕读取器发出可能会令用户厌烦的多余“闲话”的机会。此外，最好不要让 Flash 内容出现循环。

如果使用“文本分离”之类的功能将文本制成动画，Flash Player 将无法确定该文本的实际文本内容。含有信息的图形的其它示例包括图标和表示姿态的动画。通过为文档中的某些可访问对象或为整个 Flash 应用程序提供名称或说明，可以纠正此类问题。请参阅使整个 Flash 应用程序可访问。您也可以在文档中添加补充说明文本，或者将重要的内容从图形转换为文本。


使用辅助组件

为了快速建立辅助应用程序，Macromedia 已建立了一组核心 UI 组件。利用这些组件，可以自动实现与标记、键盘访问和测试有关的许多种最常见的辅助功能，并有助于确保用户在各个丰富的应用程序中能获得一致的体验。Flash 附带了以下一组辅助组件：

  • 简单按钮
  • 复选框
  • 单选按钮
  • 标签
  • 文本输入
  • 文本区域
  • 组合框
  • 列表框
  • 窗口
  • 警告
  • 数据网格

为了与屏幕读取器配合使用，辅助 Flash 组件具有特殊的要求。这些组件必须包含定义其可访问行为的动作脚本。有关哪些辅助组件与屏幕读取器配合使用的信息，请参阅 www.macromedia.com/software/Flash/productinfo/accessibility/ 上的 Macromedia Flash 辅助功能 Web 页。

有关组件的一般信息，请参阅关于组件。

对于每个辅助组件，可使用 enableAccessibility() 命令启用组件的可访问部分。此命令在编译文档时会将组件包含的辅助功能对象包括在内。因为删除已添加到组件中的对象并非易事，所以默认情况下这些选项是禁用的。因此，为每个组件启用辅助功能很重要。只需对每个组件执行此步骤一次；无需为指定文档的组件的每个实例启用辅助功能。请参阅Button 组件、CheckBox 组件、ComboBox 组件、Label 组件、List 组件、RadioButton 组件 和 Window 组件。


使用动作脚本创建可访问的文档

除了 Flash 用户界面中包含的辅助功能之外，您也可以使用动作脚本创建辅助文档。对于应用到整个文档的辅助功能属性，可以创建或修改称为 _accProps 的全局变量。请参阅 _accProps°

对于应用到某个特定对象的属性，可以使用语法 instancename._accProps。_accProps 的值是一个可以包含以下任何属性的对象：

属性 | 类型 | “辅助功能”面板中的等效选项 | 应用到
.silent | 布尔型 | 使影片可访问/使对象可访问（反逻辑） | 整个文档 按钮 影片剪辑 动态文本 输入文本
.forceSimple | 布尔型 | 使子对象可访问（反逻辑） | 整个文档 影片剪辑
.name | 字符串 | 名称 | 整个文档 按钮 影片剪辑 输入文本
.description | 字符串 | 说明 | 整个文档 按钮 影片剪辑 动态文本 输入文本
.shortcut | 字符串 | 快捷键 | 按钮 影片剪辑 输入文本

注意：反逻辑的意思是，动作脚本中的 true 值对应于“辅助功能”面板中某个未选定的复选框，而动作脚本中的 false 值对应于“辅助功能”面板中某个选定的复选框。

单独修改 _accProps 变量并无效果。还必须使用 Accessibility.updateProperties 方法将 Flash 内容的更改通知屏幕读取器的用户。调用此方法会使 Flash Player 重新检查所有的辅助功能属性，为屏幕读取器更新属性说明，并且如有必要，向屏幕读取器发送事件以指示发生了更改。

同时更新多个对象的辅助功能属性时，只需包含一次对 Accessiblity.updateProperties 的调用即可（对屏幕读取器进行太频繁的更新可能会使某些屏幕读取器变得很“嗦”）。

请参阅 Accessibility.updateProperties()。

使用 Accessibility.isActive() 方法执行屏幕读取器检测

要创建在屏幕读取器启用时表现出特定行为的 Flash 内容，可以使用动作脚本的 Accessibility.isActive 方法。如果屏幕读取器在运行，该方法会返回值 true，反之会返回 false。然后，可以设计 Flash 内容，使其以符合屏幕读取器用法的方式运行，如在屏幕读取器面前隐藏子元素。有关详细信息，请参阅 Accessibility.isActive()。

例如，可以使用 Accessibility.isActive 方法确定是否包含主动提供的动画。主动提供的动画是指，在屏幕读取器未进行任何操作的情况下出现的动画。这可能会给屏幕读取器造成很大的混乱。

Accessibility.isActive() 方法在 Flash 内容和 Flash Player 之间提供异步通信，这就表示，在调用此方法和 Flash Player 进入活动状态这两个时刻之间可能会出现轻微的实时延迟，从而会返回不正确的 False 值。要确保正确调用此方法，可以执行以下操作之一：

  • 在需要作出有关辅助功能的决策时就调用 Accessibility.isActive() 方法，而不是在 Flash 内容第一次播放时使用此方法。
  • 在文档的开头加入一或两秒的短暂延迟，使 Flash 内容有足够的时间与 Flash Player 联系。

    例如，可以使用 onFocus 事件将此方法指定到某个按钮。这通常使影片有足够的时间进行加载，并且您可以放心地假定，屏幕读取器用户在按 Tab 键进行选择时必将选中舞台上的第一个按钮或对象。

使用动作脚本为辅助对象创建 Tab 键顺序

除了使用“辅助功能”面板为对象指定 Tab 键索引之外（请参阅在“辅助功能”面板中为键盘浏览创建 Tab 键顺序索引（仅限 Flash Professional）），也可以通过将 tabIndex 属性指定给以下对象，使用动作脚本创建 Tab 键顺序：

  • 动态文本
  • 输入文本
  • 按钮
  • 影片剪辑，包括编译的影片剪辑
  • 时间轴帧
  • 屏幕

如果为帧创建 Tab 键顺序，并且未为帧中的可访问对象指定 Tab 键顺序，Flash Player 将忽略所有以自定义方式指定的 Tab 键顺序。因此，您应为所有辅助对象提供完整的 Tab 键顺序。此外，对于指定了 Tab 键顺序的所有对象（帧除外），必须在“属性”检查器的“实例名称”文本框中为它们指定实例名称。即使是不能通过按 Tab 键选择的项目（如文本），如果将按 Tab 键顺序读取这些项目，则也需将它们包括在该顺序中。

因为无法为静态文本指定实例名称，所以不能将它包括在 tabIndex 属性值的列表中。因此，只要影片中出现一个静态文本的实例，则会使读取顺序回复到默认顺序。

要指定 Tab 键顺序，应将顺序编号指定到 tabIndex 属性，如下例所示：

_this.myOption1.btn.tabIndex = 1
_this.myOption2.txt.tabIndex = 2

请参阅 Button.tabIndex、MovieClip.tabIndex 和 TextField.tabIndex。

也可以使用 tabChildren 或 tabEnabled 方法来指定自定义的 Tab 键顺序。请参阅 MovieClip.tabChildren、MovieClip.tabEnabled 和 TextField.tabEnabled。


听力受损用户的辅助功能

要为听力受损用户提供辅助功能，可以为某些音频内容配上字幕，这些音频内容对于完整理解所显示的视频资料是不可缺少的。例如，出于辅助功能的考虑，谈话的视频可能需要提供字幕，但与某个按钮关联的短促声音则无需这样。

以下是几种可以用来向 Flash 文档添加字幕的方法：

  • 将文本作为字幕添加，但务必确保字幕在时间轴上与音频同步。
  • 使用 Hi-Caption 查看器，这个由 Hi Software 提供的组件与 Hi-Caption SE 结合用于 Flash。在名为 Captioning Multimedia with Hi-Caption SE for Use with Macromedia Flash MX（使用 Hi-Caption SE 为用于 Macromedia Flash MX 的多媒体插入字幕）的白皮书中，说明了如何同时使用 Hi-Caption SE 和 Flash 来创建带字幕的文档。此白皮书可以在 Macromedia Web 站点上的辅助功能白皮书页中找到，网址为 www.macromedia.com/macromedia/accessibility/whitepapers/。有关 Hi-Caption SE 的详细信息，请参阅 Macromedia 辅助功能字幕插入页上的链接，该页的网址为 www.macromedia.com/macromedia/accessibility/tools/caption.html。


测试辅助内容

测试您的可访问 Flash 应用程序时，请遵循以下建议：

  • 如果设计的文档要与屏幕读取器配合使用，请下载几种屏幕读取器，并在启用屏幕读取器的情况下在浏览器中播放您的应用程序，以对其进行测试。对于文档中插入了独立音频的位置，请确保屏幕读取器不会试图在这些位置“插嘴”。有一些屏幕读取器应用程序提供了演示版供用户免费下载，您应尽量多试用几种屏幕读取器，以确保您的程序能兼容各种屏幕读取器。
  • 如果您创建的是交互式内容，请测试它并检验用户是否只使用键盘就能有效浏览这些内容。这可能是一个特别具挑战性的要求，原因是，不同的屏幕读取器在处理来自键盘的输入时以不同的方式工作，这意味着 Flash 内容可能无法按您的设想接收键击。请务必测试所有快捷键。


从 SWF 文件中打印概述

您可以将打印功能添加到可让用户从 Flash Player 打印的 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 文档上。可以使用动作脚本的 PrintJob 类，或者可以使用 print() 或 printAsBitmap() 动作脚本函数。用户还可以访问 Flash Player 上下文菜单并选择此处的“打印”命令。

另外，用户可以选择从浏览器中打印，而不是从 Flash Player 中打印，方法是从浏览器窗口中选择命令，如“文件”>“打印”。然而，与通过浏览器窗口“打印”菜单进行打印相比，直接从 Flash Player 中打印有以下几个优点：

  • 用户可以打印所有帧或已经在 Flash Player 中标记为可打印的某些帧。另外，可以设置帧的打印区域。
  • 您可以将内容打印指定为矢量图形（以利用较高的分辨率）或位图（以保留透明度和颜色效果）。
  • 动作脚本的 PrintJob 对象通过增加将动态呈现的页面作为单独的打印任务进行打印这项功能，改进了 print() 和 printAsBitmap() 函数。PrintJob 对象还提供了用户的打印机设置，这些设置可专门用于为用户格式化报告。请参阅使用动作脚本 PrintJob 类。
  • 低于 4.0.25 (Windows) 或 4.0.20 (Macintosh) 的 Flash Player 版本不支持帧的直接打印。Flash Player 7 和更高版本支持 PrintJob 类。


关于控制打印

要控制用户可以打印的内容，在为打印设置文档和影片剪辑时请记住下面几点：

  • 调整将指定为可打印的任意帧的页面布局，使其与所需的打印输出相匹配。使用 Flash Player，可打印所有的形状、元件、位图、文本块以及文本字段。SWF 文件中的各层不会在打印输出上合在一起。
  • Flash Player 的打印机驱动程序使用“发布设置”对话框中尺寸、缩放和对齐的 HTML 设置。使用这些设置控制打印布局。
  • 选定的帧以它们在影片剪辑元件中显示的样子打印。可以让用户打印在浏览器中不可见的影片剪辑，方法是使用“动作”面板将影片剪辑的 _visible 属性设置为 false。用 setProperty 动作、补间或任意变形工具更改影片剪辑的属性并不影响影片剪辑如何打印。
  • 对于可打印的影片剪辑，它必须在舞台或工作区中，并且必须为它指定一个实例名。
  • 所有的元素必须全部加载才能打印。可以使用影片剪辑 _framesloaded 属性来查看是否已加载了可打印内容。有关详细信息，请参阅MovieClip._framesloaded。。


支持的打印机

使用 Flash Player，您既可输出到 PostScript 打印机，也可输出到非 PostScript 的打印机。有关支持的 Flash Player 打印平台的列表，请参阅 Macromedia Web 站点上的“Macromedia Flash Player Web Printing FAQ” (www.macromedia.com/software/flash/open/webprinting/faq.html)。


动作脚本的 PrintJob 类

动作脚本的 PrintJob 类除了改进 print () 方法可用的打印功能外，还允许您在运行时期间呈现动态内容，通过一个打印对话框提示用户，以及按照与内容的比例相称的比例打印未缩放的文档。此功能对于呈现和打印外部动态内容（例如数据库内容和动态文本）特别有用。

另外，利用由 PrintJob.start() 函数提供的属性，文档可以访问用户的打印机设置，例如页面高度、宽度以及方向，而且您可以配置文档以动态设置 Flash 内容的格式，使其适合于打印机的设置。


建立打印任务

要建立打印任务，请使用按以下所述的顺序完成任务的函数。紧接以下过程的部分解释了与 PrintJob 对象关联的函数和属性。

由于在对 PrintJob.start() 和 PrintJob.send() 的调用之间您将打印任务假脱机到了用户的操作系统，而且由于 PrintJob 函数可能会临时影响屏幕上 Flash 内容的 Flash Player 内部视图，因此您应该只在对 PrintJob.start() 和 PrintJob.send() 的调用之间执行特定于打印的活动。例如，Flash 内容在 PrintJob.start() 和 PrintJob.send() 之间不应与用户交互。您应该迅速完成打印任务的格式设置，向打印任务添加页面并将打印任务发送到打印机。

要建立打印任务：

  1. 创建打印任务对象的实例：new PrintJob()。
  2. 启动打印任务并显示操作系统的“打印”对话框：PrintJob.start()。有关详细信息，请参阅启动打印任务。
  3. 向打印任务添加页面（每页调用一次以添加到打印任务）：PrintJob.addPage()。有关详细信息，请参阅向打印任务添加页面。
  4. 将打印任务发送到打印机：PrintJob.send()。有关详细信息，请参阅将打印任务发送到打印机。
  5. 删除打印任务：delete PrintJob。有关详细信息，请参阅删除打印任务。

以下是为按钮创建打印任务的动作脚本范例：

myButton.onRelease = function()
{
  var my_pj = new PrintJob();
  var myResult = my_pj.start();
  if(myResult){
    myResult = my_pj.addPage (0, {xMin :0, xMax:400, yMin: 0,
      yMax: 400});
    myResult = my_pj.addPage ("myMovieClip", {xMin :0, xMax: 400,
      yMin:400, yMax:800},{printAsBitmap:true}, 1);
    myResult = my_pj.addPage (1, null,{printAsBitmap:false}, 2);
    myResult = my_pj.addPage (0);

    my_pj.send();
  }
  delete my_pj;
}

任何指定时间都只能运行一个打印任务。在前一个打印任务出现以下情况之前，无法创建第二个打印任务：

  • 打印任务已完全成功，并调用了 PrintJob.send() 方法。
  • PrintJob.start() 方法返回了 false 值。
  • PrintJob.addPage() 方法返回了 false 值。
  • 调用了 delete PrintJob 方法。


关于启动打印任务

调用 PrintJob.start() 方法提示 Flash Player 将打印任务假脱机到用户的操作系统，而且还发出显示用户操作系统的打印对话框的提示。

如果用户从打印对话框中选择开始打印的选项，PrintJob.start() 方法将返回 true 值。（如果用户取消打印任务，此值为 false，这时脚本应只调用 delete）。如果成功，PrintJob.start() 方法将为 paperHeight、paperWidth、pageHeight、pageWidth 和 orientation 属性设置值。

取决于用户的操作系统，在假脱机打印完成和调用 PrintJob.send 函数之前，还可能出现另一个对话框。因此，应迅速调用 PrintJob.addPage() 和 PrintJob.send()。如果在 PrintJob.start() 函数的调用和 PrintJob.send()（它将打印任务发送到打印机）函数的调用之间有十秒的间隔，Flash Player 将有效调用 PrintJob.send()，从而打印使用 PrintJob.addPage() 添加的页并停止假脱机打印。

当构建新的打印任务时，PrintJob 属性将被初始化为 0。当调用 PrintJob.start() 时，在用户选择操作系统打印对话框中的打印选项后，Flash Player 将从操作系统中检索打印设置。PrintJob.start() 函数会设置以下属性的值：

属性 | 类型 | 单位 | 备注
PrintJob.paperHeight | 数 | 点 | 纸张整体高度。
PrintJob.paperWidth | 数 | 点 | 纸张整体宽度。
PrintJob.pageHeight | 数 | 点 | 页面上实际可打印区域的高度；不包括用户设置的任何边距。
PrintJob.pageWidth | 数 | 点 | 页面上实际可打印区域的宽度；不包括用户设置的任何边距。
PrintJob.orientation | 字符串 | 无 | 纵向或横向

注意：点是打印的度量单位，它在大小上等于一个像素（屏幕的度量单位）。有关单位换算的详细信息，请参阅关于缩放。


向打印任务添加页面

可以通过 PrintJob.addPage() 方法向打印任务添加页面。尽管此方法可以包含多达四个参数，但唯一需要的参数是 target/level。三个可选的参数是 printArea、options 和 frameNum。

如果没有使用某一特定的可选参数，但在使用其他的可选参数，则请使用 NULL 代替排除的可选参数。

对于这四个参数，此函数使用以下语法：

MyPrintJob.addPage(target[,printArea:Object, options:Object, frameNum:Number]):boolean;

如果提供的参数无效，打印任务将使用默认的参数值（在后面的部分中详细说明）。

添加新页面的每一次调用都是唯一的，从而使您可以修改参数而不会影响先前设置的参数。例如，可以指定一个页面打印为位图图像，而另一个页面打印为矢量图形。可以向打印任务添加打印任务所需的所有新页面。调用一次添加页面的函数就等于打印了一页。

注意：更改产生的打印输出所需调用的任何动作脚本必须在调用 PrintJob.addPage() 方法之前运行。然而，动作脚本可以在新的 PrintJob() 之前或之后运行。如果某一帧调用了 PrintJob.addPage() 方法，调用本身并不会保证该帧上的“动作脚本”脚本在打印该帧时会运行。


指定目标

target 参数既可以是代表层（例如表示 _root 文档的 0）的数值，也可以是代表影片剪辑的实例名称的字符串 ("myMovieClip")。

指定打印区域

PrintArea 可选参数包括以下值：

{xMin:Number, xMax:Number, yMin:Number, yMax:Number}

xMin、xMax、yMin 和 yMax 值代表与目标层或影片剪辑注册点相关的屏幕像素数量。打印区域的方向是从页面上可打印区域的左上角开始。如果打印区域大于页面上的可打印区域，则超出页面右边缘和下边缘的打印数据将被剪掉。

如果不指定打印区域或指定了无效的打印区域，则打印区域默认为根文档的舞台区域。

关于缩放

默认情况下，打印任务使用 PrintJob 类打印 Flash 内容并且不会缩放该内容。例如，屏幕上宽 144 个像素的对象将打印为 144 点或 2 英寸宽（一点等于一个像素。在创作工具中 72 个像素等于一英寸，而在纸张上 72 点等于一英寸）。

通过了解屏幕和打印的度量单位，可帮助您了解 Flash 屏幕内容如何与打印的页面相对应。像素是屏幕的度量单位，而点是打印的度量单位。像素和点都等于英寸的 1/72。缇 是点或像素的 1/20。

下表进一步说明了度量单位之间的关系。

  • 1 个像素 = 20 缇
  • 1 点 = 20 缇
  • 72 个像素 = 1 英寸
  • 72 点 = 1 英寸
  • 567 缇 = 1 厘米
  • 1440 缇 = 1 英寸

要在打印之前缩放影片剪辑，请在调用此方法之前设置它的 MovieClip.xscale 和 MovieClip.yscale 属性，然后将它们设置回其原来的值。如果在缩放影片剪辑时还为 printArea 属性传递了一个值，则传递到 printArea 的像素值将会反映影片剪辑的原始大小。即，如果将一个影片剪辑缩小 50%，并指定一个 500 x 500 像素的打印区域，则打印的内容与不缩小影片剪辑时打印的内容完全相同，但是打印的大小是原来的一半。有关详细信息，请参阅PrintJob.addPage()。

指定打印为矢量图像还是位图图形

options 参数使您可以指定是打印为矢量图形还是位图图像。当使用此可选参数时，使用以下语法：

{printAsBitmap:boolean}

默认值为 false，代表请求矢量打印。在确定使用哪个值时，请记住以下建议：

  • 如果所打印的内容包含位图图像，则应指定打印任务打印为位图，以包含所有透明和颜色效果。
  • 相反，如果内容不包含位图图像，则应指定打印任务打印为矢量图形，以充分利用较高的图像品质。

指定要打印的帧

frameNum 参数使您可以指定要打印的帧。如果未指定帧编号参数，则会默认打印在添加页面时指定为第一参数的目标或层的当前帧。


将打印任务发送到打印机

要在使用 addPage() 调用之后将打印任务发送到打印机，请使用 PrintJob.send() 方法，它会使 Flash Player 停止假脱机的打印任务，因而打印机会开始打印。


删除打印任务

将打印任务发送到打印机以后，使用动作脚本函数 delete PrintJob 删除 PrintJob 对象并释放内存。有关详细信息，请参阅delete。


不使用 PrintJob 类打印帧

与使用 print() 和 printAsBitmap() 方法进行打印相比，可以在 Flash Player 7 和更高版本中使用的 PrintJob 类具有许多优点。然而，要通过 Flash Player 6 及更早版本（追溯到 Flash Player 4.0.25 (Windows) 和 4.0.20 (Macintosh)）进行打印，可以使用 print() 和 printAsBitmap() 函数和帧标签。帧标签是一项标准的功能，它仍然是创作工具的一部分并且不使用 PrintJob 类。

要在不依赖 PrintJob 类的情况下从 Flash Player 中进行打印，您可以指定要打印哪些帧和设置其打印区域。

有关使用 PrintJob 类的详细信息，请参阅使用动作脚本 PrintJob 类。


指定可打印的帧（当不使用 PrintJob 对象时）

默认情况下，将打印指定时间轴中的所有帧。在某些情况下，您可能希望限制打印的帧数，例如，当您的动画很长并且有很多帧时。您可指定 SWF 文件中的特定帧可打印，从而只打印这些帧；而不打印未指定的帧。

要指定某些帧可打印，请标注这些帧。

指定可打印的帧：

  1. 打开或激活要发布的 SWF 文件。
  2. 在时间轴中选择要将其设定为可打印的帧并添加关键帧。
  3. 在“属性”检查器（“窗口”>“属性”）中，在“标签”文本框中输入 #p 以将此帧指定为可打印。
  4. 对要指定为可打印的每一帧重复步骤 2 和步骤 3。

    注意：如果文档中有多个 #p 标签，则在您测试或发布 SWF 文件时“输出”窗口中可能会显示一条消息，指出文档中包含重复的帧标签。如果重复的标签都是 #p 标签，可以忽略此消息。

要控制用户可以打印的内容，在为打印设置文档和影片剪辑时请记住下面几点：

  • 调整将指定为可打印的任意帧的页面布局，使其与所需的打印输出相匹配。使用 Flash Player，可打印所有的形状、元件、位图、文本块以及文本字段。SWF 文件中的各层不会在打印输出上合在一起。
  • Flash Player 的打印机驱动程序使用“发布设置”对话框中尺寸、缩放和对齐的 HTML 设置。使用这些设置控制打印布局。
  • 选定的帧以它们在影片剪辑元件中显示的样子打印。可以让用户打印在浏览器中不可见的影片剪辑，方法是使用“动作”面板将影片剪辑的 _visible 属性设置为 false。用 Set Property 动作、补间或任意变形工具更改影片剪辑的属性并不影响影片剪辑如何打印。
  • 对于可打印的影片剪辑，它必须在舞台或工作区中，并且必须为它指定一个实例名。
  • 所有的元素必须全部加载才能打印。可以使用影片剪辑 _framesloaded 属性来查看是否已加载了可打印内容。有关详细信息，请参阅MovieClip._framesloaded。。


指定打印区域（未使用 PrintJob 对象时）

默认情况下，在打印帧时，文档文件的舞台确定打印区域。超出舞台之外的任何对象都被剪切掉，不会打印出来。加载的影片使用它们自己的舞台大小作为打印区域，并不用主影片的舞台大小。

除了使用文档的舞台大小作为打印区域外，您还可设置以下打印区域：

  • 对于 Flash Player 的上下文菜单或 print() 函数，您可以通过选择一帧中的对象作为边框，将 SWF 内容的边框指定为所有帧的打印区域。此选项在某些情况下很有用，例如当您想打印 Web 广告条中的整页数据表时。
  • 利用 print() 函数，您可以用时间轴中所有可打印帧的复合边框作为打印区域，例如，打印共享同一注册点的多个帧。要使用复合边框，可以使用 bMax 参数，如下例所示：
    print ("myMovie", "bmax")
  • 利用 print() 函数，您可更改每一帧的打印区域，并缩放对象以适应打印区域的大小，如让每一帧中不同大小的对象填充打印页面。要更改每一帧的边框，请使用 Print 动作参数中的 Frame 参数，如下例所示：
    print ("myMovie", "bframe")
  • 利用 print() 函数，您可以将文档中某特定帧的边框指定为文档中所有可打印帧的打印区域，如下例所示：
    print ("myMovie", "bmovie")

使用标签 #b 可指定某个帧用于指定打印区域。标签 #b 必须位于与标记为 #p 的帧相同的层上。

有关 print() 函数参数的详细信息，请参阅print()。

要在打印帧时指定打印区域：

  1. 打开包含将设置为要打印的帧的 Flash 文档 (FLA)。
  2. 选择未用 #p 帧标签指定为打印帧的帧。在与 #p 所标记的层相同的层上选择一个帧。

    要组织您的工作，可选择带有 #p 标签的帧后面的一帧。

  3. 在舞台中，创建所需打印区域大小的形状。

    也可选择具有适合打印区域大小的对象的帧，以使用该帧的边框。

  4. 选择时间轴中的帧，其中包含要用于边框的形状。
  5. 如果没有显示“属性”检查器，请选择“窗口”>“属性”。
  6. 在“属性”检查器中，为“标签”输入 #b 以将所选的形状指定为打印区域的边框。

    每个时间轴只能输入一个 #b 标签。这个选项与用打印动作选择影片边框选项一样。


使用 print() 函数（未使用 PrintJob 对象时）

print() 函数（可以将其与文档中的按钮或其他触发器关联以激活打印）的基本语法如下：

print (target,"bounding box");

目标参数指定打印的帧的位置，而边框参数指定打印区域。

您可以向文档中的按钮或其他元素添加 print() 函数，从而使用户可以打印 Flash 内容。可以为按钮、帧或者影片剪辑指定 print() 函数。如果为帧指定了 print() 函数，当播放头到达指定的帧时动作将执行。

除了主时间轴中的帧以外，print() 函数还能让您打印其他影片剪辑中的帧。每个 print() 函数只能设置一个时间轴进行打印，但是此动作允许您在该时间轴中打印任意指定数量的帧。如果将多个 print() 函数附加到一个按钮或者帧上，则执行每个动作时都会显示“打印”对话框。有关 print() 函数的详细信息，请参阅 print()。


更改打印的背景色

使用 Flash Player，可以打印在“文档属性”对话框中设置的背景色。在要打印的时间轴的最低层上放置一个有色的对象，可以只更改要打印的帧的背景色。

更改打印的背景色：

  1. 在要打印的时间轴的最低层上放置一个覆盖舞台的填充形状。
  2. 选择该形状，然后选择“修改”>“文档”。为打印背景选择一种颜色。

    这样可以改变整个影片的背景色，包括影片剪辑和加载的影片的背景色。

  3. 执行以下其中一项操作：
    • 要用这种颜色作为文档打印的背景色，请确保将在其中放置了形状的帧指定为要打印。有关说明，请参阅指定要打印的帧或使用 print() 函数（未使用 PrintJob 对象时）。
    • 对于非打印帧，要保持不同的背景色，请重复步骤 2 和步骤 3。然后在所有未指定为要打印的帧中，将形状放在时间轴的最低层。


使用帧标签禁止打印

如果不想让主时间轴中的任何帧成为可打印帧，则可以将某个帧标记为 !#p 以使整个 SWF 文件都不可打印。将某个帧标记为 !#p 会使 Flash Player 上下文菜单中的“打印”命令变暗。您也可删除 Flash Player 上下文菜单。

即使您禁用从 Flash Player 中打印的功能，用户仍能用浏览器的打印命令打印帧。因为这个命令是浏览器的功能，您不能用 Flash 控制或禁用它。

若要通过屏蔽打印命令禁用 Flash Player 上下文菜单中的打印：

  1. 打开要发布的 Flash 文档 (FLA 文件) 或使其成为活动文档。
  2. 选择主时间轴中的第一个关键帧。
  3. 选择“窗口”>“属性”以查看“属性”检查器。
  4. 在“属性”检查器中，为“标签”输入 !#p 以指定该帧不可打印。

    要在上下文菜单中屏蔽打印命令，只需要指定一个 !#p 标签。

    注意：或者，您也可以选择一个空白帧（而非关键帧），并将其标记为 #p。

要通过删除 Flash Player 的上下文菜单禁止打印：

  1. 打开要发布的 Flash 文档 (FLA 文件) 或使其成为活动文档。
  2. 选择“文件”>“发布设置”。
  3. 选择“HTML”选项卡，然后取消选择“显示菜单”。
  4. 单击“确定”。

有关发布选项的详细信息，请参阅发布 Flash 文档。


从 Flash Player 的上下文菜单中打印

可使用 Flash Player 上下文菜单中的“打印”命令打印任何 Flash SWF 文件中的帧。

上下文菜单的“打印”命令无法打印透明或颜色效果，也无法打印其他影片剪辑中的帧；要获得更高级的打印功能，请使用 PrintJob 对象或 print() 函数。请参阅使用动作脚本 PrintJob 类和使用 print() 函数（未使用 PrintJob 对象时）。

要用 Flash Player 上下文菜单的打印命令打印帧：

  1. 打开要打印其中的帧的文档。

    该命令用舞台作为打印区域或用指定的边框来打印标记为 #p 的帧。

    如果没有具体指定要打印哪些帧，将打印文档主时间轴中的所有帧。

  2. 选择“文件”>“发布预览”>“默认”或按下 F12 键在浏览器中查看 Flash 内容。
  3. 在浏览器窗口中的 Flash 内容中右击 (Windows) 或按住 Control 键单击 (Macintosh) 以显示 Flash Player 的上下文菜单。
  4. 从 Flash Player 的上下文菜单中选择“打印”，以显示“打印”对话框。
  5. 在 Windows 中，选择打印范围以选定要打印哪些帧：
    • 如果没有带标签的帧，选择“全部”将打印所有帧。
    • 选择“页码”，然后输入范围可以打印该范围中带有标签的帧。
    • 选择“选定范围”可以打印当前帧。
  6. 在 Macintosh 上，在“打印”对话框中选择要打印的页面：
    • 选择“全部”时，如果没有带标签的帧则打印当前帧，否则打印所有带标签的帧。
    • 选择“从”，然后输入范围可以打印该范围中带标签的帧。
  7. 根据打印机属性选择其他打印选项。
  8. 单击“确定”(Windows) 或“打印”(Macintosh)。

    注意：从上下文菜单中进行打印不会影响对 PrintJob 对象的调用。


发布带有可打印帧的文档

用“发布”命令生成必需的 Flash HTML 模板后，可以将带有可打印帧的 Flash 文档发布到 Web 上。有关详细信息，请参阅发布 Flash 文档。

用户要利用您添加的任何打印功能以及要能够打印 Flash 中的指定帧，必须装有 Flash Player 4.0.25 (Windows) 或 4.0.20 (Macintosh) 或更高版本。您可设置一个检测方案来检查合适的 Flash Player 版本。

注意：当使用 PrintJob 类时，用户必须具有 Flash Player 7 或更高版本。


创建电子教学内容概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 交互式学习组件帮助您创建在 Flash 中运行的交互式在线教学（电子教学）课程。使用 Flash 交互式学习组件有很多好处：

  • 只要具有启用了 Flash 的 Web 浏览器，任何人都可使用您创建的教学内容。
  • 您可以根据需要自定义界面。因为您使用的是 Flash，所以可以创建快速加载并且在不同平台上都有相同外观的高质量界面。
  • Flash 交互式学习组件提供了一个无需编写代码即可输入数据的简单界面，使用这些组件，您可以轻松地向在线课程添加交互内容。
  • 每个单独的 Flash 交互式学习组件都可向服务器端的学习管理系统 (LMS) 发送跟踪信息，该系统符合美国航空工业 CBT 委员会 (AICC) 协议或可共享内容对象参考模型 (SCORM) 标准。
  • 此外，测验模板跟踪一系列交互组件的累积结果，并且可通过采用符合 AICC 或 SCORM 标准的增强数据跟踪功能将结果传递到 LMS。

如要实际体验一下如何使用测验模板和交互组件，可以学习 eLearning 文件夹内的教程，该文件夹位于您计算机上的 Flash MX 2004 应用程序文件夹中。


Flash 交互式学习组件入门

电子教学课件的运行环境是：任何安装有 Flash Player 6 或更高版本以及启用了 Flash 的 Web 浏览器的计算机。

要跟踪来自 Flash 交互式学习组件的用户数据，您的 Web 服务器端必须具有 LMS，例如与 AICC 或 SCORM 兼容的系统。此外，用户必须有 Internet Explorer 4.0 或 Netscape Navigator 4.0 或更高版本 (Windows)，或者 Netscape 4.5 或更高版本 (Macintosh)。Macintosh 上的 Internet Explorer 不支持通过交互式学习组件向 LMS 发送跟踪信息。


关于 Flash 交互式学习组件

交互组件是 Flash 应用程序的一部分，用户通过在交互组件中与应用程序进行交互来做出响应。典型的响应可以是回答一个问题，从答案“真”或“假”中进行选择，或单击屏幕的某个区域。您可以使用 Flash 提供的六种交互式学习组件来建立交互式课件：

“真或假” 在此类型的交互组件中，用户用“真”或“假”来回答问题。

“多重选择” 用户回答一个具有多重选择的问题。

“填空” 用户键入答案，软件将该答案与匹配的短语进行核对。

“拖放” 用户通过将屏幕上的一个或多个对象拖到目标上来回答问题。

“热区” 用户通过单击屏幕上的一个区域（或多个区域）来做出响应。

“热件” 用户通过单击屏幕上的一个对象（或多个对象）来做出响应。

每个交互式学习组件都有自己独有的参数来决定该组件如何显示给用户。交互组件是 Flash 组件，这使其非常便于在 Flash 文档中实施与配置。有关 Flash 组件的其它信息，请参阅自定义组件。


包含 Flash 交互式学习组件

您可以在 Flash 文档中使用测验模板或独立的交互组件。

  • 测验模板专为需要交互式测验或需要跟踪的方案而设计。测验交互式学习组件采用适合测验格式的图形化设计。测验模板含有特定的机制，能够进行分数累计，以及在与 AICC 和 SCORM 兼容的 API 中启动和停止必要的跟踪。请参阅使用测验模板。
  • 独立的交互组件专为这样的方案而设计：需要单一或系列的交互，这些交互要符合 Flash 文档的特定布局要求。这些组件位于公用库内，并且为独立使用而进行了图形化设计。您可以跟踪各个独立交互组件的结果并将结果发送到与 AICC 兼容的 LMS。请参阅向测验模板添加交互式学习组件。

要初始化 SCORM 跟踪，您必须使用测验模板。


使用测验模板

Flash 提供的三个测验模板都有各不相同的图形外观，但在其它方面都是相同的。它们都含有以下元素：

  • 一个欢迎页
  • 六种交互式学习组件，每种一个
  • 一个结果页
  • 导航元素
  • 收集 AICC 和 SCORM 跟踪信息的动作脚本

测验模板内置了用于在交互组件之间移动的导航功能。它们还含有可将跟踪信息传递到 Web 服务器的动作脚本。

测验模板的功能十分齐全。从测验模板创建新的文档后，您可以立即测试文档以查看测验如何进行，然后再进行修改。随测验提供的是存储在库中影片剪辑内的六种交互式学习组件。这些影片剪辑只是容器，用来容纳构成各个交互组件的元素集合。可通过分离影片剪辑来编辑各个组成部分。

要创建测验：

  1. 通过选择“文件”>“新建”来创建一个新文件。
  2. 在“从模板新建”窗口中选择“模板”选项卡。
  3. 在“类别”列中选择“测验”，然后在“模板”列中选择一种测验样式。


设置测验参数

创建新文件并选择一个测验模板后，下一步是设置测验参数。这些参数控制整个测验如何显示给用户 - 例如，问题是以随机顺序还是连续顺序出现，显示的问题数量以及是否显示结果页。

要设置测验参数：

  1. 选择测验模板中舞台左侧的带有说明的“测验选项”组件。该组件使您可以设置测验的参数。

    注意：这些说明不会出现在 SWF 文件中。

  2. 执行以下操作之一，打开“组件检查器”面板：
    • 选择“窗口”>“开发面板”>“组件检查器”。
    • 在“属性”检查器中单击“启动组件检查器”。

      注意：如果“组件检查器”面板中的文本太小而难以看清，可以拖动面板的一角将面板放大。可能需要取消停放面板才能进行放大。

  3. 如果您希望测验问题以随机顺序出现，而不一定按照问题在时间轴内的出现顺序显示，请选择“随机化”。
  4. 在“提问数量”文本框中，指定在一个测验画面中要提几个问题。如果您将此数字设为 0，则测验将使用所有添加到文档中的问题。如果您输入的数字多于测验中包含的问题，则所显示问题的数量仅限于测验所包含的问题个数，不会重复任何问题。

    例如，如果测验中有 10 个交互式问题，您可以指定向用户显示少于该数量的问题（如 5 个）。这种功能尤其适合与“随机化”功能一起创建以随机顺序显示随机问题的测验。

  5. 输入用于重定向用户的 URL。

    当与 AICC 兼容的 LMS 启动某个测验时，它包含了多个参数，HTML 代码在执行 Flash 应用程序的 embed 标记并且课程正确加载时会查找这些参数。如果未指定参数，则用户被重新引导到“登录文件 URL”字段指定的 URL。如果此字段为空或者采用 SCORM 模板发布 Flash 文件，则不会发生重定向。

  6. 如果您使用 LMS，请在“活动 ID”和“活动名称”文本框中输入 LMS 的活动 ID 和活动名称。如果您未使用 LMS，则您可以接受或删除默认项。
  7. 如果您想在用户完成测验后向其显示测验结果，请选择“显示结果页”。


修改测验中的交互式学习组件

测验中的每个问题都被视为一个交互组件。使用测验模板时，交互组件是按顺序放置在根时间轴上的“交互组件”层的第一帧和最后一帧之间的。只要交互组件保持连续，并且将第一帧保留用于欢迎页以及将最后一帧保留用于结果页，您就可以根据需要添加或删除帧和关键帧。欢迎页和结果页关键帧之间的各帧用于计算分数。

例如，以下各帧组成一个含有 10 个问题的测验：

  • 第 1 帧 = 欢迎页关键帧
  • 第 2 至 第 11 帧 = 交互组件关键帧
  • 第 12 帧 = 结果页关键帧

这 12 个关键帧位于“交互组件”层上。

要修改测验模板中的交互式学习组件：

  1. 选择“交互组件”层中的第一帧，根据需要修改欢迎页中的任何文本。确保包含了提示用户必须单击“下一步”按钮才可继续的文本。不要在此页上添加交互组件。
  2. 在接下来的六帧中选择各个交互式学习组件，并执行以下操作之一：
    • 如果您想使用交互组件，请遵循配置交互式学习组件中的说明。
    • 如果您不想使用交互组件，请遵循从时间轴中删除交互式学习组件中的说明。
  3. 选择“交互组件”层中的最后一帧，根据需要修改结果页中的任何文本。但是，请务必不要修改已提供的动态文本字段名称，否则不会显示结果。不要在此帧中删除或添加交互组件。如果测验的“结果页”测验参数被停用，则不会调用此帧，但仍然会保留它。


配置交互式学习组件

随各个测验模板提供的是存储在库中影片剪辑内的六种交互式学习组件，每种一个。这些影片剪辑只是容器，用来容纳构成各个交互组件的元素集合。将交互组件（影片剪辑）添加到舞台时，您必须分离该组件，以便根据需要自由地编辑单个对象。

要配置交互式学习组件：

  1. 选择整个交互式学习组件后，选择“修改”>“分离”。这会将交互组件分离为若干可以修改的单个对象。

    注意：请注意，交互组件只应分离一次。请参阅进行测试以查看影片剪辑是否已分离。

  2. 取消选择舞台上的所有项目 (Control+Shift+A)。
  3. 选择交互式学习组件。

    注意：不要删除文档中的这些说明；它们含有必需的动作脚本代码，并且不会出现在 SWF 文件中。

  4. 在“属性”检查器中单击“启动组件检查器”。

  5. 如果 Flash 应用程序将向服务器端 LMS 发送跟踪信息，请在“交互组件 ID”文本框中指定交互组件的名称。必须按照 LMS 的指定为测验中的每个交互组件指定唯一的名称。测验模板中的每个交互组件都有唯一的名称。但是，如果您从库中添加交互组件或没有使用测验模板，请确保文件中每个交互组件的名称都是唯一的。
  6. 在“问题”文本框中，键入想显示给用户的文本。这可以是一个问题，也可以是给用户的说明。
  7. 配置交互式学习组件。请参阅以下部分：
    • 配置“拖放”交互组件
    • 配置“填空”交互组件
    • 配置“热件”交互组件
    • 配置“热区”交互组件
    • 配置“多重选择”交互组件
    • 配置“真或假”交互组件
  8. 单击“组件检查器”面板底部的“选项”，然后为交互式学习组件输入反馈和 Knowledge Track 参数。请参阅添加、命名和注册资源、为交互式学习组件设置 Knowledge Track 选项和为交互式学习组件设置导航选项。

    注意：在用测验模板创建的文档中，各个交互式学习组件的“Knowledge Track”选项是打开的，而“导航”选项是关闭的（默认设置），这是因为测验模板有自己的导航控制。

  9. （可选）单击“资源”按钮并更改交互式学习组件的资源。请参阅添加、命名和注册资源。


向测验模板添加交互式学习组件

使用测验模板时，您是在“交互组件”层添加交互式学习组件的。

要在使用测验模板时向时间轴添加交互组件：

  1. 在时间轴的第一层，选择您要向其添加交互组件的帧号的前一帧。

    例如，如果您要向第 8 帧添加交互组件，请选择第 7 帧。

  2. 按住 Shift 键单击其它层上相同的帧号可同时选择这些帧。
  3. 右击 (Windows) 或按住 Control 键单击 (Macintosh) 所选的一帧，然后选择“插入帧”可将时间轴均匀地扩展到所有层中。

  4. 在“交互组件”层上，选择刚才添加的帧，然后选择“插入”>“时间轴”>“空白关键帧”。
  5. 要添加交互组件，请执行以下操作之一：
    • 要复制和粘贴时间轴中已有的交互组件，右击 (Windows) 或按住 Control 键单击 (Macintosh) 具有该交互组件的关键帧，并选择“复制帧”。然后，将该帧粘贴到在步骤 4 中插入的空白关键帧。在这个交互组件副本中，根据需要在舞台上修改对象，或在“组件检查器”面板中修改设置。
    • 要使用库中的交互组件，将需要的交互组件影片剪辑从“交互式学习组件”库（“窗口”>“其他面板”>“共用库”>“交互式学习组件”）拖到空白关键帧中。分离交互组件（选择交换组件并选择“修改”>“分离”），然后编辑资源和参数。


向不使用测验模板的文档添加交互式学习组件

如果向不使用测验模板的 Flash 文档添加交互式学习组件，您可以将独立的交互式学习组件放置在时间轴上的单个帧、连续的多个帧（例如，将 10 个问题放入 10 个连续帧中）或已标记的帧中。

要在不使用测验模板时向时间轴添加独立的交互式学习组件：

  1. 如果向不使用测验模板的文档添加交互组件，请选择适当的层，然后选择“插入”>“时间轴”>“空白关键帧”。
  2. 选择“窗口”>“其他面板”>“公用库”>“交互式学习组件”。“交互式学习组件”库即会出现。

    该库包含六种交互式学习组件影片剪辑：“拖放”、“填空”、“热件”、“热区”、“多重选择”和“真或假”。此外，还有三个分别称为“资源”、“图形”和“UI 组件”的文件夹。它们用于自定义交互式学习组件。请参阅更改按钮、复选框和单选按钮。

  3. 选择新建的关键帧，然后将一个交互式学习组件影片剪辑从“库”面板中拖到舞台上。
  4. 通过将该交互组件拖到您希望其出现在舞台上的位置来重新放置它。
  5. 配置交互式学习组件。请参阅配置交互式学习组件。

    注意：在添加和删除关键帧时注意观察各层的帧计数。确保所有的层在时间轴上都结束于同一帧号，以便所有层中的帧计数都是一样的。


关于交互式学习组件的库资源管理

将交互式学习组件从“交互式学习组件”公用库中拖到舞台时，组成交互式学习组件的元件会从该公用库复制到您创建的 Flash 文档的库中。例如，如果您将“热件”交互式学习组件从“交互式学习组件”公用库中复制到文档中，则下图中的元件将成为该文档的库的一部分。

如果您使用测验模板，则交互式学习组件的元件已经包含在您文档的库中。

要管理库资源，最好为各个图形交互组件创建文件夹，并将这些文件夹放在“资源”文件夹中。然后，您可以使影片剪辑与新文件夹中的交互组件保持关联。


从时间轴中删除交互式学习组件

从时间轴中删除交互式学习组件时，保持交互式学习组件的顺序非常重要。如果从“交互组件”层中删除一个帧，则需要删除所有其它层中的同一帧。

要从时间轴中删除交互组件：

  1. 在“交互组件”层中，选择含有要删除的交互组件的关键帧。如果您想同时删除其它层上的同一帧，请按住 Shift 键选择这些帧号。
  2. 要在所有层中删除帧，请执行以下操作之一：
    • 右击 (Windows) 或按住 Control 键单击 (Macintosh) 关键帧，然后选择“删除帧”。
    • 选择“编辑”>“时间轴”>“删除帧”。

    注意：在添加和删除关键帧时注意观察各层的帧计数。确保所有的层在时间轴上都结束于同一帧号，以便所有层中的帧计数都是一样的。


进行测试以查看影片剪辑是否已分离

最好检查一下交互式学习组件是已分离还是仍然在影片剪辑容器中处于组合状态。

要验证交互式学习组件是否已分离：

  • 在舞台上，选择交互式学习组件的文本字段或任何其它一个元素。

    如果选中的对象仍为组合对象，则交互组件没有分离。

    如果可以选择单个文本字段或其它元素，则交互组件已经分离，您可以进行编辑。


更改交互式学习组件的外观

将交互式学习组件添加到舞台并分离后，您可以放置大多数的资源并调整其大小，就像您在其它 Flash 文档中所做的一样。例如，您可以扩大文本字段，使其可以容纳更多行的文本，还可以调整字体、大小、颜色以及其它文本属性。但是，在更改某些 Flash 组件（如交互式学习组件中的按钮、复选框和单选按钮）时，并不需要作过多的常见处理。请参阅更改按钮、复选框和单选按钮。


更改图形交互式学习组件中的图像

对于“拖放”、“热区”和“热件”交互式学习组件，可通过更改交互组件中图形干扰项（可选项）的外观来配合您的课程目标。

要更改图形交互式学习组件中的图像：

  1. 如果尚未分离交互式学习组件影片剪辑，请选择它，然后选择“修改”>“分离”。
  2. 选择图形对象占位符，例如四个拖动对象占位符和四个目标对象占位符，并删除这些对象。
  3. 要添加您自定义的拖动对象，请创建或导入一个图形，将其转换为影片剪辑元件（“修改”>“转换为元件”）。
  4. 在舞台上所需的位置放置一个元件实例。在“属性”检查器的“实例名称”文本框中，键入影片剪辑实例的名称，例如 DragA。
  5. 在交互组件的“组件检查器”面板的适当“名称”文本框中，输入同样的影片剪辑实例名称（例如 DragA）。“组件检查器”面板只能包含用于当前交互组件的影片剪辑的唯一实例名称。
  6. 对于交互组件内的其它图形对象，重复步骤 3 至 5。

注意：用于导航按钮、“真或假”和“多重选择”交互组件的图形用 Flash UI 组件进行创建。建议只有中级和高级用户才可更改这些图形。有关详细信息，请参阅自定义组件。您还可以调整这些图形的大小以及略微修改其外观。请参阅更改按钮、复选框和单选按钮。


更改按钮、复选框和单选按钮

交互式学习组件使用 Flash 用户界面 (UI) 按钮、复选框、单选按钮和文本输入组件。您必须在交互式学习组件影片剪辑中使用这些 UI 组件。交互式学习组件脚本须使用 UI 组件的内部功能才能正常运行。

测验模板已经含有各个交互组件所需的所有 UI 组件。要在 Flash MX 或更高版本的文档中使用 UI 组件，您必须用动作脚本 2.0 发布 SWF 文件。

调整大小

根据您的需要，可缩放用于“控制”按钮和“重置”按钮的按钮组件，也可缩放复选框、单选按钮和文本输入组件。

要设置按钮、复选框和单选按钮组件的宽度和高度：

  • 选择组件并在“属性”检查器中更改其设置。

UI 组件图形

更改组件外观有一套固定的流程。有关详细信息，请参阅编辑组件外观。

UI 组件文本

您可以用 GlobalStyleSheet 对象来更改 UI 组件的文本特性。有关详细信息，请参阅为交互式学习组件设置控制按钮标签。另请参阅自定义组件。


关于在交互式学习组件中使用组件

要在交互式学习组件中使用 Flash UI 组件，只需将 UI 组件添加到交互组件资源并为其命名实例即可。然后，您需要通过与该交互组件关联的组件来注册实例名称。每个交互式学习组件已经含有作为已命名实例的适当 UI 组件。请参阅添加、命名和注册资源。

有关 UI 组件的完整文档可在 Flash 帮助中找到（“帮助”>“使用 Flash”>“使用组件”）。

注意：UI 组件有一个与之关联的“组件检查器”面板。交互式学习组件脚本在运行时会覆盖“UI 组件检查器”面板中的设置。无需填写每个按钮、复选框、单选按钮或文本输入组件的各个参数。


测试测验

在添加和删除交互组件时经常测试测验非常重要。

要测试测验：

  1. 选择“控制”>“测试影片”。

    测验即会出现在 Macromedia Flash Player 窗口中。

  2. 在问题出现时回答问题。
  3. 完成测验后，在 Flash Player 窗口中关闭测验，返回到编辑文档的工作区。


关于配置交互式学习组件

对于六种交互组件中的每一种，您必须输入特定的参数才能使测验正确执行。“拖放”交互组件要求您指定目标对象和拖动对象。每个目标对象和拖动对象都称为干扰项。干扰项只是一系列可选项中的一个。此术语用于各个交互式学习组件中的选项。例如，利用“多重选择”交互式学习组件，您可输入多重选择干扰项。


配置“拖放”交互组件

在每个“拖放”交互组件中最多可以使用八个拖动对象和八个目标对象。为了进行评估，每个拖动对象均可与在“拖放”组件中命名的任何目标配对。拖动对象还可以共享目标；例如 Drag 1 和 Drag 2 均可与 Target 8 匹配。您还可以指定一个没有拖动对象与其匹配的目标。这使您可以为了评估目的而添加不正确的目标干扰项。

每个目标对象和拖动对象都称为干扰项。干扰项只是一系列可选项中的一个。此术语用于各个交互式学习组件中的选项。

要配置“拖放”交互组件：

  1. 如果您未使用测验模板，请将该交互式学习组件放在舞台上。如果您使用测验模板，请选择“交互组件”层中含有“拖放”交互组件的帧。（即第 2 帧，如果尚未添加或删除关键帧的话。）
  2. 分离影片剪辑（“修改”>“分离”），显示“组件检查器”面板，然后键入交互组件 ID 和问题。请参阅配置交互式学习组件。
  3. 在“拖动对象名称”列中，列出了舞台上各个拖动对象的实例名称。

    每个拖动对象必须有唯一的名称。如果您在舞台上添加了一个新的拖动对象，请确保在此输入其名称。

  4. 在“匹配目标名称”列中，列出了与该拖动对象匹配的目标实例名称。

    每个目标必须有唯一的名称。如果您在舞台上添加了一个新的目标，请确保在此输入其名称。

    如果在“拖动对象名称”列中输入了拖动实例名称，您需要在“匹配目标名称”列中输入对应的目标实例名称。但是，在没有匹配的拖动实例名称的情况下，也可以在“匹配目标名称”列中输入目标实例名称。这会添加一个可以被配对但不作为正确匹配进行评估的目标。

  5. 选择“与开始位置配对”可使拖动对象在未与注册的目标配对时再与其原始位置配对。
  6. 在舞台上选择拖动对象或目标对象的每个实例。用“属性”检查器将各个实例的名称指定为在“组件检查器”面板中指定的相同实例名称。


添加和删除拖动对象与目标对象

通过添加其它对象和目标或删除现有的对象和目标，可以更改默认的对象和目标数量（均为四个）。在一个“拖放”交互式学习组件中可以包含一至八个拖动对象和一至八个目标对象。

要添加拖动对象或目标对象：

  1. 创建一个含有对象图形的影片剪辑元件。例如，如果您有一个具有六种水果的交互组件，并想添加第七种选择，可创建第七种水果的图形并将其放在库中。
  2. 在时间轴上选择“拖放”交互式学习组件，然后将元件从“库”面板中拖到舞台上。
  3. 在“属性”检查器中命名实例。请参阅添加、命名和注册资源。
  4. 将实例名称添加到“拖放”对象的“组件检查器”面板。请参阅命名和注册图形干扰项。

    组件会在运行时为您进行余下的工作。

要删除“拖放”对象：

  1. 选择要删除的“拖放”实例，将其从舞台中删除。
  2. 选择“拖放”组件（位于测验模板中的舞台左侧）。如有必要，通过“属性”检查器打开“组件检查器”面板，使其显示出来。
  3. 在“组件检查器”面板内，从适当的列中删除已删除对象的实例名称。


配置“填空”交互组件

“填空”交互组件使用一个问题文本字段、一个用户输入文本字段、一个控制按钮和一个反馈文本字段。

要设置“填空”交互组件：

  1. 如果您未使用测验模板，请将该交互式学习组件放在舞台上。如果您使用测验模板，请选择“交互组件”层中含有“填空”交互组件的帧。（即第 3 帧，如果尚未添加或删除关键帧的话。）
  2. 分离影片剪辑（“修改”>“分离”），显示“组件检查器”面板，然后键入交互组件 ID 和问题。请参阅配置交互式学习组件。
  3. 在“组件检查器”面板中执行以下操作之一，输入一至三个可能的正确答案：

    • 为用户可能输入的且被视为正确的回答键入文本。选择正确回答右侧的“正确”选项。
    • 要将交互组件设置为接受所有回答（您键入的除外），在列表中输入无效的回答并取消选择这些回答右侧的“正确”选项。然后，选择“其它回答”选项，以指出所有其它回答都是正确的。
  4. 指定匹配的回答是在与您输入的文本大小写一致时才有效（通过选择“区分大小写”），还是不管用户所输入的文本是大写或小写均有效（通过取消选择“区分大小写”）。
  5. 指定匹配的回答是否必须完全匹配。如果您选择“完全匹配”，则只有在用户输入与您的回答完全一致的文本时，才算匹配正确的回答。取消选择“完全匹配”时，如果答案含有正确的词语，则该答案将被评定为正确。例如，如果答案是 zebra 并且用户输入 striped zebra，则该答案被视为正确。如果正确答案不止一个词语，则该功能不起作用。


配置“热件”交互组件

“热件”交互组件可以接受一至八个热件。默认的范例使用了六个热件。

要配置“热件”交互组件：

  1. 如果您未使用测验模板，请将该交互式学习组件放在舞台上。如果您使用测验模板，请选择“交互组件”层中含有“热件”交互组件的帧。（即第 5 帧，如果尚未添加或删除关键帧的话。）
  2. 分离影片剪辑（“修改”>“分离”），显示“组件检查器”面板，然后键入交互组件 ID 和问题。请参阅配置交互式学习组件。

  3. 对于每个对象，选择或取消选择“正确”选项，以指定用户单击对象时它是被视为正确的还是不正确的响应。可以有多个正确选项。
  4. 在舞台上选择“热件”交互组件的每个实例（您可以删除实例占位符并将自己的影片剪辑实例放在舞台上）。用“属性”检查器将各个实例的名称指定为在“组件检查器”面板中指定的相同名称。


添加和删除热件干扰项

通过添加其它的干扰项或删除现有的干扰项，可以更改默认的干扰项（选项）数量（六个）。您可以在“热件”交互式学习组件中包含一至八个热件干扰项。

要添加热件干扰项：

  1. 创建一个含有热件干扰项的图形的影片剪辑元件。例如，如果您有一个具有六种水果的交互组件，并想添加第七种选择，可创建第七种水果的图形并将其放在库中。
  2. 在舞台上选择“热件”组件，然后将元件从“库”面板中拖到舞台上。
  3. 在“属性”检查器中命名实例。请参阅命名和注册图形干扰项。
  4. 将实例名称添加到热件的“组件检查器”面板。

    组件会在运行时为您进行余下的工作。

要删除热件干扰项：

  1. 选择要删除的“热件”影片剪辑实例，将其从舞台中删除。
  2. 选择“热件”组件（位于测验模板中的舞台左侧）。如有必要，通过“属性”检查器打开“组件检查器”面板，使其显示出来。
  3. 在“组件检查器”面板内，从列表中删除已删除对象的实例名称。


配置“热区”交互组件

“热区”交互式学习组件设置一种交互操作，使用户通过单击屏幕上的一个对象（或多个对象）来做出响应。

用测验模板创建的热区交互组件示例

要配置“热区”交互组件：

  1. 如果您未使用测验模板，请将该交互式学习组件放在舞台上。如果您使用测验模板，请选择“交互组件”层中含有“热区”交互组件的帧。（即第 5 帧，如果尚未添加或删除关键帧的话。）
  2. 分离影片剪辑（“修改”>“分离”），显示“组件检查器”面板，然后键入交互组件 ID 和问题。请参阅配置交互式学习组件。
  3. 对于每个热区，选择或取消选择“正确”选项，以指定用户单击对象时它是被视为正确的还是不正确的响应。可以选择多个正确答案。
  4. 如有必要，输入“弹起状态 Alpha”的值。这将设置舞台上热区的默认透明度，即单击某个区域前的透明度。要创建完全透明的热区，在“弹起状态 Alpha”文本框中输入 0。
  5. 如有必要，输入“按下状态 Alpha”的值。这将设置热区在被选中时的透明度。该设置会因文档中的图形而异。您可能希望，在用户成功单击了热区后通过该设置为他们提供视觉反馈。
  6. 可以删除舞台上的实例占位符。将您的影片剪辑放在舞台上，并用“属性”检查器将各个影片剪辑的实例名称指定为在“组件检查器”面板中指定的相同名称。


添加和删除热区干扰项

您可以在“热区”交互式学习组件中包含一至八个干扰项（选项）。通过添加其它的干扰项或删除现有的干扰项，可以更改默认的干扰项数量（六个）。

一般而言，您会将热区干扰项放在用户真正想要看见的另一个图形上。您可能希望，在使热区资源显示出来的作答过程中让其保持半透明。减小每个热区的 alpha 效果设置即可实现这一点。此设置在运行时由交互组件脚本覆盖。

要添加热区干扰项：

  1. 创建一个含有干扰项对象的图形的影片剪辑元件。例如，如果您有一个将具有六个热区的图像，并想添加第七种选择，可创建第七个图形的影片剪辑并将其放在库中。
  2. 在舞台上选择“热区”组件，然后将元件从“库”面板中拖到舞台上。
  3. 在“属性”检查器中命名实例。请参阅命名和注册图形干扰项。
  4. 将实例名称添加到热区的“组件检查器”面板。

    组件会在运行时为您进行余下的工作。

要删除热区干扰项：

  1. 选择要删除的热区实例，将其从舞台中删除。
  2. 选择“热区”组件（位于测验模板中的舞台左侧），然后显示“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”）。
  3. 在“组件检查器”面板内，从列表中删除已删除对象的实例名称。


配置“多重选择”交互组件

在“多重选择”交互组件中，用户回答有多个答案的问题；可能只有一个正确答案，也可能有多个正确答案。

要配置“多重选择”交互组件：

  1. 如果您未使用测验模板，请将该交互式学习组件放在舞台上。如果您使用测验模板，请选择“交互组件”层中含有“多重选择”交互组件的帧。（即第 6 帧，如果尚未添加或删除关键帧的话。）
  2. 分离影片剪辑（“修改”>“分离”），显示“组件检查器”面板，然后键入交互组件 ID 和问题。请参阅配置交互式学习组件。
  3. 键入该交互组件的可能回答 (A - E)。

    注意：无需提供五个回答。可以删除某个回答，但是请务必用其它回答替换它，或者将后面的回答上移到前一个文本框（如有必要），以便使回答之间没有空白的文本框。

  4. 选择或取消选择“正确”选项，以指定每个回答是被视为正确的还是不正确的。可以有多个正确答案。


添加和删除“多重选择”干扰项

您可以在“多重选择”交互式学习组件中包含一至八个干扰项（选项）。通过添加其它的干扰项或删除现有的干扰项，可以更改默认的干扰项数量（六个）。

要添加多重选择干扰项：

  1. 在时间轴中选择含有“多重选择”交互式学习组件的帧。
  2. 打开“库”面板中的“Flash UI 组件”文件夹（“窗口”>“库”），然后将一个复选框组件拖到舞台上。
  3. 在“属性”检查器中命名实例。请参阅命名和注册图形干扰项。
  4. 将实例名称添加到多重选择干扰项的“组件检查器”面板。

    组件会在运行时为您进行余下的工作。

要删除多重选择干扰项：

  1. 选择要删除的复选框实例，将其从舞台中删除。
  2. 选择“多重选择”组件（位于测验模板中的舞台左侧），然后显示“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”）。
  3. 在“组件检查器”面板内，从列表中删除已删除对象的实例名称。


配置“真或假”交互组件

在“真或假”交互组件中，用户以“真”或“假”作为答案来回答问题。

要配置“真或假”交互组件：

  1. 如果您未使用测验模板，请将该交互式学习组件放在舞台上。如果您使用测验模板，请选择“交互组件”层中含有“真或假”交互组件的帧。（即第 7 帧，如果尚未添加或删除关键帧的话。）
  2. 分离影片剪辑（“修改”>“分离”），显示“组件检查器”面板，然后键入交互组件 ID 和问题。请参阅配置交互式学习组件。
  3. 在“问题”文本框中，键入您要用户回答的问题的文本。
  4. 选择“正确”以指定哪个答案（“真”或“假”）是该交互式问题的正确回答。如果愿意，还可以通过更改干扰项的文本将这些回答改为“正确”或“不正确”。例如，您可以在“干扰项”文本框中键入“A. 正确”和“B. 不正确”。


“真或假”交互组件干扰项

“真或假”交互组件包含一个问题文本字段、两个单选按钮组件、一个控制按钮和一个反馈文本字段。没有其它要配置的干扰项。


处理资源

每个 Flash 交互式学习组件由以下资源组成：

  • 交互组件
  • 动态文本字段
  • 干扰项元素
  • 用户界面 (UI) 组件

每种交互组件的资源集合存储在库中的影片剪辑元件内。这些影片剪辑用于为资源提供移动性，以便可以将资源复制到关键帧或在文件之间复制资源。影片剪辑只用作容器，无需使用这些剪辑即可使交互组件工作。

如果您在处理和命名图形方面经验丰富，则可以为舞台上的图形资源输入自己的实例名称。您无需使用影片剪辑容器或模板，而可以将自己的资源添加到舞台，将交互式学习组件添加到舞台，然后在交互组件的“组件检查器”面板中注册资源的实例名称。

请记住以下关于资源命名的规则：

  • 交互组件无需命名。
  • 对于相似的交互组件类型，UI 组件需要有唯一的名称。
  • 每个图形干扰项（拖动对象、目标对象、热区和热件）必须有唯一的实例名称。
  • 多个交互组件中的文本字段可以共享相同的实例名称。

命名了舞台上的资源以后，请务必在交互式学习组件的“组件检查器”面板中注册这些名称，以便脚本可以控制这些资源。


关于命名交互式学习组件实例

为了配置交互的唯一参数，每个交互都有一个与之关联的交互组件。这些组件无需命名。


命名 UI 组件（单选按钮、复选框、按钮和文本输入）

在使用相似的交互组件类型时，您需要为每个 UI 组件指定唯一的名称。例如，如果您创建两个“多重选择”交互组件，则第二个交互组件中的复选框和按钮组件要有唯一的实例名称。这些新的实例名称需要在交互式学习组件的“组件检查器”面板中注册。

要命名 UI 组件：

  1. 在舞台上选择 UI 组件实例。
  2. 在“属性”检查器中，在“实例名称”文本框内键入名称。
  3. 在交互组件的“组件检查器”面板中注册名称（请参阅注册动态文本字段和 UI 组件）。


命名动态文本字段

如果测验中的任一种交互式学习组件的数量多于一个（例如，如果有两个“拖放”交互式学习组件），则每个交互式学习组件中的对象必须有唯一的名称。这些新的唯一实例名称需要在交互式学习组件的“组件检查器”面板中注册。请参阅注册动态文本字段和 UI 组件。

要命名动态文本字段：

  1. 在舞台上选择动态文本字段。
  2. 在“属性”检查器中，在“实例名称”文本框内键入名称。

    注意：确保在“属性”检查器内输入的是实例名称而不是变量名称。

  3. 在“组件检查器”面板中注册名称（请参阅注册动态文本字段和 UI 组件）。


注册动态文本字段和 UI 组件

在“属性”检查器中为动态文本字段或按钮组件输入了实例名称之后，您需要在交互组件的“组件检查器”面板中注册该实例。

要注册动态文本字段和按钮组件：

  1. 选择交互式学习组件（位于测验模板中的舞台左侧）。如有必要，通过“属性”检查器打开“组件检查器”面板。
  2. 单击面板底部的“资源”。
  3. 在适当的实例名称文本框中输入命名。


命名和注册图形干扰项

拖动对象、目标对象、热区和热件之类的图形干扰项在所有交互组件中必须有唯一的名称。这就表示，在具有两个“拖放”交互组件并且每个组件含有四个拖动对象的文件中，这八个拖动对象的名称必须各不相同。例如，第一个交互组件中的拖动对象可以分别命名为 Drag 1、Drag 2、Drag 3 和 Drag 4，而第二个交互组件中的拖动对象可以分别命名为 Drag A、Drag B、Drag C 和 Drag D。这将确保脚本正确工作，并确保交互组件按预期工作。

要命名图形干扰项：

  1. 确保舞台上的对象为交互式学习组件或影片剪辑元件的实例。
  2. 在舞台上选择一个对象，例如目标对象。
  3. 在“属性”检查器中，在“实例名称”文本框内键入名称。
  4. 对于舞台上的每个对象，重复步骤 1 至 3。
  5. 注册名称（请参阅以下步骤）。

    注意：连续命名法通常是最易于使用的方法，例如 Drag1、Drag2、Drag3 等等。

要注册干扰项实例名称：

  1. 选择交互式学习组件（位于测验模板中的舞台左侧）。如有必要，通过“属性”检查器打开“组件检查器”面板。
  2. 在“组件检查器”面板中，在“实例名称”下输入名称。


文本字段名称

多个交互组件中的文本字段可以共享相同的名称。这就表示，第一个交互组件中的问题文本字段可以与第二个交互组件中的问题文本字段具有相同的名称，以此类推。与所有资源名称一样，这些名称需要向交互组件注册（请参阅注册动态文本字段和 UI 组件）。


资源名称默认值

影片剪辑交互组件容器提供的资源已预先利用以下表格列出的实例名称进行命名。


“拖放”交互式学习组件资源名称

资源 | 说明 | 对象类型 | 实例名称
“问题”文本字段 | 容纳问题文本 | 动态文本字段 | Template_Question
“反馈”文本字段 | 容纳反馈文本 | 动态文本字段 | Template_Feedback
“控制”按钮 | 提交用户的响应以及控制导航 | Flash UI 按钮组件 | Template_ControlButton
“重置”按钮 | 重置拖动对象 | Flash UI 按钮组件 | Template_ResetButton
1 至 8 个拖动对象 | 拖动对象的干扰项 | 影片剪辑元件 | Drag1 至 Drag8
1 至 8 个目标对象 | 拖动对象的目标 | 影片剪辑元件 | Target1 至 Target8


“填空”交互式学习组件资源名称

资源 | 说明 | 对象类型 | 实例名称
“问题”文本字段 | 容纳问题文本 | 动态文本字段 | Template_Question
“反馈”文本字段 | 容纳反馈文本 | 动态文本字段 | Template_Feedback
用户输入字段 | 用户在此文本字段中键入答案 | Flash UI 文本输入组件 | Template_UserEntry
“控制”按钮 | 提交用户的响应以及控制导航 | Flash UI 按钮组件 | Template_ControlButton


“热件”交互式学习组件资源名称

资源 | 说明 | 对象类型 | 实例名称
“问题”文本字段 | 容纳问题文本 | 动态文本字段 | Template_Question
“反馈”文本字段 | 容纳反馈文本 | 动态文本字段 | Template_Feedback
“控制”按钮 | 提交用户的响应以及控制导航 | Flash UI 按钮组件 | Template_ControlButton
“重置”按钮 | 重置热件的干扰项 | Flash UI 按钮组件 | Template_ResetButton
1 至 8 个热件 | 热件的干扰项 | 影片剪辑元件 | HotObject1 至 8


“热区”交互式学习组件资源名称

资源 | 说明 | 对象类型 | 实例名称
“问题”文本字段 | 容纳问题文本 | 动态文本字段 | Template_Question
“反馈”文本字段 | 容纳反馈文本 | 动态文本字段 | Template_Feedback
“控制”按钮 | 提交用户的响应以及控制导航 | Flash UI 按钮组件 | Template_ControlButton
“重置”按钮 | 重置热区的干扰项 | Flash UI 按钮组件 | Template_ResetButton
1 至 8 个热区 | 热区的干扰项 | 影片剪辑元件 | HotSpot1 至 8


“多重选择”交互式学习组件资源名称

资源 | 说明 | 对象类型 | 实例名称
“问题”文本字段 | 容纳问题文本 | 动态文本字段 | Template_Question
“反馈”文本字段 | 容纳反馈文本 | 动态文本字段 | Template_Feedback
“控制”按钮 | 提交用户的响应以及控制导航 | Flash UI 按钮组件 | Template_ControlButton
3 至 8 个复选框 | 复选框的干扰项 | Flash UI 复选框组件 | Checkbox1 至 8


“真或假”交互式学习组件资源名称

资源 | 说明 | 对象类型 | 实例名称
“问题”文本字段 | 容纳问题文本 | 动态文本字段 | Template_Question
“反馈”文本字段 | 容纳反馈文本 | 动态文本字段 | Template_Feedback
“控制”按钮 | 提交用户的响应以及控制导航 | Flash UI 按钮组件 | Template_ControlButton
2 个单选按钮 | “真”或“假”单选按钮的干扰项 | Flash UI 单选按钮组件 | Template_Radio1、 Template_Radio2


为交互式学习组件设置反馈选项

反馈选项控制用户在未响应和响应交互组件时看到的文本。

要为交互组件设置反馈选项：

  1. 选择测验模板中舞台左侧的交互组件。
  2. 如果“组件检查器”面板尚未显示出来，请从“属性”检查器打开该面板，然后单击面板底部的“选项”。
  3. 如果您希望交互组件在用户提交响应之前和之后向用户显示注释，请选择“反馈”。然后，为以下各项输入注释：
    • 对于“尝试次数”，输入用户在答对问题之前可以尝试回答的次数。
    • 对于“初始反馈”，输入用户在回答测验中的问题之前显示的反馈 - 例如，请单击某个对象并将其拖到匹配的目标上。
    • 对于“正确反馈”，输入在用户回答正确时显示的反馈 - 例如，回答正确。
    • 对于“错误反馈”，输入在用户回答错误并且尝试次数设为 1 时显示的反馈 - 例如，回答错误。
    • 对于“其它尝试”，输入在用户回答错误并且尝试次数设为大于 1 时显示的反馈 - 例如，回答错误。请再试一次。

    注意：“真或假”交互式学习组件只允许用户试答一次，因此该交互组件没有“其它尝试”字段。


为交互式学习组件设置 Knowledge Track 选项

Knowledge Track 是一种自动数据跟踪功能，它使您可以将学生的成绩数据发送到学习管理系统 (LMS)，例如 Lotus LearningSpace，或者发送到其它后端跟踪系统。Knowledge Track 与兼容于 AICC 和 SCORM 的 LMS 配合工作。Knowledge Track 收集和/或存储 Flash 应用程序内部的学生信息，然后将数据发送到 HTML 页面。

要成功将数据发送到跟踪系统，您必须将含有交互式学习组件的 SWF 文件嵌入到 HTML 页面中，并且在发布设置中，选择“具有 AICC 跟踪功能的 Flash”或“具有 SCORM 跟踪功能的 Flash”的 HTML 模板。要支持与 AICC 兼容的 LMS，嵌入了 SWF 文件的 HTML 必须是框架集的一部分。请参阅为 Web 承载准备 Flash 交互式学习组件。

Knowledge Track 收集和发送的跟踪数据以 AICC（美国航空工业 CBT 委员会）规范第 2 版作为标准，此规范是课件与跟踪系统之间的通信的行业标准，它为各个交互组件规定了以下数据元素。

您可以用交互组件的“组件检查器”面板来设置这些数据元素的值：

  • 交互组件 ID
  • 目标 ID
  • 权重

其它数据元素会自动进行设置或计算：

  • 问题类型
  • 正确响应
  • 用户响应
  • 结果
  • 日期/时间
  • 执行时间

要为交互组件设置 Knowledge Track 选项：

  1. 选择测验模板中舞台左侧的交互式学习组件。
  2. 如果“组件检查器”面板尚未显示出来，请从“属性”检查器打开该面板，然后单击面板底部的“选项”。
  3. 如果您在用测验模板创建的文档中使用交互式学习组件，并希望交互式学习组件将数据发送到服务器端的学习管理数据库，请选择“Knowledge Track”。
  4. 在“目标 ID”文本框中输入名称，以便指定交互组件的目标。

    这是一个可选参数。如果交互组件与 LMS 中设置的一个目标相关，请在此文本框中输入该目标 ID。如果将“目标 ID”文本框留空，则仍然会进行跟踪。

  5. 指定交互组件的权重值。测验模板用此参数来计算结果页中的分数。默认值为 1。

    权重指出某个问题的相对重要性。您可以输入任意数值。如果所有交互式学习组件的权重均为 1，则会平等地对它们计分。计分时，对于权重为 2 的问题，其分数分别是权重为 1 和 4 的问题的两倍和一半。例如，您可以将高级问题的权重指定为 3，而将初级问题的权重指定为 1。


为交互式学习组件设置导航选项

用测验模板创建的文档具有内置的导航；如果您使用测验模板，请确保关闭“导航”。对于未使用测验模板的文档，您可以设置会在文档中显示“下一问题”按钮的导航选项。

要为交互组件设置导航选项：

  1. 选择测验模板中舞台左侧的交互式学习组件。
  2. 如果“组件检查器”面板尚未显示出来，请从“属性”检查器打开该面板，然后单击面板底部的“选项”。
  3. 在“导航”下，指定交互组件在用户提交了对该交互组件的响应后如何继续进行：
    • 选择“关”可禁用导航。如果您使用测验模板，请选择该选项，这是因为模板有自己的导航。
    • 选择“下一步按钮”可要求用户在提交响应后单击“下一步”按钮。 在“转到动作”字段中，选择“停止”或“播放”。“下一步”按钮是一个按钮组件，您可以将其与独立于测验模板的独立交互组件配合使用。

      如果想导航到已标记的帧而不是下一帧，您可以在“转到标签”文本框中输入帧的标签。

      “下一步”按钮的默认文本为“下一问题”。如果您想更改文本，请参阅为交互式学习组件设置控制按钮标签。

    • 选择“自动转到下一帧”可使交互组件在用户提交响应后进入下一帧。

      如果选择“Knowledge Track”而取消选择“反馈”，则可启用“自动转到下一帧”功能。该功能会在评估后提交分数，并立即导航到表示下一个交互组件的下一帧。

      注意：如果选择“反馈”或者取消选择“Knowledge Track”，则“自动转到下一帧”会重置为“下一步按钮”，并且“输出”窗口中会出现一则错误消息。


为交互式学习组件设置控制按钮标签

所有六种交互组件都使用相同控制按钮的实例：检查答案、提交、下一问题和重置。唯一例外的是“真或假”交互组件，该组件不使用重置按钮。您可以用“组件检查器”面板来更改各个按钮实例的标签。

要为控制按钮的实例更改标签：

  1. 选择测验模板中舞台左侧的交互式学习组件。
  2. 如果“组件检查器”面板尚未显示出来，请从“属性”检查器打开该面板，然后单击面板底部的“资源”。
  3. 在“控制按钮标签”下编辑标签名称。
  4. 选择“控制”>“测试影片”以查看按钮上的新标签。


向兼容于 AICC 或 SCORM 的学习管理系统 (LMS) 发送跟踪信息

Flash 交互式学习组件和测验模板可以轻松地与兼容于 AICC 和 SCORM 的 LMS 进行通信。内置在 Flash 文档和对应的 HTML/JavaScript 文件中的代码会将具有正确格式的数据发送到 LMS。独立的交互组件发送问题数据，而测验模板会跟踪分数和回答问题所用的总时间。

因为 AICC 和 SCORM 这两种跟踪标准互不相同，所以，用 Flash 交互式学习组件和测验模板创建的文件在兼容性方面也有所不同。

要与 SCORM 兼容，则在初次启动内容时，或者在将任何其它跟踪命令发送到 LMS 之前，内容必须调用一个初始化命令。“具有 SCORM 跟踪功能的 Flash”这一 HTML 模板的设计用途是，在文件加载时初始化与兼容于 SCORM 的 LMS 的通信。如果未曾明确地发送结束命令，该模板还会在文件卸载时向 LMS 发送结束信息。

用 Flash 交互式学习组件和测验模板创建的文件可以向与 AICC 和 SCORM 兼容的 LMS 发送跟踪数据。单个的交互组件不发送总的分数和跟踪数据，但是它们可以发送交互组件的数据或问题数据。

对于为了符合 AICC 或 SCORM 标准而使用测验模板来创建的文件，它们不会将 LMS 的数据读入到 Flash 文件中。


与兼容于 AICC 和 SCORM 的内容进行通信的概述

下面简要概述了学生在完成测验时会遇到的情况，以及未显示在学生面前的隐藏步骤。


AICC 通信概述

当学生参加与 AICC 兼容的测验时，会发生以下事件：

  1. LMS 打开。
  2. 学生登录到 LMS。
  3. 学生在课程结构中浏览以找出可分配单元 (AU)。在这里，假定 AU 是用 Flash 测验模板建立的 Flash 测验。
  4. 学生启动 Flash 内容（测验）。
  5. 内容位于 Web 服务器上，例如 http://myserver/flashcontent.htm。要正确跟踪，Flash 文件需要嵌入到 Flash AICC 跟踪框架集内。请参阅为 Web 承载准备 Flash 交互式学习组件。

    注意：用户并不知道与 LMS 进行的通信以及数据跟踪。

  6. LMS 创建两个追加到 URL 末尾的参数：AICC_URL 和 AICC_SID。内容启动时，最终的 URL 可能如下所示：
    http://myserver/flashcontent.htm?AICC_URL=http://mylmsserver/trackingurl.asp&AICC_SID=12345
  7. 学生逐步完成测验。
  8. Flash 交互式学习组件通过 HTML/JavaScript 跟踪文件将跟踪数据发送到 LMS。在学生回答一个问题后或进入下一页时，会发送跟踪数据。


SCORM 通信概述

当学生参加与 SCORM 兼容的测验时，会发生以下事件：

  1. LMS 初始化。
  2. 学生登录到 LMS。
  3. 学生开始进行用 Flash 测验模板建立的测验。
  4. 内容嵌在 Flash/SCORM HTML 模板中，该模板在与 SCORM 兼容的框架集中打开。

    注意：用户并不知道这一点。

    LMS 负责创建与 SCORM 兼容的框架集，该框架集含有向 LMS 反馈信息时所需的所有功能。

  5. 学生逐步完成测验。
  6. Flash 文件通过 HTML/JavaScript 跟踪文件将跟踪数据发送到 LMS。


为 Web 承载准备 Flash 交互式学习组件

为了使 Web 用户能够看见您的 Flash 应用程序，需要将其嵌入到 Web 页中。在为 Web 承载准备与 AICC 兼容的文件和与 SCORM 兼容的文件时，两者的步骤稍有不同，并将在以下两个部分进行介绍。


为 Web 承载准备与 AICC 兼容的交互式学习组件

要将跟踪数据发送到与 AICC 兼容的 LMS，您需要在测验中启用跟踪，然后用“具有 AICC 跟踪功能的 Flash”模板发布 Flash 应用程序。您必须将 Flash 生成的文件放在 Web 服务器上的同一目录中，并且用测验的名称修改框架集文件，然后将框架集文件放在包含 HTML 和 SWF 文件的 Web 服务器上。此外，您的 LMS 必须与 AICC 兼容并要引用框架集文件。默认情况下，该文件名为 frameset.htm。

要为 Web 承载准备与 AICC 兼容的文件：

  1. 在 Flash 中打开文档。
  2. 选择“文件”>“发布设置”。
  3. 在出现的“发布设置”对话框中，确保在“格式”面板中至少同时选择了 Flash (.swf) 和 HTML 文件。
  4. 单击“发布设置”对话框顶部的“HTML”选项卡，从“模板”弹出菜单中选择“具有 AICC 跟踪功能的 Flash”模板。
  5. 单击“发布”按钮并关闭对话框。
  6. 将通过发布 Flash 文件而生成的文件和任何链接的文件（如 MP3 或 FLV）放在 Web 服务器上的同一目录内。

    如果在“发布设置”对话框的“HTML”选项卡内选择了“检测 Flash 版本”，则会创建其它文件。确保将除 FLA 文件以外的所有 HTML 文件复制到 Web 服务器。

  7. 打开 Learning Extensions Srvr Files 子文件夹，它位于 Flash MX 2004 程序文件夹的子文件夹 en/First Run/HTML/Learning Extensions 中。将该文件夹的内容（frameset.htm、results.htm 和 scripts 子文件夹）复制到以下目录：在 Flash 中将 SWF 文件和 HTML 文件发布到的 Web 服务器目录。
  8. 在文本编辑器中打开 frameset.htm 文件的新副本。

    frameset.htm 文件中包含以下各行：

    <frameset frameborder="0" border="0" framespacing="0" rows="*,1">
<frame src="Untitled-1.htm" name="content" frameborder="0">
<frame src="results.htm" name="cmiresults" scrolling="0" frameborder="0">
  9. 在第二行中，将 Untitled-1.htm 改为您用 Flash 发布的 HTML 文件的名称（通常是在“发布设置”的“格式”选项卡中指定的 HTML 文件名）。

    主文件引用在发布过程中创建的任何 HTML 文件。例如，如果在发布文档时创建了 myQuiz.htm、myQuiz_content.htm 和 myQuiz_alternate.htm，则用 myQuiz.htm 代替 frameset.htm 文件中的 Untitled-1.htm。之后，myQuiz.htm 会在必要时调用 myQuiz_content.htm 和 myQuiz_alternate.htm。

  10. 启动引用 frameset.htm 文件的 LMS 系统（或创建 AICC 课程描述符文件）。


为 Web 承载准备与 SCORM 兼容的交互式学习组件

要将跟踪数据发送到与 SCORM 兼容的 LMS，您需要在测验中启用跟踪，然后用“具有 SCORM 跟踪功能的 Flash”模板发布交互式学习组件。此外，您必须将 Flash 生成的文件放在 Web 服务器上的同一目录中。

要为 Web 承载准备与 SCORM 兼容的交互式学习组件：

  1. 在 Flash 中打开文档。
  2. 选择“文件”>“发布设置”。
  3. 在出现的“发布设置”对话框中，确保在“格式”面板中至少同时选择了 Flash (.swf) 和 HTML。
  4. 单击“发布设置”对话框顶部的“HTML”选项卡，从“模板”弹出菜单中选择“具有 SCORM 跟踪功能的 Flash”。
  5. 单击“发布”按钮并关闭对话框。
  6. 将通过发布 Flash 文件而生成的文件放在 Web 服务器上的同一目录内。
  7. 启动 LMS 系统并引用 HTML 文件的名称。确保将 LMS 设置为启动 SCORM 跟踪框架集。


扩展交互式学习组件

注意：本部分的信息主要供希望扩展交互功能的中级和高级开发人员参考。

Flash 交互式学习组件使用高度组织化的数据结构来存储和检索各个交互会话的相关信息。这种数据结构增强了评估能力，并为希望扩展跟踪功能的开发人员展现了新的扩展可能性。您可以用它来检索符合行业标准的跟踪数据。这种数据结构称为 SessionArray。

注意：SessionArray 和 session 是交互组件所在层上的保留关键字。切勿将这些关键字用作其它数据的标识符。


通过 SessionArray 访问累积跟踪数据

下面概述了如何通过 SessionArray 跟踪数据。

  • Flash 应用程序运行时，第一个加载的交互组件会在交互组件资源所在的层创建一个新的数组。
  • 然后，组件会在数组的 index0 中创建 LToolBox 全局类的一个新实例。LToolBox 的实例用于存储交互组件的所有数据。通过使用预定义的属性名称来设置数据或从实例中检索数据。请参阅预定义的属性名称。
  • 当时间轴移到第二个交互时，该交互的组件在 SessionArray 的 index1 中创建 LToolBox 全局类的一个实例。
  • 当时间轴移到第三个交互时，该交互的组件在 SessionArray 的 index2 中创建 LToolBox 全局类的一个实例。接下来是 index3、index4，以此类推，直到所有交互组件均在索引中。
  • 在一系列的交互结束时，即可使用和组织在这些交互过程中处理的所有数据。

注意：SessionArray 在独立的交互组件和测验交互组件中的使用方式相同。

可能用途

如果开发人员需要扩展交互跟踪或分析功能，包括创建自定义的测验环境和创建与 Flash 测验模板的格式不同的测验，则最适合使用本部分中的信息。


跟踪 SessionArray 中可用的属性

属性名称引用 AICC 和 SCORM LMS 的标准交互跟踪值。您可以通过在以下命令中引用其位置来检索交互组件的属性。

SessionArray[n].[property_name]

例如，要引用第一个交互组件的 interaction_id 值，可以使用以下命令：

SessionArray[0].interaction_id

要引用第二个交互组件的结果值，您可以使用以下命令：

SessionArray[1].result


预定义的属性名称

下表说明了预定义的属性名称。

属性名称 | 说明
interaction_id | 唯一的交互组件名称
interaction_type | 交互组件的类型
objective_id | 目标标识号
weighting | 此交互组件实例的权重值；某些交互组件的权重可以大于其它交互组件的权重
correct_response | 从用户参数返回的格式化正确响应
student_response | 从评估返回的格式化学生响应
result | 评估的结果
latency | 此交互会话过程已执行的时间
dateStamp | 交互发生的日期
timeStamp | 交互开始的时间

LToolBox 全局类的所有方法和属性在各个 SessionArray 索引中均可使用。


交互式学习组件脚本和组件的基本结构

现在您已知道了交互组件数据的存储与检索方式，我们在这里再提供一些补充信息。交互式学习组件实际上是电子教学设置的核心。它们收集用户参数，并在交互组件资源所在的层建立 SessionArray 和交互事件处理函数。换言之，它们接受用户参数并相应地配置环境和资源。如果想查看这些工作的具体过程，您需要在“库”面板中打开脚本。

绝大多数脚本位于以下两个位置之一。第一个是 LToolBoxglobalclass 脚本。该脚本为交互组件处理数据的存储和格式。第二个脚本位置在各个交互组件内。这些脚本初始化由交互组件资源触发的事件处理函数。这是用户参数和交互组件资源初始化的位置，也是交互评估脚本的存放位置。即使这些脚本建立在组件层上，它们也是在交互组件资源所在的层进行初始化，并且向交互组件资源层上的 SessionArray 提交数据。

要查看脚本或向脚本添加内容，请在库中查找 1_GlobalClass 文件夹，以便访问 LGlobalClass 影片剪辑，该剪辑含有 LToolBoxglobalclass 脚本。在 2_Components 文件夹中查找各个交互式学习组件脚本，以便访问这些脚本。每个脚本分为带有注释的几个部分，这些部分在脚本顶部有说明。出于模块化目的，大多数脚本部分都建立在函数的内部。


查看或编辑 LToolboxClass 脚本

LToolboxClass 脚本创建一个内置对象，各个交互组件均可使用它来存储数据和实现基本功能。所有交互组件共享的数据模式和功能在该脚本中定义。您可以从库中访问 LToolboxClass 脚本。

要查看或编辑 LToolboxClass 脚本：

  1. 在“库”面板中，选择“交互式学习组件”>“资源”>“控制”>“ComponentSuperClass”。
  2. 在 ComponentSuperClass 文件夹中双击 SuperClass 影片剪辑，在元件编辑模式中打开该剪辑。
  3. 在影片剪辑的时间轴中，选择第 1 帧。如有必要，请打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  4. 根据需要查看或编辑脚本。


使用范例和模板概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 附带了若干范例和模板来帮助您开始使用。本附录包含了有关如何使用范例和模板的信息。


范例

学习 Flash 的一种快捷方式就是查看现有的范例文件，了解它们是如何创建的。以下各小节中讨论提供的每个范例。

要查看发布的应用程序文件 (.swf)，您可以从以下描述各个应用程序范例的页面直接链接到该文件。要查看给定范例的设计文件 (.fla)，请在 Flash 内打开该文件。这些范例中有一部分是完整的应用程序，另一部分则是旨在介绍某个概念的简单应用程序，而您可以使用这些概念建立自己的 Flash 内容。

要打开 FLA 范例文件：

  1. 要在 Flash 中打开范例文件，选择“文件”>“打开”。
  2. 执行以下操作之一来打开 FLA 文件：
    • 如果您使用 Windows 2000 或 XP 操作系统，浏览到<启动驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\
      <语言>\Configuration\Samples\<sample 文件夹>，然后双击 <sample.fla>。

      注意：如果 Application Data 文件夹是隐藏文件夹，您需要更改 Windows 资源管理器的设置才能看到该文件夹。

    • 如果您使用 Windows 98 操作系统，浏览到<启动 驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\ Configuration\Samples\<sample 文件夹>，然后双击 <sample.fla>。
    • 如果您使用 Macintosh 操作系统，浏览到 <Macintosh HD>/Applications/Macromedia Flash MX 2004/First Run/Samples/<sample 文件夹>，然后双击 <sample.fla>。

请参阅以下部分以获得相关信息和范例的链接：

  • 在 Flash 中使用辅助功能
  • 建立照片剪贴簿
  • 自定义 Flash Player 的上下文菜单
  • 使用设备字体遮罩
  • 开发多语言内容
  • 了解文本增强功能
  • 使用可扩展性 API 建立自定义面板
  • 建立新闻阅读器（仅限于 Flash Professional）

Macromedia Web 站点含有更多的范例。您可以在以下网址查看这些范例：www.macromedia.com/go/flashmx_samples。


在 Flash 中使用辅助功能

此范例显示如何使用 Flash 的辅助功能。此范例中涉及的功能包括选项卡排序、组件和“辅助功能”面板。在此范例中，您可以了解如何使用新的创作工具功能和用户界面，这些功能和界面适用于建立包含辅助功能的应用程序。移动的箭头指示舞台上哪个可获得焦点的元素获得了焦点。浏览源代码以了解如何利用 Flash 辅助功能的更多信息。

单击此处在浏览器窗口中查看此范例。


建立照片剪贴簿

此范例显示如何使用行为（而不是编写脚本）来轻松地建立交互式照片剪贴簿。使用行为，您可以轻松地在 Flash 内容中添加交互性，而不必编写动作脚本。此示例中组合使用了多种行为来创建交互式剪贴薄。浏览源代码以了解更多信息，或对其进行自定义以添加自己的照片。

单击此处在浏览器窗口中查看此范例。


自定义 Flash Player 的上下文菜单

在此范例中，您可以查看如何用动作脚本 2.0 向 Flash Player 上下文菜单添加自己的自定义选项。此范例使用动作脚本，通过添加可以应用于舞台上的绘制对象的剪切、复制和粘贴功能来修改上下文菜单。源文件包括文档文件 (.fla) 和定义 ClipBoard 类的动作脚本文件 (.as)。浏览这两个文件以了解有关上下文菜单和使用动作脚本 2.0 编写类的更多信息。

单击此处在浏览器窗口中查看此范例。


使用设备字体遮罩

此范例研究 Flash Player 中新增的对遮罩设备字体的支持。范例中涉及的主要功能包括设备字体遮罩、组件和可编写脚本的蒙版。Flash Player 中新增的对遮罩设备字体的支持增大了在 Flash 内容中使用可编写脚本的蒙版的可能性。设备字体遮罩允许在遮蔽其内容的组件和您创建的自定蒙版内使用设备字体。此范例显示了这两种遮罩类型的示例。

单击此处在浏览器窗口中查看此范例。


开发多语言内容

此范例重点介绍“字符串”面板，并说明了一种用于开发和管理多语言内容的简捷方法。新的“字符串”面板可用于方便快捷地以不同语言开发内容。文档内文本字段的本地化内容存储在特定于语言的 XML 文件中，而这些文件位于与文档同一级的多个目录中。此示例包含多种语言的内容。显示的语言对应于主机操作系统的当前语言。浏览此文档以了解“字符串”面板如何管理本地化的内容。

单击此处在浏览器窗口中查看此范例。


了解文本增强功能

此范例使用 Flash MX 2004 中新增的多个文本增强功能。此范例中重点说明的功能包括文本样式、内嵌图像、改进的超链接和小文本优化。文本增强功能为在 Flash Player 中输入的文本提供了更为出色和精确的控制。此范例将一个名为 sample.html 的外部 HTML 文件装入 SWF 文件中的文本字段。但是，您可以使用结合了基于标记的格式（如 XML 或 HTML）的任何文本文件。利用新增的对层叠样式表的支持，Flash 可以在显示给定的文本字段中的文本之前，针对每种标记确定该文本的样式。此示例使用名为 style.css 的样式表。此外，Flash Player 还支持 img 标记，允许插入文本将环绕的内嵌图像。

单击此处在浏览器窗口中查看此范例。


使用可扩展性 API 建立自定义面板

此范例说明如何设计和建立面板来控制 Flash 的功能。“转换位图为矢量图”面板是使用 Flash 中提供的可扩展性 API 建立的。可扩展性 API 是与 Flash 应用程序内的方法和属性对应的一系列 Javascript 方法和属性。浏览文档以了解如何使用 Javascript 命令，以及构思如何建立自己的面板。

单击此处在浏览器窗口中查看此范例。


建立新闻阅读器（仅限于 Flash Professional）

此范例提供了一个用于阅读 macromedia.com 中 DevNet 上的最新新闻的界面。Flash MX Professional 2004 中新增的数据绑定用户界面使用户可以建立用于连接、检索和显示远程数据的界面，而无需编写任何代码。提供的新组件具有内置的数据感知功能，从而可以就 Web 服务、XML 文档及其他内容提供多个可能的方案。浏览此范例以了解如何将这些组件连接到 macromedia.com 上的“丰富站点摘要”(RSS) 供给 (feed)。

单击此处在浏览器窗口中查看此范例。


模板

Flash 附带了多个帮助您简化工作的模板。请参阅以下部分以获得如何使用各个模板的信息：

  • 使用广告模板
  • 使用视频模板（仅限于 Flash Professional）
  • 使用照片幻灯片模板
  • 使用演示文稿模板
  • 使用屏幕演示文稿模板（仅限于 Flash Professional）
  • 使用移动设备模板
  • 使用测验模板
  • 使用表单应用程序模板（仅限于 Flash Professional）

要使用模板创建新的文档：

  1. 选择“文件”>“新建”。
  2. 在“新建文档”对话框中，单击“模板”选项卡。
  3. 在“从模板新建”对话框中，选择一个演示文稿模板。
  4. 根据需要向演示文稿中添加其他关键帧或屏幕。
  5. 如果添加关键帧，请确保所有层均具有相同数量的关键帧。
  6. 向演示文稿中添加自己的内容。
  7. 保存并发布文件。

有关如何使用模板的具体信息，请参阅每种模板类型的说明。


使用广告模板

广告模板便于您创建由交互广告署 (Interactive Advertising Bureau, IAB) 制定且被当今业界接受的标准丰富式媒体类型和大小。有关 IAB 认可的广告类型的详细信息，请访问 IAB 站点，网址为 www.iab.net。

广告模板的测试

应在各种浏览器和平台的组合中测试广告的稳定性。如果应用程序不会导致错误信息、浏览器崩溃或系统崩溃，就可以认为它是稳定的。

广告模板的浏览器兼容性和要求

您应与 Web 站点管理员和网络管理员协同工作，以便制订出包括与特定用户相关的任务的详细测试计划。这些计划应公开提供并定期更新。此外，供应商应发布详细的计划，指明它们的技术在哪些浏览器和平台组合中是稳定的。有关示例可在“IAB 丰富式媒体”测试站点 www.iab.net/standards/guidelines.asp 中获得。此外，在广告的大小和文件格式方面，可能还存在因供应商和站点而异的附加要求。请咨询供应商、ISP 或 IAB，以便了解这些可能会影响广告设计的要求。

有关丰富式媒体的详细信息

Macromedia Flash 广告联盟 (MFAA) 是一个业界联盟，侧重于推动丰富式媒体广告的发展，以及提供出色的在线广告体验。MFAA 提供了一个用于讨论广告相关事宜的社区论坛，并为广告界的设计师们提供技术资源，而且为创作者提供了一系列非官方准则，以确保产生最佳的 Internet 广告体验。

请访问 MFAA，并参与 Macromedia Flash 广告联盟 Web 站点 (www.mfaa.org) 上正在进行的讨论。


使用视频模板（仅限于 Flash Professional）

本节涉及使用视频创建 Flash 内容，并包括有关使用视频模板的说明。

Flash MX Professional 2004 提供了在 Flash 项目中创造性地使用和部署视频的新方法。播放外部 Flash 视频 (.flv) 文件的能力使创作者可以在可供更多观众观看的更多项目中使用视频。Flash Professional 2004 随附的视频模板可以帮助您创建视频演示文稿和用户界面，以便用户从多个特定于带宽的视频流中进行选择。

使用带宽选择模板（仅限于 Flash Professional）

带宽选择模板使用表单和组件来呈现选择界面。此界面使最终用户可以控制他们接收的内容量，并允许创作者针对各种连接速度来定制应用程序。一旦用户选择了速度，系统即会指示媒体回放组件播放所选的视频。

“选择”屏幕包含允许选择带宽的单选按钮。用于处理单选按钮选项的动作脚本包含在此屏幕的时间轴内。

要更改选项标签或呈现给用户的选项数，您可以添加、删除或编辑“选择”表单上的组件。

设置指向视频内容的 URL（仅限于 Flash Professional）

媒体回放组件会以渐进方式下载 Flash 视频 (.flv) 文件，因而无需将这些文件嵌入在 SWF 文件内。

单选按钮的 data 属性设置为附加至基本字符串的一个字符串，以便适当地组成正确的 URL。例如，如果用户选择“高速带宽”并且基本字符串为 cartoon，则加载的文件为 cartoon_hi.flv。

要更改基本字符串，请打开“动作”面板，然后选择“选择”屏幕的“动作”层的第 1 帧。根据注释内的说明编辑以下动作脚本：

// Replace  "test" with your own base string.Be sure
// to keep the quotes.
var video_base:String = "test"

在用户进行选择时，代码会将您设置的基本字符串与单选按钮的 data 属性中存储的字符串拼接在一起，然后媒体回放组件会加载媒体。

使用视频演示文稿模板（仅限于 Flash Professional）

视频演示文稿模板使用幻灯片、媒体组件和行为来创建自运行演示文稿，这些演示文稿会按照视频回放中的线索决定下一步的操作。视频演示文稿对于自运行演示、信息站或通过 Web 向观众进行的展示非常有用。在演示文稿结束时，观众可以选择从头开始再次播放演示文稿。

您可以自定义演示文稿、添加自己的视频和内容，以及在需要时自定义播放事件的媒体回放组件。

添加视频（仅限于 Flash Professional）

视频幻灯片上的媒体显示组件处理此演示文稿中的视频回放。要将自己的视频添加到演示文稿，请选择舞台上的组件，然后用您的媒体的 URL 替换 URL 属性的当前值。请记住，在发布之后，SWF 文件会始终在该位置搜索视频，因此建议使用相对路径而不是硬编码路径。

使用视频模板设置线索点（仅限于 Flash Professional）

也可以在“组件检查器”面板的“参数”选项卡中，将线索点设置为媒体显示组件的属性。使用“线索点”列表上方的“添加”(+) 按钮将新的线索点添加到列表中。使用“删除”(-) 按钮删除线索点。应为每个线索点指定一个名称和位置。

如果为线索点和幻灯片指定了相同的名称，则在遇到线索点时，演示文稿会自动定位到相应的幻灯片。

位置是媒体文件回放期间的一个时间点，从文件的开头开始，即 0:0:0:0（小时:分钟:秒:帧/毫秒）。例如，要在文件的 10 秒处放置一个线索点，请输入 0:0:10:0。

将内容添加到视频模板（仅限于 Flash Professional）

将内容添加到视频模板就像将新幻灯片添加到演示文稿并创建图形和文本、导入媒体及添加动画一样简单。我们提供了若干包含一些内容的幻灯片供您在开始时使用，但您可以替换这些幻灯片上的内容。在添加了内容后，可以使用“行为”面板在幻灯片之间添加过渡，以便获得引人注目的动画效果。

有关添加幻灯片和过渡的详细信息，请参阅使用屏幕演示文稿模板（仅限于 Flash Professional）一节中的说明。


使用照片幻灯片模板

照片幻灯片模板使您可以轻松地创建和自定义照片幻灯片。

使用照片幻灯片模板准备照片

照片的格式必须合适才能使用照片幻灯片模板。Flash 允许您以多种格式导入图像，但 JPEG 通常最适合于显示照片。要获得最佳效果，请使用图像编辑程序（如 Macromedia Fireworks）将照片保存为 JPEG 格式。每个图像的大小均应为 640 x 480 像素，并且应按编号顺序命名。例如，如果有三个文件，则名称可以是 photo1.jpg、photo2.jpg 和 photo3.jpg。

使用照片幻灯片模板导入照片

一旦准备好了照片序列，就可以将序列导入 SWF 文件。

要导入文件：

  1. 选择名为“旧照片”的示例中所包含照片的层，然后单击垃圾桶图标将其删除。
  2. 通过单击“插入图层”按钮创建一个新层，然后将这个新层命名为“我的照片”。确保这个新层位于最底层。
  3. 选择“我的照片”层中的第一个空白关键帧，然后选择“文件”>“导入”并找到您的照片序列。
  4. 选择序列中的第一个图像并单击“添加”，然后单击“导入”。
  5. Flash 将识别出图像是序列的一部分，并询问您是否要导入序列中的所有文件。单击“是”即可完成导入过程。

使用照片幻灯片模板进行最后加工

Flash 将每个图像放在单独的关键帧上。如果有超过四个图像，请确保所有其他层均具有相同的帧数。图像出现在“库”面板中。如果愿意，您可以安全地从库中删除此文档中包含的旧图像。更改每个图像顶部的标题、日期和说明。您可以根据需要替换文本。无需担心照片字段。模板会自动确定文档中的图像数，并指明您当前正在使用的照片。

使用照片幻灯片模板的自动播放模式

照片幻灯片模板还拥有一个内置的自动播放模式，该模式会在经过所设置的延迟时间后自动更换照片。默认情况下，模板的延迟时间设置为 4 秒，但您可以方便地更改此值。

要调整延迟：

  1. 解除 _controller 层的锁定。
  2. 选择控制器组件。
  3. 通过选择“窗口”>“开发面板”>“组件检查器”，显示“组件检查器”面板中的“参数”选项卡。默认情况下，选中的是“参数”选项卡。
  4. 选择延迟参数，将该值更改为以秒为单位的新延迟值。
  5. 保存并发布文档。


使用演示文稿模板

Flash 随附的演示文稿模板可以帮助您创建、自定义和发布演示文稿。

创建幻灯片演示文稿

创建幻灯片演示文稿就像添加新关键帧一样简单。Flash 提供了三种幻灯片布局供您在开始时使用。

要创建幻灯片演示文稿：

  1. 选择“文件”>“新建”。
  2. 在“新建文档”对话框中，单击“模板”选项卡。
  3. 在“从模板新建”对话框中，选择一个演示文稿模板。
  4. 在“幻灯片”层中，为演示文稿中的每张幻灯片添加一个关键帧。例如，如果演示文稿包含 10 张幻灯片，则添加 10 个关键帧。
  5. 在“幻灯片”层中的每个关键帧上添加要包括在该幻灯片内的信息。您可以在演示文稿中创建或导入图形，以及添加公司徽标、文本、视频或音频。
  6. 确保所有其他层都具有相同的帧数。
  7. 保存并发布文档。

有关使用时间轴的详细信息，请参阅使用时间轴。

演示幻灯片

在演示过程中，可使用应用程序底部的控件或键盘的箭头键在幻灯片之间移动。按向左箭头键和向右箭头键可移动到对应的上一张和下一张幻灯片。按向上箭头键和向下箭头键可跳到第一张和最后一张幻灯片。

也可以通过单击“打印”图标打印演示文稿中的每张幻灯片。如果您知道将来不会打印幻灯片，则可以从布局中删除该图标。

自定义幻灯片演示文稿

如果您想更改模板使用的颜色，请选择“修改”>“影片”，然后更改背景颜色。演示文稿背景的颜色即会更改为选定的新颜色。此外，许多模板都附带了供替换的背景。显示和隐藏其他背景层即可显示供替换的图案。

可以使背景与公司的配色方案相匹配。或者，可以选择明亮且吸引人的图案，从而可以真正吸引观众的注意力。


使用屏幕演示文稿模板（仅限于 Flash Professional）

Flash MX Professional 2004 随附的屏幕演示文稿模板使用了屏幕，使您能轻松创建专业效果的幻灯片演示文稿。可以向轮廓中添加新幻灯片，并在这些幻灯片上放置文本、图形、导入的媒体和组件，以此来添加内容。

添加幻灯片后，可以使用“行为”面板在幻灯片之间添加过渡。Flash 提供了一些带有过渡的范例幻灯片来帮助您开始使用。

在自定义了演示文稿之后，可通过从应用程序菜单中选择“控制”>“测试影片”来预览影片。

幻灯片附带了内置的导航功能。使用键盘上的箭头键或导航按钮（模板设计的一部分）在演示文稿中向前和向后移动。

使用屏幕演示文稿模板创建幻灯片（仅限于 Flash Professional）

“屏幕轮廓”窗格显示按顺序出现在演示文稿中的幻灯片的缩略图。可使用以下四种方法向演示文稿添加新幻灯片。

要创建幻灯片：

  1. 使用某个屏幕演示文稿模板来创建新文件。
  2. 执行以下操作之一，向演示文稿添加新幻灯片：
    • 选择“插入”>“屏幕”。
    • 按下 Enter 键。
    • 单击“屏幕轮廓”窗格标题中的加号 (+) 按钮。
    • 右击以打开上下文菜单，然后选择“插入屏幕”。
  3. 可以创建共享图形内容（如徽标）的幻灯片，方法是插入嵌套幻灯片并将共享的内容放在父幻灯片上。例如，出现在标记为“演示文稿”的幻灯片上的内容会出现在演示文稿中的所有幻灯片上。通过在“屏幕轮廓”窗格中右击并选择“插入嵌套屏幕”来插入嵌套屏幕。

有关使用幻灯片和轮廓窗格的详细信息，请参阅使用屏幕（仅限于 Flash Professional）。

将过渡添加到屏幕演示文稿模板（仅限于 Flash Professional）

在自定义了演示文稿的内容以后，可以添加有助于阐述观点的动画过渡。用“行为”面板将过渡添加到演示文稿。

要向屏幕演示文稿添加过渡：

  1. 选择要为其添加过渡的屏幕。
  2. 如果“行为”面板未显示出来，请选择“窗口”>“开发面板”>“行为”。
  3. 单击“行为”面板中的“添加”按钮 (+)，然后选择“屏幕”>“设置过渡”。
  4. 在对话框中自定义过渡。有关各种可用过渡样式的信息，请参阅使用行为为屏幕创建控件和过渡（仅限于 Flash Professional）。
  5. 指定了过渡后，单击“确定”。
  6. 选择启动过渡的事件。启动幻灯片过渡的最常见事件是 onShow（幻灯片可见时）或 onHide（幻灯片隐藏时）。

有关行为的详细信息，请参阅使用行为控制实例。


使用移动设备模板

Flash 内容可以显示在多种浏览器、平台和移动电话上。您可以创作以下内容：

  • 高品质的动画
  • 游戏
  • 在设备和桌面系统中使用丰富式媒体自定义用户界面
  • 切合实际的电子商务和企业解决方案

此外，Flash 文件较小，特别适合于传输速率介于每秒 9.6 和 60 千字节 (Kbps) 之间的无线运营商网络。与桌面计算机不同，移动设备的存储容量有限，因此占用空间小的 Flash 文件最为理想。

移动设备模板使您可以为当今的许多移动设备创建内容。可以使用模板中的设备外壳预览内容，就像在设备上查看一样。

注意：这些外壳位于引导层上，因此不会随内容导出或在运行时显示。

有关为移动设备创作 Flash 文件的详细信息，请访问“Macromedia 移动设备”站点，网址为 www.macromedia.com/devnet/devices/。


使用测验模板

您可以用测验模板创建含有几种不同的交互组件的自我评分测验。有关使用测验模板的完整信息，请参阅创建电子教学内容。


使用表单应用程序模板（仅限于 Flash Professional）

Flash MX Professional 2004 提供两个可用来创建表单应用程序的模板：

  • 查询-错误-响应模板
  • 窗口式应用程序模板

查询-错误-响应模板（仅限于 Flash Professional）

查询-错误-响应模板帮助您创建这样一种应用程序，这种应用程序对远程数据源执行简单查询，然后在响应表单中显示结果，或者在错误表单中显示错误消息，具体取决于查询结果。这种应用程序在执行 Web 服务查询时非常有用，这是因为它们的结构是作为简单查询/响应事务建立的。使用此模板时有两个步骤：

  • 配置服务
  • 自定义表单

配置服务

第一步是配置应用程序将要调用的服务。模板使用一个 Web 服务连接器。如果将 Web 服务用作数据源，您可以在“组件检查器”面板的“参数”选项卡内配置 Web 服务。在“WSDL”字段输入服务的 URL，然后选择应用程序将调用的操作。

在“组件”面板中，可以用其他适合应用程序的连接器替换 Web 服务连接器。如果选择自己的连接器，您可以安全地删除 Web 服务组件，但是您必须编辑“应用程序”表单第 1 帧中的动作，以便用您创建的连接器实例名称替换“wsc”。这将确保“提交”按钮触发您的服务。

有关 Web 服务和其他连接器的详细信息，请参阅组件字典概述。

自定义表单

下一步是自定义表单。“查询”表单应包含与您的服务参数相对应的字段。“响应”表单应包含与您的服务结果相对应的字段。“错误”表单向用户显示一则消息，说明在调用服务的过程中出错。您可以在“错误”屏幕中显示所选的任何消息。

要自定义“查询”表单：

  1. 在“屏幕轮廓”窗格中选择“查询”表单。
  2. 用“组件”面板中的组件，例如文本输入字段、单选按钮、组合框和其他组件，创建“查询”表单的输入字段。
  3. 布置好表单元素后，用“组件检查器”面板中的“参数”选项卡创建组件与服务连接器参数之间的绑定。

要自定义“响应”表单：

  1. 在“屏幕轮廓”窗格中选择“响应”表单。
  2. 用组件创建将显示结果的字段。

    例如，如果您的服务是一种返回气温的天气服务，则可以使用标签组件创建一个不可编辑的文本显示。

    布置好组件后，用“组件检查器”面板中的“参数”选项卡创建组件与服务连接器结果之间的绑定。

要自定义“错误”表单：

  1. 选择“应用程序”表单。在处理服务调用的过程中，会使用“应用程序”表单第 1 帧中的动作脚本显示“错误”表单。以下是两个事件处理函数：
    function status (stat) {
  // 处理错误的状态消息
  // 如果出错，
  // showError()；
}

function result (res) {
  // 处理错误的结果消息
  // 如果出错，
  // showError()；
}
  2. 您可以用自己的代码来替换这些函数的代码，以便解释状态和结果消息，并执行以下操作之一：
    • 捕获错误并显示错误屏幕。
    • 直接转到结果屏幕以显示服务的响应。

要更加详细地了解服务调用的结果和状态信息，请参阅数据集成（仅限于 Flash Professional）。

窗口式应用程序模板（仅限于 Flash Professional）

窗口式应用程序模板帮助您创建由分层内容窗格组成的窗口式应用程序。这些窗格是可拖动的，并且在获得焦点时上升到最上层。每个窗口可以包含不同的内容，供用户与之交互。

加载子表单的窗口组件位于“应用程序”表单上。每个窗口组件的 contentPath 属性对应于运行时加载的表单的实例名称。

修改和添加窗口内容

窗口组件在“应用程序”表单的子表单上创建。模板含有四个表单：一个日历表单，一个显示模拟收件箱内容的数据网格组件，一个显示图像的滚动窗格和一个登录表单。

要修改窗口内容：

  1. 选择轮廓中的任一个表单，并用您选择的组件替换内容。您甚至还可以添加数据连接器，以便用远程数据填充您的组件。有关数据连接器的详细信息，请参阅组件字典概述。
  2. 更改表单的内容后，确保将加载表单的窗口内容的大小正确，以免在运行时出现缩减表单内容的情况。

要添加新的窗口和内容：

  1. 在“屏幕轮廓”窗格中创建一个新表单，并为其指定实例名称。确保其 visible 属性设置为 false。
  2. 在“应用程序”屏幕创建一个新的窗口组件，并且将其 contentPath 属性设置为刚才创建的表单的实例名称。
  3. 在新表单中添加内容。

    在运行时，表单的副本会被加载到该窗口组件中。

上一页


配置服务

第一步是配置应用程序将要调用的服务。模板使用一个 Web 服务连接器。如果将 Web 服务用作数据源，您可以在“组件检查器”面板的“参数”选项卡内配置 Web 服务。在“WSDL”字段输入服务的 URL，然后选择应用程序将调用的操作。

在“组件”面板中，可以用其他适合应用程序的连接器替换 Web 服务连接器。如果选择自己的连接器，您可以安全地删除 Web 服务组件，但是您必须编辑“应用程序”表单第 1 帧中的动作，以便用您创建的连接器实例名称替换“wsc”。这将确保“提交”按钮触发您的服务。

有关 Web 服务和其他连接器的详细信息，请参阅组件字典。


自定义表单

下一步是自定义表单。“查询”表单应包含与您的服务参数相对应的字段。“响应”表单应包含与您的服务结果相对应的字段。“错误”表单向用户显示一则消息，说明在调用服务的过程中出错。您可以在“错误”屏幕中显示所选的任何消息。

要自定义“查询”表单：

  1. 在“屏幕轮廓”窗格中选择“查询”表单。
  2. 用“组件”面板中的组件，例如文本输入字段、单选按钮、组合框和其他组件，创建“查询”表单的输入字段。
  3. 布置好表单元素后，用“组件检查器”面板中的“参数”选项卡创建组件与服务连接器参数之间的绑定。

要自定义“响应”表单：

  1. 在“屏幕轮廓”窗格中选择“响应”表单。
  2. 用组件创建将显示结果的字段。

    例如，如果您的服务是一种返回气温的天气服务，则可以使用标签组件创建一个不可编辑的文本显示。

    布置好组件后，用“组件检查器”面板中的“参数”选项卡创建组件与服务连接器结果之间的绑定。

要自定义“错误”表单：

  1. 选择“应用程序”表单。在处理服务调用的过程中，会使用“应用程序”表单第 1 帧中的动作脚本显示“错误”表单。以下是两个事件处理函数：
    function status (stat) {
  // 处理错误的状态消息
  // 如果出错，
  // showError()；
}

function result (res) {
  // 处理错误的结果消息
  // 如果出错，
  // showError()；
}
  2. 您可以用自己的代码来替换这些函数的代码，以便解释状态和结果消息，并执行以下操作之一：
    • 捕获错误并显示错误屏幕。
    • 直接转到结果屏幕以显示服务的响应。

要更加详细地了解服务调用的结果和状态消息，请参阅数据集成（仅限于 Flash Professional）。

窗口式应用程序模板（仅限于 Flash Professional）

窗口式应用程序模板帮助您创建由分层内容窗格组成的窗口式应用程序。这些窗格是可拖动的，并且在获得焦点时上升到最上层。每个窗口可以包含不同的内容，供用户与之交互。

加载子表单的窗口组件位于“应用程序”表单上。每个窗口组件的 contentPath 属性对应于运行时加载的表单的实例名称。


修改和添加窗口内容

窗口组件在“应用程序”表单的子表单上创建。模板含有四个表单：一个日历表单，一个显示模拟收件箱内容的数据网格组件，一个显示图像的滚动窗格和一个登录表单。

要修改窗口内容：

  1. 选择轮廓中的任一个表单，并用您选择的组件替换内容。您甚至还可以添加数据连接器，以便用远程数据填充您的组件。有关数据连接器的详细信息，请参阅组件字典。
  2. 更改表单的内容后，确保将加载表单的窗口内容的大小正确，以免在运行时出现缩减表单内容的情况。

要添加新的窗口和内容：

  1. 在“屏幕轮廓”窗格中创建一个新表单，并为其指定实例名称。确保其 visible 属性设置为 false。
  2. 在“应用程序”屏幕创建一个新的窗口组件，并且将其 contentPath 属性设置为刚才创建的表单的实例名称。
  3. 在新表单中添加内容。

    在运行时，表单的副本会被加载到该窗口组件中。

上一页


动作脚本字典概述

本字典描述 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中的动作脚本元素的语法和用法。若要使用脚本中的示例，请复制本字典中的示例代码，然后将其粘贴到“脚本”窗格或外部脚本文件中。本字典列出了所有动作脚本元素，包括运算符、关键字、语句、动作、属性、函数、类和方法。有关所有字典条目的概述，请参见字典内容；若要查找其类未知的运算符号或方法，可以从本节中的表开始入手。有关组件的信息，请参见使用组件。

本字典中有两种类型的条目：

  • 表示运算符、关键字、函数、变量、属性、方法和语句的单独条目
  • 提供与内置类有关的一般信息的类条目

范例条目中的信息用于解释在这些类型的条目中使用的结构和约定。


大多数动作脚本元素的范例条目

下面的范例字典条目解释用于除类之外的所有动作脚本元素的约定。

条目标题

所有条目均按字母顺序列出。这种字母顺序不考虑大写、前导下划线等等。

可用性

除非另有说明，否则，“可用性”部分中将指出哪些版本的 Flash Player 支持该元素。这里所说的版本与创作该内容所用的 Flash 的版本不同。例如，如果您使用 Macromedia Flash MX 2004 或 Macromedia Flash MX Professional 2004 为 Flash Player 6 创建内容，则只能使用可用于 Flash Player 6 的动作脚本元素。

在某些情况下，该部分还指出哪一版本的创作工具支持某一元素。有关示例，请参见 System.setClipboard()。

最后，如果某一元素只在动作脚本 2.0 中得到支持，则在该部分中还将指出这一信息。

用法

这一部分提供在代码中使用该动作脚本元素的正确语法。语法的必需部分以代码字体表示，用户提供的代码以斜体代码字体 表示。括号 ([]) 表示可选参数。

参数

这一部分描述在语法中列出的所有参数。

返回

这一部分说明该元素返回什么值（如果有的话）。

说明

这一部分标识元素类型（例如运算符、方法、函数等等），然后描述如何使用该元素。

示例

这一部分提供代码范例，演示如何使用该元素。

另请参见

这一部分列出相关的动作脚本字典条目。


类的范例条目

下面的范例字典条目解释用于内置动作脚本类的约定。类以及所有其它元素按字母顺序在字典中列出。

条目标题

条目标题提供类的名称。类名后面是一般性描述信息。

方法和属性摘要表

每个类条目都包含一个列出所有相关方法的表。如果该类具有属性（通常为常数）、事件处理函数或事件侦听器，则这些元素在另外的表中摘要列出。这些表中列出的所有元素还有其自己的字典条目，这些条目跟在该类条目的后面。

构造函数

如果某个类要求使用构造函数来访问其方法和属性，则在每个类条目中描述该构造函数。这种描述中包含其它字典条目所具有的全部标准元素（语法、说明等等）。

方法和属性列表

类的方法和属性在该类条目后面按字母顺序列出。


字典内容

所有字典条目均按字母顺序列出。但是，有些运算符是符号，所以按 ASCII 码顺序列出。另外，与某个类关联的方法将与该类名称一起列出，例如，Math 类的 abs() 方法以 Math.abs() 的形式列出。

下面的两个表可帮助您找到这些元素。第一个表按照运算符号在字典中的出现顺序列举它们。第二个表列出所有其它的动作脚本元素。

运算符号 | 参见条目
-- | --（递减）
++ | ++（递增）
! | !（逻辑 NOT）
!= | !=（不等于）
!== | !==（不全等）
% | %（模）
%= | %=（模赋值）
& | &（按位 AND 运算符）
&& | &&（逻辑 AND）
&= | &=（按位 AND 赋值）
() | ()（括号）
– | -（减号）
* | *（乘号）
*= | *=（相乘赋值）
, | ,（逗号）
. | .（点）
: | :（类型）
?: | ?:（条件）
/ | /（除号）
// | //（注释分隔符）
/* | /*（注释分隔符）
/= | /=（除法赋值）
[] | []（数组访问）
^ | ^（按位 XOR）
^= | ^=（按位 XOR 赋值）
{} | {}（对象初始值设定项）
| | |（按位 OR）
|| | ||（逻辑 OR）
|= | |=（按位 OR 赋值）
~ | ~（按位 NOT）
+ | +（加号）
+= | +=（加法赋值）
< | <（小于）
<< | <<（按位向左移位）
<<= | <<=（按位向左移位并赋值）
<= | <=（小于等于）
<> | <>（不等于）
= | =（赋值）
-= | -=（减法赋值）
== | ==（等于）
=== | ===（全等）
> | >（大于）
>= | >=（大于等于）
>> | >>（按位向右移位）
>>= | >>=（按位向右移位并赋值）
>>> | >>>（按位无符号向右移位）
>>>= | >>>=（按位无符号向右移位并赋值）

下表列出所有不是运算符号的动作脚本元素。

动作脚本元素 | 参见条目
#endinitclip | #endinitclip
#include | #include
#initclip | #initclip
__proto__ | Object.__proto__
_accProps | _accProps
_alpha | MovieClip._alpha, Button._alpha, TextField._alpha
_currentframe | MovieClip._currentframe
_droptarget | MovieClip._droptarget
_focusrect | _focusrect, Button._focusrect, MovieClip._focusrect
_framesloaded | MovieClip._framesloaded
_global | _global 对象
_height | Button._height, MovieClip._height, TextField._height
_highquality | _highquality, Button._highquality, MovieClip._highquality, TextField._highquality
_lockroot | MovieClip._lockroot
_name | Button._name, MovieClip._name, TextField._name
_parent | _parent, Button._parent, MovieClip._parent, TextField._parent
_quality | _quality, Button._quality, TextField._quality
_root | _root
_rotation | Button._rotation, MovieClip._rotation, TextField._rotation
_soundbuftime | _soundbuftime, Button._soundbuftime, MovieClip._soundbuftime, TextField._soundbuftime
_target | Button._target, MovieClip._target, TextField._target
_totalframes | MovieClip._totalframes
_url | Button._url, MovieClip._url, TextField._url
_visible | Button._visible, MovieClip._visible, TextField._visible
_width | Button._width, MovieClip._width, TextField._width
_x | Button._x, MovieClip._x, TextField._x
_xmouse | Button._xmouse, MovieClip._xmouse, TextField._xmouse
_xscale | Button._xscale, MovieClip._xscale, TextField._xscale
_y | Button._y, MovieClip._y, TextField._y
_ymouse | Button._ymouse, MovieClip._ymouse, TextField._ymouse
_yscale | Button._yscale, MovieClip._yscale, TextField._yscale
abs | Math.abs()
Accessibility | Accessibility 类
acos | Math.acos()
activityLevel | Camera.activityLevel, Microphone.activityLevel
add | add
addListener | Key.addListener(), Mouse.addListener(), MovieClipLoader.addListener(), Selection.addListener(), Stage.addListener(), TextField.addListener()
addPage | PrintJob.addPage()
addProperty | Object.addProperty()
addRequestHeader | LoadVars.addRequestHeader(), XML.addRequestHeader()
align | Stage.align, TextFormat.align
allowDomain | LocalConnection.allowDomain, System.security.allowDomain()
allowInsecureDomain | LocalConnection.allowInsecureDomain, System.security.allowInsecureDomain()
and | and
appendChild | XML.appendChild()
apply | Function.apply()
Arguments | Arguments 类
Array | Array 类, Array()
asfunction | asfunction
asin | Math.asin()
atan | Math.atan()
atan2 | Math.atan2()
attachAudio | MovieClip.attachAudio()
attachMovie | MovieClip.attachMovie()
attachSound | Sound.attachSound()
attachVideo | Video.attachVideo()
attributes | XML.attributes
autosize | TextField.autoSize
avHardwareDisable | System.capabilities.avHardwareDisable
background | TextField.background
backgroundColor | TextField.backgroundColor
BACKSPACE | Key.BACKSPACE
bandwidth | Camera.bandwidth
beginFill | MovieClip.beginFill()
beginGradientFill | MovieClip.beginGradientFill()
blockIndent | TextFormat.blockIndent
bold | TextFormat.bold
布尔值 | Boolean(), Boolean 类
border | TextField.border
borderColor | TextField.borderColor
bottomScroll | TextField.bottomScroll
break | break
bufferLength | NetStream.bufferLength
bufferTime | NetStream.bufferTime
builtInItems | ContextMenu.builtInItems
bullet | TextFormat.bullet
按钮 | Button 类
bytesLoaded | NetStream.bytesLoaded
bytesTotal | NetStream.bytesTotal
call | call(), Function.call()
callee | arguments.callee
caller | arguments.caller
摄像头 | Camera 类
capabilities | System.capabilities 对象
CAPSLOCK | Key.CAPSLOCK
caption | ContextMenuItem.caption
case | case
catch | try..catch..finally
ceil | Math.ceil()
charAt | String.charAt()
charCodeAt | String.charCodeAt()
childNodes | XML.childNodes
chr | chr
class | class
clear | MovieClip.clear(), SharedObject.clear(), Video.clear()
clearInterval | clearInterval()
cloneNode | XML.cloneNode()
close | LocalConnection.close(), NetStream.close(), XMLSocket.close()
Color | Color 类, TextFormat.color
concat | Array.concat(), String.concat()
connect | LocalConnection.connect(), NetConnection.connect(), XMLSocket.connect()
condenseWhite | TextField.condenseWhite
构造函数 | Array 类, Boolean 类, Camera 类, Color 类, ContextMenu 类, ContextMenuItem 类, Date 类, Error 类, LoadVars 类, LocalConnection 类, Microphone 类, NetConnection 类, NetStream 类, Number 类, Object 类, PrintJob 类, SharedObject 类, Sound 类, String 类, TextField.StyleSheet 类, TextFormat 类, XML 类, XMLSocket 类
contentType | LoadVars.contentType, XML.contentType
ContextMenu | ContextMenu 类
ContextMenuItem | ContextMenuItem 类
continue | continue
CONTROL | Key.CONTROL
copy | ContextMenu.copy(), ContextMenuItem.copy()
cos | Math.cos()
createElement | XML.createElement()
createEmptyMovieClip | MovieClip.createEmptyMovieClip()
createTextField | MovieClip.createTextField()
createTextNode | XML.createTextNode()
currentFps | Camera.currentFps, NetStream.currentFps
curveTo | MovieClip.curveTo()
CustomActions | CustomActions 类
customItems | ContextMenu.customItems
data | SharedObject.data
日期 | Date 类
deblocking | Video.deblocking
default | default
delete | delete
DELETEKEY | Key.DELETEKEY
do while | do while
docTypeDecl | XML.docTypeDecl
domain | LocalConnection.domain()
DOWN | Key.DOWN
duplicateMovieClip | duplicateMovieClip(), MovieClip.duplicateMovieClip()
duration | Sound.duration
dynamic | dynamic
E | Math.E
else | else
else if | else if
embedFonts | TextField.embedFonts
enabled | Button.enabled, ContextMenuItem.enabled, MovieClip.enabled
END | Key.END
endFill | MovieClip.endFill()
ENTER | Key.ENTER
eq | eq（等于 - 字符串专用）
Error | Error 类
ESCAPE（常数） | Key.ESCAPE
escape（函数） | escape
eval | eval()
exactSettings | System.exactSettings
exp | Math.exp()
extends | extends
false | false
finally | try..catch..finally
findText | TextSnapshot.findText()
firstChild | XML.firstChild
floor | Math.floor()
flush | SharedObject.flush()
focusEnabled | MovieClip.focusEnabled
font | TextFormat.font
for | for
for..in | for..in
fps | Camera.fps
fromCharCode | String.fromCharCode()
fscommand | fscommand()
function | function, Function 类
gain | Microphone.gain
ge | ge（大于或等于 - 字符串专用）
get | Camera.get(), CustomActions.get(), get, Microphone.get()
getAscii | Key.getAscii()
getBeginIndex | Selection.getBeginIndex()
getBounds | MovieClip.getBounds()
getBytesLoaded | LoadVars.getBytesLoaded(), MovieClip.getBytesLoaded(), Sound.getBytesLoaded(), XML.getBytesLoaded()
getBytesTotal | LoadVars.getBytesTotal(), MovieClip.getBytesTotal(), Sound.getBytesTotal(), XML.getBytesTotal()
getCaretIndex | Selection.getCaretIndex()
getCode | Key.getCode()
getCount | TextSnapshot.getCount()
getDate | Date.getDate()
getDay | Date.getDay()
getDepth | Button.getDepth(), MovieClip.getDepth(), TextField.getDepth()
getEndIndex | Selection.getEndIndex()
getFocus | Selection.getFocus()
getFontList | TextField.getFontList()
getFullYear | Date.getFullYear()
getHours | Date.getHours()
getInstanceAtDepth | MovieClip.getInstanceAtDepth()
getLocal | SharedObject.getLocal()
getMilliseconds | Date.getMilliseconds()
getMinutes | Date.getMinutes()
getMonth | Date.getMonth()
getNewTextFormat | TextField.getNewTextFormat()
getNextHighestDepth | MovieClip.getNextHighestDepth()
getPan | Sound.getPan()
getProgress | MovieClipLoader.getProgress()
getProperty | getProperty
getRGB | Color.getRGB()
getSeconds | Date.getSeconds()
getSelected | TextSnapshot.getSelected()
getSelectedText | TextSnapshot.getSelectedText()
getSize | SharedObject.getSize()
getStyle | TextField.StyleSheet.getStyle()
getStyleNames | TextField.StyleSheet.getStyleNames()
getSWFVersion | MovieClip.getSWFVersion()
getText | TextSnapshot.getText()
getTextExtent | TextFormat.getTextExtent()
getTextFormat | TextField.getTextFormat()
getTextSnapshot | MovieClip.getTextSnapshot()
getTime | Date.getTime()
getTimer | getTimer
getTimezoneOffset | Date.getTimezoneOffset()
getTransform | Color.getTransform(), Sound.getTransform()
getURL | getURL(), MovieClip.getURL()
getUTCDate | Date.getUTCDate()
getUTCDay | Date.getUTCDay()
getUTCFullYear | Date.getUTCFullYear()
getUTCHours | Date.getUTCHours()
getUTCMilliseconds | Date.getUTCMilliseconds()
getUTCMinutes | Date.getUTCMinutes()
getUTCMonth | Date.getUTCMonth()
getUTCSeconds | Date.getUTCSeconds()
getVersion | getVersion
getVolume | Sound.getVolume()
getYear | Date.getYear()
globalToLocal | MovieClip.globalToLocal()
goto | gotoAndPlay(), gotoAndStop()
gotoAndPlay | gotoAndPlay(), MovieClip.gotoAndPlay()
gotoAndStop | gotoAndStop(), MovieClip.gotoAndStop()
gt | gt（大于 - 字符串专用）
hasAccessibility | System.capabilities.hasAccessibility
hasAudio | System.capabilities.hasAudio
hasAudioEncoder | System.capabilities.hasAudioEncoder
hasChildNodes | XML.hasChildNodes()
hasEmbeddedVideo | System.capabilities.hasEmbeddedVideo
hasMP3 | System.capabilities.hasMP3
hasPrinting | System.capabilities.hasPrinting
hasScreenBroadcast | System.capabilities.hasScreenBroadcast
hasScreenPlayback | System.capabilities.hasScreenPlayback
hasStreamingAudio | System.capabilities.hasStreamingAudio
hasStreamingVideo | System.capabilities.hasStreamingVideo
hasVideoEncoder | System.capabilities.hasVideoEncoder
height | Camera.height, Stage.height, Video.height
hide | Mouse.hide()
hideBuiltInItems | ContextMenu.hideBuiltInItems()
hitArea | MovieClip.hitArea
hitTest | MovieClip.hitTest()
hitTestTextNearPos | TextSnapshot.hitTestTextNearPos()
HOME | Key.HOME
hscroll | TextField.hscroll
html | TextField.html
htmlText | TextField.htmlText
ID3 | Sound.ID3
if | if
ifFrameLoaded | ifFrameLoaded
ignoreWhite | XML.ignoreWhite
implements | implements
import | import
indent | TextFormat.indent
index | Camera.index, Microphone.index
indexOf | String.indexOf()
Infinity | Infinity
-Infinity | -Infinity
INSERT | Key.INSERT
insertBefore | XML.insertBefore()
install | CustomActions.install()
instanceof | instanceof
int | int
interface | interface
isActive | Accessibility.isActive()
isDebugger | System.capabilities.isDebugger
isDown | Key.isDown()
isFinite | isFinite
isNaN | isNaN()
isToggled | Key.isToggled()
italic | TextFormat.italic
join | Array.join()
Key | Key 类
language | System.capabilities.language
lastChild | XML.lastChild
lastIndexOf | String.lastIndexOf()
le | le（小于或等于 - 字符串专用）
leading | TextFormat.leading
LEFT | Key.LEFT
leftMargin | TextFormat.leftMargin
length | length, arguments.length, Array.length, String.length, TextField.length
level | _level
lineStyle | MovieClip.lineStyle()
lineTo | MovieClip.lineTo()
list | CustomActions.list()
LN10 | Math.LN10
LN2 | Math.LN2
load | LoadVars.load(), TextField.StyleSheet.load(), XML.load(),
loadClip | MovieClipLoader.loadClip()
loaded | LoadVars.loaded, XML.loaded
loadMovie | loadMovie(), MovieClip.loadMovie()
loadMovieNum | loadMovieNum()
loadSound | Sound.loadSound()
loadVariables | loadVariables(), MovieClip.loadVariables()
loadVariablesNum | loadVariablesNum()
LoadVars | LoadVars 类
LocalConnection | LocalConnection 类
localFileReadDisable | System.capabilities.localFileReadDisable
localToGlobal | MovieClip.localToGlobal()
log | Math.log()
LOG10E | Math.LOG10E
LOG2E | Math.LOG2E
lt | lt（小于 - 字符串专用）
manufacturer | System.capabilities.manufacturer
Math | Math 类
max | Math.max()
MAX_VALUE | Number.MAX_VALUE
maxChars | TextField.maxChars
maxhscroll | TextField.maxhscroll
maxscroll | maxscroll, TextField.maxscroll
mbchr | mbchr
mblength | mblength
mbord | mbord
mbsubstring | mbsubstring
menu | Button.menu, MovieClip.menu, TextField.menu
message | Error.message
麦克风 | Microphone 类
min | Math.min()
MIN_VALUE | Number.MIN_VALUE
MMExecute | MMExecute()
motionLevel | Camera.motionLevel
motionTimeOut | Camera.motionTimeOut
Mouse | Mouse 类
mouseWheelEnabled | TextField.mouseWheelEnabled
moveTo | MovieClip.moveTo()
MovieClip | MovieClip 类
MovieClipLoader | MovieClipLoader 类
multiline | TextField.multiline
muted | Camera.muted, Microphone.muted
name | Error.name, Microphone.name
names | Camera.names, Microphone.names
NaN | NaN, Number.NaN
ne | ne（不等于 - 字符串专用）
NEGATIVE_INFINITY | Number.NEGATIVE_INFINITY
NetConnection | NetConnection 类
NetStream | NetStream 类
new（运算符） | new
newline | newline
nextFrame | nextFrame(), MovieClip.nextFrame()
nextScene | nextScene()
nextSibling | XML.nextSibling
nodeName | XML.nodeName
nodeType | XML.nodeType
nodeValue | XML.nodeValue
not | not
null | null
数字 | Number(), Number 类
对象 | Object 类, Object()
on | on()
onActivity | Camera.onActivity, Microphone.onActivity
onChanged | TextField.onChanged
onClipEvent | onClipEvent()
onClose | XMLSocket.onClose()
onConnect | XMLSocket.onConnect()
onData | LoadVars.onData, MovieClip.onData, XML.onData, XMLSocket.onData()
onDragOut | Button.onDragOut, MovieClip.onDragOut
onDragOver | Button.onDragOver, MovieClip.onDragOver
onEnterFrame | MovieClip.onEnterFrame
onID3 | Sound.onID3
onKeyDown | Button.onKeyDown, Key.onKeyDown, MovieClip.onKeyDown
onKeyUp | Button.onKeyUp, Key.onKeyUp, MovieClip.onKeyUp
onKillFocus | Button.onKillFocus, MovieClip.onKillFocus, TextField.onKillFocus
onLoad | LoadVars.onLoad, MovieClip.onLoad, Sound.onLoad, TextField.StyleSheet.onLoad, XML.onLoad()
onLoadComplete | MovieClipLoader.onLoadComplete()
onLoadError | MovieClipLoader.onLoadError()
onLoadInit | MovieClipLoader.onLoadInit()
onLoadProgress | MovieClipLoader.onLoadProgress()
onLoadStart | MovieClipLoader.onLoadStart()
onMouseDown | Mouse.onMouseDown, MovieClip.onMouseDown
onMouseMove | Mouse.onMouseMove, MovieClip.onMouseMove
onMouseUp | Mouse.onMouseUp, MovieClip.onMouseUp
onMouseWheel | Mouse.onMouseWheel
onPress | Button.onPress, MovieClip.onPress
onRelease | Button.onRelease, MovieClip.onRelease
onReleaseOutisde | Button.onReleaseOutside , MovieClip.onReleaseOutside
onResize | Stage.onResize
onRollOut | Button.onRollOut, MovieClip.onRollOut
onRollOver | Button.onRollOver, MovieClip.onRollOver
onScroller | TextField.onScroller
onSelect | ContextMenu.onSelect, ContextMenuItem.onSelect
onSetFocus | Button.onSetFocus, MovieClip.onSetFocus, Selection.onSetFocus, TextField.onSetFocus
onSoundComplete | Sound.onSoundComplete
onStatus | Camera.onStatus, LocalConnection.onStatus, Microphone.onStatus, NetStream.onStatus, SharedObject.onStatus , System.onStatus
onUnload | MovieClip.onUnload
onUpdate | onUpdate
onXML | XMLSocket.onXML()
or（逻辑 OR） | or
ord | ord
os | System.capabilities.os
parentNode | XML.parentNode
parseCSS | TextField.StyleSheet.parseCSS()
parseFloat | parseFloat()
parseInt | parseInt
parseXML | XML.parseXML()
password | TextField.password
pause | NetStream.pause()
PGDN | Key.PGDN
PGUP | Key.PGUP
PI | Math.PI
pixelAspectRatio | System.capabilities.pixelAspectRatio
play | play(), MovieClip.play(), NetStream.play()
playerType | System.capabilities.playerType
pop | Array.pop()
position | Sound.position
POSITIVE_INFINITY | Number.POSITIVE_INFINITY
pow | Math.pow()
prevFrame | prevFrame(), MovieClip.prevFrame()
previousSibling | XML.previousSibling
prevScene | prevScene()
print | print()
printAsBitmap | printAsBitmap()
printAsBitmapNum | printAsBitmapNum()
PrintJob | PrintJob 类
printNum | printNum()
private | private
prototype | Function.prototype
public | public
push | Array.push()
quality | Camera.quality
random | random, Math.random()
rate | Microphone.rate
registerClass | Object.registerClass()
removeListener | Key.removeListener(), Mouse.removeListener(), MovieClipLoader.removeListener(), Selection.removeListener(), Stage.removeListener(), TextField.removeListener()
removeMovieClip | removeMovieClip(), MovieClip.removeMovieClip()
removeNode | XML.removeNode()
removeTextField | TextField.removeTextField()
replaceSel | TextField.replaceSel()
replaceText | TextField.replaceText()
resolutionX | System.capabilities.screenResolutionX
resolutionY | System.capabilities.screenResolutionY
restrict | TextField.restrict
return | return
reverse | Array.reverse()
RIGHT | Key.RIGHT
rightMargin | TextFormat.rightMargin
round | Math.round()
scaleMode | Stage.scaleMode
screenColor | System.capabilities.screenColor
screenDPI | System.capabilities.screenDPI
screenResolutionX | System.capabilities.screenResolutionX
screenResolutionY | System.capabilities.screenResolutionY
scroll | scroll, TextField.scroll
seek | NetStream.seek()
selectable | TextField.selectable
Selection | Selection 类
send | LoadVars.send(), LocalConnection.send(), PrintJob.send(), XML.send(), XMLSocket.send()
sendAndLoad | LoadVars.sendAndLoad(), XML.sendAndLoad()
separatorBefore | ContextMenuItem.separatorBefore
serverString | System.capabilities.serverString
set | set
set variable | set variable
setBufferTime | NetStream.setBufferTime()
setClipboard | System.setClipboard()
setDate | Date.setDate()
setFocus | Selection.setFocus()
setFullYear | Date.setFullYear()
setGain | Microphone.setGain()
setHours | Date.setHours()
setInterval | setInterval()
setMask | MovieClip.setMask()
setMilliseconds | Date.setMilliseconds()
setMinutes | Date.setMinutes()
setMode | Camera.setMode()
setMonth | Date.setMonth()
setMotionLevel | Camera.setMotionLevel()
setNewTextFormat | TextField.setNewTextFormat()
setPan | Sound.setPan()
setProperty | setProperty()
setQuality | Camera.setQuality()
setRate | Microphone.setRate()
setRGB | Color.setRGB()
setSeconds | Date.setSeconds()
setSelectColor | TextSnapshot.setSelectColor()
setSelected | TextSnapshot.setSelected()
setSelection | Selection.setSelection()
setSilenceLevel | Microphone.setSilenceLevel()
setStyle | TextField.StyleSheet.setStyle()
setTextFormat | TextField.setTextFormat()
setTime | Date.setTime()
setTransform | Color.setTransform(), Sound.setTransform()
setUseEchoSuppression | Microphone.setUseEchoSuppression()
setUTCDate | Date.setUTCDate()
setUTCFullYear | Date.setUTCFullYear()
setUTCHours | Date.setUTCHours()
setUTCMilliseconds | Date.setUTCMilliseconds()
setUTCMinutes | Date.setUTCMinutes()
setUTCMonth | Date.setUTCMonth()
setUTCSeconds | Date.setUTCSeconds()
setVolume | Sound.setVolume()
setYear | Date.setYear()
SharedObject | SharedObject 类
SHIFT（常数） | Key.SHIFT
shift（方法） | Array.shift()
show | Mouse.show()
showMenu | Stage.showMenu
showSettings | System.showSettings()
silenceLevel | Microphone.silenceLevel()
silenceTimeout | Microphone.silenceTimeout()
sin | Math.sin()
size | TextFormat.size
slice | Array.slice(), String.slice()
smoothing | Video.smoothing
sort | Array.sort()
sortOn | Array.sortOn()
Sound | Sound 类
SPACE | Key.SPACE
splice | Array.splice()
split | String.split()
sqrt | Math.sqrt()
SQRT1_2 | Math.SQRT1_2
SQRT2 | Math.SQRT2
Stage | Stage 类
start | PrintJob.start(), Sound.start()
startDrag | startDrag(), MovieClip.startDrag()
static | static
status | XML.status
stop | stop(), MovieClip.stop(), Sound.stop()
stopAllSounds | stopAllSounds()
stopDrag | stopDrag(), MovieClip.stopDrag()
字符串 | String 类, String()
StyleSheet（类） | TextField.StyleSheet 类
styleSheet（属性） | TextField.styleSheet
substr | String.substr()
substring | substring, String.substring()
super | super
swapDepths | MovieClip.swapDepths()
switch | switch
System | System 类
TAB | Key.TAB
tabChildren | MovieClip.tabChildren
tabEnabled | Button.tabEnabled, MovieClip.tabEnabled, TextField.tabEnabled
tabIndex | Button.tabIndex, MovieClip.tabIndex, TextField.tabIndex
tabStops | TextFormat.tabStops
tan | Math.tan()
target | TextFormat.target
targetPath | targetPath
tellTarget | tellTarget
text | TextField.text
textColor | TextField.textColor
TextField | TextField 类
TextFormat | TextFormat 类
textHeight | TextField.textHeight
TextSnapshot | TextSnapshot 对象
textWidth | TextField.textWidth
this | this
throw | throw
time | NetStream.time
toggleHighQuality | toggleHighQuality()
toLowerCase | String.toLowerCase()
toString | Array.toString(), Boolean.toString(), Date.toString(), Error.toString(), LoadVars.toString(), Number.toString(), Object.toString(), XML.toString()
toUpperCase | String.toUpperCase()
trace | trace()
trackAsMenu | Button.trackAsMenu, MovieClip.trackAsMenu
true | true
try | try..catch..finally
type | TextField.type
typeof | typeof
undefined | undefined
underline | TextFormat.underline
unescape | unescape
uninstall | CustomActions.uninstall()
unloadClip | MovieClipLoader.unloadClip()
unloadMovie | unloadMovie(), MovieClip.unloadMovie()
unLoadMovieNum | unloadMovieNum()
unshift | Array.unshift()
unwatch | Object.unwatch()
UP | Key.UP
updateAfterEvent | updateAfterEvent()
updateProperties | Accessibility.updateProperties()
url | TextFormat.url
useCodePage | System.useCodepage
useEchoSuppression | Microphone.useEchoSuppression()
useHandCursor | Button.useHandCursor, MovieClip.useHandCursor
UTC | Date.UTC()
valueOf | Boolean.valueOf(), Number.valueOf(), Object.valueOf()
var | var
variable | TextField.variable
version | System.capabilities.version
Video | Video 类
visible | ContextMenuItem.visible
void | void
watch | Object.watch()
while | while
width | Camera.width, Stage.width, Video.width
with | with
wordwrap | TextField.wordWrap
XML | XML 类
xmlDecl | XML.xmlDecl
XMLNode | XMLNode 类
XMLSocket | XMLSocket 类


--（递减）

可用性

Flash Player 4。

用法

行expression
expression行

参数

无。

返回

一个数字。

说明

运算符（算术）；从 expression 中减 1 的预先递减和滞后递减一元运算符。此运算符的预先递减格式 (--expression) 从 expression 中减去 1，然后返回结果。此运算符的滞后递减格式 (expression--) 从 expression 中减去 1，然后返回 expression 的初始值（即减去 1 之前的值）。

示例

此运算符的预先递减格式将 x 递减为 2 (x - 1 = 2)，并将结果返回给 y：

x = 3;
y = --x;
//y 等于 2

此运算符的滞后递减格式将 x 递减为 2 (x - 1 = 2)，并将 x 的初始值作为结果返回给 y：

x = 3;
y = x--
//y 等于 3


++（递增）

可用性

Flash Player 4。

用法

++expression
expression++

参数

无。

返回

一个数字。

说明

运算符（算术）；将 expression 加 1 的预先递增和滞后递增一元运算符。expression 可以是变量、数组中的元素或对象属性。此运算符的预先递增格式 (++expression) 将 expression 加 1，然后返回结果。此运算符的滞后递增格式 (expression++) 将 expression 加 1 并返回 expression 的初始值（即加上 1 之前的值）。

此运算符的预先递增格式将 x 递增为 2 (x + 1 = 2)，并将结果返回给 y：

x = 1;
y = ++x
//y 等于 2

此运算符的滞后递增格式将 x 递增为 2 (x + 1 = 2)，并将 x 的初始值作为结果返回给 y：

x = 1;
y = x++;
//y 等于 1

示例

下面的示例将 ++ 用作滞后递增运算符，以使 while 循环运行 5 次。

i = 0;
while(i++ < 5){
trace("this is execution " + i);
}

此示例将 ++ 用作预先递增运算符。

var a = [];
var i = 0;
while (i < 10) {
  a.push(++i);
}
trace(a.join());

此脚本在“输出”面板中显示以下结果：

1,2,3,4,5,6,7,8,9,10

下面的示例将 ++ 用作滞后递增运算符。

var a = [];
var i = 0;
while (i < 10) {
a.push(i++);
  }
trace(a.join());

此脚本在“输出”面板中显示以下结果：

0,1,2,3,4,5,6,7,8,9


!（逻辑 NOT）

可用性

Flash Player 4。

用法

!expression

参数

无。

返回

一个布尔值。

说明

运算符（逻辑）；对变量或表达式的布尔值取反。如果 expression 是绝对值或转换值为 true 的变量，则 !expression 的值为 false。如果表达式 x && y 的计算结果为 false，则表达式 !(x && y) 的计算结果为 true。

下面的表达式说明使用 ! 运算符的结果：

!true 返回 false

!false 返回 true

示例

在下面的示例中，将变量 happy 设置为 false。if 条件对 !happy 条件进行计算，如果该条件为 true，则 trace() 动作向“输出”面板发送一个字符串。

happy = false;
if (!happy) {
  trace("don't worry, be happy");
}


!=（不等于）

可用性

Flash Player 5。

用法

expression1 != expression2

参数

无。

返回

一个布尔值。

说明

运算符（不等于）；测试结果与 == 运算符正好相反。如果 expression1 与 expression2 相等，则结果为 false。与 == 运算符一样，相等 的定义取决于所比较的数据类型。

  • 数字、字符串和布尔值按值进行比较。
  • 变量、对象、数组和函数按引用进行比较。

示例

下面的示例举例说明 != 运算符的结果：

5 != 8 返回 true

5 != 5 返回 false

此示例举例说明 != 运算符在 if 语句中的用法。

a = "David";
b = "Fool"
if (a != b){
  trace("David is not a fool");
}

另请参见

!==（不全等）, ==（等于）, ===（全等）


!==（不全等）

可用性

Flash Player 6。

用法

expression1 !== expression2

说明

运算符；测试结果与 === 运算符正好相反。除了不转换数据类型外，不全等运算符执行的运算与不等于运算符相同。如果 expression1 等于 expression2，而且它们的数据类型也相同，则结果为 false。与 === 运算符一样，相等 的定义取决于所比较的数据类型。

  • 数字、字符串和布尔值按值进行比较。
  • 变量、对象、数组和函数按引用进行比较。

示例

下面的代码显示使用等于、全等和不全等运算符的运算所返回的值。

s1 = new String("5");
s2 = new String("5");
s3 = new String("Hello");
n  = new Number(5);
b = new Boolean(true);

s1 == s2; // true
s1 == s3; // false
s1 == n; // true
s1 == b; // false

s1 === s2;  // true
s1 === s3; // false
s1 === n; // false
s1 === b; // false

s1 !== s2; // false
s1 !== s3; // true
s1 !== n; // true
s1 !== b; // true

另请参见

!=（不等于）, ==（等于）, ===（全等）


%（模）

可用性

Flash Player 4。在 Flash 4 文件中，% 运算符在 SWF 文件中展开为 x - int(x/y) * y，而且可能不如在 Flash Player 的更高版本中那样快速和精确。

用法

expression1 % expression2

参数

无。

返回

无。

说明

运算符（算术）；计算 expression1 除以 expression2 的余数。如果两个 expression 参数中有一个是非数字值，则模运算符尝试将它们转换为数字。expression 可以是数字或转换为数值的字符串。

示例

下面是一个使用模 (%) 运算符的数字示例。

trace (12 % 5);
// 返回 2
trace (4.3 % 2.1);
// 返回值约等于 0.1


%=（模赋值）

可用性

Flash Player 4。

用法

expression1 %= expression2

参数

无。

返回

无。

说明

运算符（算术复合赋值）；将 expression1 % expression2 的值赋予 expression1。例如，下面两个表达式是相同的：

x %= y
x = x % y

示例

下面的示例将值 4 赋予变量 x。

x = 14;
y = 5;
trace(x %= y);
// 返回 4

另请参见

%（模）


&（按位 AND 运算符）

可用性

Flash Player 5。在 Flash 4 中，& 运算符用于连接字符串。在 Flash 5 和更高版本中，& 运算符是一个按位 AND 运算符，因此必须使用 add 和 + 运算符来连接字符串。使用 & 运算符的 Flash 4 文件在引入 Flash 5 或更高版本创作环境时自动更新为使用 add。

用法

expression1 & expression2

参数

无。

返回

无。

说明

运算符（按位）；将 expression1 和 expression2 转换为 32 位无符号整数，并对这些整数参数的每一位执行布尔 AND 运算。结果是一个新的 32 位无符号整数。


&&（逻辑 AND）

可用性

Flash Player 4。

用法

expression1 && expression2

参数

无。

返回

一个布尔值。

说明

运算符（逻辑）；对一个或两个表达式的值执行布尔运算。计算 expression1（该运算符左侧的表达式），当此表达式的计算结果为 false 时返回 false。如果 expression1 的计算结果为 true，则计算 expression2（该运算符右侧的表达式）。如果 expression2 的计算结果为 true，则最终结果为 true；否则，为 false。

示例

此示例用 && 运算符执行一个测试，确定游戏者是否已经赢得游戏。在游戏过程中，当游戏者赢得一轮或者得到计分点时，就会对 turns 和 score 变量进行更新。在 3 轮之内游戏者的得分达到或超过 75 时，下面的脚本就会在“输出”面板中显示“You Win the Game!”。

turns=2;
score=77;
winner = (turns <= 3) && (score >= 75);
if (winner) {
  trace("You Win the Game!");
} else {
  trace("Try Again!");
}


&=（按位 AND 赋值）

可用性

Flash Player 5。

用法

expression1 &= expression2

参数

无。

返回

无。

说明

运算符；将 expression1 & expression2 的值赋予 expression1。例如，下面两个表达式是相同的。

x &= y;
x = x & y;

示例

下面的示例将值 9 赋予 x。

x = 15;
y = 9;
trace(x &= y);
// 返回 9

另请参见

&（按位 AND 运算符）


()（括号）

可用性

Flash Player 4。

用法

(expression1, expression2)
function(parameter1,..., parameterN)

参数

expression1、expression2 数字、字符串、变量或文本。

function 要对括号中的内容执行的函数。

parameter1...parameterN  一系列参数，在将其结果作为参数传递给括号外的函数之前执行这些参数。

返回

无。

说明

运算符；对一个或多个参数执行分组运算，或者括住一个或多个参数并将它们作为参数传递给括号外的函数。

用法 1：控制表达式中运算符的执行顺序。括号覆盖正常的优先级顺序，从而导致先计算括号内的表达式。如果括号是嵌套的，则先计算最里面括号中的内容，然后计算较靠外括号中的内容。

用法 2：括住一个或多个参数并将它们作为参数传递给括号外的函数。

示例

用法 1：下面的语句举例说明用括号控制表达式执行顺序的方法。每个表达式的值显示在每行的下面，如下所示：

trace((2 + 3) * (4 + 5));
// 显示 45

trace(2 + (3 * (4 + 5)));
// 显示 29

trace(2 + (3 * 4) + 5);
// 显示 19

用法 2：下面的示例举例说明将括号与函数结合使用的方法。

getDate();

invoice(item, amount);

function traceParameter(param){
  trace(param);
}
traceParameter(2*2);

另请参见

with


-（减号）

可用性

Flash Player 4。

用法

（符号反转）-expression

（减法）expression1 - expression2

参数

无。

返回

无。

说明

运算符（算术）；用于符号反转或减法运算。

用法 1：用于符号反转时，它将数值 expression 的符号反转。

用法 2：用于减法时，它对两个数值表达式执行算术减法运算，从 expression1 中减去 expression2。两个表达式都为整数时，差为整数。其中任何一个或两个表达式为浮点数时，差为浮点数。

示例

用法 1：下面的语句将表达式 2 + 3 的符号反转。

-(2 + 3)

结果为 -5。

用法 2：下面的语句从整数 5 中减去整数 2。

5 - 2

结果为 3，是一个整数。

用法 2：下面的语句从浮点数 3.25 中减去浮点数 1.5。

3.25 - 1.5

结果为 1.75，是一个浮点数。


*（乘号）

可用性

Flash Player 4。

用法

expression1 * expression2

参数

无。

返回

无。

说明

运算符（算术）；将两个数值表达式相乘。如果两个表达式都是整数，则积为整数。如果其中任何一个或两个表达式是浮点数，则积为浮点数。

示例

用法 1：下面的语句将整数 2 与 3 相乘。

2 * 3

结果为 6，是一个整数。

用法 2：下面的语句将浮点数 2.0 与 3.1416 相乘。

2.0 * 3.1416

结果为 6.2832，是一个浮点数。


*=（相乘赋值）

可用性

Flash Player 4。

用法

expression1 *= expression2

参数

无。

返回

无。

说明

运算符（算术组合赋值）；将 expression1 * expression2 的值赋予 expression1。例如，下面两个表达式是相同的：

x *= y
x = x * y

示例

用法 1：下面的示例将值 50 赋予变量 x。

x = 5;
y = 10;
trace(x *= y);
// 返回 50

用法 2：以下示例的第二行和第三行计算等号右侧的表达式，然后将结果赋予 x 和 y。

i = 5;
x = 4 - 6;
y = i + 2;
trace(x *= y);
// 返回 -14

另请参见

*（乘号）


,（逗号）

可用性

Flash Player 4。

用法

expression1, expression2

参数

无。

返回

无。

说明

运算符；先计算 expression1，再计算 expression2，然后返回 expression2 的值。此运算符主要与 for 循环语句一起使用。

示例

下面的代码范例使用了逗号运算符：

var a=1, b=2, c=3;

这相当于编写了如下代码：

var a=1;
var b=2;
var c=3;


.（点）

可用性

Flash Player 4。

用法

object.property_or_method
instancename.variable
instancename.childinstance.variable

参数

object 类的一个实例。此对象可以是任意内置动作脚本类或自定义类的实例。此参数总是在点 (.) 运算符的左侧。

property_or_method 与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都在该类的方法和属性摘要表中列出。此参数总是在点 (.) 运算符的右侧。

instancename 影片剪辑的实例名称。

childinstance 从属于或嵌套于另一个影片剪辑的影片剪辑实例。

variable 影片剪辑实例时间轴上的变量，该影片剪辑实例的名称在点 (.) 运算符的左侧。

返回

无。

说明

运算符；用于定位影片剪辑的层次结构，以便访问嵌套的（子级）影片剪辑、变量或属性。点运算符也用于测试或设置对象的属性、执行对象的方法或创建数据结构。

示例

下面的语句标识影片剪辑 person_mc 中变量 hairColor 的当前值。

person_mc.hairColor

这与下面的 Flash 4 语法等效：

/person_mc:hairColor


:（类型）

可用性

Flash Player 6。

用法

[modifiers] [var] variableName:[type]
function functionName():[type] { ... }
function functionName(parameter1[:type], ..., parameterN[:type]) { ... }

参数

variableName 变量的标识符。

type 本机数据类型、您已定义的类名称或接口名称。

functionName 函数的标识符。

parameter 函数参数的标识符。

说明

运算符；指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时，此运算符指定变量的类型；在函数声明或定义中使用时，此运算符指定函数的返回类型；在函数定义中与函数参数一起使用时，此运算符指定该参数应使用的变量类型。

类型是仅限编译时的功能。所有类型都在编译时检查，并在出现不匹配的情况时生成错误。（有关更多信息，请参见错误消息。）在使用点 (.) 运算符进行赋值运算、函数调用和类成员解除引用的过程中，可能会出现不匹配情况。若要避免类型不匹配错误，可使用显式类型指定（请参见严格数据类型指定）。

您可以使用的类型包括全部本机对象类型、您定义的类和接口以及 Void 和 Function（仅作为类型存在，而不能作为对象存在）。识别的本机类型有 Array、Boolean、Button、Color、CustomActions、Date、Function、LoadVars、LocalConnection、Microphone、MovieClip、NetConnection、NetStream、Number、Object、SharedObject、Sound、String、TextField、TextFormat、Video、Void、XML、XMLNode 和 XMLSocket。

示例

用法 1：下面的示例声明一个类型为 String 且名为 userName 的公共变量，并且给该变量分配一个空字符串。

public var userName:String = "";

用法 2：该示例举例说明如何指定函数的参数类型。下面的代码定义一个名为 setDate() 的函数，该函数使用类型为 Date 且名为 currentDate 的参数。

function setDate(currentDate:Date) {
   this.date = currentDate;
}

用法 3：下面的代码定义一个名为 squareRoot() 的函数，它使用类型为 Number 且名为 val 的参数，并且返回 val 的平方根（也为 Number 类型）。

function squareRoot(val:Number):Number {
  return Math.sqrt(val);
}


?:（条件）

可用性

Flash Player 4。

用法

expression1 ? expression2 :expression3

参数

expression1 计算结果为布尔值的表达式，通常为像 x < 5 这样的比较表达式。

expression2、expression3 任何类型的值。

返回

无。

说明

运算符；指示 Flash 计算 expression1，如果 expression1 的值为 true，则它返回 expression2 的值；否则，它返回 expression3 的值。

示例

下面的语句因为 expression1 的计算结果为 true，所以将变量 x 的值赋予变量 z：

x = 5;
y = 10;
z = (x < 6) ? x:y;
trace (z);
// 返回 5


/（除号）

可用性

Flash Player 4。

用法

expression1 / expression2

参数

expression 数字或计算结果为数字的变量。

返回

无。

说明

运算符（算术）；将 expression1 除以 expression2。除法运算的结果为双精度浮点数。

示例

下面的语句将浮点数 22.0 除以 7.0，然后在“输出”面板中显示结果。

trace(22.0 / 7.0);

结果为 3.1429，是一个浮点数。


//（注释分隔符）

可用性

Flash 1。

用法

// 注释

参数

comment 任何字符。

返回

无。

说明

注释；指示脚本注释的开始。任何出现在注释分隔符 // 和行结束符之间的字符都被动作脚本解释程序解释为注释并忽略。

示例

此脚本使用注释分隔符将第一、第三、第五和第七行标识为注释。

// 记录 ball 影片剪辑的 X 位置
ballX = ball._x;
// 记录 ball 影片剪辑的 Y 位置
ballY = ball._y;
// 记录 bat 影片剪辑的 X 位置
batX = bat._x;
// 记录 bat 影片剪辑的 Y 位置
batY = bat._y;

另请参见

/*（注释分隔符）


/*（注释分隔符）

可用性

Flash Player 5。

用法

/* comment */
/*
comment
comment
*/

参数

comment 任何字符。

返回

无。

说明

注释；指示一行或多行脚本注释。任何出现在注释开始标签 /* 和注释结束标签 */ 之间的字符都被动作脚本解释程序解释为注释并忽略。第一种语法类型用于标识单行注释。第二种语法类型用于标识连续多行注释。在使用注释分隔符的这种格式时，如果不使用结束标签 */，就会返回一个错误信息。

示例

此脚本在脚本的开头使用注释分隔符。

/* 记录 ball 和 bat 影片剪辑的
 X 和 Y 位置
*/

ballX = ball._x;
ballY = ball._y;
batX = bat._x;
batY = bat._y;

另请参见

//（注释分隔符）


/=（除法赋值）

可用性

Flash Player 4。

用法

expression1 /= expression2

参数

expression1、expression2 数字或计算结果为数字的变量。

返回

无。

说明

运算符（算术组合赋值）；将 expression1 / expression2 的值赋予 expression1。例如，下面两个语句是相同的：

x /= y
x = x / y

示例

下面的代码举例说明如何将 /= 运算符与变量和数字结合使用。

x = 10;
y = 2;
x /= y;
// x 现在包含值 5


[]（数组访问）

可用性

Flash Player 4。

用法

my_array = ["a0", a1,...aN]
myMultiDimensional_array = [["a0",...aN],...["a0",...aN]]
my_array[E] = value
myMultiDimensional_array[E][E] = value
object["value"]

参数

my_array 数组的名称。

a0, a1,...aN 数组中的元素。

myMultiDimensional_array 模拟多维数组的名称。

E  数组中元素的编号（或索引）。

object 对象的名称。

value 字符串或计算结果为字符串的表达式，用来命名对象的属性。

返回

无。

说明

运算符；用指定的元素（a0，等等）初始化新数组或多维数组，或者访问数组中的元素。数组访问运算符使您能够动态地设置和获取实例、变量和对象的名称。它还使您能够访问对象属性。

用法 1：数组是一种对象，其属性称作“元素”，这些元素由称作“索引”的数字逐一标识。创建数组时，需用数组访问运算符（或“括号”）括住元素。一个数组可以包含各种类型的元素。例如，下面这个名为 employee 的数组包含三个元素；第一个元素是数字，另外两个元素是字符串（在引号内）。

employee = [15, "Barbara", "Erick"];

用法 2：可以通过嵌套括号来模拟多维数组。下面的代码创建一个名为 ticTacToe 且含有三个元素的数组；而每个元素也是一个具有三个元素的数组。

ticTacToe = [[1,2,3],[4,5,6],[7,8,9]];

// 在测试影片模式下，选择“调试”>“变量列表”
// 来查看数组元素的列表

用法 3：用括号括住每个元素的索引可直接对其进行访问；这样可以向数组添加新元素以及更改或获取现有元素的值。数组中第一个元素的索引永远是 0：

my_array[0] = 15;
my_array[1] = "Hello";
my_array[2] = true;

可以使用括号来添加第四个元素，如下所示：

my_array[3] = "George";

用法 4：括号可用于访问多维数组中的元素。第一对括号标识原始数组中的元素，第二对括号标识嵌套数组中的元素。下面的几行代码将数字 6 发送到“输出”面板。

ticTacToe = [[1,2,3],[4,5,6],[7,8,9]];
trace(ticTacToe[1][2]);

// 返回 6

用法 5：您可以用数组访问运算符代替 eval 函数，从而动态地设置并获取影片剪辑名称的值或一个对象的任何属性：

name["mc" + i] = "left_corner";

示例

用法 1：下面的代码范例说明新建空 Array 对象的两种不同方式；第一行使用括号。

my_array =[];
my_array = new Array();

用法 1 和 2：下面的示例创建一个名为 employee_array 的数组，并使用 trace() 动作将这些元素发送到“输出”面板。在第四行中，更改数组中的一个元素，而第五行将刚修改过的数组发送到“输出”面板：

employee_array = ["Barbara", "George", "Mary"];
trace(employee_array);
// Barbara, George, Mary
employee_array[2]="Sam";
trace(employee_array);
// Barbara, George, Sam

用法 3：在下面的示例中，计算括号中的表达式 ("piece" + i)，并将结果用作要从影片剪辑 my_mc 中获取的变量名。在此示例中，变量 i 与所释放的按钮必须在同一个时间轴上。例如，如果变量 i 等于 5，影片剪辑 my_mc 中的变量 piece5 的值将显示在“输出”面板中：

on (release) {
  x = my_mc["piece"+i];
  trace(x);
}

用法 3：在下面的代码中，计算括号中的表达式，并将结果用作要从影片剪辑 name_mc 中获取的变量名：

name_mc["A" + i];

如果您熟悉 Flash 4 动作脚本的斜杠语法，可以使用 eval 函数来达到同样的结果：

eval("name.A" & i);

用法 3：您还可以在赋值语句的左侧使用数组访问运算符，从而动态地设置实例、变量和对象的名称：

name[index] = "Gary";

另请参见

Array 类, Object 类, eval()


^（按位 XOR）

可用性

Flash Player 5。

用法

expression1 ^ expression2

参数

expression1、expression2 数字。

返回

无。

说明

运算符（按位）；将 expression1 和 expression2 转换为 32 位无符号整数，然后对于 expression1 或者 expression2 中相应位为 1 且不同时为 1 的每一位，返回 1。

示例

下面的示例对十进制的 15 和 9 使用按位 XOR 运算符，然后将结果赋予变量 x。

// 十进制的 15 = 二进制的 1111
// 十进制的 9 = 二进制的 1001
x = 15 ^ 9
trace (x)
// 1111 ^ 1001 = 0110
// 返回十进制的 6（= 二进制的 0110）


^=（按位 XOR 赋值）

可用性

Flash Player 5。

用法

expression1 ^= expression2

参数

expression1、expression2 整数和变量。

返回

无。

说明

运算符（按位组合赋值）；将 expression1 ^ expression2 的值赋予 expression1。例如，下面两个语句是相同的：

x ^= y
x = x ^ y

示例

下面是一个 ^= 运算的示例。

// 十进制的 15 = 二进制的 1111
x = 15;
// 十进制的 9 = 二进制的 1001
y = 9;
trace(x ^= y);
//返回十进制的 6（= 二进制的 0110）

另请参见

^（按位 XOR）


{}（对象初始值设定项）

可用性

Flash Player 5。

用法

object = {name1:value1, name2:value2,...nameN:valueN}

参数

object 要创建的对象。

name1,2,...N 属性名。

value1,2,...N 每个 name 属性对应的值。

返回

无。

说明

运算符；创建一个新对象并用指定的 name 和 value 属性对将其初始化。使用此运算符的效果与使用 new Object 语法然后使用赋值运算符填充属性对的效果相同。通常，将新建对象的原型命名为 Object 对象。

示例

下面代码的第一行用对象初始值设定项运算符创建一个空对象；第二行用构造函数创建一个新对象。

object = {};
object = new Object();

下面的示例创建对象 account，然后用附带的值初始化属性 name、address、city、state、zip 和 balance。

account = { name:"Betty Skate",
  address:"123 Main Street",
  city:"Blossomville",
  state:"California",
  zip: "12345",
  balance: "1000" };

下面的示例说明数组和对象初始值设定项可以如何相互嵌套。

person = { name:"Gina Vechio",
  children:[ "Ruby", "Chickie", "Puppa"] };

下面的示例使用上述示例中的信息，并使用构造函数得到相同的结果。

person = new Object();
person.name = 'Gina Vechio';
person.children = new Array();
person.children[0] = 'Ruby';
person.children[1] = 'Chickie';
person.children[2] = 'Puppa';

另请参见

[]（数组访问）, new, Object 类


|（按位 OR）

可用性

Flash Player 5。

用法

expression1 | expression2

参数

expression1、expression2 数字。

返回

无。

说明

运算符（按位）；将 expression1 和 expression2 转换为 32 位无符号整数，然后对于 expression1 或 expression2 的相应位为 1 的每一位返回 1。

示例

下面是一个按位 OR 运算的示例。

// 十进制的 15 = 二进制的 1111
x = 15;
// 十进制的 9 = 二进制的 1001
y = 9;
trace(x | y);
// 1111 | 0011 = 1111
//  返回十进制的 15（= 二进制的 1111）


||（逻辑 OR）

可用性

Flash Player 4。

用法

expression1 || expression2

参数

expression1、expression2 布尔值或可转换为布尔值的表达式。

返回

一个布尔值。

说明

运算符（逻辑）；计算 expression1 和 expression2。如果其中任何一个或者两个表达式的计算结果为 true，则结果为 true；只有当两个表达式的计算结果都为 false 时，结果才为 false。逻辑 OR 运算符可用于任意多个操作数；只要任意一个操作数的计算结果为 true，则结果为 true。

对于非布尔表达式，逻辑 OR 运算符使得 Flash 对左侧的表达式进行计算；如果左侧的表达式可以转换为 true，则结果为 true。否则，计算右侧的表达式，而且结果就是该表达式的值。

示例

用法 1：下面的示例在 if 语句中使用 || 运算符。第二个表达式的计算结果为 true，因此最终结果为 true：

x = 10
y = 250
start = false
if(x > 25 || y > 200 || start){
  trace('the logical OR test passed');
}

用法 2：此示例演示非布尔表达式是如何导致意外结果的。如果左侧的表达式转换为 true，则返回该结果，而不再转换右侧的表达式。

function fx1(){
  trace ("fx1 called");
  returns true;
}
function fx2(){
  trace ("fx2 called");
  return true;
}
if (fx1() || fx2()){
  trace ("IF statement entered");
}
// 将以下内容发送到“输出”面板：
// fx1 called
// IF statement entered


|=（按位 OR 赋值）

可用性

Flash Player 5。

用法

expression1 |= expression2

参数

expression1、expression2 数字或变量。

返回

无。

说明

运算符（按位组合赋值）；将 expression1 | expression2 的值赋予 expression1。例如，下面两个语句是相同的：

x |= y;
x = x | y;

示例

下面的示例使用了 |= 运算符：

// 十进制的 15 = 二进制的 1111
x = 15;
// 十进制的 9 = 二进制的 1001
y = 9;
trace(x |= y);
// 1111 |= 1001
//  返回十进制的 15（= 二进制的 1111）

另请参见

|（按位 OR）


~（按位 NOT）

可用性

Flash Player 5。

用法

~ expression

参数

expression 数字。

返回

无。

说明

运算符（按位）；将 expression 转换为 32 位无符号整数，然后对这些位进行求反。按位 NOT 运算更改数字的符号然后减 1。

示例

下面的示例说明对一个变量执行按位 NOT 运算。

a = 0;
trace ("when a = 0, ~a = "+~a);
// 当 a = 0，~a = -1
a = 1;
trace ("when a = 1, ~a = "+~a);
// 当 a = 0，~a = -2
// 因此，~0=-1，~1=-2


+（加号）

可用性

Flash Player 4；Flash Player 5。在 Flash 5 和更高版本中，+ 既可以是数值运算符，也可以是字符串连接符，这要取决于参数的数据类型。在 Flash 4 中，+ 只是数值运算符。引入到 Flash 5 或更高版本创作环境中的 Flash 4 文件经历了一个转换过程，以保持数据类型的完整性。下面的示例举例说明对包含数值比较的 Flash 4 文件的转换过程：

Flash 4 文件：

x + y

转换的 Flash 5 或更高版本的文件：

Number(x) + Number(y)

用法

expression1 + expression2

参数

expression1、expression2 数字或字符串。

返回

无。

说明

运算符；将数值表达式相加或者连接（合并）字符串。如果其中一个表达式为字符串，则所有其它表达式都被转换为字符串，然后连接起来。

两个表达式都为整数时，和为整数；其中一个或两个表达式为浮点数时，和为浮点数。

示例

用法 1：下面的示例连接两个字符串，然后在“输出”面板中显示结果。

name = "Cola";
instrument = "Drums";
trace (name + " plays " + instrument);

用法 2：与动态和输入文本字段相关联的变量是字符串数据类型。在下面的示例中，变量 deposit 是舞台上的一个输入文本字段。在用户输入存款数目后，该脚本尝试将 deposit 加到 oldBalance 上。然而，由于 deposit 是字符串数据类型，因此脚本连接（合并成一个字符串）变量的值，而不是对它们求和。

oldBalance = 1345.23;
currentBalance = deposit + oldBalance;
trace (currentBalance);

例如，如果用户在 deposit 文本字段中输入 475，则 trace() 动作将值 4751345.23 发送到“输出”面板。

若要更正这一点，可使用 Number() 函数将字符串转换为数字，如下所示：

currentBalance = Number(deposit) + oldBalance;

用法 3：此语句将整数 2 和 3 相加，然后将计算结果（整数 5）显示在“输出”面板中：

trace (2 +3);

此语句将浮点数 2.5 和 3.25 相加，然后将结果（浮点数 5.75）显示在“输出”面板中：

trace (2.5 + 3.25);

另请参见

_accProps


+=（加法赋值）

可用性

Flash Player 4。

用法

expression1 += expression2

参数

expression1、expression2 数字或字符串。

返回

无。

说明

运算符（算术组合赋值）；将 expression1 + expression2 的值赋予 expression1。例如，下面两个语句的结果是相同的：

x += y;
x = x + y;

此运算符也可以执行字符串连接运算。加法运算符 (+) 的所有规则适用于加法赋值 (+=) 运算符。

示例

下面的示例显示 += 运算符的数值用法。

x = 5;
y = 10;
x += y;
trace(x);
//x 返回 15

此示例将 += 运算符与字符串表达式一起使用，并将“My name is Gilbert”发送到“输出”面板。

x = "My name is "
x += "Gilbert"
trace (x)
// 返回“My name is Gilbert”

另请参见

+（加号）


<（小于）

可用性

Flash Player 4；Flash Player 5。在 Flash 5 和更高版本中，<（小于）运算符是能够处理各种数据类型的比较运算符。而在 Flash 4 中，< 是数值运算符。引入到 Flash 5 或更高版本创作环境中的 Flash 4 文件经历了一个转换过程，以保持数据类型的完整性。下面举例说明对包含数值比较的 Flash 4 文件的转换过程。

Flash 4 文件：

x < y

转换的 Flash 5 或更高版本的文件：

Number(x) < Number(y)

用法

expression1 < expression2

参数

expression1、expression2 数字或字符串。

说明

运算符（比较）；比较两个表达式以确定 expression1 是否小于 expression2；如果是，则该运算符返回 true。如果 expression1 大于或等于 expression2，则该运算符返回 false。使用字母顺序计算字符串表达式；所有的大写字母排在小写字母的前面。

示例

下面的示例举例说明数值比较和字符串比较所返回的 true 和 false。

3 < 10;
// true

10 < 3;
//false

"Allen" < "Jack";
// true

"Jack" < "Allen";
//false

"11" < "3";
// true

"11" < 3;
// 数值比较
//false

"C" < "abc";
//false

"A" < "a";
// true


<<（按位向左移位）

可用性

Flash Player 5。

用法

expression1 << expression2

参数

expression1 要向右移位的数字或表达式。

expression2 将转换为 0 到 31 之间整数的数字或表达式。

返回

无。

说明

运算符（按位）；将 expression1 和 expression2 转换为 32 位整数，然后将 expression1 中的所有位向左移一定的位数，该位数由 expression2 转换而来的整数指定。由于此运算的结果而被清空的位上则填补 0。将一个值向左移一位等效于将它乘以 2。

示例

在下面的示例中，将整数 1 向左移 10 位。

x = 1 << 10

此运算的结果为 x = 1024。这是因为十进制的 1 等于二进制的 1，二进制的 1 向左移 10 位是二进制的 10000000000，而二进制的 10000000000 就是十进制的 1024。

在下面的示例中，将整数 7 向左移 8 位。

x = 7 << 8

此运算的结果为 x = 1792。这是因为十进制的 7 等于二进制的 111，二进制的 111 向左移 8 位是二进制的 11100000000，而二进制的 11100000000 就是十进制的 1792。

另请参见

>>=（按位向右移位并赋值）, >>（按位向右移位）, <<=（按位向左移位并赋值）


<<=（按位向左移位并赋值）

可用性

Flash Player 5。

用法

expression1 <<= expression2

参数

expression1 要向右移位的数字或表达式。

expression2 将转换为 0 到 31 之间整数的数字或表达式。

返回

无。

说明

运算符（按位组合赋值）；此运算符执行按位向左移位运算，然后将该内容作为结果存储在 expression1 中。下面的两个表达式是等效的。

A <<= B
A = (A << B)

另请参见

<<（按位向左移位）, >>=（按位向右移位并赋值）, >>（按位向右移位）


<=（小于等于）

可用性

Flash Player 4。

Flash 4 文件：

x <= y

转换的 Flash 5 或更高版本的文件：

Number(x) <= Number(y)

用法

expression1 <= expression2

参数

expression1、expression2 数字或字符串。

返回

一个布尔值。

说明

运算符（比较）；比较两个表达式以确定 expression1 是否小于等于 expression2；如果是，则该运算符返回 true。如果 expression1 大于 expression2，则该运算符返回 false。使用字母顺序计算字符串表达式；所有的大写字母排在小写字母的前面。

在 Flash 5 或更高版本中，小于等于 (<=) 运算符是能够处理各种数据类型的比较运算符。而在 Flash 4 中，<= 是一个数值运算符。引入到 Flash 5 或更高版本创作环境中的 Flash 4 文件经历了一个转换过程，以保持数据类型的完整性。下面举例说明对包含数值比较的 Flash 4 文件的转换过程。

示例

下面的示例举例说明用于数值和字符串比较的 true 和 false 结果：

5 <= 10;
// true

2 <= 2;
// true

10 <= 3;
//false

"Allen" <= "Jack";
// true

"Jack" <= "Allen";
//false

"11" <= "3";
// true

"11" <= 3;
// 数值比较
//false

"C" <= "abc";
//false

"A" <= "a";
// true


<>（不等于）

可用性

Flash 2。

用法

expression1 <> expression2

参数

expression1、expression2 数字、字符串、布尔值、变量、对象、数组或函数。

返回

一个布尔值。

说明

运算符（不等于）；测试结果与 == 运算符正好相反。如果 expression1 与 expression2 相等，则结果为 false。与 == 运算符一样，相等 的定义取决于所比较的数据类型：

  • 数字、字符串和布尔值按值进行比较。
  • 变量、对象、数组和函数按引用进行比较。

在 Flash 5 中已不鼓励使用此运算符，Macromedia 建议您使用 != 运算符。

另请参见

!=（不等于）


=（赋值）

可用性

Flash Player 4。

Flash 4 文件：

x = y

转换的 Flash 5 或更高版本的文件：

Number(x) == Number(y)

用法

expression1 = expression2

参数

expression1 变量、数组元素或对象属性。

expression2 任何类型的值。

返回

无。

说明

运算符；将 expression2（位于右侧的参数）的类型赋予 expression1 中的变量、数组元素或属性。

在 Flash 5 或更高版本中，= 为赋值运算符，而 == 运算符用于计算相等性。在 Flash 4 中，= 为数值等于运算符。引入到 Flash 5 或更高版本创作环境中的 Flash 4 文件经历了一个转换过程，以保持数据类型的完整性。

示例

下面的示例使用赋值运算符将数字数据类型赋予变量 x。

x = 5

下面的示例使用赋值运算符将字符串数据类型赋予变量 x。

x = "hello"

另请参见

==（等于）


-=（减法赋值）

可用性

Flash Player 4。

用法

expression1 -= expression2

参数

expression1、expression2 数字或计算结果为数字的表达式。

返回

无。

说明

运算符（算术组合赋值）；将 expression1 - expression2 的值赋予 expression1。例如，下面两个语句是相同的：

x -= y;
x = x - y;

必须将字符串表达式转换为数字；否则返回 NaN。

示例

用法 1：下面的示例使用 -= 运算符从 5 中减去 10，然后将结果赋予变量 x。

x = 5;
y = 10;
x -= y
trace(x);
// 返回 -5

用法 2：下面的示例说明如何将字符串转换为数字。

x = "5";
y = "10";
x -= y;
trace(x);
// 返回 -5


==（等于）

可用性

Flash Player 5。

用法

expression1 == expression2

参数

expression1、expression2 数字、字符串、布尔值、变量、对象、数组或函数。

返回

一个布尔值。

说明

运算符（等于）；测试两个表达式是否相等。如果表达式相等，则结果为 true。

相等 的定义取决于参数的数据类型：

  • 数字和布尔值按值进行比较，如果它们具有相同的值，则视为相等。
  • 对于字符串表达式，如果它们具有相同的字符数，而且这些字符都相同，则这些字符串表达式相等。
  • 变量、对象、数组和函数按引用进行比较。对于变量，如果两个变量引用相同的对象、数组或函数，则它们相等。而两个单独的数组即使具有相同数量的元素，也永远不会被视为相等。

示例

用法 1：下面的示例将 == 运算符与 if 语句结合使用：

a = "David" , b = "David";
if (a == b){
  trace("David is David");
}

用法 2：这些示例显示比较混合类型的运算的结果。

x = "5"; y = "5";
trace (x == y);
// true

x = "5"; y = "66";
trace (x == y);
//false

x = "chris"; y = "steve";
trace (x == y);
//false

另请参见

!=（不等于）, ===（全等）, !==（不全等）


===（全等）

可用性

Flash Player 6。

用法

expression1 === expression2

返回

一个布尔值。

说明

运算符；测试两个表达式是否相等；除了不转换数据类型外，全等运算符执行的运算与等于运算符相同。如果两个表达式完全相等（包括它们的数据类型都相等），则结果为 true。

相等 的定义取决于参数的数据类型：

  • 数字和布尔值按值进行比较，如果它们具有相同的值，则视为相等。
  • 对于字符串表达式，如果它们具有相同的字符数，而且这些字符都相同，则这些字符串表达式相等。
  • 变量、对象、数组和函数按引用进行比较。对于变量，如果两个变量引用相同的对象、数组或函数，则它们相等。而两个单独的数组即使具有相同数量的元素，也永远不会被视为相等。

示例

下面的代码显示使用等于、全等和不全等运算符的运算所返回的值。

s1 = new String("5");
s2 = new String("5");
s3 = new String("Hello");
n  = new Number(5);
b = new Boolean(true);

s1 == s2; // true
s1 == s3; // false
s1 == n; // true
s1 == b; // false

s1 === s2;  // true
s1 === s3; // false
s1 === n; // false
s1 === b; // false

s1 !== s2; // false
s1 !== s3; // true
s1 !== n; // true
s1 !== b; // true

另请参见

==（等于）, !=（不等于）, ===（全等）


>（大于）

可用性

Flash Player 4。

Flash 4 文件：

x > y

转换的 Flash 5 或更高版本的文件：

Number(x) > Number(y)

用法

expression1 >expression2

参数

expression1、expression2 数字或字符串。

返回

一个布尔值。

说明

运算符（比较）；比较两个表达式以确定 expression1 是否大于 expression2；如果是，则该运算符返回 true。如果 expression1 小于或等于 expression2，则该运算符返回 false。使用字母顺序计算字符串表达式；所有的大写字母排在小写字母的前面。

在 Flash 5 或更高版本中，大于 (>) 是能够处理各种数据类型的比较运算符。而在 Flash 4 中，> 是数值运算符。引入到 Flash 5 或更高版本创作环境中的 Flash 4 文件经历了一个转换过程，以保持数据类型的完整性。


>=（大于等于）

可用性

Flash Player 4。

Flash 4 文件：

x > y

转换的 Flash 5 或更高版本的文件：

Number(x) > Number(y)

用法

expression1 >= expression2

参数

expression1、expression2 字符串、整数或浮点数。

返回

一个布尔值。

说明

运算符（比较）；比较两个表达式以确定 expression1 是大于等于 expression2 (true)，还是 expression1 小于 expression2 (false)。

在 Flash 5 或更高版本中，大于等于 (>=) 运算符是能够处理各种数据类型的比较运算符。而在 Flash 4 中，>= 是一个数值运算符。引入到 Flash 5 或更高版本创作环境中的 Flash 4 文件经历了一个转换过程，以保持数据类型的完整性。


>>（按位向右移位）

可用性

Flash Player 5。

用法

expression1 >> expression2

参数

expression1 要向右移位的数字或表达式。

expression2 将转换为 0 到 31 之间整数的数字或表达式。

返回

无。

说明

运算符（按位）；将 expression1 和 expression2 转换为 32 位整数，然后将 expression1 中的所有位向右移一定位数，该位数由 expression2 转换而来的整数指定。移到右侧的位被去掉。若要保留原 expression 的符号，则如果 expression1 的最高有效位（最左端的位）为 0，那么左侧的位都填补 0；如果最高有效位为 1，那么左侧的位都填补 1。将一个值右移一位等效于将它除以 2 并去掉余数。

示例

下面的示例将 65535 转换为 32 位整数，然后右移 8 位。

x = 65535 >> 8

上述运算的结果如下所示：

x = 255

这是因为十进制的 65535 等于二进制的 1111111111111111（16 个 1），二进制的 1111111111111111 向右移 8 位是二进制的 11111111，而二进制的 11111111 是十进制的 255。因为这个整数是 32 位的，最高有效位为 0，所以用 0 来填补位。

下面的示例将 -1 转换为 32 位整数，然后右移 1 位。

x = -1 >> 1

上述运算的结果如下所示：

x = -1

这是因为十进制的 -1 等于二进制的 11111111111111111111111111111111（32 个 1），向右移一位使得最低有效位（最右侧的位）被去掉而最高有效位被填补上 1。结果为二进制的 11111111111111111111111111111111（32 个 1），表示 32 位整数 -1。

另请参见

>>=（按位向右移位并赋值）


>>=（按位向右移位并赋值）

可用性

Flash Player 5。

用法

expression1 >>=expression2

参数

expression1 要向右移位的数字或表达式。

expression2 将转换为 0 到 31 之间整数的数字或表达式。

返回

无。

说明

运算符（按位组合赋值）；此运算符执行按位向右移位运算，然后将该内容作为结果存储在 expression1 中。

示例

下面的两个表达式是等效的。

A >>= B
A = (A >> B)

下面加有注释的代码使用按位 (>>=) 运算符。这也是使用所有按位运算符的示例。

function convertToBinary(number){
  var result = "";
  for (var i=0; i<32; i++) {
    // 使用按位 AND 提取最低有效位
    var lsb = number & 1;
    // 将此位添加到结果字符串中
    result = (lsb ?"1" : "0") + result;
    // 将数字向右移一位以显示下一位
    number >>= 1;}
  return result;
}
trace(convertToBinary(479));
// 返回字符串 00000000000000000000000111011111
// 上述字符串是十进制
// 数字 479 的二进制表示形式

另请参见

<<（按位向左移位）


>>>（按位无符号向右移位）

可用性

Flash Player 5。

用法

expression1 >>> expression2

参数

expression1 要向右移位的数字或表达式。

expression2 将转换为 0 到 31 之间整数的数字或表达式。

返回

无。

说明

运算符（按位）；除了由于左侧的位总是填补 0 而不保留原 expression 的符号外，该运算符与按位向右移位 (>>) 运算符相同。

示例

下面的示例将 -1 转换为 32 位整数，然后右移 1 位。

x = -1 >>> 1

上述运算的结果如下所示：

x = 2147483647

这是因为十进制的 -1 是二进制的 11111111111111111111111111111111（32 个 1），当向右（无符号）移 1 位时，最低有效位（最右端的位）被去掉，而最高有效位（最左端的位）被填补上 0。结果为二进制的 01111111111111111111111111111111，表示 32 位整数 2147483647。

另请参见

>>=（按位向右移位并赋值）


>>>=（按位无符号向右移位并赋值）

可用性

Flash Player 5。

用法

expression1 >>>= expression2

参数

expression1 要向右移位的数字或表达式。

expression2 将转换为 0 到 31 之间整数的数字或表达式。

返回

无。

说明

运算符（按位组合赋值）；执行无符号按位向右移位运算，然后将该内容作为结果存储在 expression1 中。下面的两个表达式是等效的：

A >>>= B
A = (A >>> B)

另请参见

>>>（按位无符号向右移位）, >>=（按位向右移位并赋值）


Accessibility 类

可用性

Flash Player 6 版本 65。

说明

Accessibility 类管理与屏幕读取器之间的通讯。Accessibility 类的方法是静态的，即，您不必创建该类的实例即可使用其方法。

若要获取和设置特定对象（例如按钮、影片剪辑或文本字段）的可访问属性，请使用 _accProps 属性。若要确定播放器是否运行在支持辅助功能的环境中，请使用 System.capabilities.hasAccessibility。

Accessibility 类的方法摘要

方法 | 说明
Accessibility.isActive() | 指示屏幕读取器程序是否处于活动状态。
Accessibility.updateProperties() | 为屏幕读取器更新屏幕上对象的说明。


Accessibility.isActive()

可用性

Flash Player 6 版本 65。

用法

Accessibility.isActive()

参数

无。

返回

如果有活动的 Microsoft Active Accessibility (MSAA) 客户端，并且播放器正在支持在 Flash Player 和辅助功能之间进行通讯的环境中运行，则返回布尔值 true；否则返回布尔值 false。

说明

方法；指示 MSAA 屏幕读取器程序是否当前处于活动状态并且播放器是否正在支持在 Flash Player 和辅助功能之间进行通讯的环境中运行。当希望应用程序在有屏幕读取器的情况下行为方式不同时，可使用此方法。

若要确定播放器是否运行在支持辅助功能的环境中，请使用 System.capabilities.hasAccessibility。

注意：如果您在播放文档的 Flash 窗口第一次出现的大约 1 秒或 2 秒内调用此方法，则可能获得返回值 false，即使有活动的 MSAA 客户端也是如此。这是由于 Flash 和 MSAA 客户端之间的异步通讯机制造成的。您可以通过确保在加载您的文档后和调用此方法前有 1 秒到 2 秒的延迟，来解决这一限制问题。

另请参见

Accessibility.updateProperties(), _accProps, System.capabilities.hasAccessibility


Accessibility.updateProperties()

可用性

Flash Player 6 版本 65。

用法

Accessibility.updateProperties()

参数

无。

返回

无。

说明

方法；导致 Flash Player 重新检查所有辅助功能属性，为屏幕读取器更新其对象说明，并且根据需要将事件发送到屏幕读取器以指示已发生更改。有关设置辅助功能属性的信息，请参见 _accProps。

若要确定播放器是否运行在支持辅助功能的环境中，请使用 System.capabilities.hasAccessibility。

如果您修改多个对象的辅助功能属性，则只需调用 Accessibility.updateProperties() 一次；多次调用可能导致性能降低以及屏幕读取器的结果无法理解。

示例

以下动作脚本代码利用动态辅助功能属性。此示例出自可以更改它显示的图标的非文本按钮。

function setIcon( newIconNum, newTextEquivalent )
{
   this.iconImage = this.iconImages[ newIconNum ];
   if ( newTextEquivalent != undefined )
   {
      if ( this._accProps == undefined )
         this._accProps = new Object();
      this._accProps.name = newTextEquivalent;
      Accessibility.updateProperties();
   }
}

另请参见

Accessibility.isActive(), _accProps, System.capabilities.hasAccessibility


_accProps

可用性

Flash Player 6 版本 65。

用法

_accProps.propertyName
instanceName._accProps.propertyName

参数

propertyName 辅助功能属性名（请参见以下有关有效名称的说明）。

instanceName 分配给影片剪辑、按钮、动态文本字段或输入文本字段的实例的实例名称。

说明

属性；用于在运行时控制 SWF 文件、影片剪辑、按钮、动态文本字段或输入文本字段的屏幕读取器辅助功能选项。这些属性覆盖创作时在“辅助功能”面板中提供的相应设置。为使对这些属性的更改生效，您必须调用 Accessibility.updateProperties()。有关“辅助功能”面板的信息，请参见Flash 的“辅助功能”面板。

若要确定播放器是否运行在支持辅助功能的环境中，请使用 System.capabilities.hasAccessibility。

下表列出了每一 _accProps 属性的名称和数据类型、它在“辅助功能”面板中的等效设置以及可以应用该属性的对象类型。术语反转逻辑 是指该属性设置与“辅助功能”面板中的相应设置相反。例如，将 silent 属性设置为 true 等效于取消选择“使影片可访问”或“使对象可访问”选项。

属性 | 数据类型 | “辅助功能”面板中的等效设置 | 应用于
silent | 布尔值 | 使影片可访问/ 使对象可访问 （反转逻辑） | 整个影片 影片剪辑 按钮 动态文本 输入文本
forceSimple | 布尔值 | 使子对象可访问（反转逻辑） | 整个影片 影片剪辑
name | 字符串 | Name | 整个影片 影片剪辑 按钮 输入文本
description | 字符串 | 说明 | 整个影片 影片剪辑 按钮 动态文本 输入文本
shortcut | 字符串 | 快捷键&DATA; | 影片剪辑 按钮 输入文本

* 有关向可访问对象分配快捷键的信息，请参见 Key.addListener()。

若要在“辅助功能”面板中指定与 Tab 键索引设置相对应的设置，请使用 Button.tabIndex、MovieClip.tabIndex 或 TextField.tabIndex 属性。

无法在运行时指定“自动标签”设置。

如果使用时未采用 instanceName 参数，则对 _accProps 属性的更改将应用于整个影片。例如，以下代码将整个影片的辅助功能 name 属性设置为字符串 "Pet Store"，然后调用 Accessibility.updateProperties() 来使所作更改生效。

_accprops.name = "Pet Store";
Accessbility.updateProperties();

与上例相比较，以下代码将实例名称为 price_mc 的影片剪辑的 name 属性设置为字符串 "Price"：

price_mc._accProps.name = "Price";
Accessbility.updateProperties();

如果您指定若干辅助功能属性，则应在调用 Accessibility.updateProperties() 前进行尽可能多的更改，而不是在每一属性语句后调用它：

_accprops.name = "Pet Store";
animal_mc._accProps.name = "Animal";
animal_mc._accProps.description = "Cat, dog, fish, etc.";
price_mc._accProps.name = "Price";
price_mc._accProps.description = "Cost of a single item";
Accessbility.updateProperties();

如果您没有指定影片或对象的辅助功能属性，则实现在“辅助功能”面板中设置的任何值。

在指定一个辅助功能属性后，就不能将它的值还原为在“辅助功能”面板中设置的值。但是，可以通过删除 _accProps 对象，将该属性设置为它的默认值（对于布尔值，其默认值是 false；对于字符串值，其默认值是空字符串）：

my_mc._accProps.silent = true; // 设置属性
// 此处为其它代码
delete my_mc._accProps.silent; // 还原为默认值

若要将一个对象的所有辅助功能值都还原为默认值，可以删除 instanceName._accProps 对象：

deletemy_btn._accProps;

若要将所有对象的辅助功能值都还原为默认值，可以删除全局 _accProps 对象：

delete _accProps;

如果您把某一属性指定给不支持该属性的对象类型，那么该属性指定将被忽略，不会引发任何错误。例如，按钮不支持 forceSimple 属性，因此忽略如下行：

my_btn._accProps.forceSimple = false; //ignored

示例

下面是某些利用动态辅助功能属性的示例动作脚本代码。您应将该代码分配给可以更改其显示的图标的非文本图标按钮组件。

function setIcon( newIconNum, newTextEquivalent )
{
   this.iconImage = this.iconImages[ newIconNum ];
   if ( newTextEquivalent != undefined )
   {
      if ( this._accProps == undefined )
         this._accProps = new Object();
      this._accProps.name = newTextEquivalent;
      Accessibility.updateProperties();
   }
}

另请参见

Accessibility.isActive(), Accessibility.updateProperties(), System.capabilities.hasAccessibility


add

可用性

Flash Player 4。

用法

string1 add string2

参数

string1、string2 字符串。

返回

无。

说明

运算符；连接（合并）两个或多个字符串。add 运算符替换了 Flash 4 的加法 (&) 运算符；当将使用 & 运算符的 Flash Player 4 文件引入 Flash 5 或更高版本的创作环境中时，就会自动对其进行转换以使用 add 运算符进行字符串连接。不过，在 Flash Player 5 中已不鼓励使用 add 运算符，Macromedia 建议您在为 Flash Player 5 或更高版本创建内容时使用 + 运算符。如果您为 Flash Player 4 或更早版本的播放器创建内容，则使用 add 运算符来连接字符串。

另请参见

+（加号）


and

可用性

Flash Player 4。

用法

condition1 and condition2

参数

condition1、condition2 计算结果为 true 或 false 的条件或表达式。

返回

无。

说明

运算符；在 Flash Player 4 中执行逻辑 AND 运算。如果两个表达式的计算结果均为 true，则整个表达式为 true。在 Flash 5 中已不鼓励使用该运算符，Macromedia 建议您使用 && 运算符。

另请参见

&&（逻辑 AND）


Arguments 类

可用性

Flash Player 5；属性已添加到 Flash Player 6。

说明

Arguments 类是一个数组，其中包含作为参数传递给任何函数的值。每次在动作脚本中调用函数时，都会为该函数自动创建 Arguments 对象。同时还会创建一个局部变量 arguments，使您可以引用 Arguments 对象。

Arguments 类的属性摘要

属–‘ | 说明
arguments.callee | 指被调用的函数。
arguments.caller | 指进行调用的函数。
arguments.length | 传递给函数的参数数量。


arguments.callee

可用性

Flash Player 5。

用法

arguments.callee

说明

属性；指当前被调用的函数。

示例

可以使用 arguments.callee 属性来生成递归的匿名函数，如下所示：

factorial = function (x) {
  if (x <= 1) {
    return 1;
  } else {
    return x * arguments.callee(x-1);
  }
};

下面是一个命名的递归函数：

function factorial (x) {
  if (x <= 1) {
    return 1;
  } else {
    return x * factorial(x-1);
  }
}


arguments.caller

可用性

Flash Player 6。

用法

arguments.caller

说明

属性；指进行调用的函数。


Array 类

可用性

Flash Player 5（已成为 Flash Player 6 本身的对象，Flash Player 6 大大提高了性能）。

说明

Array 类使您可以访问和操纵数组。数组是一个对象，其属性由表示该属性在数组中位置的数字来标识。此数字称为“索引”。所有数组都从零开始，这意味着数组中的第一个元素为 [0]，第二个元素为 [1]，依次类推。在下面的示例中，my_array 包含了一年中的月份。

my_array[0] = "January"
my_array[1] = "February"
my_array[2] = "March"
my_array[3] = "April"

若要创建 Array 对象，请使用构造函数 new Array() 或数组访问运算符 ([])。若要访问数组中的元素，请使用数组访问运算符 ([])。

Array 类的方法摘要

方法 | 说明
Array.concat() | 连接参数，并将其作为新数组返回。
Array.join() | 将数组内的所有元素联接为一个字符串。
Array.pop() | 删除数组中最后一个元素，并返回该元素的值。
Array.push() | 将一个或多个元素添加到数组的结尾，并返回该数组的新长度。
Array.reverse() | 倒转数组的方向。
Array.shift() | 删除数组中第一个元素，并返回该元素的值。
Array.slice() | 提取数组中的一部分，并将该部分作为新数组返回。
Array.sort() | 就地对数组进行排序。
Array.sortOn() | 基于数组中的某个字段对数组进行排序。
Array.splice() | 在数组中添加元素和删除元素。
Array.toString() | 返回表示 Array 对象中元素的字符串值。
Array.unshift() | 将一个或多个元素添加到数组的开头，并返回该数组的新长度。

Array 类的属性摘要

属性 | 说明
Array.length | 指定数组中元素数量的非从零开始的整数。

Array 类的构造函数

可用性

Flash Player 5。

用法

new Array()
new Array(length)
new Array(element0, element1, element2,...elementN)

参数

length 一个指定数组中元素数量的整数。在元素不连续的情况下，length 参数指定的是数组中最后一个元素的索引号加 1。

element0...elementN 一个包含两个或多个任意值的列表。这些值可以是数字、字符串、对象或其它数组。数组中第一个元素的索引或位置始终为 0。

返回

无。

说明

构造函数；它使您可以创建数组。您可使用构造函数来创建不同类型的数组：空数组、具有特定长度但其中元素没有值的数组或其中元素具有特定值的数组。

用法 1：如果不指定任何参数，则创建长度为 0 的数组。

用法 2：如果仅指定长度，则创建元素数等于 length 的数组，但这些元素没有值。

用法 3：如果使用 element 参数指定值，则创建具有特定值的数组。

示例

用法 1：下面的示例创建初始长度为 0 的新 Array 对象。

my_array = new Array();
trace(my_array.length); // 返回 0

用法 2：下面的示例创建初始长度为 4 的新 Array 对象。

my_array = new Array(4);
trace(my_array.length); // 返回 4

用法 3：下面的示例创建初始长度为 5 的新 Array 对象 go_gos_array。

go_gos_array = new Array("Belinda", "Gina", "Kathy", "Charlotte", "Jane");
trace(my_array.length); // 返回 5
trace(go_gos_array.join(", ")); // 显示元素

go_gos 数组的初始元素标识如下：

go_gos_array[0] = "Belinda";
go_gos_array[1] = "Gina";
go_gos_array[2] = "Kathy";
go_gos_array[3] = "Charlotte";
go_gos_array[4] = "Jane";

下面的代码将第 6 个元素添加到 go_gos_array 数组中并更改第二个元素：

go_gos_array[5] = "Donna";
go_gos_array[1] = "Nina"
trace(go_gos_array.join(" + "));

另请参见

Array.length, []（数组访问）


Array.concat()

可用性

Flash Player 5。

用法

my_array.concat( [ value0, value1,...valueN ])

参数

value0...valueN 要在新数组中连接的数字、元素或字符串。如果您没有传递任何值，则创建 my_array 的一个副本。

返回

无。

说明

方法；将参数中指定的元素与 my_array 中的元素连接，并创建新的数组。如果 value 参数指定的是数组，则连接该数组的元素而不是该数组本身。数组 my_array 保持不变。

示例

下面的代码连接两个数组。

alpha_array = new Array("a","b","c");
numeric_array = new Array(1,2,3);
alphaNumeric_array=alpha_array.concat(numeric_array);
trace(alphaNumeric_array);
// 创建数组 ["a","b","c",1,2,3]

下面的代码连接三个数组。

num1_array = [1,3,5];
num2_array = [2,4,6];
num3_array = [7,8,9];
nums_array=num1_array.concat(num2_array,num3_array)
trace(nums_array);
// 创建数组 [1,3,5,2,4,6,7,8,9]

嵌套数组不能像普通数组那样展开。嵌套数组中的元素不会分解为数组 x_array 中的独立元素，如下面的示例所示。

a_array = new Array ("a","b","c");

// 2 和 3 是嵌套数组中的元素
n_array = new Array(1, [2, 3], 4);

x_array = a_array.concat(n_array);
trace(x_array[0]); // "a"
trace(x_array[1]); // "b"
trace(x_array[2]); // "c"
trace(x_array[3]); // 1
trace(x_array[4]); // 2, 3
trace(x_array[5]); // 4


Array.join()

可用性

Flash Player 5。

用法

my_array.join([separator])

参数

separator 在返回字符串中分隔数组元素的字符或字符串。如果省略此参数，则使用逗号作为默认分隔符。

返回

字符串。

说明

方法；将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。嵌套数组总是以逗号分隔，而不使用传递给 join() 方法的分隔符分隔。

示例

下面的示例创建一个具有三个元素的数组：Earth、Moon 和 Sun。该示例然后联接这一数组三次：第一次使用默认的分隔符（逗号和空格），然后使用破折号，最后使用加号 (+)；并且在“输出”面板中显示这些数组：

a_array = new Array("Earth","Moon","Sun")
trace(a_array.join());
// 返回 Earth, Moon, Sun
trace(a_array.join(" - "));
// 返回 Earth - Moon - Sun
trace(a_array.join(" + "));
// 返回 Earth + Moon + Sun


Array.length

可用性

Flash Player 5。

用法

my_array.length

说明

属性；指定数组中元素数量的非从零开始的整数。当将新元素添加到数组时，此属性会自动更新。当您向某一数组元素赋值时（例如 my_array[index] = value），如果 index 是数字，并且 index+1 大于 length 属性，则将 length 属性更新为 index+1。

示例

下面的代码解释 length 属性是如何更新的。

my_array = new Array();
trace(my_array.length); // 初始长度为 0
my_array[0] = 'a';
trace(my_array.length); // 将 my_array.length 更新为 1
my_array[1] = 'b';
trace(my_array.length); // 将 my_array.length 更新为 2
my_array[9] = 'c';
trace(my_array.length); // 将 my_array.length 更新为 10


Array.pop()

可用性

Flash Player 5。

用法

my_array.pop()

参数

无。

返回

指定的数组中最后一个元素的值。

说明

方法；删除数组中最后一个元素，并返回该元素的值。

示例

下面的代码创建包含四个元素的 myPets 数组，然后删除其最后一个元素。

myPets = ["cat", "dog", "bird", "fish"];
popped = myPets.pop();
trace(popped);
// 返回 fish


Array.push()

可用性

Flash Player 5。

用法

my_array.push(value,...)

参数

value 要追加到数组中的一个或多个值。

返回

新数组的长度。

说明

方法；将一个或多个元素添加到数组的结尾，并返回该数组的新长度。

示例

下面的示例创建具有两个元素（cat 和 dog）的数组 myPets。第二行将两个元素添加到数组。在调用 push() 方法后，变量 pushed 包含四个元素。因为 push() 方法返回数组的新长度，所以最后一行中的 trace() 动作将 myPets 的新长度 (4) 发送到“输出”面板：

myPets = ["cat", "dog"];
pushed = myPets.push("bird", "fish");
trace(pushed);


Array.reverse()

可用性

Flash Player 5。

用法

my_array.reverse()

参数

无。

返回

无。

说明

方法；就地倒转数组。

示例

下面是一个使用此方法的示例。

var numbers_array = [1, 2, 3, 4, 5, 6];
trace(numbers_array.join()); // 1.2.3.4.5.6
numbers_array.reverse();
trace(numbers_array.join()); // 6,5,4,3,2,1


Array.shift()

可用性

Flash Player 5。

用法

my_array.shift()

参数

无。

返回

数组中的第一个元素。

说明

方法；删除数组中第一个元素，并返回该元素。

示例

下面的代码创建数组 myPets，然后删除该数组中的第一个元素，并将其分配给变量 shifted。

var myPets_array = ["cat", "dog", "bird", "fish"];
shifted = myPets_array.shift();
trace(shifted); // 返回 "cat"

另请参见

Array.pop()


Array.slice()

可用性

Flash Player 5。

用法

my_array.slice( [ start [ , end ] ] )

参数

start 指定片段起始点索引的数字。如果 start 是负数，则起点从数组的结尾开始，其中 -1 指的是最后一个元素。

end 指定片段终点索引的数字。如果省略此参数，则片段包括数组中从开头到结尾的所有元素。如果 end 是负数，则终点从数组的结尾指定，其中 -1 指的是最后一个元素。

返回

一个数组。

说明

方法；提取数组中的一个片段或子字符串，并将其作为新数组返回，而不修改原始数组。返回的数组包括 start 元素以及从其开始到 end 元素（但不包括该元素）的所有元素。

如果您没有传递任何参数，则创建 my_array 的一个副本。


Array.sort()

可用性

Flash Player 5；附加功能已在 Flash Player 7 中添加。

用法

my_array.sort()
my_array.sort(compareFunction)
my_array.sort(option | option |... )
my_array.sort(compareFunction, option | option |... )

参数

compareFunction 一个用来确定数组中元素排序顺序的可选比较函数。给定元素 A 和 B，compareFunction 的结果可具有以下三个值之一：

  • -1，如果 A 应在排序后序列中出现在 B 之前
  • 0，如果 A = B
  • 1，如果 A 应在排序后序列中出现在 B 之后

option 由 |（按位 OR）运算符分隔的一个或多个数字或字符串，这些数字或字符串更改根据默认值排序的行为。下面是 option 可以接受的值：

  • 1 或 Array.CASEINSENSITIVE
  • 2 或 Array.DESCENDING
  • 4 或 Array.UNIQUE
  • 8 或 Array.RETURNINDEXEDARRAY
  • 16 或 Array.NUMERIC

有关此参数的信息，请参见 Array.sortOn()。

返回

返回值取决于是否传递任何参数：

  • 如果您为 option 指定值 4 或 Array.UNIQUE，并且所排序的两个或多个元素具有相同的排序字段，则 Flash 返回值 0 并且不修改该数组。
  • 如果您为 option 指定值 8 或 Array.RETURNINDEXEDARRAY，则 Flash 将返回反映排序结果的数组并且不修改该数组。
  • 否则，Flash 不返回任何内容并修改该数组以反映排序顺序。

说明

方法；对数组中的元素进行排序。Flash 根据 ASCII (Unicode) 值排序。如果所比较的两个元素中的任何一个不包含在 fieldName 参数中指定的字段，则认为该字段是 undefined，并且在排序后的数组中不按任何特定顺序连续放置这些元素。

默认情况下，Array.sort() 按如下方式工作：

  • 排序区分大小写（Z 位于 a 之前）。
  • 排序是升序（a 位于 b 之前）。
  • 修改该数组以反映排序顺序；在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
  • 数值字段就像是字符串一样排序，因此 100 位于 99 之前，因为“1”是比“9”低的字符串值。
  • 不返回任何内容。

如果您要以其它方式排序，则创建一个进行所需排序的函数并将其名称传递给 compareFunction 参数。例如，如果您要按姓氏以字母顺序的升序排序，然后按邮编以降序排序，则可以创建相应的函数并传递其名称。

如果您要指定作为排序依据的一个或多个字段，并且使用默认排序或 options 参数，则使用 Array.sortOn()。

示例

用法 1：以下示例显示如何使用 Array.sort()，以具有和不具有为 option 传递的值这两种情况为例：

var fruits_array = ["oranges", "apples", "strawberries", "pineapples", "cherries"];
trace(fruits_array.join());
fruits_array.sort();
trace(fruits_array.join());
fruits_array.sort(Array.DESCENDING);
trace(fruits_array.join());

“输出”面板将显示以下结果：

oranges,apples,strawberries,pineapples,cherries  // 原始数组
apples,cherries,oranges,pineapples,strawberries  // 默认排序
strawberries,pineapples,oranges,cherries,apples  // 降序

用法 2：以下示例将 Array.sort() 与比较函数一起使用。

var passwords = ["mom:glam","ana:ring","jay:mag","anne:home","regina:silly"];
function order (a,b){
  //要排序的条目采用 name:password 的形式
  //只将条目的名称部分作为关键字排序。
  var name1 =a.split(":")[0 ];
  var name2 =b.split(":")[0 ];
  if (name1 <name2){
    return -1;
  }
  else if (name1 >name2){
    return 1;
  }
  else {
    return 0;
  }
}
trace ("Unsorted:");
trace (passwords.join());

passwords.sort(order);
trace ("Sorted:");
trace (passwords.join());

“输出”面板将显示以下结果：

Unsorted:
mom:glam,ana:ring,jay:mag,anne:home,regina:silly
Sorted:
ana:ring,anne:home,jay:mag,mom:glam,regina:silly

另请参见

|（按位 OR）, Array.sortOn()


Array.sortOn()

可用性

Flash Player 6；附加功能已在 Flash Player 7 中添加。

用法

my_array.sortOn("fieldName" )
my_array.sortOn("fieldName", option | option |... )
my_array.sortOn( [ "fieldName" , "fieldName" , ... ] )
my_array.sortOn( [ "fieldName" , "fieldName" , ...] , option | option |... )

注意：在显示中括号 ([]) 的地方，您必须将它们包括在代码中；即，中括号不表示可选参数。

参数

fieldName 一个字符串，标识 Array 的某元素中用作排序值的字段。

option 由 |（按位 OR）运算符分隔的一个或多个数字或字符串，这些数字或字符串更改根据默认值排序的行为。下面是 option 可以接受的值：

  • 1 或 Array.CASEINSENSITIVE
  • 2 或 Array.DESCENDING
  • 4 或 Array.UNIQUE
  • 8 或 Array.RETURNINDEXEDARRAY
  • 16 或 Array.NUMERIC

上述各个选项在下面的“说明”部分中将予以详细讨论。

返回

返回值取决于是否传递任何参数：

  • 如果您为 option 指定值 4 或 Array.UNIQUE，并且所排序的两个或多个元素具有相同的排序字段，则 Flash 返回值 0 并且不修改该数组。
  • 如果您为 option 指定值 8 或 Array.RETURNINDEXEDARRAY，则 Flash 将返回反映排序结果的数组并且不修改该数组。
  • 否则，Flash 不返回任何内容并修改该数组以反映排序顺序。

说明

方法；基于数组中的一个或多个字段对数组中的元素进行排序。如果您传递多个 fieldName 参数，则第一个字段表示主排序字段，第二个字段表示下一个排序字段，依此类推。Flash 根据 ASCII (Unicode) 值排序。如果所比较的两个元素中的任何一个不包含在 fieldName 参数中指定的字段，则认为该字段是 undefined，并且在排序后的数组中不按任何特定顺序连续放置这些元素。

默认情况下，Array.sortOn() 按如下方式工作：

  • 排序区分大小写（Z 位于 a 之前）。
  • 排序是升序（a 位于 b 之前）。
  • 修改该数组以反映排序顺序；在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。
  • 数值字段就像是字符串一样排序，因此 100 位于 99 之前，因为“1”是比“9”低的字符串值。
  • 不返回任何内容。

您可以使用 option 标志覆盖这些默认值。以下示例出于阐释目的使用 option 标志的不同形式。如果您要对简单数组（例如，只有一个字段的数组）进行排序，或者如果要指定 options 参数不支持的排序顺序，则使用 Array.sort()。

若要用数值格式传递多个标志，则用 |（按位 OR）运算符分隔它们或将这些标志值加在一起。以下代码显示三种不同的方式来指定数值降序排序：

my_Array.sortOn(someFieldName, 2 | 16);
my_Array.sortOn(someFieldName, 18);
my_Array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);

如果您使用标志的字符串形式（例如，DESCENDING），而不是数值形式 (2)，则启用代码提示（请参见使用代码提示）。

考虑以下数组：

var my_array:Array = new Array();
my_array.push({password:"Bob", age:29});
my_array.push({password:"abcd", age:3});
my_array.push({password:"barb", age:35});
my_array.push({password:"catchy", age:4});

对密码字段执行默认排序将产生以下结果：

my_array.sortOn("password")
// Bob
// abcd
// barb
// catchy

对密码字段执行不区分大小写的排序将产生以下结果：

my_array.sortOn("password", Array.CASEINSENSITIVE)
// abcd
// barb
// Bob
// catchy

对密码字段执行不区分大小写的降序排序将产生以下结果：

my_array.sortOn("password", 1|2)
// catchy
// Bob
// barb
// abcd

对年龄字段执行默认排序将产生以下结果：

my_array.sortOn("age")
// 29
// 3
// 35
// 4

对年龄字段执行数值排序将产生以下结果：

my_array.sortOn("age", 16)
// 3
// 4
// 29
// 35

对年龄字段执行降序数值排序将产生以下结果：

my_array.sortOn("age", 18)
// 35
// 29
// 4
// 3

执行排序时按如下所示更改数组中的元素：

// 在排序前
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;

// 在不为 option 传递值 8 的任何排序后
my_array.sortOn("age", Array.NUMERIC);
// my_array[0].age = 3;
// my_array[1].age = 4;
// my_array[2].age = 29;
// my_array[3].age = 35;

执行返回索引数组的排序时不更改该数组中的元素：

// 在排序前
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;

// 在返回包含索引值的数组的排序后
// 请注意，原始数组未更改。
// 然后，可以使用返回的数组显示排序的信息，
// 而不必修改原始数组。
var indexArray:Array = my_array.sortOn("age", Array.RETURNINDEXEDARRAY);
// my_array[0].age = 29;
// my_array[1].age = 3;
// my_array[2].age = 35;
// my_array[3].age = 4;

示例

此示例创建一个新数组，并且按照字段 name 和 city 对该新数组排序：第一次排序使用 name 作为第一个排序值，使用 city 作为第二个排序值。第二次排序使用 city 作为第一个排序值，使用 name 作为第二个排序值。

var rec_array = new Array();
rec_array.push( { name:"john", city:"omaha", zip: 68144 } );
rec_array.push( { name:"john", city:"kansas city", zip: 72345 } );
rec_array.push( { name:"bob", city:"omaha", zip: 94010 } );
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// 结果为
// john, omaha
// john, kansas city
// bob, omaha

rec_array.sortOn( [ "name", "city" ]);
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// 结果为
// bob, omaha
// john, kansas city
// john, omaha

rec_array.sortOn( ["city", "name" ]);
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// 结果为
// john, kansas city
// bob, omaha
// john, omaha

另请参见

|（按位 OR）, Array.sort()


Array.splice()

可用性

Flash Player 5。

用法

my_array.splice(start, deleteCount [, value0, value1...valueN])

参数

start 插入或删除动作开始处的数组元素的索引。

deleteCount 要删除的元素数量。这一数量包含 start 参数中指定的元素。如果没有为 deleteCount 指定值，则该方法将删除从 start 元素到数组中最后一个元素之间的所有值。如果该参数的值为 0，则不删除任何元素。

value 一个可选参数，指定在 start 参数中指定的插入点插入到数组中的值。

返回

无。

说明

方法；向数组中添加元素或删除数组中元素。此方法会修改数组但不制作副本。


Array.toString()

可用性

Flash Player 5。

用法

my_array.toString()

参数

无。

返回

字符串。

说明

方法；返回表示指定 Array 对象中的元素的字符串值。数组中的每一个元素（从索引 0 开始到索引 my_array.length-1 结束）均会转换为一个连接字符串，并以逗号分隔。

示例

下面的示例创建 my_array，将其转换为字符串，然后在“输出”面板中显示 1,2,3,4,5。

my_array = new Array();
my_array[0] = 1;
my_array[1] = 2;
my_array[2] = 3;
my_array[3] = 4;
my_array[4] = 5;
trace(my_array.toString());


Array.unshift()

可用性

Flash Player 5。

用法

my_array.unshift(value1,value2,...valueN)

参数

value1...valueN 一个或多个要插入到数组开头的数字、元素或变量。

返回

数组的新长度。

说明

方法；将一个或多个元素添加到数组的开头，并返回该数组的新长度。


Array()

可用性

Flash Player 6。

用法

Array()
Array( [element0 [, element1 , element2,...elementN ] ])

参数

element 要放置于数组中的一个或多个元素。

返回

一个数组。

说明

转换函数；创建新的空数组，或者将指定元素转换为数组。此函数的用法类似于使用 Array 构造函数创建数组（请参见Array 类的构造函数）。


asfunction

可用性

Flash Player 5。

用法

asfunction:function,"parameter"

参数

function 函数的标识符。

parameter 要传递给 function 参数中指定的函数的字符串。

返回

无。

说明

协议；一个用于 HTML 文本字段中 URL 的特殊协议。在 HTML 文本字段中，可使用 HTML A 标签超链接文本。A 标签的 HREF 属性包含可用于类似 HTTP、HTTPS 或 FTP 等标准协议的 URL。asfunction 协议是特定于 Flash 的一个附加协议，可使链接调用动作脚本函数。

示例

在此示例中，代码的前三行中定义了 MyFunc() 函数。TextField 对象 myTextField 与 HTML 文本字段相关联。文本“Click Me!”是文本字段中的一个超链接。当用户单击该超链接时，将调用 MyFunc() 函数：

function MyFunc(arg){
  trace ("You clicked me!Argument was "+arg);
}
myTextField.htmlText ="<A HREF=\"asfunction:MyFunc,Foo \">Click Me!</A>";

在单击该超链接后，下面的结果将显示在“输出”面板中：

You clicked me!Parameter was Foo


Boolean 类

可用性

Flash Player 5（已成为 Flash Player 6 本身的对象，Flash Player 6 大大提高了性能）。

说明

Boolean 类是一种包装对象，它具有与标准 JavaScript Boolean 对象一样的功能。使用 Boolean 类可获取 Boolean 对象的原始数据类型或字符串表示形式。

必须使用构造函数 new Boolean() 创建 Boolean 对象后，然后才能调用其方法。

Boolean 类的方法摘要

方法 | 说明
Boolean.toString() | 返回 Boolean 对象的字符串表示形式（"true" 或 "false"）。
Boolean.valueOf() | 返回指定 Boolean 对象的原始值类型。

Boolean 类的构造函数

可用性

Flash Player 5。

用法

new Boolean([x])

参数

x 任何表达式。此参数是可选的。

返回

无。

说明

构造函数；创建 Boolean 对象。如果省略 x 参数，则将 Boolean 对象初始化为具有值 false。如果为 x 参数指定值，则该方法会计算它，并根据 Boolean() 函数中的规则以布尔值返回结果。

示例

下面的代码创建一个称为 myBoolean 的新的空 Boolean 对象。

myBoolean = new Boolean();


Boolean.toString()

可用性

Flash Player 5。

用法

myBoolean.toString()

参数

无。

返回

一个布尔值。

说明

方法；返回 Boolean 对象的字符串表示形式（"true" 或 "false"）。


Boolean.valueOf()

可用性

Flash Player 5。

用法

myBoolean.valueOf()

参数

无。

返回

一个布尔值。

说明

方法；如果指定 Boolean 对象的原始值类型为 true，则返回 true，如果该类型为 false，则返回 false。

示例

var x:Boolean = new Boolean();
trace(x.valueOf());   // false
x = (6==3+3);
trace(x.valueOf());   // true


Boolean()

可用性

Flash Player 5；行为在 Flash Player 7 中发生了变化。

用法

Boolean(expression)

参数

expression 一个可转换为布尔值的表达式。

返回

一个布尔值或 expression 值，如下所述。

说明

函数；将参数 expression 转换为布尔值，并以如下形式返回值：

如果 expression 是布尔值，则返回值为 expression。

如果 expression 是数字，则在该数字不为零时返回值为 true，否则，返回值为 false。

如果 expression 为字符串，则返回值如下所示：

  • 在以 Flash Player 6 或更低版本为目标播放器发布的文件中，字符串首先被转换为一个数字，如果该数字是非零数字，则该值为 true，否则为 false。
  • 在以 Flash Player 7 或更高版本为目标播放器发布的文件中，如果字符串的长度大于零，则结果为 true；如果字符串是空字符串，则该值是 false。

如果 expression 未定义，则返回值为 false。

如果 expression 是影片剪辑或对象，则返回值为 true。

另请参见

Boolean 类


break

可用性

Flash Player 4。

用法

break

参数

无。

返回

无。

说明

语句；出现在一个循环（for、for..in、do while 或 while 循环）中，或者出现在与 switch 动作内特定 case 语句相关联的语句块中。break 动作可命令 Flash 跳过循环体的其余部分，停止循环动作，并执行循环语句之后的语句。当使用 break 动作时，Flash 解释程序会跳过该 case 块中的其余语句，转到包含它的 switch 动作后的第一个语句。使用 break 动作可跳出一系列嵌套的循环。

示例

下面的示例使用 break 动作退出一个循环，如果没有该动作，则该循环为无限循环。

i = 0;
while (true) {
  if (i >= 100) {
    break;
  }
  i++;
}

另请参见

break, for, for..in, do while, while, switch, case


Button 类

可用性

Flash Player 6。

说明

SWF 文件中的所有按钮元件都是 Button 对象的实例。您可在属性检查器中指定按钮实例名称，并通过动作脚本使用 Button 类的方法和属性来操纵按钮。按钮实例名称显示在“影片浏览器”中和“动作”面板的“插入目标路径”对话框中。

Button 类继承自 Object 类。

Button 类的方法摘要

方法 | 说明
Button.getDepth() | 返回按钮实例的深度。

Button 类的属性摘要

属性 | 说明
Button._alpha | 按钮实例的透明度值。
Button.enabled | 指示按钮是否处于活动状态。
Button._focusrect | 指示具有焦点的按钮四周是否有黄色矩形。
Button._height | 按钮实例的高度，以像素为单位。
Button._highquality | 应用于当前 SWF 文件的消除锯齿功能的级别。
Button.menu | 将 ContextMenu 对象与 button 对象相关联。
Button._name | 按钮实例的实例名称。
Button._parent | 指向包含当前影片剪辑或对象的影片剪辑或对象的引用。
Button._quality | 指示 SWF 文件的呈现品质。
Button._rotation | 按钮实例的旋转度数。
Button._soundbuftime | 预加载的声音的秒数。
Button.tabEnabled | 指示某按钮是否包括在 Tab 键的自动排序中。
Button.tabIndex | 指示对象的 Tab 键顺序。
Button._target | 按钮实例的目标路径。
Button.trackAsMenu | 指示其它按钮是否可接收鼠标按钮释放事件。
Button._url | 创建按钮实例的 SWF 文件的 URL。
Button.useHandCursor | 指示当鼠标指针经过按钮上方时是否显示手指形光标。
Button._visible | 指示按钮实例是隐藏还是可见的布尔值。
Button._width | 按钮实例的宽度，以像素为单位。
Button._x | 按钮实例的 x 坐标。
Button._xmouse | 鼠标指针相对于按钮实例的 x 坐标。
Button._xscale | 指定按钮实例水平缩放百分比的值。
Button._y | 按钮实例的 y 坐标。
Button._ymouse | 鼠标指针相对于按钮实例的 y 坐标。
Button._yscale | 指定按钮实例垂直缩放百分比的值。

Button 类的事件处理函数摘要

事件处理函数 | 说明
Button.onDragOut | 当在按钮上按下鼠标按钮，然后将鼠标指针滑出按钮时调用。
Button.onDragOver | 当用户在按钮外部按下鼠标按钮，然后将鼠标指针拖动到按钮之上时调用。
Button.onKeyUp | 当释放按键时调用。
Button.onKillFocus | 当从按钮移除焦点时调用。
Button.onPress | 在鼠标指针位于按钮上方的情况下，按下鼠标按钮时调用。
Button.onRelease | 在鼠标指针位于按钮上方的情况下，释放鼠标按钮时调用。
Button.onReleaseOutside | 在这样的情况下调用：在鼠标指针位于按钮内部的情况下按下按钮，然后将鼠标指针移到该按钮外部并释放鼠标按钮。
Button.onRollOut | 当鼠标指针滚动到按钮区域之外时调用。
Button.onRollOver | 当鼠标指针滚过按钮时调用。
Button.onSetFocus | 当按钮具有输入焦点而且释放某按键时调用。


Button._alpha

可用性

Flash Player 6。

用法

my_btn._alpha

说明

属性；由 my_btn 指定的按钮的 alpha 透明度的值。有效值为 0（完全透明）到 100（完全不透明）。默认值为 100。按钮的 _alpha 设置为 0 时，其中的对象处于活动状态，即使这些对象不可见。

示例

下面的代码在按钮被单击时将名为 star_btn 的按钮的 _alpha 属性设置为 30%：

on (release) {
  star_btn._alpha = 30;
}

另请参见

MovieClip._alpha, TextField._alpha


Button.enabled

可用性

Flash Player 6。

用法

my_btn.enabled

说明

属性；指定按钮是否处于启用状态的布尔值。默认值为 true。


Button._focusrect

可用性

Flash Player 6。

用法

my_btn._focusrect

说明

属性；一个布尔值，指定当按钮具有键盘焦点时，其四周是否有黄色矩形。此属性可以覆盖全局 _focusrect 属性。


Button.getDepth()

可用性

Flash Player 6。

用法

my_btn.getDepth()

返回

一个整数。

说明

方法；返回按钮实例的深度。


Button._height

可用性

Flash Player 6。

用法

my_btn._height

说明

属性；以像素为单位的按钮的高度。

示例

下面的代码示例在用户单击鼠标时，设置按钮的高度和宽度：

my_btn._width = 200;
my_btn._height = 200;


Button._highquality

可用性

Flash Player 6。

用法

my_btn._highquality

说明

属性（全局）；指定应用于当前 SWF 文件的锯齿消除级别。指定 2（最高品质）可应用高品质，并使位图平滑处理始终打开。指定 1（高品质），则应用消除锯齿功能；如果 SWF 文件不包含动画，这将对位图进行平滑处理。指定 0（低品质），则不消除锯齿。

另请参见

_quality


Button.menu

可用性

Flash Player 7。

用法

my_button.menu = contextMenu

参数

contextMenu 一个 ContextMenu 对象。

说明

属性；将 ContextMenu 对象 contextMenu 与按钮对象 my_button 相关联。ContextMenu 类用于修改当用户在 Flash Player 中右击 (Windows) 或按住 Control 键单击 (Macintosh) 时显示的上下文菜单。

示例

下面的示例将 ContextMenu 对象分配给一个名为 save_btn 的 Button 对象。ContextMenu 对象包含单个菜单项（标记有“Save...”），该菜单项具有名为 doSave 的关联回调处理函数（未显示）。

var menu_cm = new ContextMenu();
menu_cm.customItems.push(new ContextMenuItem("Save...", doSave));
function doSave(menu, obj) {
  // "Save" 代码
}
save_btn.menu = menu_cm;

另请参见

ContextMenu 类, ContextMenuItem 类, MovieClip.menu, TextField.menu


Button._name

可用性

Flash Player 6。

用法

my_btn._name

说明

属性；由 my_btn 指定的按钮的实例名称。


Button.onDragOut

可用性

Flash Player 6。

用法

my_btn.onDragOut = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当在按钮上按下鼠标按钮，然后将鼠标指针滑出按钮时调用。

必须定义一个在调用事件处理函数时执行的函数。


Button.onDragOver

可用性

Flash Player 6。

用法

my_btn.onDragOver = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当用户在按钮外部按下鼠标按钮，然后将鼠标指针拖动到按钮之上时调用。

必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onKeyDown 处理函数定义一个函数，该函数将 trace() 动作发送到“输出”面板：

my_btn.onDragOver = function () {
  trace ("onDragOver called");
};

另请参见

Button.onKeyUp


Button.onKeyDown

可用性

Flash Player 6。

用法

my_btn.onKeyDown = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当按钮具有键盘焦点并按下某按键时调用。调用 onKeyDown 事件处理函数时没有参数。可以使用 Key.getAscii() 和 Key.getCode() 来确定按下了哪个键。

必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onKeyDown 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onKeyDown = function () {
  trace ("onKeyDown called");
};

另请参见

Button.onKeyUp


Button.onKeyUp

可用性

Flash Player 6。

用法

my_btn.onKeyUp = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当按钮具有输入焦点而且释放某按键时调用。调用 onKeyUp 事件处理函数时没有参数。可以使用 Key.getAscii() 和 Key.getCode() 来确定按下了哪个键。

必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onKeyPress 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onKeyUp = function () {
  trace ("onKeyUp called");
};


Button.onKillFocus

可用性

Flash Player 6。

用法

my_btn.onKillFocus = function (newFocus) {
  // 此处是您的语句
}

参数

newFocus 要接收焦点的对象。

返回

无。

说明

事件处理函数；当按钮失去键盘焦点时调用。onKillFocus 方法接收一个参数 newFocus，该参数是一个对象，表示要接收焦点的新对象。如果没有对象接收焦点，则 newFocus 将包含值 null。


Button.onPress

可用性

Flash Player 6。

用法

my_btn.onPress = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当按下按钮时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onPress 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onPress = function () {
  trace ("onPress called");
};


Button.onRelease

可用性

Flash Player 6。

用法

my_btn.onRelease = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当释放按钮时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onRelease 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onRelease = function () {
  trace ("onRelease called");
};


Button.onReleaseOutside

可用性

Flash Player 6。

用法

my_btn.onReleaseOutside = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；在鼠标指针位于按钮内部时按下按钮后，将鼠标指针移到该按钮外部然后释放鼠标按钮，在这种情况下进行调用。

必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onReleaseOutside 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onReleaseOutside = function () {
  trace ("onReleaseOutside called");
};


Button.onRollOut

可用性

Flash Player 6。

用法

my_btn.onRollOut = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当指针移出按钮区域时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onRollOut 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onRollOut = function () {
  trace ("onRollOut called");
};


Button.onRollOver

可用性

Flash Player 6。

用法

my_btn.onRollOver = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当指针移过按钮区域时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

在下面的示例中，为 onRollOver 处理函数定义将 trace() 动作发送到“输出”面板的函数。

my_btn.onRollOver = function () {
  trace ("onRollOver called");
};


Button.onSetFocus

可用性

Flash Player 6。

用法

my_btn.onSetFocus = function(oldFocus){
  // 此处是您的语句
}

参数

oldFocus 将失去键盘焦点的对象。

返回

无。

说明

事件处理函数；当按钮接收键盘焦点时调用。oldFocus 参数是失去焦点的对象。例如，如果用户按下 Tab 键将输入焦点从文本字段移到按钮，则 oldFocus 包含该文本字段实例。

如果以前没有具有焦点的对象，则 oldFocus 包含 null 值。


Button._parent

可用性

Flash Player 6。

用法

my_btn._parent.property
_parent.property

说明

属性；指向包含当前影片剪辑或对象的影片剪辑或对象的引用。当前对象是包含引用 _parent 的动作脚本代码的对象。

使用 _parent 可以指定一个相对路径，该路径指向当前影片剪辑或对象之上的影片剪辑或对象。可以使用 _parent 在显示列表中攀升多个级别，如下所示：

_parent._parent._alpha = 20;

另请参见

MovieClip._parent, _root, targetPath


Button._quality

可用性

Flash Player 6。

用法

my_btn._quality

说明

属性（全局）；设置或获取用于 SWF 文件的呈现品质。设备字体始终是带有锯齿的，因此不受 _quality 属性的影响。

注意：尽管您可以为 Button 对象指定该属性，但它实际上是一个全局属性，因此您只能将它的值指定为 _quality。有关更多信息，请参见_quality。


Button._rotation

可用性

Flash Player 6。

用法

my_btn._rotation

说明

属性；以度为单位的按钮距其原始方向的旋转程度。从 0 到 180 的值表示顺时针方向的旋转；从 0 到 -180 的值表示逆时针方向的旋转。对于此范围之外的值，可以通过加上或减去 360 获得该范围内的值。例如，语句 my_btn._rotation = 450 与 my_btn._rotation = 90 相同。

另请参见

MovieClip._rotation, TextField._rotation


Button._soundbuftime

可用性

Flash Player 6。

用法

myButton._soundbuftime

说明

属性（全局）；一个整数，指定在声音开始进入流之前，预先缓冲的秒数。

注意：尽管您可以为 Button 对象指定该属性，但它实际上是一个全局属性，因此您只能将它的值指定为 _soundbuftime。有关更多信息，请参见_soundbuftime。


Button.tabEnabled

可用性

Flash Player 6。

用法

my_btn.tabEnabled

说明

属性；指定 my_btn 是否包含在 Tab 键的自动排序中。默认情况下它是 undefined。

如果 tabEnabled 属性为 undefined 或 true，则该对象包括在 Tab 键的自动排序中。如果 tabIndex 属性也设置为某个值，则该对象也包括在 Tab 键的自定义排序中。如果 tabEnabled 为 false，则即使设置了 tabIndex 属性，该对象也不包括在 Tab 键的自动或自定义排序中。

另请参见

Button.tabIndex, MovieClip.tabEnabled, TextField.tabEnabled


Button.tabIndex

可用性

Flash Player 6。

用法

my_btn.tabIndex

说明

属性；可用于自定义 SWF 文件中对象的 Tab 键排序。可以设置按钮、影片剪辑或文本字段实例的 tabIndex 属性；默认情况下，它为 undefined。

如果 SWF 文件中当前显示的任意对象都包含 tabIndex 属性，则禁用 Tab 键的自动排序，而使用该 SWF 文件中对象的 tabIndex 属性来计算 Tab 键排序。Tab 键的自定义排序仅包括那些具有 tabIndex 属性的对象。

tabIndex 属性可以是非负整数。将根据这些对象的 tabIndex 属性按升序对这些对象进行排序。tabIndex 值为 1 的对象位于 tabIndex 值为 2 的对象之前。如果两个对象具有相同的 tabIndex 值，则在 Tab 键排序中哪个对象在前面是未定义的。

由 tabIndex 属性定义的 Tab 键的自定义排序是平构 的。这意味着不考虑 SWF 文件中对象的层次结构关系。SWF 文件中具有 tabIndex 属性的所有对象都排入 Tab 键顺序中，而 Tab 键顺序由 tabIndex 值的顺序确定。如果两个对象具有相同的 tabIndex 值，则哪个对象在前面是不确定的。多个对象不应使用相同的 tabIndex 值。

另请参见

Button.tabEnabled, MovieClip.tabChildren, MovieClip.tabEnabled, MovieClip.tabIndex, TextField.tabIndex


Button._target

可用性

Flash Player 6。

用法

myButton._target

说明

属性（只读）；返回 my_btn 指定的按钮实例的目标路径。

另请参见

targetPath


Button.trackAsMenu

可用性

Flash Player 6。

用法

my_btn.trackAsMenu

说明

属性；指示其它按钮或影片剪辑是否可接收鼠标按钮释放事件的布尔值。这将允许您创建菜单。您可以对任何按钮或影片剪辑对象设置 trackAsMenu 属性。如果 trackAsMenu 属性未定义，则默认行为是 false。

可以在任何时间更改 trackAsMenu 属性；修改后的按钮会立即采用新的行为。

另请参见

MovieClip.trackAsMenu


Button._url

可用性

Flash Player 6。

用法

my_btn._url

说明

属性（只读）；获取创建按钮的 SWF 文件的 URL。


Button.useHandCursor

可用性

Flash Player 6。

用法

my_btn.useHandCursor

说明

属性；一个布尔值，当设置为 true（默认值）时，指示在用户用鼠标指针滑过按钮上方时是否显示手形光标（手指形）。如果将该属性设置为 false，则将改用箭头光标。

可以在任何时间更改 useHandCursor 属性；修改后的按钮会立即采用新的光标行为。可以从原型对象读出 useHandCursor 属性。


Button._visible

可用性

Flash Player 6。

用法

my_btn._visible

说明

属性；一个布尔值，指示由 my_btn 指定的按钮是否可见。不可见的按钮（将 _visible 属性设置为 false）被禁用。

另请参见

MovieClip._visible, TextField._visible


Button._width

可用性

Flash Player 6。

用法

my_btn._width

说明

属性；以像素为单位的按钮的宽度。

示例

下面的示例设置一个按钮的高度和宽度属性。

my_btn._width=200;
my_btn._height=200;

另请参见

MovieClip._width


Button._x

可用性

Flash Player 6。

用法

my_btn._x

说明

属性；一个设置按钮 x 坐标（该坐标相对于父级影片剪辑的本地坐标）的整数。如果按钮在主时间轴上，则其坐标系统将舞台的左上角作为 (0, 0)。如果按钮在具有变形的影片剪辑内，则该按钮位于包含它的影片剪辑的本地坐标系统中。因此，对于逆时针旋转 90 度的影片剪辑，其中的按钮将继承逆时针旋转 90 度的坐标系统。按钮的坐标指的是注册点的位置。

另请参见

Button._xscale, Button._y, Button._yscale


Button._xmouse

可用性

Flash Player 6。

用法

my_btn._xmouse

说明

属性（只读）；返回鼠标位置的 x 坐标（相对于按钮）。

另请参见

Button._ymouse


Button._xscale

可用性

Flash Player 6。

用法

my_btn._xscale

说明

属性；从按钮注册点开始应用的按钮水平缩放比例（以百分比表示）。默认注册点为 (0,0)。

缩放本地坐标系统将影响 _x 和 _y 属性的设置，这些设置是以像素为单位定义的。例如，如果父级影片剪辑缩放到 50%，则设置 _x 属性将移动按钮中的对象，距离为在 SWF 文件为 100% 时其像素数的一半。

另请参见

Button._x, Button._y, Button._yscale


Button._y

可用性

Flash Player 6。

用法

my_btn._y

说明

属性；按钮的 y 坐标，该坐标相对于父级影片剪辑的本地坐标。如果按钮在主时间轴上，则其坐标系统将舞台的左上角作为 (0, 0)。如果按钮在具有变形的另一个影片剪辑内，则该按钮将位于包含它的影片剪辑的本地坐标系统中。因此，对于逆时针旋转 90 度的影片剪辑，其中的按钮将继承逆时针旋转 90 度的坐标系统。按钮的坐标指的是注册点的位置。

另请参见

Button._x, Button._xscale, Button._yscale


Button._ymouse

可用性

Flash Player 6。

用法

my_btn._ymouse

说明

属性（只读）；指示鼠标位置的 y 坐标（相对于按钮）。

另请参见

Button._xmouse


Button._yscale

可用性

Flash Player 6。

用法

my_btn._yscale

说明

属性；从按钮注册点开始应用的按钮垂直缩放比例（以百分比表示）。默认注册点为 (0,0)。

另请参见

Button._y, Button._x, Button._xscale


call()

可用性

Flash Player 4。在 Flash 5 中已不鼓励使用此动作，Macromedia 建议您改用 function 动作。

用法

call(frame)

参数

frame 时间轴中帧的标签或编号。

返回

无。

说明

不鼓励使用的动作；执行被调用帧中的脚本，而不将播放头移动到该帧。在脚本执行后，局部变量将消失。

另请参见

function, Function.call()


Camera 类

可用性

Flash Player 6。

说明

Camera 类主要用于 Macromedia Flash Communication Server，但也可以用在其它地方，只是在使用上受到限制。

可通过 Camera 类捕获来自连接到计算机（该计算机应运行 Macromedia Flash Player）的摄像机的视频，例如监视来自连接到本地系统的 Web 摄像机的视频输入信号。（Flash 提供类似的音频功能；有关更多信息，请参见 Microphone 类条目。）

若要创建或引用 Camera 对象，请使用 Camera.get()。

Camera 类的方法摘要

方法 | 说明
Camera.get() | 返回默认或指定的 Camera 对象；如果没有可用的摄像机，则返回 null。
Camera.setMode() | 设置摄像机捕获模式的各个方面，包括高度、宽度和每秒播放的帧数。
Camera.setMotionLevel() | 指定调用 Camera.onActivity(true) 所需的运动量，并且指定在没有运动多长时间后才会调用 Camera.onActivity(false)。
Camera.setQuality() | 一个整数，指定当前输出视频输入信号可以使用的最大带宽量，以每秒字节数为单位。

Camera 类的属性摘要

属性（只读） | 说明
Camera.activityLevel | 所检测的摄像机的运动量。
Camera.bandwidth | 当前输出视频输入信号可以使用的最大带宽量，以字节为单位。
Camera.currentFps | 摄像机捕获数据的速率，以每秒帧数为单位。
Camera.fps | 您希望摄像机捕获数据的速率，以每秒帧数为单位。
Camera.height | 当前捕获高度，以像素为单位。
Camera.index | 在 Camera.names 返回的数组中反映的摄像机的索引。
Camera.motionLevel | 调用 Camera.onActivity(true) 所需的运动量。
Camera.motionTimeOut | 摄像机停止检测运动的时刻和调用 Camera.onActivity(false) 的时刻之间相差的毫秒数。
Camera.muted | 一个布尔值，指定用户是允许还是拒绝访问摄像机。
Camera.name | 摄像机硬件指定的摄像机的名称。
Camera.names | Class 属性；一个字符串数组，反映所有可用视频捕获设备（包括显卡和摄像机在内）的名称。
Camera.quality | 一个整数，指定所需的图片品质级别，该级别由应用于每一视频帧的压缩量确定。
Camera.width | 当前捕获宽度，以像素为单位。

Camera 类的事件处理函数摘要

事件处理函数 | 说明
Camera.onActivity | 在摄像机开始或停止检测运动时调用。
Camera.onStatus | 当用户允许或拒绝访问摄像机时调用。

Camera 类的构造函数

请参见 Camera.get()。


Camera.activityLevel

可用性

Flash Player 6。

用法

active_cam.activityLevel

说明

只读属性；指定摄像机检测的运动量的数值。该数值的范围是从 0（检测到没有运动）到 100（检测到大范围运动）。该属性的值可以帮助您确定是否需要将设置传递到 Camera.setMotionLevel()。

如果摄像机可用，但却因为尚未调用 Video.attachVideo() 而未被使用，则此属性设置为 -1。

如果只传送未压缩的本地视频，则只有在为 Camera.onActivity 事件处理函数分配函数后才能设置此属性。否则，它是未定义的。

另请参见

Camera.motionLevel, Camera.setMotionLevel()


Camera.bandwidth

可用性

Flash Player 6。

用法

active_cam.bandwidth

说明

只读属性；一个整数，指定当前输出视频输入信号可以使用的最大带宽量，以字节为单位。值 0 意味着，Flash 视频可以使用所需数量的带宽来保持指定的帧品质。

若要设置此属性，请使用 Camera.setQuality()。

示例

下面的示例在摄像机带宽为 32 KB 或更高的情况下加载另一个 SWF 文件。

if(myCam.bandwidth >= 32768){
  loadMovie("splat.swf",_root.hiddenvar);
}

另请参见

Camera.setQuality()


Camera.currentFps

可用性

Flash Player 6。

用法

active_cam.currentFps

说明

只读属性；摄像机捕获数据的速率，以每秒帧数为单位。无法设置此属性；不过，您可以使用 Camera.setMode() 方法设置相关属性 Camera.fps，该属性指定您希望摄像机捕获数据的最大帧速率。

另请参见

Camera.fps, Camera.setMode()


Camera.fps

可用性

Flash Player 6。

用法

active_cam.fps

说明

只读属性；您希望摄像机捕获数据的最大速率，以每秒帧数为单位。可能的最大速率取决于摄像机的性能；即，如果摄像机不支持您在此处设置的值，则不会达到该帧速率。

  • 若要为该属性设置所需值，请使用 Camera.setMode()。
  • 若要确定摄像机当前捕获数据的速率，请使用 Camera.currentFps 属性。

示例

下面的示例将活动摄像机的 fps 速率 myCam.fps 设置为用户的文本框所提供的值 this.config.txt_fps。

if (this.config.txt_fps != undefined) {
     myCam.setMode(myCam.width, myCam.height, this.config.txt_fps, false);
}

注意：setMode 函数不保证满足所要求的 fps 设置；该函数设置所要求的 fps 或可用的最快 fps。

另请参见

Camera.currentFps, Camera.setMode()


Camera.get()

可用性

Flash Player 6。

用法

Camera.get([index])

注意：正确的语法为 Camera.get()。若要将 Camera 对象分配给一个变量，请使用类似 active_cam = Camera.get() 的语法。

参数

index 一个从零开始的可选整数，指定要获取的摄像机，该整数根据 Camera.names 属性返回的数组确定。若要获取默认的摄像机（建议用于大多数应用程序），请省略此参数。

返回

  • 如果未指定 index，则此方法返回对默认摄像机的引用；或者，如果默认摄像机正由其它应用程序使用，则此方法返回对第一个可用摄像机的引用。（如果安装了多个摄像机，则用户可以在 Flash Player 的“摄像机设置”面板中指定默认的摄像机。）如果没有可用摄像机或没有安装任何摄像机，则该方法返回 null。
  • 如果指定 index，则该方法返回对请求的摄像机的引用；如果请求的摄像机不可用，则返回 null。

说明

方法；为捕获视频返回对 Camera 对象的引用。若要实际开始捕获视频，必须将 Camera 对象附加到 Video 对象（请参见 Video.attachVideo()）。

与使用 new 构造函数创建的对象不同，对 Camera.get() 的多个调用引用同一摄像机。因此，如果您的脚本包含 first_cam = Camera.get() 和 second_cam = Camera.get() 这两行，则 first_cam 和 second_cam 引用同一（默认）摄像机。

通常，不应传递 index 的值；只使用 Camera.get() 来返回对默认摄像机的引用。通过“摄像机设置”面板（将在本节的后面进行讨论），用户可以指定 Flash 应使用的默认摄像机。如果您传递 index 的值，则您可能会尝试引用非用户指定的其它摄像机。您可能在极少的情况下使用 index；例如，您的应用程序同时从两个摄像机捕获视频。

在一个 SWF 文件尝试访问 Camera.get() 返回的摄像机时，Flash Player 显示“隐私”对话框，用户可从中选择是允许还是拒绝对摄像机的访问。（请确保舞台大小至少为 215 x 138 像素；这是 Flash 显示该对话框所需的最小大小。）

当用户对此对话框做出响应时，Camera.onStatus 事件处理函数将返回指示用户响应的信息对象。若要不处理此事件处理函数就确定用户是拒绝还是允许对摄像机的访问，请使用 Camera.muted 属性。

用户也可以为特定域指定永久隐私设置，方法是在 SWF 文件播放过程中右击 (Windows) 或按住 Control 键单击 (Macintosh)，选择“设置”，打开“隐私”面板，然后选择“记住”。

您不能使用动作脚本来设置用户的 Allow 或 Deny 值，但可以通过使用 System.showSettings(0) 来为用户显示“隐私”面板。如果用户选择“记住”，则 Flash Player 不再为该域的影片显示“隐私”对话框。

如果 Camera.get 返回 null，则摄像机正由其它应用程序使用，或者在系统上没有安装任何摄像机。若要确定是否安装了任何摄像机，请使用 Camera.names.length。若要显示 Flash Player 的“摄像机设置”面板（让用户选择由 Camera.get() 引用的摄像机），请使用 System.showSettings(3)。

扫描硬件以找到摄像机需要花一些时间。在 Flash 找到至少一个摄像机后，在该播放器实例的生存期内不再扫描硬件。不过，如果 Flash 没有找到任何摄像机，则它在每次调用 Camera.get 时都进行扫描。这在用户忘记连接摄像机时非常有用；如果您的 SWF 文件提供调用 Camera.get 的“重试”按钮，则用户不必重新启动该 SWF 文件，Flash 即可找到摄像机。

示例

下面的示例在舞台上名为 my_video 的 Video 对象内本地捕获和显示视频。

var my_cam = Camera.get();
my_video.attachVideo(myCam);

另请参见

Camera.index, Camera.muted, Camera.names, Camera.onStatus, Camera.setMode(), System.showSettings(), Video.attachVideo()


Camera.height

可用性

Flash Player 6。

用法

active_cam.height

说明

只读属性；当前的捕获高度，以像素为单位。若要设置此属性的值，请使用 Camera.setMode()。

示例

以下代码行用当前高度值更新用户界面中的文本框。

my_txt._height = myCam.height;

另请参见有关 Camera.setMode() 的示例。

另请参见

Camera.setMode(), Camera.width


Camera.index

可用性

Flash Player 6。

用法

active_cam.index

说明

只读属性；一个从零开始的整数，指定 Camera.names 返回的数组中反映的摄像机的索引。

示例

下面的示例获具有值 index 的摄像机。

my_cam = Camera.get(index);

另请参见

Camera.get(), Camera.names


Camera.motionLevel

可用性

Flash Player 6。

用法

active_cam.motionLevel

说明

只读属性；指定调用 Camera.onActivity(true) 所需的运动量的数值。可接受的值的范围是从 0 到 100。默认值为 50。

无论 motionLevel 属性的值是多少都能显示视频。有关更多信息，请参见Camera.setMotionLevel()。

另请参见

Camera.activityLevel, Camera.onActivity, Camera.onStatus, Camera.setMotionLevel()


Camera.motionTimeOut

可用性

Flash Player 6。

用法

active_cam.motionTimeOut

说明

只读属性；摄像机停止检测运动的时刻和调用 Camera.onActivity (false) 的时刻之间相差的毫秒数。默认值为 2000（2 秒）。

若要设置此值，请使用 Camera.setMotionLevel()。

示例

下面的示例将摄像机停止检测运动的时刻和调用 Camera.onActivity (false) 的时刻之间相差的毫秒数设置为 1000 毫秒，即 1 秒。

if(my_cam.motionTimeOut >= 1000){
  my_cam.setMotionLevel(myCam.motionLevel, 1000);
}

另请参见

Camera.onActivity, Camera.setMotionLevel()


Camera.muted

可用性

Flash Player 6。

用法

active_cam.muted

说明

只读属性；一个布尔值，指定用户在 Flash Player 的“隐私设置”面板中是拒绝对摄像机的访问 (true) 还是允许访问 (false)。当此值出现更改时，将调用 Camera.onStatus。有关更多信息，请参见Camera.get()。

另请参见

Camera.get(), Camera.onStatus


Camera.name

可用性

Flash Player 6。

用法

active_cam.name

说明

只读属性；一个字符串，指定由摄像机硬件返回的当前摄像机的名称。

示例

下面的示例在“输出”面板中显示默认摄像机的名称。在 Windows 中，该名称与“扫描仪和摄像机”属性表中列出的设备名称相同。

my_cam = Camera.get();
trace("The camera name is:" + my_cam.name);

另请参见

Camera.get(), Camera.names


Camera.names

可用性

Flash Player 6。

用法

Camera.names

注意：正确的语法为 Camera.names。若要向变量分配一个返回值，请使用类似 cam_array = Camera.names 的语法。若要确定当前摄像机的名称，请使用 active_cam.name。

说明

只读类属性；获取反映所有可用摄像机名称而不显示 Flash Player 的“隐私设置”面板的字符串数组。此数组的行为与其它任何动作脚本数组的行为相同，隐式提供每一摄像机从零开始的索引以及系统上摄像机的数目（通过 Camera.names.length）。有关更多信息，请参见 Array 类条目。

调用 Camera.names 属性要求全面检查硬件，并且它可能花几秒钟的时间来生成数组。在大多数情况下，您只能使用默认的摄像机。

示例

下面的示例在没有多个可用摄像机的情况下使用默认的摄像机；如果有多个可用摄像机，用户可以选择将哪个摄像机设置为默认摄像机。

cam_array = Camera.names;
if (cam_array.length == 1){
  my_cam = Camera.get();
}
else {
  System.showSettings(3);
  my_cam = Camera.get();
}

另请参见

Camera.get(), Camera.index, Camera.name


Camera.onActivity

可用性

Flash Player 6。

用法

active_cam.onActivity = function(activity) {
  // 此处是您的语句
}

参数

activity 一个布尔值，在摄像机开始检测运动时设置为 true，在摄像机停止检测运动时设置为 false。

返回

无。

说明

事件处理函数；在摄像机开始或停止检测运动时调用。如果要对此事件处理函数做出响应，则必须创建一个函数来处理其 activity 值。

若要指定调用 Camera.onActivity(true) 所需的运动量以及必须经过多少时间没有活动才调用 Camera.onActivity(false)，请使用 Camera.setMotionLevel()。

示例

下面的示例在摄像机开始或停止检测运动时在“输出”面板中显示 true 或 false。

// 假设名为“myVideoObject”的 Video 对象位于舞台上
my_cam = Camera.get();
myVideoObject.attachVideo(my_cam);
my_cam.setMotionLevel(10, 500);
my_cam.onActivity = function(mode)
{
  trace(mode);
}

另请参见

Camera.onActivity, Camera.setMotionLevel()


Camera.onStatus

可用性

Flash Player 6。

用法

active_cam.onStatus = function(infoObject) {
  // 此处是您的语句
}

参数

infoObject 按照状态消息定义的参数。

返回

无。

说明

事件处理函数；在用户允许或拒绝对摄像机的访问时调用。如果您要响应此事件处理函数，必须创建一个函数来处理摄像机生成的信息对象。

当一个 SWF 文件尝试访问摄像机时，Flash Player 显示“隐私”对话框，用户可以从中选择是允许还是拒绝访问。

  • 如果用户允许访问，则 Camera.muted 属性设置为 false，并且用 code 属性为 "Camera.Unmuted"、level 属性为 "Status" 的信息对象调用此处理函数。
  • 如果用户拒绝访问，则 Camera.muted 属性设置为 true，并且用 code 属性为 "Camera.Muted"、level 属性为 "Status" 的信息对象调用此处理函数。

若要不处理此事件处理函数就确定用户是拒绝还是允许对摄像机的访问，请使用 Camera.muted 属性。

注意：如果用户选择永久允许或拒绝对来自指定域的所有 SWF 文件的访问，则对于来自该域的 SWF 文件不调用此处理函数，除非用户以后更改该隐私设置。有关更多信息，请参见 Camera.get()。

示例

下面的事件处理函数无论用户拒绝还是允许对摄像机的访问都显示一个消息。

myCam = Camera.get();
myVideoObject.attachVideo(myCam);
myCam.onStatus = function(infoMsg) {

  if(infoMsg.code == "Camera.Muted"){
    trace("User denies access to the camera");
  }
  else
    trace("User allows access to the camera");
}
// 更改 Allow 或 Deny 值以调用该函数
System.showSettings(0);

另请参见

Camera.get(), Camera.muted


Camera.quality

可用性

Flash Player 6。

用法

active_cam.quality

说明

只读属性；一个指定所需图片品质等级的整数，图片品质等级由应用于每一视频帧的压缩量确定。可接受的品质值范围是从 1（最低品质，最大压缩）到 100（最高品质，无压缩）。默认值为 0，这意味着图片品质可以根据需要进行变化，以避免超出可用带宽。

另请参见

Camera.setQuality()


Camera.setMode()

可用性

Flash Player 6。

用法

active_cam.setMode(width, height, fps [,favorSize])

参数

width 以像素为单位的请求的捕获宽度。默认值为 160。

height 以像素为单位的请求的捕获高度。默认值为 120。

fps 摄像机捕获数据所用的请求的速率，以每秒帧数为单位。默认值为 15。

favorSize 可选：一个布尔值，指定当摄像机不具有满足指定要求的本机模式时如何控制宽度、高度和帧速率。默认值为 true，这意味着支持保持捕获大小；使用此参数选择与 width 和 height 值最匹配的模式，即使这样做会由于降低了帧速率而对性能有不利影响。若要在对摄像机高度和宽度的影响最小的情况下最大限度地提高帧速率，则为 favorSize 参数传递 false。

返回

无。

说明

方法；将摄像机的捕获模式设置为最符合指定要求的本机模式。如果摄像机不具有匹配您传递的所有参数的本机模式，则 Flash 选择最接近于请求模式的合成的捕获模式。此操作可能涉及裁切图像和删除帧。

默认情况下，Flash 根据需要删除帧，以保持图像大小。若要将删除的帧的数目降至最低，即使这样做意味着减小图像的大小，为 favorSize 参数传递 false。

在选择本机模式时，Flash 尝试尽可能保持请求的纵横比。例如，如果您发出命令 active_cam.setMode(400, 400, 30)，并且摄像机上可用的最大宽度和高度值分别为 320 和 288，Flash 会将宽度和高度值都设置为 288；通过将这些属性设置为相同的值，Flash 保持您请求的 1:1 纵横比。

若要确定 Flash 在选择与您请求的值最匹配的模式后分配给这些属性的值，请使用 Camera.width、Camera.height 和 Camera.fps。

示例

下面的示例基于用户输入（如果用户单击该按钮）设置宽度、高度和 fps。示例中不包括可选参数 favorSize，因为默认值 true 将提供在不降低图片品质的情况下与用户的首选参数最接近的设置，尽管可能会影响 fps。然后用新设置更新用户界面。

on (press)
{
  // 根据用户输入设置宽度、高度和 fps。
  _root.myCam.setMode(txt_width, my_txt._height, txt_fps);

  // 使用新设置更新用户的文本字段。
  _root.txt_width = myCam.width;
  _root.txt_height = myCam.height;
  _root.txt_fps = myCam.fps;
}

另请参见

Camera.currentFps, Camera.fps, Camera.height, Camera.width


Camera.setMotionLevel()

可用性

Flash Player 6。

用法

active_cam.setMotionLevel(sensitivity [, timeout])

参数

sensitivity 一个数值，指定调用 Camera.onActivity (true) 所需的运动量。可接受值的范围是 0 到 100。默认值为 50。

timeout 一个可选的数值参数，指定必须经过多少没有任何活动的时间（按毫秒数计算），Flash 才会认为活动已停止并调用 Camera.onActivity (false) 事件处理函数。默认值为 2000（2 秒）。

返回

无。

说明

方法；指定调用 Camera.onActivity (true) 所需的运动量。或者，设置必须经过多少没有任何活动的时间（按毫秒数计算），Flash 才会认为运动已停止并调用 Camera.onActivity (false)。

注意：不论 sensitivity 参数的值为如何都可以显示视频。该参数只确定在何时以及哪些情况下调用 Camera.onActivity，而与实际上是捕获还是显示视频无关。

  • 若要完全禁止摄像机检测运动，则为 sensitivity 传递值 100；Camera.onActivity 永远不被调用。（您可能只能将该值用作测试目的，例如暂时禁用在调用 Camera.onActivity 时发生的任何动作集。）
  • 若要确定摄像机当前检测到的运动量，请使用 Camera.activityLevel 属性。

运动敏感度值直接对应于活动值。完全不运动为活动值 0。持续运动为活动值 100。当您未移动时，活动值小于运动敏感度值；当您正移动时，活动值会经常超过运动敏感度值。

此方法的用途与 Microphone.setSilenceLevel() 相同；这两种方法都用于指定应该在何时调用 onActivity 事件处理函数。但是这些方法对发布流具有非常不同的影响：

  • Microphone.setSilenceLevel() 用于优化带宽。在认为音频流被静音时，不发送任何音频数据。所发送的是一个指示静音已启动的消息。
  • Camera.setMotionLevel() 用于检测运动，它不影响带宽用量。即使视频流未检测到运动，仍将发送视频。

示例

下面的示例在视频活动开始或结束时将消息发送到“输出”面板。将值为 30 的运动敏感度值更改为更高或更低的数值，看一下不同的值是如何影响运动检测的。

// 假设名为“myVideoObject”的 Video 对象位于舞台上
c = Camera.get();
x = 0;
function motion(mode)
{
  trace(x + ":模式
  x++;
}
c.onActivity = function(mode) {motion(mode);};
c.setMotionLevel(30, 500);
myVideoObject.attachVideo(c);

另请参见

Camera.activityLevel, Camera.motionLevel, Camera.motionTimeOut, Camera.onActivity


Camera.setQuality()

可用性

Flash Player 6。

用法

active_cam.setQuality(bandwidth, frameQuality)

参数

bandwidth 一个整数，指定当前输出视频输入信号可以使用的最大带宽量，以每秒字节数为单位。若要指定 Flash 视频可以使用所需的任何数量的带宽来保持 frameQuality 的值，则为 bandwidth 传递 0。默认值为 16384。

frameQuality 一个指定所需的图片品质级别的整数，该图片品质级别由应用于每一视频帧的压缩量确定。可接受的值范围从 1（最低品质，最大压缩）到 100（最高品质，无压缩）。若要指定图片品质可以根据需要进行变化，以避免超出带宽，则为 frameQuality 传递 0。默认值为 0。

返回

无。

说明

方法；设置每秒带宽的最大量或者当前输出视频输入信号的所需图片品质。此方法通常只在您使用 Flash Communication Server 传输视频时适用。

使用此方法指定输出视频输入信号的哪一方面对于您的应用程序更重要：是带宽使用率还是图片品质。

  • 若要指示带宽使用率更为重要，则为 bandwidth 传递一个值并且为 frameQuality 传递值 0。Flash 将在指定的带宽内以可能的最高品质传输视频。如有必要，Flash 将降低图片品质以避免超出指定的带宽。通常，随着运动的增加，品质将降低。
  • 若要指示品质最重要，则为 bandwidth 传递值 0 并为 frameQuality 传递一个数值。Flash 将根据需要使用尽量多的带宽来保持指定的品质。如有必要，Flash 将降低帧速率以保持图片品质。通常，随着运动的增加，带宽的使用率也将增加。
  • 若要指定带宽和品质同等重要，则为这两个参数都传递数值。Flash 将传输达到指定品质并且不超过指定带宽的视频。如有必要，Flash 将降低帧速率以在不超出指定的带宽的情况下保持图片品质。

示例

下面的示例举例说明如何使用此方法来控制带宽使用率和图片品质。

// 确保发送视频的速率不超过 8192（8K/秒），
active_cam.setQuality(8192.0);

// 确保发送视频的速率不超过 8192（8K/秒），
// 而品质最低为 50
active_cam.setQuality(8192.50);

// 确保最低品质为 50，无论采用多大的带宽
active_cam.setQuality(0,50);

另请参见

Camera.bandwidth, Camera.quality


Camera.width

可用性

Flash Player 6。

用法

active_cam.width

说明

只读属性；以像素为单位的当前捕获宽度。若要为该属性设置所需值，请使用 Camera.setMode()。

示例

下面的代码行用当前宽度值更新用户界面中的文本框。

myTextField.text=myCam.width;

另请参见有关 Camera.setMode() 的示例。

另请参见

Camera.height


case

可用性

Flash Player 4。

用法

case expression:statements

参数

expression 任何表达式。

statements 任何语句。

返回

无。

说明

语句；定义用于 switch 动作的条件。如果 case 关键字后的 expression 参数在使用全等 (===) 的情况下等于 switch 动作的 expression 参数，则执行 statements 参数中的语句。

如果在 switch 语句外部使用 case 动作，则将产生错误，脚本不能编译。

另请参见

break, default, ===（全等）, switch


chr

可用性

Flash Player 4。不鼓励在 Flash 5 中使用该函数，而推荐使用 String.fromCharCode()。

用法

chr(number)

参数

number ASCII 码数字。

返回

无。

说明

字符串函数；将 ASCII 码数字转换为字符。

示例

下面的示例将数字 65 转换为字母 A，并将其分配给变量 myVar。

myVar = chr(65);

另请参见

String.fromCharCode()


class

可用性

Flash Player 6。

用法

[dynamic] class className  [ extends superClass ]
              [ implements interfaceName [, interfaceName... ] ]
{
  // 此处是类定义
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

className 类的全限定名。

superClass 可选;className 扩展（继承自）的类的名称。

interfaceName 可选；其 className 方法必须实现的接口的名称。

说明

语句；定义一个自定义类，通过该自定义类可以实例化共享您定义的方法和属性的对象。例如，如果您正开发一个发票跟踪系统，则可以创建一个发票类，它定义每一发票应具有的所有方法和属性。然后您可以使用 new invoice() 命令来创建发票对象。

该类的名称必须与包含该类的外部文件的名称相同。例如，如果您将一个类命名为 Student，则定义该类的文件必须被命名为 Student.as。

该类名称在声明该类的文件内必须是全限定的；即，该类名称必须反映存储它的目录。例如，要创建存储在 myClasses/education/curriculum 目录中的名为 RequiredClass 的类，您必须按如下所示在 RequiredClass.as 文件中声明该类：

class myClasses.education.curriculum.RequiredClass {
}

因此，最好在开始创建类之前就计划好您的目录结构。否则，如果您在创建类文件之后决定移动它们，就将不得不修改类声明语句以反映其新位置。

您不能嵌套类定义；即，不能在一个类定义内定义其它类。

若要指示对象可在运行时添加和访问动态属性，应在类语句前面放置 dynamic 关键字。若要基于接口创建类，请使用 implements 关键字。若要创建一个类的子类，请使用 extends 关键字。（某一类只能扩展一个类，但可以实现多个接口。）您可以在一个语句中使用 implements 和 extends。

class C implements Interface_i, Interface_j    //可以
class C extends Class_d implements Interface_i, Interface_j    // 可以
class C extends Class_d, Class_e    // 不可以

有关更多信息，请参见创建和使用类。

示例

下面的示例创建一个名为 Plant 的类。其构造函数采用两个参数。

// 文件名 Plant.as
class Plant {
  // 定义属性名称和类型
  var leafType:String;
  var bloomSeason:String;
  // 以下行是构造函数
  // 因为它具有与类相同的名称
  function Plant (param_leafType:String, param_bloomSeason:String) {
      // 在创建新的 Plant 对象时向属性分配传递的值
    leafType = param_leafType;
    bloomSeason = param_bloomSeason;
  }
  // 创建返回属性值的方法，因为最佳实践
  // 建议直接引用一个类的属性
  function getLeafType():String {return leafType};
  function getBloomSeason():String {return bloomSeason};
}

在外部脚本文件或“动作”面板中，使用 new 运算符创建一个 Plant 对象。

var pineTree:Plant = new Plant("Evergreen","N/A");
// 确认参数已正确传递
trace(pineTree.getLeafType());
trace(pineTree.getBloomSeason());

另请参见

dynamic, extends, implements, import, interface, new, Object.registerClass()


clearInterval()

可用性

Flash Player 6。

用法

clearInterval( intervalID )

参数

intervalID 从对 setInterval() 的调用返回的对象。

返回

无。

说明

函数；清除对 setInterval() 的调用。

示例

下面的示例首先设置一个间隔调用，然后将其清除：

function callback() {
        trace("interval called");
}
var intervalID;
intervalID = setInterval( callback, 1000 );

// 有时稍后
clearInterval( intervalID );

另请参见

setInterval()


Color 类

可用性

Flash Player 5。

说明

通过 Color 类，您可以设置影片剪辑的 RGB 颜色值和颜色转换，并可以在设置后获取这些值。

必须使用构造函数 new Color() 创建 Color 对象后，才可调用其方法。

Color 类的方法摘要

方法 | 说明
Color.getRGB() | 返回由最后一次 setRGB() 调用设置的 RGB 数值。
Color.getTransform() | 返回由最后一次 setTransform() 调用设置的转换信息。
Color.setRGB() | 为 Color 对象设置 RGB 值的十六进制表示形式。
Color.setTransform() | 为 Color 对象设置颜色转换。

Color 类的构造函数

可用性

Flash Player 5。

用法

new Color(target)

参数

target 影片剪辑的实例名称。

返回

无。

说明

构造函数；为由 target 参数指定的影片剪辑创建 Color 对象。然后可使用该 Color 对象的方法来更改整个目标影片剪辑的颜色。

示例

以下示例为影片剪辑 my_mc 创建一个名为 my_color 的 Color 对象并设置其 RGB 值：

my_color = new Color(my_mc);
my_color.setRGB(0xff9933);


Color.getRGB()

可用性

Flash Player 5。

用法

my_color.getRGB()

参数

无。

返回

表示指定颜色的 RGB 数字值的数字。

说明

方法；返回由最后一次 setRGB() 调用设置的数字值。

示例

下面的代码获取 Color 对象 my_color 的 RGB 值，将其转换为十六进制字符串，并将其分配给 value 变量。

value = my_color.getRGB().toString(16);

另请参见

Color.setRGB()


Color.getTransform()

可用性

Flash Player 5。

用法

my_color.getTransform()

参数

无。

返回

一个对象，其属性包含指定颜色的当前偏移量和百分比值。

说明

方法；返回由最后一次 Color.setTransform() 调用设置的转换值。

另请参见

Color.setTransform()


Color.setRGB()

可用性

Flash Player 5。

用法

my_color.setRGB(0xRRGGBB)

参数

0xRRGGBB 要设置的十六进制或 RGB 颜色。对于 RR、GG 和 BB，每种代码由两个十六进制数字组成，这些数字指定每种颜色成分的偏移量。0x 告知动作脚本编译器该数字是十六进制数值。

说明

方法；指定 Color 对象的 RGB 颜色。调用此方法将覆盖任何先前的 Color.setTransform() 设置。

返回

无。

示例

此示例设置影片剪辑 my_mc 的 RGB 颜色值。若要查看此代码的工作情况，请将影片剪辑置于实例名称为 my_mc 的舞台上。然后将下面的代码置于主时间轴中的“第 1 帧”上，再选择“控制”>“测试影片”。

my_color = new Color(my_mc);
my_color.setRGB(0x993366);

另请参见

Color.setTransform()


Color.setTransform()

可用性

Flash Player 5。

用法

my_color.setTransform(colorTransformObject)

参数

colorTransformObject 使用 new Object 构造函数创建的对象。Object 类的这一实例必须具有以下指定颜色转换值的属性：ra、rb、ga、gb、ba、bb、aa、ab。这些属性在下面进行了解释。

返回

无。

说明

方法；为 Color 对象设置颜色转换信息。colorTransformObject 参数是通过 new Object 构造函数创建的通用对象。它具有指定颜色的红、绿、蓝和 alpha（透明度）成分百分比和偏移量值的参数，以 0xRRGGBBAA 的格式输入。

颜色转换对象的参数与“高级效果”对话框中的设置相对应，定义如下：

  • ra 是红色成分的百分比（-100 到 100）。
  • rb 是红色成分的偏移量（-255 到 255）。
  • ga 是绿色成分的百分比（-100 到 100）。
  • gb 是绿色成分的偏移量（-255 到 255）。
  • ba 是蓝色成分的百分比（-100 到 100）。
  • bb 是蓝色成分的偏移量（-255 到 255）。
  • aa 是 alpha 的百分比（-100 到 100）。
  • ab 是 alpha 的偏移量（-255 到 255）。

您可按如下形式创建 colorTransformObject 参数：

myColorTransform = new Object();
myColorTransform.ra = 50;
myColorTransform.rb = 244;
myColorTransform.ga = 40;
myColorTransform.gb = 112;
myColorTransform.ba = 12;
myColorTransform.bb = 90;
myColorTransform.aa = 40;
myColorTransform.ab = 70;

您也可使用以下语法来创建 colorTransformObject 参数：

myColorTransform = { ra:?50? rb:?244? ga:?40? gb:?112? ba:?12? bb:?90? aa:?40? ab:?70’}

示例

此示例为目标 SWF 文件创建新 Color 对象，使用上面定义的属性创建名为 myColorTransform 的通用对象，然后使用 setTransform() 方法将 colorTransformObject 传递给一个 Color 对象。若要在 Flash (FLA) 文档中使用此代码，请将其放在主时间轴中的第 1 帧上，然后将影片剪辑置于实例名称为 my_mc 的舞台上，如以下代码所示：

// 为目标 my_mc 创建名为 my_color 的 Color 对象
my_color = new Color(my_mc);
// 使用通用 Object 对象创建名为 myColorTransform
// 的 Color Transform 对象
myColorTransform = new Object();
// 设置 myColorTransform 的值
myColorTransform = { ra:'50', rb:'244', ga:'40', gb:'112', ba:'12', bb:'90', aa:'40', ab: '70'};
// 将 Color Transform 对象与 Color 对象相关联
// 为 my_mc 创建
my_color.setTransform(myColorTransform);


ContextMenu 类

可用性

Flash Player 7。

说明

ContextMenu 类提供对 Flash Player 上下文菜单项的运行时控制，当用户在 Flash Player 中右击 (Windows) 或按住 Control 键单击 (Macintosh) 时，上下文菜单将出现。您可以使用 ContextMenu 类的方法和属性添加自定义菜单项，控制内置菜单项的显示（例如，“放大”和“打印”），或者创建菜单的副本。

您可以将 ContextMenu 对象附加到特定的按钮、影片剪辑或文本字段，也可以附加到整个影片级别。这可以使用 Button、MovieClip 或 TextField 类的 menu 属性来实现。有关 menu 属性的更多信息，请参见 Button.menu、MovieClip.menu 和 TextField.menu。

若要向 ContextMenu 对象添加新的菜单项，请创建一个 ContextMenuItem 对象，然后将该对象添加到 ContextMenu.customItems 数组。有关创建上下文菜单项的更多信息，请参见 ContextMenuItem 类条目。

Flash Player 具有三种类型的上下文菜单：标准菜单（当您在 Flash Player 中右击时出现）、编辑菜单（当您在可选择或可编辑的文本字段上右击时出现）和错误菜单（当 SWF 文件未能加载到 Flash Player 中时出现）。只有标准菜单和编辑菜单才能使用 ContextMenu 类进行修改。

自定义菜单项始终出现在 Flash Player 上下文菜单的顶部，并位于所有可见内置菜单项之上；内置菜单项和自定义菜单项之间由一个分隔条加以分隔。一个上下文菜单包含的自定义菜单项不能超过 15 个。

必须在使用构造函数 new ContextMenu() 创建 ContextMenu 对象之后，才能调用它的方法。

ContextMenu 类的方法概要

方法 | 说明
ContextMenu.copy() | 返回指定 ContextMenu 对象的副本。
ContextMenu.hideBuiltInItems() | 在 Flash Player 上下文菜单中隐藏大多数内置项。

ContextMenu 类的属性概要

属性 | 说明
ContextMenu.builtInItems | 其成员与内置上下文菜单项相对应的对象。
ContextMenu.customItems | 默认情况下未定义的数组，它包含 ContextMenuItem 对象。

ContextMenu 类的事件处理函数概要

属性 | 说明
ContextMenu.onSelect | 在显示菜单之前调用。

ContextMenu 类的构造函数

可用性

Flash Player 7。

用法

new ContextMenu ([callBackFunction])

参数

callBackFunction 对函数的引用，该函数在用户右击或按住 Control 键单击时，但在菜单显示之前被调用。此参数是可选的。

返回

无。

说明

构造函数；创建新的 ContextMenu 对象。或者，您可以在创建该对象时指定事件处理函数的标识符。指定的函数在用户调用上下文菜单时，但在菜单实际显示之前 被调用。在根据应用程序状态或者根据用户右击或按住 Control 键单击的对象类型（影片剪辑、文本字段或按钮）自定义菜单内容时，此函数非常有用。（有关创建事件处理函数的示例，请参见 ContextMenu.onSelect。）

示例

以下示例隐藏上下文菜单中的所有内置对象。（但是，由于不能禁用“设置”和“关于”菜单项，所以它们仍会出现。）

var newMenu = new ContextMenu();
newMenu.hideBuiltInItems();
_root.menu = newMenu;

在此示例中，指定的事件处理函数 menuHandler 根据名为 showItem 的布尔型变量的值启用或禁用自定义菜单项（使用 ContextMenu.customItems 数组）。如果为 false，则禁用自定义菜单项；否则，将其启用。

var showItem = false; // 将其更改为 true 以查看其效果
my_cm = new ContextMenu(menuHandler);
my_cm.customItems.push(new ContextMenuItem("Hello", itemHandler));
function menuHandler(obj, menuObj) {
  if (showItem == false) {
    menuObj.customItems[0].enabled = false;
  } else {
    menuObj.customItems[0].enabled = true;
  }
}
function itemHandler(obj, item) {
}
_root.menu = my_cm;

另请参见

Button.menu, ContextMenu.onSelect, ContextMenu.customItems, ContextMenu.hideBuiltInItems(), MovieClip.menu, TextField.menu


ContextMenu.builtInItems

可用性

Flash Player 7。

用法

my_cm.builtInItems

说明

属性；具有以下布尔型属性的对象：save、zoom、quality、play、loop、rewind、forward_back 和 print。如果将这些变量设置为 false，则会删除指定 ContextMenu 对象中的相应菜单项。这些属性是可枚举的，并在默认情况下设置为 true。

示例

在此示例中，对于附加到 SWF 文件的根时间轴的 ContextMenu 对象 my_cm，内置“品质”和“打印”菜单项被禁用。

var my_cm = new ContextMenu();
my_cm.builtInItems.quality=false;
my_cm.builtInItems.print=false;
_root.menu = my_cm;

在下一个示例中，for..in 循环枚举通过 ContextMenu 对象 my_cm 的内置菜单项的所有名称和值。

my_cm = new ContextMenu();
for(eachProp in my_cm.builtInItems) {
  var propName = eachProp;
  var propValue = my_cm.builtInItems[propName];
  trace(propName + " :" + propValue;
}


ContextMenu.copy()

可用性

Flash Player 7。

用法

my_cm.copy()

参数

无。

返回

ContextMenu 对象。

说明

方法；创建指定 ContextMenu 对象的副本。该副本继承初始菜单对象的所有属性。

示例

此示例创建其内置菜单项已隐藏的 ContextMenu 对象 my_cm 的副本，并添加带文本“保存...”的菜单项。然后，它创建 my_cm 的副本，并将其分配给变量 clone_cm，该变量继承初始菜单的所有属性。

my_cm = new ContextMenu();
my_cm.hideBuiltInItems();
my_cm.customItems.push(new ContextMenuItem("Save...", saveHandler);
function saveHandler (obj, menuItem) {
  saveDocument(); // 自定义函数（未显示）
}
clone_cm = my_cm.copy();


ContextMenu.customItems

可用性

Flash Player 7。

用法

my_cm.customItems

说明

属性；ContextMenuItem 对象的数组。数组中的每个对象表示您已经定义的上下文菜单项。使用此属性可添加、删除或修改这些自定义菜单项。

若要添加新的菜单项，请首先创建一个新的 ContextMenuItem 对象，然后将其添加到 menu_mc.customItems 数组（例如，使用 Array.push()）。有关创建新菜单项的更多信息，请参见 ContextMenuItem 类条目。

示例

以下示例新建一个名为 menuItem_cm 的自定义菜单项（其标题为“发送电子邮件”）和一个名为 emailHandler（未显示）的回调处理函数。然后，使用 customItems 数组将新的菜单项添加到 ContextMenu 对象 my_cm。最后，将新菜单附加到名为 email_mc 的影片剪辑。

var my_cm = new ContextMenu();
var menuItem_cm = new ContextMenuItem("Send e-mail", emailHandler);
my_cm.customItems.push(menuItem_cm);
email_mc.menu = my_cm;

另请参见

Button.menu, ContextMenu 类, MovieClip.menu, TextField.menu


ContextMenu.hideBuiltInItems()

可用性

Flash Player 7。

用法

my_cm.hideBuiltInItems()

参数

无。

返回

无。

说明

方法；隐藏指定 ContextMenu 对象中的所有内置菜单项（“设置”除外）。如果 Flash 调试播放器正在运行，则显示“调试”菜单项，但如果 SWF 文件未启用远程调试功能，则该菜单项会变暗。

此方法仅隐藏标准上下文菜单中显示的菜单项；它不影响编辑菜单或错误菜单中显示的菜单项。有关不同菜单类型的更多信息，请参见 ContextMenu 类条目。

此方法通过将 my_cm.builtInItems 的所有布尔型成员设置为 false 来实现其功能。您可以有选择地显示内置菜单项，方法是将它在 my_cm.builtInItems 中的相应成员设置为 true（如以下示例所示）。

示例

以下示例创建其内置菜单项已隐藏（“打印”除外）的新 ContextMenu 对象 my_cm。然后将该菜单对象附加到根时间轴。

my_cm = new ContextMenu();
my_cm.hideBuiltInItems();
my_cm.builtInItems.print = true;
_root.menu = my_cm;


ContextMenu.onSelect

可用性

Flash Player 7。

用法

my_cm.onSelect = function (item:Object, item_menu:ContextMenu) {
  // 此处是您的代码
}

参数

item 对特定对象（影片剪辑、按钮或可选择的文本字段）的引用，当调用 Flash Player 上下文菜单时，该对象位于鼠标指针下，并且该对象的 menu 属性设置为有效的 ContextMenu 对象。

item_menu 对 ContextMenu 对象的引用，该对象分配到 object 的 menu 属性。

返回

无。

说明

事件处理函数；在用户调用 Flash Player 上下文菜单时，但在该菜单实际显示之前调用。这使您可以根据当前的应用程序状态自定义上下文菜单的内容。

您也可以在构造新的 ContextMenu 对象时指定 ContextMenu 对象的回调处理函数。有关更多信息，请参见 ContextMenu 类条目。

示例

以下示例确定对哪种类型的对象调用了上下文菜单。

my_cm = new ContextMenu();
menuHandler = function (obj:Object, menu:ContextMenu) {
  if(obj instanceof MovieClip) {
    trace("Movie clip:" + obj);
  }
  if(obj instanceof TextField) {
    trace("Text field:" + obj);
  }
  if(obj instanceof Button) {
    trace("Button:" + obj);
  }
}
my_cm.onSelect = menuHandler;


ContextMenuItem 类

可用性

Flash Player 7。

说明

使用 ContextMenuItem 类可创建在 Flash Player 上下文菜单中显示的自定义菜单项。每个 ContextMenuItem 对象均具有在上下文菜单中显示的标题（文本）以及在选择菜单项时调用的回调处理函数（函数）。若要向上下文菜单添加新的上下文菜单项，请将其添加到 ContextMenu 对象的 customItems 数组。

您可以启用或禁用特定菜单项，显示或隐藏菜单项，或者更改与菜单项关联的标题或回调处理函数。

自定义菜单项出现在上下文菜单的顶部，并位于所有内置菜单项之上。自定义菜单项与内置菜单项始终由分隔条隔开。向 Flash Player 上下文菜单添加的自定义菜单项不得超过 15 个。每个菜单项必须至少包含一个可见字符，控制字符、换行符和其它空白字符将被忽略。所有菜单项的长度不得超过 100 个字符。如果菜单项与任何内置菜单项或其它自定义菜单项相同，则无论匹配菜单项是否可见，均会忽略该菜单项。对菜单项进行比较时将忽略大小写、标点和空格。

自定义菜单项中不能出现以下字词：Macromedia、Flash Player、或 设置。

ContextMenuItem 类的方法概要

方法 | 说明
ContextMenuItem.copy() | 返回指定 ContextMenuItem 对象的副本。

ContextMenuItem 类的属性概要

属性 | 说明
ContextMenuItem.caption | 指定菜单项中显示的文本。
ContextMenuItem.enabled | 指定是启用还是禁用菜单项。
ContextMenuItem.separatorBefore | 指定菜单项之上是否应该出现分隔条。
ContextMenuItem.visible | 指定菜单项是否可见。

ContextMenuItem 类的事件处理函数概要

事件处理函数 | 说明
ContextMenuItem.onSelect | 在选择菜单项时调用。

ContextMenuItem 类的构造函数

可用性

Flash Player 7。

用法

new ContextMenuItem(caption, callbackFunction, [ separatorBefore, [ enabled, [ visible ] ] ] )

参数

caption 指定与菜单项关联的文本的字符串。

callbackFunction 您定义的函数，它在选择菜单项时被调用。

separatorBefore 布尔值，指示分隔条是否应该出现在上下文菜单中的特定菜单项之上。此参数是可选的；其默认值为 false。

enabled 布尔值，指示是启用还是禁用上下文菜单中的特定菜单项。此参数是可选的；其默认值为 true。

visible 布尔值，指示菜单项是否可见。此参数是可选的；其默认值为 true。

返回

无。

说明

构造函数；创建可添加到 ContextMenu.customItems 数组的新 ContextMenuItem 对象。

示例

此示例将“开始”和“停止”菜单项（由分隔条隔开）添加到 ContextMenu 对象 my_cm。当从上下文菜单中选择“开始”时，将调用 startHandler() 函数；当选择“停止”时，将调用 stopHandler()。ContextMenu 对象会应用到根时间轴。

my_cm = new ContextMenu();
my_cm.customItems.push(new ContextMenuItem("Start", startHandler));
my_cm.customItems.push(new ContextMenuItem("Stop", stopHandler, true));
function stopHandler(obj, item) {
  trace("Stopping...");
}
function startHandler(obj, item) {
  trace("Starting...");
}
_root.menu = my_cm;


ContextMenuItem.caption

可用性

Flash Player 7。

用法

menuItem_cmi.caption

说明

属性；指定上下文菜单中显示的菜单项标题（文本）的字符串。

示例

此示例显示“输出”面板中选定菜单项（“暂停游戏”）的标题。

my_cm = new ContextMenu();
menuItem_cmi = new ContextMenuItem("Pause Game", onPause);
my_cm.customItems.
function onPause(obj, menuItem) {
  trace("You chose:" + menuItem.caption);
}


ContextMenuItem.copy()

可用性

Flash Player 7。

用法

menuItem_cmi.copy();

返回

ContextMenuItem 对象。

说明

方法；创建并返回指定 ContextMenuItem 对象的副本。该副本包含初始对象的所有属性。

示例

此示例新建名为 original_cmi 的 ContextMenuItem 对象，其标题文本为“暂停”，回调处理函数设置为函数 onPause。然后，此示例创建 ContextMenuItem 对象的副本，并将其分配给变量 copy_cmi。

original_cmi = new ContextMenuItem("Pause", onPause);
function onPause(obj, menu) {
  _root.stop();
}
original_cmi.visible = false;
copy_cmi = orig_cmi.copy();


ContextMenuItem.enabled

可用性

Flash Player 7。

用法

menuItem_cmi.enabled

说明

属性；指示是启用还是禁用指定菜单项的布尔值。默认情况下，此属性为 true。

示例

以下示例创建新的上下文菜单项，然后禁用该菜单项。

var saveMenuItem = new ContextMenuItem("Save...", doSave);
saveMenuItem.enabled = false;


ContextMenuItem.onSelect

可用性

Flash Player 7。

用法

menuItem_cmi.onSelect = function (obj, menuItem) {
  // 此处是您的语句
}

参数

obj 对用户右击或按住 Control 键单击的影片剪辑（或时间轴）、按钮或可选择（可编辑）文本字段的引用。

menuItem 对选定 ContextMenuItem 对象的引用。

返回

无。

说明

事件处理函数；当从 Flash Player 上下文菜单中选择指定菜单项时调用。指定的回调处理函数会接收两个参数：obj，对在用户调用 Flash Player 上下文菜单时位于鼠标下的对象的调用；menuItem，对表示选定菜单项的 ContextMenuItem 对象的调用。

示例

以下示例将一个函数分配给名为 start_cmi 的 ContextMenuItem 对象的 onSelect 处理函数。该函数显示选定菜单项的标题。

start_cmi.onSelect = function (obj, item) {
    trace("You choose:" + item.caption);
}

另请参见

ContextMenu.onSelect


ContextMenuItem.separatorBefore

可用性

Flash Player 7。

用法

menuItem_cmi.separatorBefore

说明

属性；指定分隔条是否应该在指定菜单项之上出现的布尔值。默认情况下，此属性为 false。

注意：任何自定义菜单项和内置菜单项之间始终会出现分隔条。

示例

此示例创建三个菜单项，其标签为“打开”、“保存”和“打印”。“保存”和“打印”菜单项由分隔条隔开。然后，将这些菜单项添加到 ContextMenu 对象的 customItems 数组。最后，该菜单被附加到 SWF 文件的根时间轴上。

my_cm = new ContextMenu();
open_cmi = new ContextMenuItem("Open", itemHandler);
save_cmi = new ContextMenuItem("Save", itemHandler);
print_cmi = new ContextMenuItem("Print", itemHandler);
print_cmi.separatorBefore = true;
my_cm.customItems.push(open_cmi, save_cmi, print_cmi);
function itemHandler(obj, menuItem) {
    trace("You chose:" + menuItem.caption);
};
_root.menu = my_cm;

另请参见

ContextMenu.onSelect


ContextMenuItem.visible

可用性

Flash Player 7。

用法

menuItem_cmi.visible

说明

属性；指示当显示 Flash Player 上下文菜单时指定菜单项是否可见的布尔值。默认情况下，此属性为 true。


continue

可用性

Flash Player 4。

用法

continue

参数

无。

返回

无。

说明

语句；出现在几种类型的循环语句中；它在每种类型的循环中的行为方式各不相同。

在 while 循环中，continue 可使 Flash 解释程序跳过循环体的其余部分，并转到循环的顶端（在该处进行条件测试）。

在 do while 循环中，continue 可使 Flash 解释程序跳过循环体的其余部分，并转到循环的底端（在该处进行条件测试）。

在 for 循环中，continue 可使 Flash 解释程序跳过循环体的其余部分，并转而计算 for 循环的后表达式 (post-expression)。

在 for..in 循环中，continue 可使 Flash 解释程序跳过循环体的其余部分，并跳回循环的顶端（在这里处理下一个枚举值）。

另请参见

do while, for, for..in, while


CustomActions 类

可用性

Flash Player 6。

说明

CustomActions 类的方法使得在 Flash 创作工具中播放的 SWF 文件可以管理任何用该创作工具注册的自定义动作。SWF 文件可安装和卸载自定义动作，获取自定义动作的 XML 定义，以及获取已注册自定义动作的列表。

您可使用这些方法来生成属于 Flash 创作工具扩展功能的 SWF 文件。例如，这样的扩展功能可使用“Flash 应用程序协议”定位 UDDI 储备库，并将 Web 服务下载到“动作”工具箱。

CustomActions 类的方法摘要

方法 | 说明
CustomActions.get() | 读取自定义动作 XML 定义文件的内容。
CustomActions.install() | 安装新的自定义动作 XML 定义文件。
CustomActions.list() | 返回所有已注册自定义动作的列表。
CustomActions.uninstall() | 删除自定义动作 XML 定义文件。


CustomActions.get()

可用性

Flash Player 6。

用法

CustomActions.get(customActionsName)

参数

customActionsName 要获取的自定义动作定义的名称。

返回

如果找到自定义动作的 XML 定义，则返回字符串，否则，返回 undefined。

说明

方法；读取名为 customActionsName 的自定义动作 XML 定义文件的内容。

定义文件的名称必须是简单文件名，没有 .xml 文件扩展名，也没有任何目录分隔符（“:”、“/”或“\”）。

如果找不到由 customActionsName 指定的定义文件，则返回一个 undefined 值。如果找到了由 customActionsName 参数指定的自定义动作 XML 定义，则该定义将被完整地读取，并以字符串形式返回。


CustomActions.install()

可用性

Flash Player 6。

用法

CustomActions.install(customActionsName, customXMLDefinition)

参数

customActionsName 要安装的自定义动作定义的名称。

customXMLDefinition 要安装的 XML 定义的文本。

返回

如果安装过程中发生错误，则返回布尔值 false；否则，返回布尔值 true，指示该自定义动作已成功安装。

说明

方法；安装由 customActionsName 参数指示的新自定义动作 XML 定义文件。该文件的内容由字符串 customXMLDefinition 指定。

定义文件的名称必须是简单文件名，没有 .xml 文件扩展名，也没有任何目录分隔符（“:”、“/”或“\”）。

如果已存在名为 customActionsName 的自定义动作文件，则该文件将被覆盖。

如果调用此方法时不存在目录 Configuration/ActionsPanel/CustomActions，则将创建该目录。


CustomActions.list()

可用性

Flash Player 6。

用法

CustomActions.list()

参数

无。

返回

一个数组。

说明

方法；返回一个 Array 对象，该对象包含 Flash 创作工具中所有已注册自定义动作的名称。该数组的元素均是简单名称，没有 .xml 文件扩展名，并且没有任何目录分隔符（例如，“:”、“/”或“\”）。如果没有已注册的自定义动作，则 list() 将返回一个长度为零的数组。如果发生错误，list() 将返回值 undefined。


CustomActions.uninstall()

可用性

Flash Player 6。

用法

CustomActions.uninstall(customActionsName)

参数

customActionsName 要卸载的自定义动作定义的名称。

返回

如果没有找到名为 customActionsName 的任何自定义动作，则返回布尔值 false。如果自定义动作被成功删除，则返回值 true。

说明

方法；删除名为 customActionsName 的自定义动作 XML 定义文件。

定义文件的名称必须是简单文件名，没有 .xml 文件扩展名，也没有任何目录分隔符（“:”、“/”或“\”）。


Date 类

可用性

Flash Player 5。

说明

Date 类用于获取相对于通用时间（格林尼治平均时，现在叫做通用时间或 UTC）或相对于运行 Flash Player 的操作系统的日期和时间值。Date 类的方法不是静态的，但仅应用于调用方法时指定的单个 Date 对象。Date.UTC() 方法属于异常，它是一个静态方法。

Date 类以不同的方式处理夏时制，具体方式取决于操作系统和 Flash Player 的版本。在下面的操作系统中，Flash Player 6 及更高版本以这些方式处理夏时制：

  • WindowsóóDate 对象为夏时制自动调整其输出。Date 对象检测在当前区域设置内是否应用了夏时制，如果是，它将检测标准的夏时制转换日期和时间。然而，当前有效的转换日期会应用到以前和将来的日期，所以如果该区域设置具有不同的转换日期，则对于以前的日期，夏时制偏差的计算结果可能会不正确。
  • Mac OS XóóDate 对象为夏时制自动调整其输出。Mac OS X 中的时区信息数据库用于确定现在或以前的任何日期或时间是否应该应用夏时制偏差。

在下面的操作系统中，Flash Player 5 处理夏时制方式如下所示：

  • Windows始终采用美国的夏时制规则，在欧洲和采用夏时制但转换时间与美国不同的其它区域中，这将造成不正确的转换结果。Flash 能够正确检测出在当前区域设置中是否应用了 DST。

若要调用 Date 类的方法，必须按照本节后面部分所述使用 Date 类的构造函数创建一个 Date 对象。

Date 类的方法摘要

方法 | 说明
Date.getDate() | 按照本地时间返回某天是当月的第几天。
Date.getDay() | 按照本地时间返回某天是周几。
Date.getFullYear() | 按照本地时间返回 4 位数字的年份数。
Date.getHours() | 按照本地时间返回小时值。
Date.getMilliseconds() | 按照本地时间返回毫秒值。
Date.getMinutes() | 按照本地时间返回分钟值。
Date.getMonth() | 按照本地时间返回月份数。
Date.getSeconds() | 按照本地时间返回秒数。
Date.getTime() | 返回自 1970 年 1 月 1 日午夜（通用时间）以来的毫秒数。
Date.getTimezoneOffset() | 以分钟为单位，返回计算机的本地时间和通用时间的差值。
Date.getUTCDate() | 按照通用时间返回某天（日期）是当月的第几天。
Date.getUTCDay() | 按照通用时间返回某天是周几。
Date.getUTCFullYear() | 按照通用时间返回 4 位数字的年份数。
Date.getUTCHours() | 按照通用时间返回小时值。
Date.getUTCMilliseconds() | 按照通用时间返回毫秒值。
Date.getUTCMinutes() | 按照通用时间返回分钟值。
Date.getUTCMonth() | 按照通用时间返回月份数。
Date.getUTCSeconds() | 按照通用时间返回秒数。
Date.getYear() | 按照本地时间返回年份数。
Date.setDate() | 按照本地时间设置某天是当月的第几天。返回以毫秒为单位的新时间。
Date.setFullYear() | 按照本地时间设置完整的年份数。返回以毫秒为单位的新时间。
Date.setHours() | 按照本地时间设置小时值。返回以毫秒为单位的新时间。
Date.setMilliseconds() | 按照本地时间设置毫秒值。 返回以毫秒为单位的新时间。
Date.setMinutes() | 按照本地时间设置分钟值。返回以毫秒为单位的新时间。
Date.setMonth() | 按照本地时间设置月份数。返回以毫秒为单位的新时间。
Date.setSeconds() | 按照本地时间设置秒数。返回以毫秒为单位的新时间。
Date.setTime() | 以毫秒为单位设置日期。返回以毫秒为单位的新时间。
Date.setUTCDate() | 按照通用时间设置日期。返回以毫秒为单位的新时间。
Date.setUTCFullYear() | 按照通用时间设置年份数。返回以毫秒为单位的新时间。
Date.setUTCHours() | 按照通用时间设置小时值。返回以毫秒为单位的新时间。
Date.setUTCMilliseconds() | 按照通用时间设置毫秒值。返回以毫秒为单位的新时间。
Date.setUTCMinutes() | 按照通用时间设置分钟值。返回以毫秒为单位的新时间。
Date.setUTCMonth() | 按照通用时间设置月份数。返回以毫秒为单位的新时间。
Date.setUTCSeconds() | 按照通用时间设置秒数。返回以毫秒为单位的新时间。
Date.setYear() | 按照本地时间设置年份数。
Date.toString() | 返回一个表示存储在指定 Date 对象中的日期和时间的字符串值。
Date.UTC() | 返回 1970 年 1 月 1 日午夜（通用时间）和指定时间之间的毫秒数。

Date 类的构造函数

可用性

Flash Player 5。

用法

new Date()
new Date(year, month [, date [, hour [, minute [, second [, millisecond ]]]]])

参数

year 一个 0 至 99 之间的值，表示 1900 年至 1999 年；如果年份不在上述范围内，则必须指定表示年份的所有 4 位数字。

month 从 0（一月）到 11（十二月）之间的整数。

date 从 1 到 31 之间的整数。此参数是可选的。

hour 从 0（午夜）到 23（深夜 11 点）之间的整数。

minute 从 0 到 59 之间的整数。此参数是可选的。

second 从 0 到 59 之间的整数。此参数是可选的。

millisecond 从 0 到 999 之间的整数。此参数是可选的。

返回

无。

说明

对象；构造一个新的 Date 对象，该对象保存当前日期和时间或指定的日期。

示例

下面的示例获取当前日期和时间。

now_date = new Date();

以下示例为 Gary 的生日（1974 年 8 月 12 日）创建一个新的 Date 对象。（由于月份参数从零开始，所以此示例使用 7 而不是 8 作为月份。）

garyBirthday_date = new Date (74, 7, 12);

以下示例创建一个新的 Date 对象，连接 Date.getMonth()、Date.getDate() 和 Date.getFullYear() 的返回值，并在变量 date_str 所指定的文本字段中显示这些值。

today_date = new Date();
date_str = ((today_date.getMonth() + 1) + "/" + today_date.getDate() + "/" + today_date.getFullYear());


Date.getDate()

可用性

Flash Player 5。

用法

my_date.getDate()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中表示日期的值（一个 1 至 31 之间的整数）。本地时间由运行 Flash Player 的操作系统确定。


Date.getDay()

可用性

Flash Player 5。

用法

my_date.getDay()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中表示周几的值（0 代表星期日，1 代表星期一，依此类推）。本地时间由运行 Flash Player 的操作系统确定。


Date.getFullYear()

可用性

Flash Player 5。

用法

my_date.getFullYear()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中的完整年份数（一个 4 位数，例如 2000）。本地时间由运行 Flash Player 的操作系统确定。

示例

下面的示例使用构造函数创建一个新的 Date 对象，并将 getFullYear() 方法返回的值发送到“输出”面板：

my_date = new Date();
trace(my_date.getFullYear());


Date.getHours()

可用性

Flash Player 5。

用法

my_date.getHours()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象的小时值（0 至 23 之间的整数）。本地时间由运行 Flash Player 的操作系统确定。


Date.getMilliseconds()

可用性

Flash Player 5。

用法

my_date.getMilliseconds()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中的毫秒值（一个 0 至 999 之间的整数）。本地时间由运行 Flash Player 的操作系统确定。


Date.getMinutes()

可用性

Flash Player 5。

用法

my_date.getMinutes()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中的分钟数（0 至 59 之间的整数）。本地时间由运行 Flash Player 的操作系统确定。


Date.getMonth()

可用性

Flash Player 5。

用法

my_date.getMonth()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中的月份数（0 代表一月，1 代表二月，依此类推）。本地时间由运行 Flash Player 的操作系统确定。


Date.getSeconds()

可用性

Flash Player 5。

用法

my_date.getSeconds()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中的秒钟数（0 至 59 之间的整数）。本地时间由运行 Flash Player 的操作系统确定。


Date.getTime()

可用性

Flash Player 5。

用法

my_date.getTime()

参数

无。

返回

一个整数。

说明

方法；返回指定 Date 对象自 1970 年 1 月 1 日午夜（通用时间）以来的毫秒数。当比较两个或更多个 Date 对象时，使用这种方法表示特定实时时刻。


Date.getTimezoneOffset()

可用性

Flash Player 5。

用法

my_date.getTimezoneOffset()

参数

无。

返回

一个整数。

说明

方法；以分钟为单位，返回计算机的本地时间和通用时间之间的差值。

示例

下面的示例返回 San Francisco 本地夏时制时间和通用时间之间的差值。只有当 Date 对象中定义的日期在夏时制期间到达时，才考虑夏时制因素，将其计入返回结果。

trace(new Date().getTimezoneOffset());
//“输出”面板中显示 420
//（7 小时 * 60 分钟/小时 = 420 分钟）
// 此示例为太平洋夏令时（PDT，GMT-0700）。
// 根据区域设置和一年中时间的不同，结果将有所不同。


Date.getUTCDate()

可用性

Flash Player 5。

用法

my_date.getUTCDate()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象中表示某天是当月第几天的值（1 至 31 之间的整数）。


Date.getUTCDay()

可用性

Flash Player 5。

用法

my_date.getUTCDay()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象中表示周几的值（0 代表星期日，1 代表星期一，依此类推）。


Date.getUTCFullYear()

可用性

Flash Player 5。

用法

my_date.getUTCFullYear()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象中用 4 位数字表示的年份数。


Date.getUTCHours()

可用性

Flash Player 5。

用法

my_date.getUTCHours()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象的小时值。


Date.getUTCMilliseconds()

可用性

Flash Player 5。

用法

my_date.getUTCMilliseconds()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象中的毫秒值。


Date.getUTCMinutes()

可用性

Flash Player 5。

用法

my_date.getUTCMinutes()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象的分钟值。


Date.getUTCMonth()

可用性

Flash Player 5。

用法

my_date.getUTCMonth()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象中的月份数（0 代表一月，1 代表二月，依此类推）。


Date.getUTCSeconds()

可用性

Flash Player 5。

用法

my_date.getUTCSeconds()

参数

无。

返回

一个整数。

说明

方法；按照通用时间返回指定 Date 对象中的秒数。


Date.getYear()

可用性

Flash Player 5。

用法

my_date.getYear()

参数

无。

返回

一个整数。

说明

方法；按照本地时间返回指定 Date 对象中的年份数。本地时间由运行 Flash Player 的操作系统确定。这里的年份是指完整的年份数减去 1900。例如，2000 年表示为 100。

另请参见

Date.getFullYear()


Date.setDate()

可用性

Flash Player 5。

用法

my_date.setDate(date)

参数

date 1 至 31 之间的整数。

返回

一个整数。

说明

方法；按照本地时间为指定的 Date 对象设置表示日期的值，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.setFullYear()

可用性

Flash Player 5。

用法

my_date.setFullYear(year [, month [, date]] )

参数

year 指定年份的一个 4 位数。两位数字的数不代表完整年份数的简写；例如，99 不代表 1999 年，而是表示 99 年。

month 从 0（一月）到 11（十二月）之间的整数。此参数是可选的。

date 从 1 到 31 之间的数字。此参数是可选的。

返回

一个整数。

说明

方法；按照本地时间设置指定 Date 对象的年份数，并以毫秒为单位返回新时间。如果指定了 month 和 date 参数，它们也将被设置为本地时间。本地时间由运行 Flash Player 的操作系统确定。

调用此方法并不修改指定 Date 对象的其它字段，但如果因调用该方法而导致表示周几的值发生了变化，则 Date.getUTCDay() 和 Date.getDay() 可能报告一个新值。


Date.setHours()

可用性

Flash Player 5。

用法

my_date.setHours(hour)

参数

hour 从 0（午夜）到 23（深夜 11 点）之间的整数。

返回

一个整数。

说明

方法；按照本地时间设置指定 Date 对象中的小时值，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.setMilliseconds()

可用性

Flash Player 5。

用法

my_date.setMilliseconds(millisecond)

参数

millisecond 从 0 到 999 之间的整数。

返回

一个整数。

说明

方法；按照本地时间设置指定 Date 对象中的毫秒值，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.setMinutes()

可用性

Flash Player 5。

用法

my_date.setMinutes(minute)

参数

minute 从 0 到 59 之间的整数。

返回

一个整数。

说明

方法；按照本地时间设置指定 Date 对象中的分钟值，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.setMonth()

可用性

Flash Player 5。

用法

my_date.setMonth(month [, date ])

参数

month 从 0（一月）到 11（十二月）之间的整数。

date 从 1 到 31 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；用本地时间为指定的 Date 对象设置月份数，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.setSeconds()

可用性

Flash Player 5。

用法

my_date.setSeconds(second)

参数

second 从 0 到 59 之间的整数。

返回

一个整数。

说明

方法；用本地时间为指定的 Date 对象设置表示秒的值，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.setTime()

可用性

Flash Player 5。

用法

my_date.setTime(milliseconds)

参数

milliseconds 整数值，其中 0 表示 GMT 1970 年 1 月 1 日 0:00。

返回

一个整数。

说明

方法；使用自 1970 年 1 月 1 日午夜起的毫秒数为指定的 Date 对象设置日期值，并以毫秒为单位返回新时间。


Date.setUTCDate()

可用性

Flash Player 5。

用法

my_date.setUTCDate(date)

参数

date 1 至 31 之间的整数。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象设置日期值，并以毫秒为单位返回新时间。调用此方法并不修改指定 Date 对象的其它字段，但如果因调用该方法导致表示周几的值发生了变化，则 Date.getUTCDay() 和 Date.getDay() 可能会报告一个新值。


Date.setUTCFullYear()

可用性

Flash Player 5。

用法

my_date.setUTCFullYear(year [, month [, date]])

参数

year 指定一个完整 4 位数年份的年份数，例如，2000。

month 从 0（一月）到 11（十二月）之间的整数。此参数是可选的。

date 从 1 到 31 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象 (my_date) 设置年份数，并以毫秒为单位返回新时间。

还可选用这种方法设置指定 Date 对象所表示的月份和日期值。调用此方法并不修改指定 Date 对象的其它字段，但如果因调用该方法导致表示周几的值发生了变化，则 Date.getUTCDay() 和 Date.getDay() 可能会报告一个新值。


Date.setUTCHours()

可用性

Flash Player 5。

用法

my_date.setUTCHours(hour [, minute [, second [, millisecond]]])

参数

hour 从 0（午夜）到 23（深夜 11 点）之间的整数。

minute 从 0 到 59 之间的整数。此参数是可选的。

second 从 0 到 59 之间的整数。此参数是可选的。

millisecond 从 0 到 999 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象设置小时值，并以毫秒为单位返回新时间。


Date.setUTCMilliseconds()

可用性

Flash Player 5。

用法

my_date.setUTCMilliseconds(millisecond)

参数

millisecond 从 0 到 999 之间的整数。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象设置毫秒值，并以毫秒为单位返回新时间。


Date.setUTCMinutes()

可用性

Flash Player 5。

用法

my_date.setUTCMinutes(minute [, second [, millisecond]])

参数

minute 从 0 到 59 之间的整数。

second 从 0 到 59 之间的整数。此参数是可选的。

millisecond 从 0 到 999 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象设置分钟值，并以毫秒为单位返回新时间。


Date.setUTCMonth()

可用性

Flash Player 5。

用法

my_date.setUTCMonth(month [, date])

参数

month 从 0（一月）到 11（十二月）之间的整数。

date 从 1 到 31 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象设置月份数，还可以选择设置表示某天 (date) 的值，并以毫秒为单位返回新时间。调用此方法并不修改指定 Date 对象的其它字段，但如果因指定 date 参数的值而导致表示周几的值发生了变化，则 Date.getUTCDay() 和 Date.getDay() 可能会报告一个新值。


Date.setUTCSeconds()

可用性

Flash Player 5。

用法

my_date.setUTCSeconds(second [, millisecond]))

参数

second 从 0 到 59 之间的整数。

millisecond 从 0 到 999 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；用通用时间为指定的 Date 对象设置表示秒的值，并以毫秒为单位返回新时间。


Date.setYear()

可用性

Flash Player 5。

用法

my_date.setYear(year)

参数

year 如果 year 是 0 至 99 之间的整数，则 setYear 将年份数设置为 1900 + year；否则，年份数就是 year 参数的值。

返回

一个整数。

说明

方法；用本地时间为指定的 Date 对象设置年份数，并以毫秒为单位返回新时间。本地时间由运行 Flash Player 的操作系统确定。


Date.toString()

可用性

Flash Player 5。

用法

my_date.toString()

参数

无。

返回

字符串。

说明

方法；以可读格式返回指定 Date 对象的字符串值，并以毫秒为单位返回新时间。

示例

下面的示例将 dateOfBirth_date Date 对象中的信息作为字符串返回。

var dateOfBirth_date = new Date(74, 7, 12, 18, 15);
trace (dateOfBirth_date.toString());

输出（用太平洋标准时间表示）：

Mon Aug 12 18:15:00 GMT-0700 1974


Date.UTC()

可用性

Flash Player 5。

用法

Date.UTC(year, month [, date [, hour [, minute [, second [, millisecond ]]]]])

参数

year 一个 4 位数，例如 2000。

month 从 0（一月）到 11（十二月）之间的整数。

date 从 1 到 31 之间的整数。此参数是可选的。

hour 从 0（午夜）到 23（深夜 11 点）之间的整数。

minute 从 0 到 59 之间的整数。此参数是可选的。

second 从 0 到 59 之间的整数。此参数是可选的。

millisecond 从 0 到 999 之间的整数。此参数是可选的。

返回

一个整数。

说明

方法；返回 1970 年 1 月1 日午夜（通用时间）与参数中指定的时间之间的毫秒数。这是一个静态方法，它通过 Date 对象的构造函数进行调用，而不是通过特定的 Date 对象进行调用。这种方法使您可以创建一个采用通用时间的 Date 对象，而 Date 构造函数采用本地时间。

示例

下面的示例创建一个以通用时间定义的新的 Date 对象 garyBirthday_date。这是用于 new Date 构造函数方法的示例的通用时间变体：

garyBirthday_date = new Date(Date.UTC(1974, 7, 12));


default

可用性

Flash Player 6。

用法

default:statements

参数

statements 任何语句。

返回

无。

说明

语句；定义 switch 动作的默认情况。对于一个给定的 switch 动作，如果该 switch 动作的 expression 参数与 case 关键字后面的任何一个 expression 参数都不相等（使用全等），则执行这些语句。

switch 不必一定有 default 情况。default 情况也不必出现在列表的最后。在 switch 动作外部使用 default 动作是错误的，脚本将不编译。

示例

在下面的示例中，表达式 A 与表达式 B 或 D 不相等，所以运行 default 关键字后面的语句，并将 trace() 动作发送到“输出”面板。

switch ( A ) {
  case B:
    C;
    break;
  case D:
    E;
    break;
  default:
    trace ("no specific case was encountered");
}

另请参见

switch, case, break


delete

可用性

Flash Player 5。

用法

delete reference

参数

reference 要消除的变量或对象的名称。

返回

一个布尔值。

说明

运算符；销毁由 reference 参数指定的对象或变量，如果该对象被成功删除，则返回 true；否则返回 false 值。该运算符对于释放脚本所用的内存非常有用。虽然 delete 是一个运算符，但它通常作为语句使用，如下所示：

delete x;

如果 reference 参数不存在，或者不能被删除，则 delete 运算符可能失败并返回 false。预定义的对象和属性以及用 var 声明的变量不能删除。不能使用 delete 运算符删除影片剪辑。

示例

用法 1：下面的示例创建一个对象并使用它，然后在不再需要时删除它。

account = new Object();
account.name = 'Jon';
account.balance = 10000;

delete account;

用法 2：下面的示例删除对象的一个属性。

// 创建新对象“account”
account = new Object();
// 将属性名称分配给 account
account.name = 'Jon';
// 删除该属性
delete account.name;

用法 3：下面是删除对象属性的另一个示例。

// 创建长度为 0 的 Array 对象
my_array = new Array();
// 向数组中添加一个元素。Array.length 现在是 1
my_array[0] = "abc";
// 向数组中添加又一个元素。Array.length 现在是 2
my_array[1] = "def";
// 向数组中添加又一个元素。Array.length 现在是 3
my_array[2] = "ghi";
// my_array[2] 已被删除，但 Array.length 未被更改
delete array[2];
trace(my_array.length);

用法 4：下面的示例说明 delete 对于对象引用的行为方式：

// 创建一个新对象，并分配变量 ref1

// 来引用该对象
ref1 = new Object();
ref1.name = "Jody";
// 将引用变量复制到新变量中
// 并删除 ref1
ref2 = ref1;
delete ref1;

如果 ref1 尚未复制到 ref2 中，则当删除 ref1 时，该对象将被删除，因为将没有指向它的引用。如果删除 ref2，则不再有指向该对象的任何引用；将销毁该对象，同时释放它所使用的内存。

另请参见

var


do while

可用性

Flash Player 4。

用法

do {
  statement(s)
} while (condition)

参数

condition 要计算的条件。

statement(s) 只要 condition 参数计算结果为 true 就会执行的语句。

返回

无。

说明

语句；执行语句，然后只要条件为 true，就计算循环中的条件。

另请参见

break, continue


duplicateMovieClip()

可用性

Flash Player 4。

用法

duplicateMovieClip(target, newname, depth)

参数

target 要重制的影片剪辑的目标路径。

newname 已重制的影片剪辑的唯一标识符。

depth 已重制的影片剪辑的唯一深度级别。深度级别是重制的影片剪辑的堆叠顺序。这种堆叠顺序很像时间轴中图层的堆叠顺序；较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个重制的影片剪辑分配一个唯一的深度级别，以防止它替换已占用深度上的 SWF 文件。

返回

对重制的影片剪辑的引用。

说明

函数；当 SWF 文件正在播放时，创建一个影片剪辑的实例。无论播放头在原始影片剪辑（或“父级”）中处于什么位置，重制的影片剪辑的播放头始终从第 1 帧开始。父级影片剪辑中的变量不复制到重制的影片剪辑中。如果删除父级影片剪辑，则重制的影片剪辑也会被删除。使用 removeMovieClip() 动作或方法可以删除用 duplicateMovieClip() 创建的影片剪辑实例。

另请参见

MovieClip.duplicateMovieClip(), removeMovieClip(), MovieClip.removeMovieClip()


dynamic

可用性

Flash Player 6。

用法

dynamic class className  [ extends superClass ]
              [ implements interfaceName [, interfaceName... ] ]
{
  // 此处是类定义
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

说明

关键字；指定基于指定的类的对象可以在运行时添加和访问动态属性。

对于动态类的类型检查与对于非动态类的类型检查相比更为宽松，因为在类定义内访问的成员和在类实例上访问的成员不与在类范围内定义的那些成员进行比较。但是，仍可能对类成员函数进行类型检查，以确定返回类型和参数类型。当处理 MovieClip 对象时，此行为特别有用，因为这种情况下可以通过多种不同的方法动态地将属性和对象添加到影片剪辑，如 MovieClip.createEmptyMovieClip() 和 MovieClip.createTextField()。

动态类的子类也是动态的。

有关更多信息，请参见创建动态类。

示例

在以下示例中，类 B 已标记为动态的，因此对它调用某个未声明的函数将不会在编译时引发错误。

// 在 B.as 中
dynamic class B extends class_A {
  function B() {
    /*this is the constructor*/
  }
  function m():Number {return 25;}
  function o(s:String):Void {trace(s);}
}

// 在 C.as 中
class C extends class_A {
  function C() {
    /*this is the constructor*/
  }
  function m():Number {return 25;}
  function o(s:String):Void {trace(s);}
}
// 在其它脚本中
var var1 = B.n();   // 无错误
var var2 = C.n()    // 错误，因为在 C.as 中没有函数 n

另请参见

class, extends


else

可用性

Flash Player 4。

用法

if (condition){
  statement(s);
} else (condition){
  statement(s);
}

参数

condition 计算结果为 true 或 false 的表达式。

statement(s) 当 if 语句中指定的条件为 false 时运行的替代语句系列。

返回

无。

说明

语句；指定当 if 语句中的条件返回 false 时要运行的语句。

另请参见

if


else if

可用性

Flash Player 4。

用法

if (condition){
  statement(s);
} else if (condition){
  statement(s);
}

参数

condition 计算结果为 true 或 false 的表达式。

statement(s) 当 if 语句中指定的条件为 false 时运行的替代语句系列。

返回

无。

说明

语句；计算条件，并指定当初始 if 语句中的条件返回 false 时要运行的语句。如果 else if 条件返回 true，则 Flash 解释程序运行该条件后面花括号 ({}) 中的语句。如果 else if 条件为 false，则 Flash 将跳过花括号中的语句，而运行花括号之后的语句。使用 else if 动作可在脚本中创建分支逻辑。

示例

下面的示例使用 else if 动作检查对象的每一边是否都在特定的边界内：

// 如果对象超出边界，
// 则将其发回并倒转其行进路径
    if (this._x>rightBound) {
      this._x = rightBound;
      xInc = -xInc;
    } else if (this._x<leftBound) {
      this._x = leftBound;
      xInc = -xInc;
    } else if (this._y>bottomBound) {
      this._y = bottomBound;
      yInc = -yInc;
    } else if (this._y<topBound) {
      this._y = topBound;
      yInc = -yInc;
    }

另请参见

if


#endinitclip

可用性

Flash Player 6。

用法

#endinitclip

参数

无。

返回

无。

说明

编译器指令；指示初始化动作块的结尾。

示例

#initclip
...initialization actions go here...
#endinitclip

另请参见

#initclip


eq（等于 - 字符串专用）

可用性

Flash Player 4。不鼓励在 Flash 5 中使用此运算符，而推荐使用 ==（等于） 运算符。

用法

expression1 eq expression2

参数

expression1、expression2 数字、字符串或变量。

返回

无。

说明

比较运算符；比较两个表达式是否相等。如果 expression1 的字符串表示形式与 expression2 的字符串表示形式相等，则返回值 true；否则，该运算返回值 false。

另请参见

==（等于）


Error 类

可用性

Flash Player 7。

说明

包含关于脚本中出现的错误的信息。Error 对象使用 Error 构造函数来创建。通常，新的 Error 对象从 try 代码块中“抛出”，然后由 catch 或 finally 代码块“捕获”。

您也可以创建 Error 类的子类，然后引发该子类的实例。

Error 类的方法概要

方法 | 说明
Error.toString() | 返回 Error 对象的字符串表示形式。

Error 类的属性概要

属性 | 说明
Error.message | 包含与错误关联的错误消息的字符串。
Error.name | 包含 Error 对象名称的字符串。

Error 类的构造函数

可用性

Flash Player 7。

用法

new Error([message])

参数

message 与 Error 对象关联的字符串；此参数是可选的。

返回

无。

说明

构造函数；创建新的 Error 对象。如果指定 message，其值将赋予对象的 Error.message 属性。

示例

在以下示例中，如果给函数传递的两个字符串不相同，则该函数将引发错误（并显示指定的消息）。

function compareStrings(string_1, string_2) {
  if(string_1 != string_2) {
    throw new Error("Strings do not match.");
  }
}
try {
  compareStrings("Dog","dog");
} catch (e) {
  trace(e.toString());
}

另请参见

throw, try..catch..finally


Error.message

可用性

Flash Player 7。

用法

myError.message

说明

属性；包含与 Error 对象关联的消息。默认情况下，此属性的值为 "Error"。当通过将错误字符串传递给 Error 构造函数来创建新的 Error 对象时，可以指定 message 属性。

另请参见

throw, try..catch..finally


Error.name

可用性

Flash Player 7。

用法

myError.name

说明

属性；包含 Error 对象的名称。默认情况下，此属性的值为 "Error"。

另请参见

throw, try..catch..finally


Error.toString()

可用性

Flash Player 7。

用法

my_err.toString()

返回

字符串。

说明

方法；在默认情况下返回字符串 "Error"，如果已定义，则返回 Error.message 中包含的值。

另请参见

Error.message, throw, try..catch..finally


escape

可用性

Flash Player 5。

用法

escape(expression)

参数

expression 要转换为字符串并以 URL-编码格式进行编码的表达式。

返回

无。

说明

函数；将参数转换为字符串，并以 URL 编码格式进行编码，在这种格式中，将所有非字母数字的字符都转义为 % 十六进制序列。

示例

运行下面的代码将得出结果 Hello%7B%5BWorld%5D%7D。

escape("Hello{[World]}");

另请参见

unescape


eval()

可用性

Flash Player 5 或更高版本支持其完全功能。在向 Flash Player 4 导出时，可以使用 eval() 函数，但必须使用斜杠记号，并且只能访问变量，不能访问属性或对象。

用法

eval(expression)

参数

expression 包含要获取的变量、属性、对象或影片剪辑的名称的字符串。

返回

一个值（对对象或影片剪辑的引用）或 undefined。

说明

函数；按照名称访问变量、属性、对象或影片剪辑。如果 expression 是变量或属性，则返回该变量或属性的值。如果 expression 是对象或影片剪辑，则返回指向该对象或影片剪辑的引用。如果无法找到 expression 中指定的元素，则返回 undefined。

在 Flash 4 中，使用 eval() 模拟数组；在 Flash 5 或更高版本中，建议您使用 Array 类模拟数组。

在 Flash 4 中，您还可以使用 eval() 动态地设置和获取变量或实例名称的值。然而，也可以使用数组访问运算符 ([]) 来实现这一点。

在 Flash 5 或更高版本中，不能使用 eval() 动态设置和获取变量的值或实例名称，因为不能在等式的左侧使用 eval()。例如，将代码

eval ("var" + i) = "first";

替换为：

this["var"+i] = "first"

或者替换为：

set ("var" + i, "first");

示例

下面的示例使用 eval() 确定表达式 "piece" + x 的值。因为该结果是一个变量名 piece3，所以 eval() 返回该变量的值并将其赋予 y：

piece3 = "dangerous";
x = 3;

y = eval("piece" + x);
trace(y);

// 输出：dangerous

另请参见

Array 类


extends

可用性

Flash Player 6。

用法

class className extends otherClassName {}
interface interfaceName extends otherInterfaceName {}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

className 您所定义的类的名称。

otherClassName className 所基于的类的名称。

interfaceName 您所定义的接口的名称。

otherInterfaceName interfaceName 所基于的接口的名称。

说明

关键字；定义作为另一个类或接口的子类的类或接口；后者为超类。子类继承超类中定义的所有方法、属性、函数等。

有关更多信息，请参见创建子类。

示例

在下面定义的类 B 中，对类 A 的构造函数的调用将自动作为 B 构造函数的第一个语句插入，因为这里尚不存在调用。（即，它在该示例中被注释掉。）

class B extends class A
{
  function B() { // 它是构造函数
//    super(); // 可选；如果省略，则在编译过程中插入
  }
  function m():Number {return 25;}
  function o(s:String):Void {trace(s);}
}

另请参见

class, implements, interface


false

可用性

Flash Player 5。

用法

false

说明

常数；表示与 true 相反的唯一的布尔值。

另请参见

true


_focusrect

可用性

Flash Player 4。

用法

_focusrect = Boolean;

说明

属性（全局）；指定当按钮或影片剪辑具有键盘焦点时，是否在其周围显示黄色矩形。默认值为 true，这种情况下当用户按 Tab 键在 SWF 文件中的对象之间导航时，在当前具有焦点的按钮或影片剪辑的周围将显示黄色矩形。如果不希望显示黄色矩形，请指定 false。这是一个全局属性，可以被特定实例的设置所覆盖。

另请参见

Button._focusrect, MovieClip._focusrect


for

可用性

Flash Player 5。

用法

for(init; condition; next) {
  statement(s);
}

参数

init 一个在开始循环序列前要计算的表达式，通常为赋值表达式。此参数还允许使用 var 语句。

condition 计算结果为 true 或 false 的表达式。在每次循环迭代前计算该条件；当条件的计算结果为 false 时退出循环。

next 在每次循环迭代后要计算的表达式；通常为使用 ++（递增）或 --（递减）运算符的赋值表达式。

statement(s) 要在循环体内执行的指令。

说明

语句；一种循环结构，它首先计算一次 init（初始化）表达式，然后按照以下顺序开始循环序列：只要 condition 的计算结果为 true，就执行 statement，然后计算下一个表达式。

一些属性无法用 for 或 for..in 动作进行枚举。例如，Array 类的内置方法（例如 Array.sort() 和 Array.reverse()）不包括在 Array 对象的枚举中，而影片剪辑属性（如 _x 和 _y）也不能枚举。在外部类文件中，实例成员是不可枚举的；只有动态和静态成员是可枚举的。

示例

下面的示例使用 for 在数组中添加元素：

my_array=new Array();
for(i=0; i<10; i++) {
  my_array [i] = (i + 5)*10;
  trace(my_array[i]);
}

“输出”面板中将显示以下结果：

50
60
70
80
90
100
110
120
130
140

下面是使用 for 重复执行同一动作的示例。在下面的代码中，for 循环将从 1 到 100 的数字相加：

var sum = 0;
  for (var i=1; i<=100; i++) {
    sum = sum + i;
  }

另请参见

++（递增）, --（递减）, for..in, var


for..in

可用性

Flash Player 5。

用法

for(variableIterant in object){
  statement(s);
}

参数

variableIterant 作为迭代变量的变量的名称，迭代变量引用数组中对象或元素的每个属性。

object 要重复的对象的名称。

statement(s) 要为每次迭代执行的指令。

返回

无。

说明

语句；循环通过数组中对象或元素的属性，并为对象的每个属性执行 statement。

一些属性无法用 for 或 for..in 动作进行枚举。例如，Array 类的内置方法（例如 Array.sort() 和 Array.reverse()）不包括在 Array 对象的枚举中，而影片剪辑属性（如 _x 和 _y）也不能枚举。在外部类文件中，实例成员是不可枚举的；只有动态和静态成员是可枚举的。

for..in 语句迭代所迭代对象的原型链中对象的属性。如果 child 的原型为 parent，则如果用 for..in 迭代 child 的属性，也将迭代 parent 的属性。

for..in 动作枚举对象原型链中的所有对象。首先枚举该对象的属性，接着枚举其直接原型的属性，然后枚举该原型的原型的属性，依次类推。for..in 动作不会将相同的属性名枚举两次。如果对象 child 具有原型 parent，而这两个对象都包含属性 prop，则对 child 调用的 for..in 动作将枚举来自 child 的 prop，而忽略 parent 中的该属性。

示例

下面的示例使用 for..in 迭代某对象的属性：

myObject = { name:'Tara', age:27, city:'San Francisco' };
for (name in myObject) {
  trace ("myObject."+ name + " = " + myObject[name]);
}

此示例的输出如下所示：

myObject.name = Tara
myObject.age = 27
myObject.city = San Francisco

下面的示例将 typeof 运算符与 for..in 一起使用来迭代特定类型的 child：

for (name in my_mc) {
  if (typeof (my_mc[name]) = "movieclip") {
    trace ("I have a movie clip child named " + name);
  }
}

下面的示例枚举影片剪辑的子级，并将每个子级发送到其各自时间轴的第 2 帧。RadioButtonGroup 影片剪辑是一个父级，它具有多个子级：_RedRadioButton_、_GreenRadioButton_ 和 _BlueRadioButton。

for (var name in RadioButtonGroup) {
  RadioButtonGroup[name].gotoAndStop(2);
}


fscommand()

可用性

Flash Player 3。

用法

fscommand("command", "parameters")

参数

command 一个传递给宿主应用程序用于任何用途的字符串；或者一个传递给 Flash Player 的命令。

parameters 一个传递给宿主应用程序用于任何用途的字符串；或者一个传递给 Flash Player 的值。

返回

无。

说明

函数；使 SWF 文件能够与 Flash Player 或承载 Flash Player 的程序（如 Web 浏览器）进行通讯。还可使用 fscommand 动作将消息传递给 Macromedia Director，或者传递给 Visual Basic、Visual C++ 和其它可承载 ActiveX 控件的程序。

用法 1：若要将消息发送给 Flash Player，必须使用预定义的命令和参数。下表显示可为 fscommand 动作的 command 和 parameters 参数指定的值，这些值用于控制在 Flash player（包括播放器）中播放的 SWF 文件：

命令 | 参数 | 目的
quit | 无 | 关闭播放器。
fullscreen | true 或 false | 指定 true 将 Flash Player 设置为全屏模式。如果指定 false，播放器会返回到常规菜单视图。
allowscale | true 或 false | 如果指定 false，则设置播放器以始终按 SWF 文件的原始大小绘制 SWF 文件，从不进行缩放。如果指定 true，则强制 SWF 文件缩放到播放器的 100%。
showmenu | true 或 false | 如果指定 true，则启用整个上下文菜单项集合。如果指定 false，则使得除“关于 Flash Player”外的所有上下文菜单项变暗。
exec | 应用程序的路径 | 在播放器内执行应用程序。
trapallkeys | true 或 false | 如果指定 true，则将所有按键事件（包括快捷键事件）发送到 Flash Player 中的 onClipEvent(keyDown/keyUp) 处理函数。

exec 命令只能包含字符 A 至 Z、a 至 z、0 至 9、句点 (). 和下划线 (_)。exec 仅在子目录 fscommand 中运行。也就是说，如果您使用 fscommand exec 命令调用应用程序，该应用程序必须位于名为 fscommand 的子目录中。

用法 2：若要在 Web 浏览器中使用 fscommand 动作将消息发送到脚本撰写语言（如 JavaScript），可以在 command 和 parameters 参数中传递任意两个参数。这些参数可以是字符串或表达式，它们在“捕获”或处理 fscommand 动作的 JavaScript 函数中使用。

在 Web 浏览器中，fscommand 动作在包含 SWF 文件的 HTML 页中调用 JavaScript 函数 moviename_DoFScommand。moviename 是 Flash Player 影片的名称，该名称由 EMBED 标签的 NAME 属性指定，或者由 OBJECT 标签的 ID 属性指定。如果您为 Flash Player 影片指定名称 myDocument，所调用的 JavaScript 函数就是 myDocument_DoFScommand。

用法 3：fscommand 动作可以将消息发送给 Macromedia Director，Lingo 将消息解释为字符串、事件或可执行的 Lingo 代码。如果该消息为字符串或事件，则必须编写 Lingo 代码以便从 fscommand 动作接收该消息，并在 Director 中执行动作。有关更多信息，请参见 Director 支持中心，网址为 www.macromedia.com/support/director。

用法 4：在 Visual Basic、Visual C++ 和可承载 ActiveX 控件的其它程序中，fscommand 利用可在环境的编程语言中处理的两个字符串发送 VB 事件。有关更多信息，请使用 Flash method（Flash 方法）关键字搜索 Flash 支持中心，网址为 www.macromedia.com/go/flash_support_cn。

示例

用法 1：在下面的示例中，fscommand 动作设置 Flash Player，以便在释放按钮时，将 SWF 文件放大到整个显示器屏幕大小。

on (release) {
  fscommand("fullscreen", true);
}

用法 2：下面的示例使用应用到 Flash 中按钮的 fscommand 动作打开 HTML 页中的 JavaScript 消息框。消息本身作为 fscommand 参数发送到 JavaScript。

必须将一个函数添加到包含 SWF 文件的 HTML 页。此函数 (myDocument_DoFSCommand) 位于 HTML 页中，等待 Flash 中的 fscommand 动作。当在 Flash 中触发 fscommand 后（例如，当用户按下按钮时），command 和 parameter 字符串被传递到 myDocument_DoFSCommand 函数。可以在 JavaScript 或 VBScript 代码中以任何需要的方式使用所传递的字符串。在此示例中，该函数包含一个条件 if 语句，该语句检查命令字符串是否为 "messagebox"。如果是，则 JavaScript 警告框（或“消息框”）打开并显示 parameters 字符串的内容。

function myDocument_DoFSCommand(command, args) {
  if (command == "messagebox") {
    alert(args);
  }
}

在 Flash 文档中，将 fscommand 动作添加到按钮：

fscommand("messagebox", "This is a message box called from within Flash.")

也可以为 fscommand 动作和参数使用表达式，如下面的示例所示：

fscommand("messagebox", "Hello, " + name + ", welcome to our website!")

若要测试影片，请选择“文件”>“发布预览”>“HTML”。

注意：如果在 HTML“发布设置”中使用具有 FSCommand 模板的 Flash 发布 SWF 文件，则将自动插入 myDocument_DoFSCommand 函数。该 SWF 文件的 NAME 和 ID 属性将是文件名。例如，对于文件 myDocument.fla，这些属性将设置为 myDocument。


function

可用性

Flash Player 5。

用法

function functionname ([parameter0, parameter1,...parameterN]){
  statement(s)
}
function ([parameter0, parameter1,...parameterN]){
  statement(s)
}

参数

functionname 新函数的名称。

parameter 一个标识符，表示要传递给函数的参数。这些参数是可选的。

statement(s) 为 function 的函数体定义的任何动作脚本指令。

返回

无。

说明

语句；您定义的用来执行特定任务的一组语句。可以在 SWF 文件的一个地方声明 或定义函数，然后从 SWF 文件的其它脚本中调用它。定义函数时，还可以为其指定参数。参数是函数要对其进行操作的值的占位符。每次调用函数时，可以向其传递不同的参数。这使您可以在不同场合重复使用一个函数。

在函数的 statement(s) 中使用 return 动作可使函数返回或生成一个值。

用法 1：用指定的 functionname、parameters 和 statement(s) 声明一个 function。当调用函数时，则调用函数声明。允许提前引用；在同一“动作”列表中，函数可以先调用后声明。一个函数的声明会替换同一函数以前的任何声明。只要是允许使用语句的地方就可使用此语法。

用法 2：创建一个匿名函数并返回它。此语法用于表达式中，对于在对象中安装方法尤其有用。

示例

用法 1：下面的示例定义函数 sqr，该函数接受一个参数并返回该参数的 square(x*x)。如果在同一脚本中声明和使用该函数，则可以先使用该函数，后声明它。

y=sqr(3);

function sqr(x) {
  return x*x;
}

用法 2：下面的函数定义一个 Circle 对象：

function Circle(radius) {
 this.radius = radius;
}

下面的语句定义一个匿名函数，该函数计算圆形的面积，并将其作为方法附加到对象 Circle：

Circle.prototype.area = function () {return Math.PI * this.radius * this.radius}


Function 类

可用性

Flash Player 6。

Function 类的方法概要

方法 | 说明
Function.apply() | 使动作脚本代码能够调用函数。
Function.call() | 调用 Function 对象表示的函数。

Function 类的属性概要

属性 | 说明
Function.prototype | 引用一个作为类的原型的对象。


Function.apply()

可用性

Flash Player 6。

用法

myFunction.apply(thisObject, argumentsObject)

参数

thisObject myFunction 应用到的对象。

argumentsObject 一个数组，其元素作为参数传递给 myFunction。

返回

被调用函数指定的任何值。

说明

方法；指定将在动作脚本调用的任何函数内使用的 this 的值。此方法还指定要传递给任何被调用函数的参数。因为 apply() 是 Function 类的方法，所以它也是动作脚本中每个函数对象的方法。

参数被指定为 Array 对象。如果在脚本实际执行前，无法知道要传递的参数的数量，那么这种方法通常很有用。

示例

下面的函数调用是等效的：

Math.atan2(1, 0)
Math.atan2.apply(null, [1, 0])

您可以构造一个包含输入入口字段的 SWF 文件，该字段允许用户输入要调用的函数名，以及要传递给该函数的零个或多个参数。如果按“调用”按钮，则将使用 apply 方法调用该函数，并指定相应的参数。

在此示例中，用户在名为 functionName 的输入文本字段中指定函数名。在名为 numParameters 的输入文本字段中指定参数数量。在文本字段中最多可指定 10 个参数，这些文本字段名为 parameter1、parameter2，直到 parameter10。

on (release) {
  callTheFunction();
}
...
function callTheFunction()
{
   var theFunction = eval(functionName.text);
   var n = Number(numParameters);
   var parameters = [];
   for (var i = 0; i < n; i++) {
      parameters.push(eval("parameter" + i));
   }
   theFunction.apply(null, parameters);
}


Function.call()

可用性

Flash Player 6。

用法

myFunction.call(thisObject, parameter1, ..., parameterN)

参数

thisObject 指定函数体内 this 的值。

parameter1 要传递给 myFunction 的参数。可以指定零个或多个参数。

parameterN

返回

无。

说明

方法；调用 Function 对象表示的函数。动作脚本中的每个函数都由一个 Function 对象来表示，所以所有的函数都支持此方法。

几乎在所有的情形下，函数调用运算符 (()) 都可以代替此方法来使用。函数调用运算符使代码简明易读。此方法主要用于需要显式控制函数调用的 this 参数时。通常，如果作为对象的方法调用函数，则在函数体内，this 设置为 myObject，如下所示：

myObject.myMethod(1, 2, 3);

在某些情况下，您可能希望 this 指向其它地方；例如这种情况：函数必须作为对象的方法进行调用，但该函数实际上不是作为该对象的方法存储的。

myObject.myMethod.call(myOtherObject, 1, 2, 3);

您可以将值 null 传递给 thisObject 参数，以便作为常规函数而不是作为对象的方法来调用函数。例如，下面的函数调用是等效的：

Math.sin(Math.PI / 4)
Math.sin.call(null, Math.PI / 4)

示例

此示例使用 Function.call() 使函数表现得像另一个对象的方法，而不将此函数存储在该对象中。

function MyObject() {
}
function MyMethod(obj) {
  trace("this == obj?" + (this == obj));
}
var obj = new MyObject();
MyMethod.call(obj, obj);

trace() 动作将以下代码发送到“输出”面板：

this == obj? true


Function.prototype

可用性

Flash Player 5。如果您使用的是动作脚本 2.0，则不需要使用此属性；该属性反映动作脚本 1 中继承的实现方式。

用法

myFunction.prototype

说明

属性；在动作脚本 1 的构造函数中，prototype 属性引用一个对象，该对象是构造类的原型。由构造函数创建的类的每个实例都继承该原型对象的所有属性和方法。


ge（大于或等于 - 字符串专用）

可用性

Flash Player 4。不鼓励在 Flash 5 中使用此运算符，而推荐使用 >=（大于等于） 运算符。

用法

expression1 ge expression2

参数

expression1、expression2 数字、字符串或变量。

返回

无。

说明

运算符（比较）；比较 expression1 和 expression2 的字符串表示形式，如果 expression1 大于或等于 expression2，则返回 true；否则，返回 false。

另请参见

>=（大于等于）


get

可用性

Flash Player 6。

用法

function get property() {
  // 此处是您的语句
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

property 您要用来表示 get 访问的属性的单词；该值必须与在相应 set 命令中使用的值相同。

返回

由 propertyName 指定的属性的值。

说明

关键字；允许基于您在外部类文件中定义的类隐式“获取”与对象关联的属性。通过使用隐式获取方法，您可以不必直接访问对象就访问其属性。隐式获取/设置方法是对动作脚本 1 中 Object.addProperty() 方法的句法简化。

有关更多信息，请参见隐式获取/设置方法。

另请参见

Object.addProperty(), set


getProperty

可用性

Flash Player 4。

用法

getProperty(my_mc, property)

参数

my_mc 要获取其属性的影片剪辑的实例名称。

property 影片剪辑的属性。

返回

指定属性的值。

说明

函数；返回影片剪辑 my_mc 的指定属性的值。

示例

下面的示例获取影片剪辑 my_mc 的水平轴坐标 (_x)，并将其分配给变量 my_mc_x：

my_mc_x = getProperty(_root.my_mc, _x);


getTimer

可用性

Flash Player 4。

用法

getTimer()

参数

无。

返回

自 SWF 文件开始播放时起已经过的毫秒数。

说明

函数；返回自 SWF 文件开始播放时起已经过的毫秒数。


getURL()

可用性

Flash 2。GET 和 POST 选项仅适用于 Flash Player 4 和 Player 的更高版本。

用法

getURL(url [, window [, "variables"]])

参数

url 可从该处获取文档的 URL。

window 可选参数，指定文档应加载到其中的窗口或 HTML 框架。您可输入特定窗口的名称，或从下面的保留目标名称中选择：

  • _self 指定当前窗口中的当前框架。
  • _blank 指定一个新窗口。
  • _parent 指定当前框架的父级。
  • _top 指定当前窗口中的顶级框架。

variables 用于发送变量的 GET 或 POST 方法。如果没有变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，该方法用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，该方法用于发送大量的变量。

返回

无。

说明

函数；将来自特定 URL 的文档加载到窗口中，或将变量传递到位于所定义 URL 的另一个应用程序。若要测试此动作，请确保要加载的文件位于指定的位置。若要使用绝对 URL（例如，http://www.myserver.com），则需要网络连接。

示例

此示例将一个新 URL 加载到空浏览器窗口中。getURL() 动作将变量 incomingAd 作为 url 参数的目标，这样您无需编辑 SWF 文件即可更改加载的 URL。在这之前，在 SWF 文件中使用 loadVariables() 动作将 incomingAd 变量的值传递到 Flash 中。

on (release) {
  getURL(incomingAd, "_blank");
}

另请参见

loadVariables(), XML.send(), XML.sendAndLoad(), XMLSocket.send()


getVersion

可用性

Flash Player 5。

用法

getVersion()

参数

无。

返回

包含 Flash Player 版本和平台信息的字符串。

说明

函数；返回包含 Flash Player 版本和平台信息的字符串。

getVersion 函数只能返回 Flash Player 5 或 Player 更高版本的信息。

示例

以下示例是 getVersion 函数返回的字符串。

WIN 5,0,17,0

这指示出平台是 Microsoft Windows，Flash Player 的主要版本号为 5，次要版本号为 17 (5.0r17)。

另请参见

System.capabilities.os, System.capabilities.version


_global 对象

可用性

Flash Player 6。

用法

_global.identifier

参数

无。

返回

对包含核心动作脚本类的全局对象（例如 String、Object、Math 和 Array）的引用。

说明

标识符；创建全局变量、对象或类。例如，您可以创建公开为全局动作脚本对象的库，此库非常类似于 Math 或 Date 对象。与时间轴声明或局部声明的变量和函数不一样，全局变量和函数只要未被内部范围中具有相同名称的标识符遮蔽，则它们对于 SWF 文件中的每个时间轴和范围均是可见的。

示例

下面的示例创建一个顶级函数 factorial()，该函数对于 SWF 文件中的每个时间轴和范围均可用：

_global.factorial = function (n) {
  if (n <= 1) {
    return 1;
  } else {
    return n * factorial(n-1);
  }
}

另请参见

var, set variable


gotoAndPlay()

可用性

Flash 2。

用法

gotoAndPlay([scene,] frame)

参数

scene 可选字符串，指定播放头要转到的场景的名称。

frame 表示将播放头转到的帧编号的数字，或者表示将播放头转到的帧的标签的字符串。

返回

无。

说明

函数；将播放头转到场景中指定的帧并从该帧开始播放。如果未指定场景，则播放头将转到当前场景中的指定帧。

示例

当用户单击 gotoAndPlay() 动作所分配到的按钮时，播放头将转到当前场景中的第 16 帧并开始播放。

on (release) {
  gotoAndPlay(16);
}

另请参见

MovieClip.gotoAndPlay()


gotoAndStop()

可用性

Flash 2。

用法

gotoAndStop([scene,] frame)

参数

scene 可选字符串，指定播放头要转到的场景的名称。

frame 表示将播放头转到的帧编号的数字，或者表示将播放头转到的帧的标签的字符串。

返回

无。

说明

函数；将播放头转到场景中指定的帧并停止播放。如果未指定场景，则播放头将转到当前场景中的帧。

示例

当用户单击 gotoAndStop() 动作所分配到的按钮时，播放头将转到当前场景中的第 5 帧并且 SWF 文件停止播放。

on (release) {
  gotoAndStop(5);
}

另请参见

stop()


gt（大于 - 字符串专用）

可用性

Flash Player 4。不鼓励在 Flash 5 中使用此运算符，而推荐使用新的 >（大于） 运算符。

用法

expression1 gt expression2

参数

expression1、expression2 数字、字符串或变量。

说明

运算符（比较）；比较 expression1 和 expression2 的字符串表示形式，如果 expression1 大于 expression2，则返回 true；否则，返回 false。

另请参见

>（大于）


_highquality

可用性

Flash Player 4；不鼓励使用该属性，而推荐使用 _quality。

用法

_highquality

说明

不鼓励使用的属性（全局）；指定应用于当前 SWF 文件的锯齿消除级别。指定 2（最高品质）可应用高品质，并使位图平滑处理始终打开。指定 1（高品质），则应用消除锯齿功能；如果 SWF 文件不包含动画，这将对位图进行平滑处理。指定 0（低品质），则不消除锯齿。

示例

_highquality = 1;

另请参见

_quality, toggleHighQuality()


if

可用性

Flash Player 4。

用法

if(condition) {
  statement(s);
}

参数

condition 计算结果为 true 或 false 的表达式。

statement(s) 在条件计算结果为 true 的情况下执行的指令。

返回

无。

说明

语句；对条件进行计算以确定 SWF 文件中的下一步动作。如果条件为 true，则 Flash 将运行条件后面花括号 ({}) 内的语句。如果条件为 false，则 Flash 将跳过花括号内的语句，而运行花括号后面的语句。使用 if 动作可在脚本中创建分支逻辑。

示例

在下面的示例中，括号内的条件对变量 name 进行计算以查看其是否具有文本值 "Erica"。如果有，则运行花括号内的 play() 动作。

if(name == "Erica"){
  play();
}

下面的示例使用 if 动作来确定用户何时释放 SWF 文件中的可拖动对象。如果对象在拖动后 300 毫秒之内被释放，则条件的计算结果为 true，并运行花括号内的语句。这些语句设置变量以存储对象的新位置、拖放对象的难易程度和拖放对象时的速度。timePressed 变量也将被重置。如果对象在拖动后超过 300 毫秒之后被释放，则条件的计算结果为 false，并且不运行任何语句。

if (getTimer()<timePressed+300) {
    // 如果条件为 true，
    // 则抛出此对象。
    // 此对象的新位置在哪里？
    xNewLoc = this._x;
    yNewLoc = this._y;
    // 将它抛出多远？
    xTravel = xNewLoc-xLoc;
    yTravel = yNewLoc-yLoc;
    // 根据它们随该对象行进的距离设置
    // 该对象的速度
    xInc = xTravel/2;
    yInc = yTravel/2;
    timePressed = 0;
  }

另请参见

else


ifFrameLoaded

可用性

Flash Player 3。不鼓励在 Flash 5 中使用 ifFrameLoaded 动作；Macromedia 建议使用 MovieClip._framesloaded 属性。

用法

ifFrameLoaded([scene,] frame) {
  statement(s);
}

参数

scene 可选字符串，指定必须加载的场景的名称。

frame 在执行下一条语句之前必须加载的帧编号或帧标签。

statement(s) 在加载了指定的场景（或场景及帧）时所执行的指令。

返回

无。

说明

不鼓励使用的动作；检查特定帧的内容是否为本地可用。使用 ifFrameLoaded 可在 SWF 文件的其余部分下载到本地计算机时开始播放简单的动画。使用 _framesloaded 和使用 ifFrameLoaded 之间的差别在于 _framesloaded 允许您添加自己的 if 或 else 语句。

另请参见

MovieClip._framesloaded


implements

可用性

Flash Player 6。

用法

myClass implements interface01 [, interface02, ...]

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

说明

关键字；定义必须为所实现的接口中定义的所有方法提供实现的类。有关更多信息，请参见接口作为数据类型。

示例

请参见 interface。

另请参见

class, extends, interface


import

可用性

Flash Player 6。

用法

import className
import packageName.*

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。在“动作”面板以及外部类文件中支持该语句。

参数

className 您在外部类文件中定义的类的全限定名。

packageName 存储相关类文件的目录。

说明

关键字；使您不必指定类的全限定名就可以访问类。例如，如果您要在脚本中使用类 macr.util.users.UserClass.as，则必须通过其全限定名引用它或导入它；如果您导入该类，则可以通过类名称引用它：

// 在导入前
var myUser:UserClass = new macr.util.users.UserClass();
// 在导入后
import macr.util.users.UserClass;
var myUser:UserClass = new UserClass();

如果在您要访问的目录中有若干类文件，则可以通过一个语句全部导入它们：

import macr.util.users.*;

您必须首先发出 import 语句，然后才能在不完全指定导入的类的名称的情况下访问该类。

如果您导入一个类，但没有在脚本中使用该类，则该类不作为 SWF 文件的一部分导出。这意味着您导入大型包时可以不必担心 SWF 文件的大小；只有在实际使用某一类的情况下，才会在 SWF 文件中包括与该类关联的字节码。

import 语句仅应用于调用该语句的当前脚本（帧或对象）。例如，假设您在某个 Flash 文档的第 1 帧上导入了 macr.util 包中的所有类。那么，在那一帧上则可以使用简单类名来引用该包中的类。

// 在某个 FLA 的第 1 帧上：
import macr.util.*;

var myFoo:foo = new foo();

但在其它帧脚本中，仍需要使用其全限定类名来引用该包中的类 (var myFoo:foo = new macr.util.foo();)，或在其它帧上也添加一条 import 语句，导入该包中的类。

有关导入的更多信息，请参见导入类和使用包。


#include

可用性

Flash Player 4。

用法

#include "[path] filename.as"

注意：不要将分号 (;) 放在包含 #include 语句的行的末尾。

参数

[path] filename.as 要添加到“动作”面板的脚本的文件名和可选路径；.as 是推荐使用的文件扩展名。

返回

无。

说明

编译器指令：包含指定文件的内容，就像该文件中的命令属于调用脚本本身的一部分。#include 指令在编译时调用。因此，如果对外部文件进行了任何更改，则必须保存该文件，并重新编译使用它的任何 FLA 文件。

如果对包含 #include 语句的脚本使用“语法检查”按钮，则该包含文件中的语法也将被检查。

#include 可以在 FLA 文件和外部脚本文件中使用，但不能在动作脚本 2.0 类文件中使用。

您可以为要包含的文件指定无路径、相对路径或绝对路径。

  • 如果您没有指定路径，则 AS 文件必须与 FLA 文件或包含 #include 语句的脚本位于相同的目录中。
  • 若要为 AS 文件指定相对于 FLA 文件或脚本的路径，请使用一个圆点 (.) 来指示当前目录，使用两个圆点 (..) 来指示父目录，并且使用斜杠 (/)。请参见下面的示例。
  • 若要为 AS 文件指定绝对路径，请使用您的平台（Macintosh 或 Windows）所支持的格式。请参见下面的示例。但是，由于此用法要求目录结构在用来编译脚本的任何计算机上均相同，因此不建议采用此用法。

示例

以下示例显示多种为要包含在脚本中的文件指定路径的方法。

// 请注意，#include 语句未以分号 (;) 结尾
// AS 文件与 FLA 文件或脚本位于同一个目录中
#include "init_script.as"

// AS 文件位于包含 FLA 文件或脚本
//     的目录的子目录中
// 该子目录名为“FLA_includes”
#include "FLA_includes/init_script.as"

// AS 文件所在的目录与 FLA 文件或脚本所在的目录位于同一级
// 该目录名为“ALL_includes”
#include "../ALL_includes/init_script.as"

// AS 文件在 Windows 上由绝对路径来指定
// 请注意应使用斜杠，而不是反斜杠
#include "C:/Flash_scripts/init_script.as"

// AS 文件在 Macintosh 上由绝对路径来指定
#include "Mac HD:Flash_scripts:init_script.as"

另请参见

import


Infinity

可用性

Flash Player 5。

用法

Infinity

说明

属性；指定表示正无穷大的 IEEE-754 值。此常数的值与 Number.POSITIVE_INFINITY 相同。


-Infinity

可用性

Flash Player 5。

用法

-Infinity

说明

属性；指定表示负无穷大的 IEEE-754 值。此常数的值与 Number.NEGATIVE_INFINITY 相同。


#initclip

可用性

Flash Player 6。

用法

#initclip order

参数

order 指定 #initclip 代码块执行顺序的整数。这是一个可选参数。

说明

编译器指令；指示初始化动作块的开始。当同时初始化多个剪辑时，您可以使用 order 参数来指定先执行哪个初始化动作。在定义影片剪辑元件时，将执行初始化动作。如果影片剪辑是导出的元件，则初始化动作将在执行 SWF 文件第 1 帧上的动作之前执行。否则，组件初始化动作将在一特定帧（该帧包含关联影片剪辑元件的第一个实例）的帧动作脚本之前立即执行。

初始化动作在 SWF 文件播放过程中仅执行一次，您应该将这些动作用于一次性的初始化动作，例如类定义和注册。

另请参见

#endinitclip


instanceof

可用性

Flash Player 6。

用法

object instanceof class

参数

object 动作脚本对象。

class 对动作脚本构造函数（例如 String 或 Date）的引用。

返回

如果 object 是 class 的实例，则 instanceof 返回 true；否则，instanceof 返回 false。此外，_global instanceof Object 返回 false。

说明

运算符；确定某对象是否属于指定的类。测试 object 是否为 class 的实例。

instanceof 运算符不会将原始类型转换为包装对象。例如，下面的代码返回 true：

new String("Hello") instanceof String;

而下面的代码则返回 false：

"Hello" instanceof String;

另请参见

typeof


int

可用性

Flash Player 4。不鼓励在 Flash 5 中使用该函数，而推荐使用 Math.round()。

用法

int(value)

参数

value 要舍入为整数的数字。

返回

无。

说明

函数；将十进制数字转换为最相近的整数值。

另请参见

Math.floor()


interface

可用性

Flash Player 6。

用法

interface InterfaceName {}
interface InterfaceName [extends InterfaceName [, InterfaceName ...] {}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

说明

关键字；定义接口。接口与类相似，但也具有以下重要差异：

  • 接口仅包含方法的声明，而不包含其实现。也就是说，实现接口的每个类必须为该接口中声明的每个方法提供实现。
  • 接口定义中只允许有公共成员。此外，不允许实例和类成员。
  • 在接口定义中不允许 get 和 set 语句。

有关更多信息，请参见创建和使用接口。

示例

以下示例显示用于定义和实现接口的若干方法。

（在顶层包 .as 文件 Ia、B、C、Ib、D、Ic、E 中）

// 文件名 Ia.as
interface Ia
{
  function k():Number;         // 仅限方法声明
  function n(x:Number):Number; // 不实现
}
// 文件名 B.as
class B implements Ia
{
  function k():Number {return 25;}
  function n(x:Number):Number {return x+5;}
}
// 外部脚本或“动作”面板
var mvar:B = new B();
trace(mvar.k());   // 25
trace(mvar.n(7)); // 12

// 文件名 c.as
class C implements Ia
{
  function k():Number {return 25;}
} // 错误：类必须实现所有接口方法

// 文件名 Ib.as
interface Ib
{
  function o():Void;
}
class D implements Ia, Ib
{
  function k():Number {return 15;}
  function n(x:Number):Number {return x*x;}
  function o():Void {trace("o");}
}

// 外部脚本或“动作”面板
mvar = new D();
trace(D.k());   // 15
trace(D.n(7));  // 49
trace(D.o());   // "o"

interface Ic extends Ia
{
  function p():Void;
}
class E implements Ib, Ic
{
  function k():Number {return 25;}
  function n(x:Number):Number {return x+5;}
  function o():Void {trace("o");}
  function p():Void {trace("p");}
}

另请参见

class, extends, implements


isFinite

可用性

Flash Player 5。

用法

isFinite(expression)

参数

expression 要计算的布尔值表达式、变量表达式或其它表达式。

返回

一个布尔值。

说明

函数；对 expression 进行计算，如果为有限数，则返回 true，如果为无穷大或负无穷大，则返回 false。无穷大或负无穷大的出现指示有错误的数学条件，例如被 0 除。

示例

下面是 isFinite 返回值的示例：

isFinite(56)
// 返回 true

isFinite(Number.POSITIVE_INFINITY)
// 返回 false


isNaN()

可用性

Flash Player 5。

用法

isNaN(expression)

参数

expression 要计算的布尔表达式、变量表达式或其它表达式。

返回

一个布尔值。

说明

函数；对参数进行计算，如果值不是数字 (NaN)，则返回 true，指示存在数学错误。

示例

下面的代码显示了 isNaN 函数的返回值。

isNaN("Tree")

// 返回 true

isNaN(56)

// 返回 false

isNaN(Number.POSITIVE_INFINITY)
// 返回 false

另请参见

NaN, Number.NaN


Key 类

可用性

Flash Player 6。

说明

Key 类是不通过构造函数即可使用其方法和属性的顶级类。使用 Key 类的方法可生成用户能够通过标准键盘控制的界面。Key 类的属性是常量，表示控制游戏时最经常使用的键。有关键控代码值的完整列表，请参见键盘键和键控代码值。

Key 类的方法概要

方法 | 说明
Key.addListener() | 注册一个对象，以便在调用 onKeyDown 和 onKeyUp 方法时接收通知。
Key.getAscii() | 返回按下的最后一个键的 ASCII 值。
Key.getCode() | 返回按下的最后一个键的虚拟键控代码。
Key.isDown() | 当按下参数中指定的键时返回 true。
Key.isToggled() | 当激活 Num Lock 键或 Caps Lock 键时返回 true。
Key.removeListener() | 删除以前用 Key.addListener() 注册的对象。

Key 类的属性概要

Key 类的所有属性都是常量。

属性 | 说明
Key.BACKSPACE | 与 Backspace 键的键控代码值 (8) 关联的常量。
Key.CAPSLOCK | 与 Caps Lock 键的键控代码值 (20) 关联的常量。
Key.CONTROL | 与 Control 键的键控代码值 (17) 关联的常量。
Key.DELETEKEY | 与 Delete 键的键控代码值 (46) 关联的常量。
Key.DOWN | 与向下箭头键的键控代码值 (40) 关联的常量。
Key.END | 与 End 键的键控代码值 (35) 关联的常量。
Key.ENTER | 与 Enter 键的键控代码值 (13) 关联的常量。
Key.ESCAPE | 与 Escape 键的键控代码值 (27) 关联的常量。
Key.HOME | 与 Home 键的键控代码值 (36) 关联的常量。
Key.INSERT | 与 Insert 键的键控代码值 (45) 关联的常量。
Key.LEFT | 与左箭头键的键控代码值 (37) 关联的常量。
Key.PGDN | 与 Page Down 键的键控代码值 (34) 关联的常量。
Key.PGUP | 与 Page Up 键的键控代码值 (33) 关联的常量。
Key.RIGHT | 与右箭头键的键控代码值 (39) 关联的常量。
Key.SHIFT | 与 Shift 键的键控代码值 (16) 关联的常量。
Key.SPACE | 与空格键的键控代码值 (32) 关联的常量。
Key.TAB | 与 Tab 键的键控代码值 (9) 关联的常量。
Key.UP | 与向上箭头键的键控代码值 (38) 关联的常量。

Key 类的侦听器概要

方法 | 说明
Key.onKeyDown | 当按下某按键时获得通知。
Key.onKeyUp | 当释放某按键时获得通知。


Key.addListener()

可用性

Flash Player 6。

用法

Key.addListener (newListener)

参数

newListener 具有方法 onKeyDown 和 onKeyUp 的对象。

返回

无。

说明

方法；注册一个对象以接收 onKeyDown 和 onKeyUp 通知。当按下或释放按键时，不管输入焦点情况如何，所有用 addListener() 注册的侦听对象都将调用其 onKeyDown 方法或 onKeyUp 方法。可以有多个对象侦听键盘通知。如果已经注册了侦听器 newListener，则不会发生任何更改。

示例

以下示例创建一个新的侦听器对象，并为 onKeyDown 和 onKeyUp 定义一个函数。最后一行使用 addListener() 向 Key 对象注册该侦听器，以使该对象可接收按下和释放按键事件的通知。

myListener = new Object();
myListener.onKeyDown = function () {
  trace ("You pressed a key.");
}
myListener.onKeyUp = function () {
  trace ("You released a key.");
}
Key.addListener(myListener);

以下示例将快捷键 Control+7 分配给实例名称为 myButton 的按钮，并将与该快捷键有关的信息提供给屏幕读取器（请参见 _accProps）。在此示例中，在您按下 Control+7 组合键时，myOnPress 函数在“输出”面板中显示文本“hello”；您可以在自己的文件中创建更具意义的函数。

function myOnPress() {
  trace( "hello" );
}

function myOnKeyDown() {
  if (Key.isDown(Key.CONTROL) && Key.getCode() == 55) // 55 是 7 的键控代码
  {
    Selection.setFocus( myButton );
    myButton.onPress();
  }
}

var myListener = new Object();
myListener.onKeyDown = myOnKeyDown;
Key.addListener(myListener);

myButton.onPress = myOnPress;
myButton._accProps.shortcut = "Ctrl+F"
Accessibility.updateProperties();

另请参见

Key.getCode(), Key.isDown(), Key.onKeyDown, Key.onKeyUp, Key.removeListener()


Key.BACKSPACE

可用性

Flash Player 5。

用法

Key.BACKSPACE

说明

属性；与 Backspace 键的键控代码值 (8) 关联的常量。


Key.CAPSLOCK

可用性

Flash Player 5。

用法

Key.CAPSLOCK

说明

属性；与 Caps Lock 键的键控代码值 (20) 关联的常量。


Key.CONTROL

可用性

Flash Player 5。

用法

Key.CONTROL

说明

属性；与 Control 键的键控代码值 (17) 关联的常量。


Key.DELETEKEY

可用性

Flash Player 5。

用法

Key.DELETEKEY

说明

属性；与 Delete 键的键控代码值 (46) 关联的常量。


Key.DOWN

可用性

Flash Player 5。

用法

Key.DOWN

说明

属性；与向下箭头键的键控代码值 (40) 关联的常量。


Key.END

可用性

Flash Player 5。

用法

Key.END

说明

属性；与 End 键的键控代码值 (35) 关联的常量。


Key.ENTER

可用性

Flash Player 5。

用法

Key.ENTER

说明

属性；与 Enter 键的键控代码值 (13) 关联的常量。


Key.ESCAPE

可用性

Flash Player 5。

用法

Key.ESCAPE

说明

属性；与 Escape 键的键控代码值 (27) 关联的常量。


Key.getAscii()

可用性

Flash Player 5。

用法

Key.getAscii();

参数

无。

返回

表示上次所按键的 ASCII 值的整数。

说明

方法；返回按下或释放的最后一个键的 ASCII 码。返回的 ASCII 值为英文键盘值。例如，如果您按下 Shift+2，则在日文键盘上 Key.getAscii() 将返回 @，就如同该方法在英文键盘上的返回结果一样。


Key.getCode()

可用性

Flash Player 5。

用法

Key.getCode();

参数

无。

返回

表示上次所按键的键控代码的整数。

说明

方法；返回按下的最后一个键的键控代码值。若要将返回的键控代码值与标准键盘上的键相匹配，请参见键盘键和键控代码值。


Key.HOME

可用性

Flash Player 5。

用法

Key.HOME

说明

属性；与 Home 键的键控代码值 (36) 关联的常量。


Key.INSERT

可用性

Flash Player 5。

用法

Key.INSERT

说明

属性；与 Insert 键的键控代码值 (45) 关联的常量。


Key.isDown()

可用性

Flash Player 5。

用法

Key.isDown(keycode)

参数

keycode 分配给特定键的键控代码值，或与特定键相关联的 Key 类属性。若要将返回的键控代码值与标准键盘上的键相匹配，请参见键盘键和键控代码值。

返回

一个布尔值。

说明

方法；如果按 keycode 中指定的键，则返回 true；否则，返回 false。在 Macintosh 上，Caps Lock 键和 Num Lock 键的键控代码值相同。

示例

以下脚本使用户可以控制影片剪辑的位置。

onClipEvent (enterFrame) {
  if(Key.isDown(Key.RIGHT)) {
    this._x=_x+10;
  } else if (Key.isDown(Key.DOWN)) {
    this._y=_y+10;
  }
}


Key.isToggled()

可用性

Flash Player 5。

用法

Key.isToggled(keycode)

参数

keycode Caps Lock 的键控代码 (20) 或 Num Lock 的键控代码 (144)。

返回

一个布尔值。

说明

方法；在 Caps Lock 键或 Num Lock 键处于激活状态（被切换）时返回 true，否则返回 false。在 Macintosh 上，Caps Lock 键和 Num Lock 键的键控代码值相同。


Key.LEFT

可用性

Flash Player 5。

用法

Key.LEFT

说明

属性；与左箭头键的键控代码值 (37) 关联的常量。


Key.onKeyDown

可用性

Flash Player 6。

用法

someListener.onKeyDown

说明

侦听器；当按下某按键时获得通知。若要使用 onKeyDown，必须创建侦听器对象。然后可以为 onKeyDown 定义一个函数，并使用 addListener() 向 Key 对象注册该侦听器，如下所示：

someListener = new Object();
someListener.onKeyDown = function () { ... };
Key.addListener(someListener);

侦听器可以使不同的代码片段协同工作，因为多个侦听器可以接收有关单个事件的通知。

另请参见

Key.addListener()


Key.onKeyUp

可用性

Flash Player 6。

用法

someListener.onKeyUp

说明

侦听器；当释放某按键时获得通知。若要使用 onKeyUp，必须创建侦听器对象。然后可以为 onKeyUp 定义一个函数，并使用 addListener() 向 Key 对象注册该侦听器，如下所示：

someListener = new Object();
someListener.onKeyUp = function () { ... };
Key.addListener(someListener);

侦听器可以使不同的代码片段协同工作，因为多个侦听器可以接收有关单个事件的通知。

另请参见

Key.addListener()


Key.PGDN

可用性

Flash Player 5。

用法

Key.PGDN

说明

属性；与 Page Down 键的键控代码值 (34) 关联的常量。


Key.PGUP

可用性

Flash Player 5。

用法

Key.PGUP

说明

属性；与 Page Up 键的键控代码值 (33) 关联的常量。


Key.removeListener()

可用性

Flash Player 6。

用法

Key.removeListener (listener)

参数

listener 对象。

返回

如果成功删除了 listener，则该方法返回 true。如果未能成功删除 listener（例如，如果 listener 不在 Key 对象的侦听器列表上），则该方法返回 false。

说明

方法；删除以前用 Key.addListener() 注册的对象。


Key.RIGHT

可用性

Flash Player 5。

用法

Key.RIGHT

说明

属性；与右箭头键的键控代码值 (39) 关联的常量。


Key.SHIFT

可用性

Flash Player 5。

用法

Key.SHIFT

说明

属性；与 Shift 键的键控代码值 (16) 关联的常量。


Key.SPACE

可用性

Flash Player 5。

用法

Key.SPACE

说明

属性；与空格键的键控代码值 (32) 关联的常量。


Key.TAB

可用性

Flash Player 5。

用法

Key.TAB

说明

属性；与 Tab 键的键控代码值 (9) 关联的常量。


Key.UP

可用性

Flash Player 5。

用法

Key.UP

说明

属性；与向上箭头键的键控代码值 (38) 关联的常量。


le（小于或等于 - 字符串专用）

可用性

Flash Player 4。不鼓励在 Flash 5 中使用此运算符，而推荐使用 <=（小于等于） 运算符。

用法

expression1 le expression2

参数

expression1、expression2 数字、字符串或变量。

返回

无。

说明

运算符（比较）；比较 expression1 与 expression2，如果 expression1 小于或等于 expression2，则返回值 true；否则，返回 false 值。

另请参见

<=（小于等于）


length

可用性

Flash Player 4。不鼓励在 Flash 5 中使用此函数及所有字符串函数。Macromedia 建议使用 String 类的方法以及 String.length 属性来执行相同的操作。

用法

length(expression)
length(variable)

参数

expression 字符串。

variable 变量的名称。

返回

指定字符串或变量名称的长度。

说明

字符串函数；返回指定字符串或变量名称的长度。

示例

下面的示例返回字符串 "Hello" 的值。

length("Hello");

结果为 5。

另请参见

" "（字符串分隔符）, String 类, String.length


_level

可用性

Flash Player 4。

用法

_levelN

说明

标识符；对 _levelN 的根时间轴的引用。必须在使用 loadMovieNum() 将 SWF 文件加载到 Flash Player 中以后，才可使用 _level 属性来定位这些 SWF。还可使用 _levelN 来定位由 N 所指定级别处的已加载 SWF 文件。

加载到 Flash Player 实例中的初始 SWF 文件会自动加载到 _level0。_level0 中的 SWF 文件为所有随后加载的 SWF 文件设置帧频、背景色和帧大小。然后 SWF 文件堆叠在处于 _level0 的 SWF 文件之上的更高编号级别中。

您必须为每个使用 loadMovieNum() 加载到 Flash Player 中的 SWF 文件分配一个级别。您可按任意顺序分配级别。如果您分配的级别（包括 _level0）中已经包含 SWF 文件，则处于该级别的 SWF 文件将被卸载并替换为新的 SWF 文件。

示例

下面的示例将播放头停止在位于 _level9 中的 SWF 文件的主时间轴中。

_level9.stop();

下面的示例将位于 _level4 中的 SWF 文件的主时间轴中的播放头转到第 5 帧。在此之前，处于 _level4 中的 SWF 文件必须已经用 loadMovieNum() 动作加载。

_level4.gotoAndStop(5);

另请参见

loadMovie(), MovieClip.swapDepths()


loadMovie()

可用性

Flash Player 3。

用法

loadMovie("url",target [, method])

参数

url 要加载的 SWF 文件或 JPEG 文件的绝对或相对 URL。相对路径必须相对于级别 0 处的 SWF 文件。绝对 URL 必须包括协议引用，例如 http:// 或 file:///。

target 指向目标影片剪辑的路径。目标影片剪辑将替换为加载的 SWF 文件或图像。

method 可选参数，指定用于发送变量的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，它用于发送大量的变量。

返回

无。

说明

函数；在播放原始 SWF 文件的同时将 SWF 文件或 JPEG 文件加载到 Flash Player 中。

提示：如果您要监视下载的进度，则使用 MovieClipLoader.loadClip() 而不是此函数。

使用 loadMovie() 函数可以一次显示几个 SWF 文件并且无需加载另一个 HTML 文档即可在 SWF 文件间进行切换。如果不使用 loadMovie() 函数，则 Flash Player 显示单个 SWF 文件，然后关闭。

如果要将 SWF 文件或 JPEG 文件加载到特定的级别，请使用 loadMovieNum() 而不是 loadMovie()。

如果 SWF 文件加载到目标影片剪辑，则可使用该影片剪辑的目标路径来定位加载的 SWF 文件。加载到目标的 SWF 文件或图像会继承目标影片剪辑的位置、旋转和缩放属性。加载的图像或 SWF 文件的左上角与目标影片剪辑的注册点对齐。或者，如果目标为 _root 时间轴，则该图像或 SWF 文件的左上角与舞台的左上角对齐。

使用 unloadMovie() 可删除用 loadMovie() 加载的 SWF 文件。

示例

下面的 loadMovie() 语句附加到标签为 Products 的导航按钮。在舞台上有一个实例名称为 dropZone 的不可见影片剪辑。loadMovie() 函数使用此影片剪辑作为目标参数将 SWF 文件中的产品加载到舞台上的正确位置。

on (release) {
  loadMovie("products.swf",_root.dropZone);
}

下面的示例从特定目录中加载一个 JPEG 图像，该目录与调用 loadMovie() 函数的 SWF 文件的目录相同：

loadMovie("image45.jpeg", "ourMovieClip");

另请参见

_level, loadMovieNum(), MovieClipLoader.loadClip(), unloadMovie()


loadMovieNum()

可用性

Flash Player 4。用 Flash 5 或更高版本打开的 Flash 4 文件将进行转换，以使用正确的语法。

用法

loadMovieNum("url",level [, variables])

参数

url 要加载的 SWF 或 JPEG 文件的绝对或相对 URL。相对路径必须相对于级别 0 处的 SWF 文件。为了在独立的 Flash Player 中使用 SWF 文件或在 Flash 创作应用程序的测试影片模式下测试 SWF 文件，必须将所有的 SWF 文件存储在同一个文件夹中，并且其文件名不能包含文件夹或磁盘驱动器说明。

level 一个整数，指定 SWF 文件将加载到 Flash Player 中的哪个级别。

variables 可选参数，指定发送变量所使用的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，它用于发送大量的变量。

返回

无。

说明

函数；在播放原来加载的 SWF 文件的同时将 SWF 文件或 JPEG 文件加载到 Flash Player 中的某个级别。

提示：如果您要监视下载的进度，则使用 MovieClipLoader.loadClip() 而不是此函数。

一般情况下，Flash Player 显示单个 SWF 文件，然后关闭。loadMovieNum() 动作使您可以同时显示几个 SWF 文件，并且无需加载另一个 HTML 文档就可在 SWF 文件之间切换。

如果要指定目标而不是级别，请使用 loadMovie() 而不是 loadMovieNum()。

Flash Player 具有从级别 0 开始的级别堆叠顺序。这些级别类似于醋酸纤维层；除了每个级别上的对象之外，它们是透明的。当使用 loadMovieNum() 时，必须指定 SWF 文件将加载到 Flash Player 中的哪个级别。在 SWF 文件加载到某个级别后，即可使用语法 _levelN 来定位 SWF 文件，其中 N 为级别号。

当加载 SWF 文件时，可指定任何级别号，并且可将 SWF 文件加载到已加载有 SWF 文件的级别。如果执行此动作，则新的 SWF 文件将替换现有的 SWF 文件。如果将 SWF 文件加载到级别 0，则 Flash Player 中的每个级别均被卸载，并且级别 0 将替换为该新文件。处于级别 0 的 SWF 文件为所有其它加载的 SWF 文件设置帧频、背景色和帧大小。

loadMovieNum() 动作也允许您在播放 SWF 文件时将 JPEG 文件加载到 SWF 文件中。对于图像和 SWF 文件，在文件加载时，图像的左上角均与舞台的左上角对齐。另外，在这两种情况下，加载的文件均继承旋转和缩放设置，并且初始内容将被覆盖。

使用 unloadMovieNum() 可删除用 loadMovieNum() 加载的 SWF 文件或图像。

示例

此示例将 JPEG 图像“image45.jpg”加载到 Flash Player 的级别 2 中。

loadMovieNum("http://www.blag.com/image45.jpg", 2);

另请参见

loadMovie(), unloadMovieNum(), _level


loadVariables()

可用性

Flash Player 4；行为在 Flash Player 7 中发生了变化。

用法

loadVariables ("url" , target [, variables])

参数

url 变量所处位置的绝对或相对 URL。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

target 指向接收所加载变量的影片剪辑的目标路径。

variables 可选参数，指定发送变量所使用的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，它用于发送大量的变量。

返回

无。

说明

函数；从外部文件（例如文本文件，或由 CGI 脚本、Active Server Page (ASP)、PHP 或 Perl 脚本生成的文本）中读取数据，并设置目标影片剪辑中变量的值。此动作还可用于使用新值更新活动 SWF 文件中的变量。

指定 URL 处的文本必须为标准的 MIME 格式 application/x-www-form-urlencoded（CGI 脚本所使用的一种标准格式）。可以指定任意数量的变量。例如，下面的语句定义了几个变量：

company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

如果要将变量加载到特定的级别，请使用 loadVariablesNum() 而不是 loadVariables()。

示例

此示例将文本文件中的信息加载到主时间轴上 varTarget 影片剪辑的文本字段中。文本字段的变量名必须与 data.txt 文件中的变量名匹配。

on (release) {
  loadVariables("data.txt", "_root.varTarget");
}

另请参见

loadVariablesNum(), loadMovie(), loadMovieNum(), getURL(), MovieClip.loadMovie(), MovieClip.loadVariables()


loadVariablesNum()

可用性

Flash Player 4。用 Flash 5 或更高版本打开的 Flash 4 文件将进行转换，以使用正确的语法。行为在 Flash Player 7 中已更改。

用法

loadVariablesNum ("url" ,level [, variables])

参数

url 变量所处位置的绝对或相对 URL。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

level 一个整数，指定 Flash Player 中接收这些变量的级别。

variables 可选参数，指定发送变量所使用的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，它用于发送大量的变量。

返回

无。

说明

函数；从外部文件（例如文本文件，或由 CGI 脚本、Active Server Page (ASP)、PHP 或 Perl 脚本生成的文本）中读取数据，并设置 Flash Player 级别中变量的值。此函数还可用于使用新值更新活动 SWF 文件中的变量。

指定 URL 处的文本必须为标准的 MIME 格式 application/x-www-form-urlencoded（CGI 脚本所使用的一种标准格式）。可以指定任意数量的变量。例如，下面的语句定义了几个变量：

company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

如果要将变量加载到目标影片剪辑中，请使用 loadVariables() 而不是 loadVariablesNum()。

示例

此示例将来自文本文件中的信息加载到 Flash Player 中级别 0 处的 SWF 文件的主时间轴上的文本字段中。文本字段的变量名必须与 data.txt 文件中的变量名匹配。

on (release) {
  loadVariablesNum("data.txt", 0);
}

另请参见

getURL(), loadMovie(), loadMovieNum(), loadVariables(), MovieClip.loadMovie(), MovieClip.loadVariables()


LoadVars 类

可用性

Flash Player 6。

说明

LoadVars 类是 loadVariables() 函数的替代方法，用于在 Flash 应用程序和服务器之间传输变量。

您可以使用 LoadVars 类在下载时获取成功数据加载、进度指示和流数据的验证信息。LoadVars 类的工作原理非常类似于 XML 类；它使用方法 load()、send() 和 sendAndLoad() 与服务器进行通讯。LoadVars 类和 XML 类之间的主要差别在于 LoadVars 传输动作脚本的名称和值对，而不是 XML 对象中存储的 XML DOM 树。

LoadVars 类与 XML 类遵循相同的安全限制。

LoadVars 类的方法概要

方法 | 说明
LoadVars.addRequestHeader() | 添加或更改 POST 操作的 HTTP 标头。
LoadVars.getBytesLoaded() | 返回 LoadVars.load() 或 LoadVars.sendAndLoad() 所下载的字节数。
LoadVars.getBytesTotal() | 返回将通过 load 或 sendAndLoad 方法下载的总字节数。
LoadVars.load() | 从指定的 URL 下载变量。
LoadVars.send() | 将变量从 LoadVars 对象发布到 URL。
LoadVars.sendAndLoad() | 将变量从 LoadVars 对象发布到 URL，并将服务器的响应下载到目标对象。
LoadVars.toString() | 返回包含 LoadVars 对象中所有可枚举变量的 URL 编码字符串。

LoadVars 类的属性概要

属性 | 说明
LoadVars.contentType | 指示数据的 MIME 类型。
LoadVars.loaded | 指示 load 或 sendAndLoad 操作是否已完成的布尔值。

LoadVars 类的事件处理函数概要

事件处理函数 | 说明
LoadVars.onData | 当数据从服务器上完全下载时，或者当从服务器下载数据的过程中出现错误时调用。
LoadVars.onLoad | 当完成 load 或 sendAndLoad 操作时调用。

LoadVars 类的构造函数

可用性

Flash Player 6。

用法

new LoadVars()

参数

无。

返回

无。

说明

构造函数；创建 LoadVars 对象。然后您可使用该 LoadVars 对象的方法来发送和加载数据。

示例

下面的示例创建一个名为 my_lv 的 LoadVars 的对象：

var my_lv = new LoadVars();


LoadVars.addRequestHeader()

可用性

Flash Player 6。

用法

my_lv.addRequestHeader(headerName, headerValue)
my_lv.addRequestHeader(["headerName_1", "headerValue_1" ..."headerName_n", "headerValue_n"])

参数

headerName HTTP 请求标头名称。

headerValue 与 headerName 关联的值。

返回

无。

说明

方法，添加或更改用 POST 动作发送的 HTTP 请求标头（如 Content-Type 或 SOAPAction）。在第一种用法中，向该方法传递了两个字符串：headerName 和 headerValue。在第二种用法中，传递了字符串、替代标头名称和标头值的数组。

如果通过多次调用来设置相同的标头名称，则每个后继值将替换在上一次调用中设置的值。

不能 使用此方法添加或更改以下标准 HTTP 标头：Accept-Ranges、Age、Allow、Allowed、Connection、Content-Length、Content-Location、Content-Range、ETag、Host、Last-Modified、Locations、Max-Forwards、Proxy-Authenticate、Proxy-Authorization、Public、Range、Retry-After、Server、TE、Trailer、Transfer-Encoding、Upgrade、URI、Vary、Via、Warning 和 WWW-Authenticate。

示例

以下示例将值为 Foo 的自定义 HTTP 标头 SOAPAction 添加到 my_lv 对象。

my_lv.addRequestHeader("SOAPAction", "'Foo'");

下一个示例创建名为 headers 的数组，它包含两个替代 HTTP 标头及其关联值。该数组作为参量传递给 addRequestHeader()。

var headers = ["Content-Type", "text/plain", "X-ClientAppVersion", "2.0"];
my_lv.addRequestHeader(headers);

另请参见

XML.addRequestHeader()


LoadVars.contentType

可用性

Flash Player 6。

用法

my_lv.contentType

说明

属性；当您调用 LoadVars.send() 或 LoadVars.sendAndLoad() 时发送到服务器的 MIME 类型。默认值为 application/x-www-form-urlencoded。

另请参见

LoadVars.send(), LoadVars.sendAndLoad()


LoadVars.getBytesLoaded()

可用性

Flash Player 6。

用法

my_lv.getBytesLoaded()

参数

无。

返回

一个整数。

说明

方法；返回 LoadVars.load() 或 LoadVars.sendAndLoad() 所下载的字节数。如果当前没有执行加载操作或者尚未开始加载操作，此方法将返回 undefined。


LoadVars.getBytesTotal()

可用性

Flash Player 6。

用法

my_lv.getBytesTotal()

参数

无。

返回

一个整数。

说明

方法；返回 LoadVars.load() 或 LoadVars.sendAndLoad() 所下载的总字节数。如果当前没有执行加载操作或者尚未开始加载操作，此方法将返回 undefined。如果无法确定总字节数（例如，如果下载已开始但服务器尚未传输 HTTP Content-Length 标头），则此方法也会返回 undefined。


LoadVars.load()

可用性

Flash Player 6；行为在 Flash Player 7 中发生了变化。

用法

my_lv.load(url)

参数

url 要从中下载变量的 URL。如果发出此调用的 SWF 文件正在 Web 浏览器中运行，则 url 必须与该 SWF 文件位于同一域中；有关详细信息，请参见下面的“说明”。

返回

字符串。

说明

方法；从指定的 URL 下载变量，分析变量数据，并将结果变量放在 my_lv 中。my_lv 中任何与下载变量同名的属性都将被覆盖。my_lv 中任何与下载变量不同名的属性都不会被删除。这是一个异步动作。

下载的数据必须是 MIME 内容类型 application/x-www-form-urlencoded。这种格式与 loadVariables() 所用的格式相同。

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

此外，在以 Flash Player 7 为目标播放器发布的文件中，使用 LoadVars.load() 加载的外部变量支持区分大小写（请参见区分大小写）。

此方法与 XML.load() 相似。


LoadVars.loaded

可用性

Flash Player 6。

用法

my_lv.loaded

说明

属性；默认情况下为未定义。当 LoadVars.load() 或 LoadVars.sendAndLoad() 操作开始时，loaded 属性设置为 false；当该操作完成时，loaded 属性设置为 true。如果该操作尚未完成或由于错误而失败，则 loaded 属性仍保持设置为 false。

此属性与 XML.loaded 属性相似。


LoadVars.onData

可用性

Flash Player 6。

用法

my_lv.onData = function(src) {
  // 此处是您的语句
}

参数

src 来自 LoadVars.load() 或 LoadVars.sendAndLoad() 方法调用的原始（未分析）数据。

返回

无。

说明

事件处理函数；当数据从服务器上完全下载时，或者当从服务器下载数据的过程中出现错误时调用。此处理函数在分析数据之前调用，因此它可用于调用自定义分析例程，而不必调用 Flash Player 中的内置分析例程。对于分配给 LoadVars.onData 的函数，传递给它的 src 参数的值可以是 undefined，或者包含从服务器下载的 URL 编码名称/值对的字符串。如果返回值为 undefined，则说明从服务器下载数据时出现了错误。

LoadVars.onData 的默认实现调用 LoadVars.onLoad。您可以通过将自定义函数分配给 LoadVars.onData 来覆盖此默认实现，但 LoadVars.onLoad 将不再被调用，除非您在 LoadVars.onData 的实现中调用它。


LoadVars.onLoad

可用性

Flash Player 6。

用法

my_lv.onLoad = function(success) {
  // 此处是您的语句
}

参数

success 该参数指示加载操作是成功完成 (true) 还是以失败结束 (false)。

返回

一个布尔值。

说明

事件处理函数；当 LoadVars.load() 或 LoadVars.sendAndLoad() 操作结束时调用。如果该操作成功，my_lv 将填充为该操作所下载的变量，而这些变量将在调用此处理函数时变为可用。

默认情况下该处理函数未定义。

此方法与 XML.onLoad() 相似。


LoadVars.send()

可用性

Flash Player 6。

用法

my_lv.send(url [,target, method])

参数

url 要将变量上传到的 URL。

target 浏览器框架窗口，所有响应都将在其中显示。

method HTTP 协议的 GET 或 POST 方法。

返回

字符串。

说明

方法；将 my_lv 对象中的变量发送到指定的 URL。默认情况下，my_lv 中的所有可枚举变量都将连接为一个 application/x-www-form-urlencoded 格式的字符串，该字符串将通过 HTTP POST 方法被发布到 URL。这与 loadVariables() 动作所用的格式相同。在 HTTP 请求标头中发送的 MIME 内容类型是 my_lv.contentType 的值或默认的 application/x-www-form-urlencoded。除非指定了 GET，否则将使用 POST 方法。

如果指定了 target 参数，则服务器的响应将显示在指定的目标浏览器框架窗口中。如果省略 target 参数，则服务器响应将被丢弃。

此方法与 XML.send() 相似。


LoadVars.sendAndLoad()

可用性

Flash Player 6；行为在 Flash Player 7 中发生了变化。

用法

my_lv.sendAndLoad(url, targetObject[, method])

参数

url 要将变量上传到的 URL。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

targetObject 接收下载变量的 LoadVars 对象。

method HTTP 协议的 GET 或 POST 方法。

返回

字符串。

说明

方法；将 my_lv 对象中的变量发布到指定的 URL。将下载服务器响应，并将其作为变量数据进行分析，然后将结果变量放在 targetObject 对象中。

变量发布的方式与 LoadVars.send() 相同。变量下载到 targetObject 中的方式与 LoadVars.load() 相同。

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

此方法与 XML.sendAndLoad() 相似。


LoadVars.toString()

可用性

Flash Player 6。

用法

my_lv.toString()

参数

无。

返回

字符串。

说明

方法；以 MIME 内容编码格式 application/x-www-form-urlencoded 返回包含 my_lv 对象中所有可枚举变量的字符串。

示例

var myVars = new LoadVars();
myVars.name = “Gary?
myVars.age = 26;
trace (myVars.toString());
//将输出
//name=Gary&age=26


LocalConnection 类

可用性

Flash Player 6。

说明

LocalConnection 类用于开发 SWF 文件，这些文件无需使用 fscommand() 或 JavaScript 即可相互发送指令。LocalConnection 对象只能在运行于同一台客户机上的 SWF 文件之间通讯，但这些 SWF 文件可以在两个不同的应用程序中运行。例如，一个 SWF 文件在浏览器中运行，而一个 SWF 文件在播放器中运行。您可以使用 LocalConnection 对象在单个 SWF 文件中发送和接收数据，但这不是标准的实现；本节中的所有示例均说明不同 SWF 文件之间的通讯。

用来发送和接收数据的主要方法是 LocalConnection.send() 和 LocalConnection.connect()。在最基础的层次，您的代码将实现以下命令；请注意 LocalConnection.send() 和 LocalConnection.connect() 命令均指定相同的连接名称 lc_name：

// 接收方影片中的代码
receiving_lc = new LocalConnection();
receiving_lc.methodToExecute = function(param1, param2)
{
  // 要执行的代码
}
receiving_lc.connect("lc_name");
// 发送方影片中的代码
sending_lc = new LocalConnection();
sending_lc.send("lc_name", "methodToExecute", dataItem1, dataItem2)

LocalConnection 对象最简单的使用方法是仅允许在位于同一个域中的 LocalConnection 对象之间进行通讯，因为您将不需要处理与安全相关的问题。但是，如果您需要允许域间通讯，则可以通过多种方法来实现安全措施。有关更多信息，请参见 LocalConnection.send() 中对 connectionName 参数的讨论，以及 LocalConnection.allowDomain 和 LocalConnection.domain() 条目。

LocalConnection 类的方法概述

方法 | 说明
LocalConnection.close() | 关闭（断开连接）LocalConnection 对象。
LocalConnection.connect() | 准备 LocalConnection 对象，以从 LocalConnection.send() 命令中接收命令。
LocalConnection.domain() | 返回一个字符串，表示当前 SWF 文件所在位置的超域。
LocalConnection.send() | 对指定的 LocalConnection 对象调用方法。

LocalConnection 类的事件处理函数概要

事件处理函数 | 说明
LocalConnection.allowDomain | 每当当前（接收方）LocalConnection 对象从发送方 LocalConnection 对象收到调用方法的请求时调用。
LocalConnection.allowInsecureDomain | 每当当前（接收方）LocalConnection 对象（位于使用安全协议 HTTPS 的域承载的 SWF 文件中）从发送方 LocalConnection 对象（位于使用非安全协议的域承载的 SWF 文件中）收到调用方法的请求时调用。
LocalConnection.onStatus | 当发送方 LocalConnection 对象尝试将命令发送到接收方 LocalConnection 对象之后调用。

LocalConnection 类的构造函数

可用性

Flash Player 6。

用法

new LocalConnection()

参数

无。

返回

无。

说明

构造函数；创建 LocalConnection 对象。

示例

以下示例显示接收方 SWF 文件和发送方 SWF 文件如何创建 LocalConnnection 对象。请注意，这两个 SWF 文件可以为其各自的 LocalConnection 对象使用相同的名称或不同的名称。在此示例中，它们使用相同的名称 my_lc。

// 接收方 SWF 中的代码
my_lc = new LocalConnection();
my_lc.someMethod = function() {
  // 此处是您的语句
}
my_lc.connect("connectionName");

// 发送方 SWF 中的代码
my_lc = new LocalConnection();
my_lc.send("connectionName", "someMethod");

另请参见

LocalConnection.connect(), LocalConnection.send()


LocalConnection.allowDomain

可用性

Flash Player 6；行为在 Flash Player 7 中进行了更改。

用法

receiving_lc.allowDomain = function([sendingDomain]) {
  // 您在此处输入的语句返回 true 或 false
}

参数

sendingDomain 可选参数，指定包含发送方 LocalConnection 对象的 SWF 文件的域。

返回

无。

说明

事件处理函数；每当 receiving_lc 从发送方 LocalConnection 对象收到调用方法的请求时调用。Flash 需要您在此处理函数中实现的代码返回布尔值 true 或 false。如果此处理函数没有返回 true，则将忽略发送方对象的请求，并且不调用方法。

使用此命令可从指定域或任何域中显式允许 LocalConnection 对象执行接收方 LocalConnection 对象的方法。如果没有声明 sendingDomain 参数，则可能需要接受任何域中的命令，并且处理函数中的代码将只为 return true。如果您声明了 sendingDomain，则可能需要将 sendingDomain 的值与要从中接受命令的域进行比较。以下示例将说明这两种实现方式。

在 Flash Player 6 中运行的文件中，sendingDomain 参数包含调用方的超域。在 Flash Player 7 或更高版本中运行的文件中，sendingDomain 参数包含该调用方的确切的域。在后一种情况中，若要允许由在 www.domain.com 或 store.domain.com 承载的 SWF 文件访问，您必须显式允许从这两个域的访问。

// 对于 Flash Player 6
receiving_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="domain.com");
}
// 允许运行于 Flash Player 7 或更高版本中的 SWF 文件
// 进行访问的对应命令
receiving_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="www.domain.com" ||
    sendingDomain=="store.domain.com");
}

此外，对于在 Flash Player 7 或更高版本中运行的文件，您不能使用此方法允许使用安全协议 (HTTPS) 承载的 SWF 文件可以从使用非安全协议承载的 SWF 文件访问；必须改用 LocalConnection.allowInsecureDomain 事件处理函数。

示例

以下示例显示接收方 SWF 文件中的 LocalConnection 对象如何允许任何域中的 SWF 文件调用其方法。将其与 LocalConnection.connect() 中的示例进行比较，在该示例中，只有来自同一个域中的 SWF 文件才能调用接收方 SWF 文件中的 Trace 方法。有关下划线 (_) 在连接名称中的用法的讨论，请参见 LocalConnection.send()。

var aLocalConnection = new LocalConnection();
aLocalConnection.Trace = function(aString)
{
  aTextField = aTextField + aString + newline;
}

aLocalConnection.allowDomain = function() {
  // 任何域均可对此 LocalConnection 对象调用方法
  return true;
}

aLocalConnection.connect("_trace");

在以下示例中，接收方 SWF 文件只接受来自位于 thisDomain.com 或 thatDomain.com 中的 SWF 文件的命令。

var aLocalConnection = new LocalConnection();
aLocalConnection.Trace = function(aString)
{
  aTextField = aTextField + aString + newline;
}

aLocalConnection.allowDomain = function(sendingDomain)
{
  return(sendingDomain=="thisDomain.com" || sendingDomain=="thatDomain.com");
}

aLocalConnection.connect("_trace");

另请参见

LocalConnection.connect(), LocalConnection.domain(), LocalConnection.send()


LocalConnection.allowInsecureDomain

可用性

Flash Player 7。

用法

receiving_lc.allowInsecureDomain = function([sendingDomain]) {
  // 您在此处输入的语句返回 true 或 false
}

参数

sendingDomain 可选参数，指定包含发送方 LocalConnection 对象的 SWF 文件的域。

返回

无。

说明

事件处理函数；每当 receiving_lc（位于使用安全协议 HTTPS 的域承载的 SWF 文件中）从发送方 LocalConnection 对象（位于使用非安全协议的域承载的 SWF 文件中）收到调用方法的请求时调用。Flash 需要您在此处理函数中实现的代码返回布尔值 true 或 false。如果此处理函数没有返回 true，则将忽略发送方对象的请求，并且不调用方法。

默认情况下，使用 HTTPS 协议承载的 SWF 文件只能被其它使用 HTTPS 协议承载的 SWF 文件访问。这种实现保持了 HTTPS 协议所提供的完整性。

不建议使用此方法覆盖默认行为，因为这样做会损及 HTTPS 安全。但在某些情况下您可能需要这样做；例如，您可能需要允许从以 Flash Player 6 为目标播放器发布的 HTTP 文件访问以 Flash Player 7 或更高版本为目标播放器发布的 HTTPS 文件。

以 Flash Player 6 为目标播放器发布的 SWF 文件可以使用 LocalConnection.allowDomain 事件处理函数允许 HTTP 到 HTTPS 访问。但是，因为 Flash Player 7 中实现安全的方式是不同的，所以，您必须使用 LocalConnection.allowInsecureDomain() 方法在以 Flash Player 7 或更高版本为目标播放器发布的 SWF 文件中允许此类访问。

另请参见

LocalConnection.allowDomain, LocalConnection.connect()


LocalConnection.close()

可用性

Flash Player 6。

用法

receiving_lc.close

参数

无。

返回

无。

说明

方法；关闭（断开连接）LocalConnection 对象。在您不再想让该对象接受命令时（例如，当您要使用另一个 SWF 文件中的相同 connectionName 参数发出 LocalConnection.connect() 命令时）发出此命令。

另请参见

LocalConnection.connect()


LocalConnection.connect()

可用性

Flash Player 6。

用法

receiving_lc.connect(connectionName)

参数

connectionName 一个字符串，对应于要与 receiving_lc 通讯的 LocalConnection.send() 命令中所指定的连接名称。

返回

如果在同一台客户机上运行的其它进程均未使用 connectionName 参数的相同值发出此命令，则返回布尔值 true；否则返回 false。

说明

方法；准备 LocalConnection 对象，以从 LocalConnection.send() 命令（称作“发送方 LocalConnection 对象”）中接收命令。与此命令一起使用的对象称作“接收方 LocalConnection 对象”。接收方对象和发送方对象必须在同一台客户机上运行。

务必要先定义附加到 receiving_lc 的方法，然后再调用此方法，如本节的所有示例所示。

默认情况下，Flash Player 将 connectionName 解析为 "superdomain:connectionName" 格式的值，其中 superdomain 是包含 LocalConnection.connect() 命令的 SWF 文件的超域。例如，如果包含接收方 LocalConnection 对象的 SWF 文件位于 www.someDomain.com，则 connectionName 解析为 "someDomain.com:connectionName"。（如果 SWF 文件位于客户机上，则赋予 superdomain 的值为 "localhost"。）

此外，在默认情况下，Flash Player 只允许接收方 LocalConnection 对象从其连接名称也解析为 "superdomain:connectionName" 的值的发送方 LocalConnection 对象中接受命令。这样，Flash 就使得位于同一个域中的 SWF 文件可以很容易地相互通讯。

如果您仅在同一个域中的 SWF 文件之间实现通讯，请为 connectionName 指定一个不以下划线 (_) 开头且不指定域名的字符串（例如 "myDomain:connectionName"）。在 LocalConnection.connect(connectionName) 命令中使用相同的字符串。

如果您在位于不同域的 SWF 文件之间实现通讯，请参见 LocalConnection.send() 中对 connectionName 的讨论，以及 LocalConnection.allowDomain 和 LocalConnection.domain() 条目。

示例

以下示例显示特定域中的 SWF 文件如何调用同一域的接收方 SWF 文件中名为 Trace 的方法。接收方 SWF 文件充当发送方 SWF 文件的跟踪窗口；它包含其它 SWF 文件可以调用的两个方法：Trace 和 Clear。在发送方 SWF 文件中所按的按钮以指定的参数调用这些方法。

// 接收方 SWF
var aLocalConnection = new LocalConnection();
aLocalConnection.Trace = function(aString)
{
  aTextField = aTextField + aString + newline;
}
aLocalConnection.Clear = function()
{
  aTextField = "";
}
aLocalConnection.connect("trace");
stop();

SWF 1 包含附加到带 PushMe 标签的按钮的以下代码。当您按该按钮时，将在接收方 SWF 文件中看到句子“已按下该按钮”。

on (press)
{
  var lc = new LocalConnection();
  lc.send("trace", "Trace", "已按下该按钮。");
  delete lc;
}

SWF 2 包含变量名为 myText 的输入文本框以及附加到带标签 Copy 的按钮的以下代码。在您键入一些文本并按该按钮后，将在接收方 SWF 文件中看到您键入的文本。

on (press)
{
  _parent.lc.send("trace", "Trace", _parent.myText);
  _parent.myText = "";
}

SWF 3 包含附加到带标签 Clear 的按钮的以下代码。当您按该按钮时，将清除（擦除）接收方 SWF 文件的跟踪窗口中的内容。

on (press)
{
  var lc = new LocalConnection();
  lc.send("trace", "Clear");
  delete lc;
}

另请参见

LocalConnection.send()


LocalConnection.domain()

可用性

Flash Player 6；行为在 Flash Player 7 中进行了更改。

用法

my_lc.domain()

参数

无。

返回

一个字符串，表示当前 SWF 文件的位置的域；有关详细信息，请参见下面的“说明”。

说明

方法；返回表示当前 SWF 文件所在位置的域的字符串。

在以 Flash Player 6 为目标播放器发布的 SWF 文件中，返回的字符串是当前 SWF 文件的超域。例如，如果 SWF 文件位于 www.macromedia.com，则此命令将返回 "macromedia.com"。

在以 Flash Player 7 或更高版本为目标播放器发布的 SWF 文件中，返回的字符串是当前 SWF 文件的确切域。例如，如果 SWF 文件位于 www.macromedia.com，则此命令将返回 "www.macromedia.com"。

如果当前 SWF 文件是驻留在客户机上的本地文件，此命令将返回 "localhost"。

此命令最常见的用法是包含发送方 LocalConnection 对象的域名作为要在接收方 LocalConnection 对象中调用的方法的参数，或者与 LocalConnection.allowDomain 一起使用来接受来自指定域中的命令。如果您仅启用位于同一个域的 LocalConnection 对象之间的通讯，则可能不需要使用此命令。

示例

在以下示例中，接收方 SWF 文件仅接受来自位于同一个域或位于 macromedia.com 的 SWF 文件的命令。

my_lc = new LocalConnection();
my_lc.allowDomain = function(sendingDomain)
{
  return (sendingDomain==this.domain() || sendingDomain=="macromedia.com");
}

在下面的示例中，位于 yourdomain.com 的发送方 SWF 文件调用位于 mydomain.com 的接收方 SWF 文件中的方法。发送方 SWF 文件包含其域名作为它所调用的方法的参数，使接收方 SWF 文件能够返回对正确域中的 LocalConnection 对象的应答值。发送方 SWF 文件还指定它将只接受来自位于 mydomain.com 的 SWF 文件的命令。

为了便于参考，代码中包含了行号。事件的顺序如下：

  • 接收方 SWF 文件准备在名为 "sum" 的连接（第 11 行）上接收命令。Flash Player 将此连接的名称解析为 "mydomain.com:sum"（请参见 LocalConnection.connect()）。
  • 发送方 SWF 文件准备在名为 "result" 的 LocalConnection 对象（第 58 行）上接收应答。它还指定它将只接受来自位于 mydomain.com 的 SWF 文件的命令（第 51 行到第 53 行）。
  • 发送方 SWF 文件调用名为 "mydomain.com:sum" 的连接的 aSum 方法（第 59 行），然后传递以下参数：它的域 (lc.domain())、接收应答的连接的名称 ("result") 和 aSum 所使用的值（123 和 456）。
  • 使用以下值调用 aSum 方法（第 6 行）：sender = "mydomain.com:result"、replyMethod = "aResult"、n1 = 123 和 n2 = 456。因此，它执行以下代码行：
    this.send("mydomain.com:result", "aResult", (123 + 456));
  • aResult 方法（第 54 行）显示 aSum 返回的值 (579)。
    // 位于 http://www.mydomain.com/folder/movie.swf 的接收方 SWF
// 包含以下代码

1     var aLocalConnection = new LocalConnection();
2     aLocalConnection.allowDomain = function()
3     {
    // 允许任何域中的连接
4      return true;
5     }
6    aLocalConnection.aSum = function(sender, replyMethod, n1, n2)
7    {
8      this.send(sender, replyMethod, (n1 + n2));
9    }
10
11    aLocalConnection.connect("sum");

// 位于 http://www.yourdomain.com/folder/movie.swf 的发送方 SWF
// 包含以下代码

50    var lc = new LocalConnection();
51    lc.allowDomain = function(aDomain) {
      // 只允许 mydomain.com 中的连接
52      return (aDomain == "mydomain.com");
53    }
54    lc.aResult = function(aParam) {
55      trace("The sum is " + aParam);
56    }
57
58    lc.connect("result");
59    lc.send("mydomain.com:sum", "aSum", lc.domain() + ':'+ "result",
          "aResult", 123, 456);

另请参见

LocalConnection.allowDomain


LocalConnection.onStatus

可用性

Flash Player 6。

用法

sending_lc.onStatus = function(infoObject) {
  // 此处是您的语句
}

参数

infoObject 按照状态消息定义的参数。有关此参数的详细信息，请参见下面的“说明”。

返回

无。

说明

事件处理函数；在发送方 LocalConnection 对象尝试向接收方 LocalConnection 对象发送命令之后调用。如果要对此事件处理函数做出响应，则必须创建一个函数来处理 LocalConnection 对象所发送的信息对象。

如果此事件处理函数返回的信息对象包含 "Status" 的 level 值，则表明 Flash 已将该命令成功发送到接收方 LocalConnection 对象。这并不意味着 Flash 已成功调用接收方 LocalConnection 对象的指定方法，而只表示 Flash 能够发送该命令。例如，如果接收方 LocalConnection 对象不允许从发送方域建立连接，或者该方法不存在，则不调用该方法。确知是否已调用该方法的唯一方式是让接收方对象向发送方对象发送应答。

如果此事件处理函数返回的信息对象包含 "Error" 的 level 值，则表明 Flash 无法将该命令发送到接收方 LocalConnection 对象，这很可能是因为未连接这样的接收方 LocalConnection 对象：其名称对应于调用此处理函数的 sending_lc.send() 命令中所指定的名称。

除了此 onStatus 处理函数外，Flash 还提供称作 System.onStatus 的“超级”函数。如果为特定对象调用了 onStatus 但未分配任何函数对其进行响应，则 Flash 将处理分配到 System.onStatus 的函数（如果存在）。

大多数情况下，实现此处理函数只是为了对错误条件做出响应，如以下示例所示。

示例

以下示例显示关于“输出”面板中的失败连接的信息：

sending_lc = new LocalConnection();
sending_lc.onStatus = function(infoObject)
{
  if (infoObject.level == "Error")
  {
    trace("Connection failed.");
  }
}
sending_lc.send("receiving_lc", "methodName");

另请参见

LocalConnection.send(), System.onStatus


LocalConnection.send()

可用性

Flash Player 6。

用法

sending_lc.send (connectionName, method [, p1,...,pN])

参数

connectionName 一个字符串，对应于要与 sending_lc 通讯的 LocalConnection.connect() 命令中所指定的连接名称。

method 一个字符串，指定要在接收方 LocalConnection 对象中调用的方法的名称。以下方法名称会导致该命令失败：send、connect、close、domain、onStatus 和 allowDomain。

p1,...pN 要传递给指定方法的可选参数。

返回

如果 Flash 可以执行请求，则返回布尔值 true；否则，返回 false。

注意：返回值为 true 并不一定表示 Flash 已成功连接到接收方 LocalConnection 对象，而只表示该命令在语句构成上正确。若要确定连接是否成功，请参见 LocalConnection.onStatus。

说明

方法；在用 LocalConnection.connect(connectionName) 命令（称作“接收方 LocalConnection 对象”）打开的连接上调用名为 method 的方法。与此命令一起使用的对象称作“发送方 LocalConnection 对象”。包含发送方对象的 SWF 文件和包含接收方对象的 SWF 文件必须在同一台客户机上运行。

您能够以参数形式传递给此命令的数据量是有限的。如果该命令返回 false 但您的语法却是正确的，请尝试将 LocalConnection.send() 请求拆分成多个命令。

如 LocalConnection.connect() 条目所述，Flash 在默认情况下会将当前超域添加到 connectionName。如果您在不同的域之间实现通讯，则需要在发送方 LocalConnection 对象中以及接收方 LocalConnection 对象中定义 connectionName，使 Flash 不会将当前超域添加到 connectionName。这可以通过两种方法来实现：

  • 在发送方 LocalConnection 对象和接收方 LocalConnection 对象中 connectionName 的开头使用下划线 (_)。在包含接收方对象的 SWF 文件中，使用 LocalConnection.allowDomain 指定将接受来自任何域的连接。这一实现使您可以存储任何域中的发送方 SWF 文件和接收方 SWF 文件。
  • 将 connectionName 中的超域包含在发送方 LocalConnection 对象中，例如 myDomain.com:myConnectionName。在接收方对象中，使用 LocalConnection.allowDomain 指定将接受来自指定超域的连接（本例中为 myDomain.com），或者将接受来自任何域的连接。

注意：不能在接收方 LocalConnection 对象（只能在发送方 LocalConnection 对象）中指定 connectionName 中的超域。

示例

有关位于同一个域中的 LocalConnection 对象之间的通讯的示例，请参见 LocalConnection.connect()。有关位于任何域的 LocalConnection 对象之间的通讯的示例，请参见 LocalConnection.allowDomain。有关位于指定域的 LocalConnection 对象之间的通讯的示例，请参见 LocalConnection.allowDomain 和 LocalConnection.domain()。

另请参见

LocalConnection.allowDomain, LocalConnection.connect(), LocalConnection.domain(), LocalConnection.onStatus


lt（小于 - 字符串专用）

可用性

Flash Player 4。不鼓励在 Flash 5 中使用此运算符，而推荐使用新的 <（小于） 运算符。

用法

expression1 lt expression2

参数

expression1、expression2 数字、字符串或变量。

说明

运算符（比较）；比较 expression1 与 expression2，如果 expression1 小于 expression2，则返回 true；否则，返回 false。

另请参见

<（小于）


Math 类

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

说明

Math 类是一个顶级类，不必使用构造函数即可使用其方法和属性。

使用该类的方法和属性可以访问和处理数学常数和函数。Math 类的所有属性和方法都是静态的，并且必须使用语法 Math.method(parameter) 或 Math.constant 来调用。在动作脚本中，使用双精度 IEEE-754 浮点数的最高精度定义常数。

有几个 Math 类的方法使用角的弧度作为参数。可以用下面的等式来计算弧度值，或者只需为弧度参数传递该等式（输入度数值）。

若要计算弧度值，请使用该公式：

radian = Math.PI/180 * degree

下面的示例将等式作为参数来传递，以计算一个 45 度角的正弦值：

Math.SIN(Math.PI/180 * 45) 与 Math.SIN(.7854) 相同

Flash Player 5 完全支持 Math 类。在 Flash Player 4 中，可以使用 Math 类的方法，但是这些方法是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

Math 类的方法概要

方法 | 说明
Math.abs() | 计算绝对值。
Math.acos() | 计算反余弦值。
Math.asin() | 计算反正弦值。
Math.atan() | 计算反正切值。
Math.atan2() | 计算从 x 坐标轴到点的角度。
Math.ceil() | 将数字向上舍入为最接近的整数。
Math.cos() | 计算余弦值。
Math.exp() | 计算指数值。
Math.floor() | 将数字向下舍入为最接近的整数。
Math.log() | 计算自然对数。
Math.max() | 返回两个整数中较大的一个。
Math.min() | 返回两个整数中较小的一个。
Math.pow() | 计算 x 的 y 次方。
Math.random() | 返回一个 0.0 与 1.0 之间的伪随机数。
Math.round() | 四舍五入为最接近的整数。
Math.sin() | 计算正弦值。
Math.sqrt() | 计算平方根。
Math.tan() | 计算正切值。

Math 类的属性概要

Math 类的所有属性都是常数。

属性 | 说明
Math.E | 欧拉 (Euler) 常数，自然对数的底（大约为 2.718）。
Math.LN2 | 2 的自然对数（大约为 0.693）。
Math.LOG2E | e 的以 2 为底的对数（大约为 1.442）。
Math.LN2 | 10 的自然对数（大约为 2.302）。
Math.LOG10E | e 的以 10 为底的对数（大约为 0.434）。
Math.PI | 一个圆的周长与其直径的比值（大约为 3.14159）。
Math.SQRT1_2 | 1/2 的平方根的倒数（大约为 0.707）。
Math.SQRT2 | 2 的平方根（大约为 1.414）。


Math.abs()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.abs(x)

参数

x 数字。

返回

一个数字。

说明

方法；计算并返回由参数 x 指定的数字的绝对值。


Math.acos()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.acos(x)

参数

x 介于 -1.0 到 1.0 之间的数字。

返回

无。

说明

方法；以弧度为单位计算并返回参数 x 中指定的数字的反余弦值。


Math.asin()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.asin(x);

参数

x 介于 -1.0 到 1.0 之间的数字。

返回

一个数字。

说明

方法；以弧度为单位计算并返回参数 x 中指定的数字的反正弦值。


Math.atan()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.atan(x)

参数

x 表示角的正切值的数字。

返回

一个数字。

说明

方法；以弧度为单位计算并返回在参数 x 中指定的角的正切值。返回值介于负二分之 pi 与正二分之 pi 之间。

另请参见

Math.atan2(), Math.tan()


Math.atan2()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.atan2(y, x)

参数

y 指定点的 y 坐标的数字。

x 指定点的 x 坐标的数字。

返回

一个数字。

说明

方法；当从圆的 X 轴逆时针测量时，以弧度为单位计算并返回点 y/x 的角（其中 0,0 表示圆心）。 返回值介于正 pi 和负 pi 之间。

另请参见

Math.atan(), Math.tan()


Math.ceil()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.ceil(x)

参数

x 数字或表达式。

返回

一个数字。

说明

方法；返回指定数字或表达式的上限值。数字的上限值是大于等于该数字的最接近的整数。


Math.cos()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.cos(x)

参数

x 以弧度为单位的角度值。

返回

一个数字。

说明

方法；返回由参数 x 指定的角的余弦值（介于 -1.0 与 1.0 之间的值）。必须以弧度为单位指定角度 x。使用 Math 类条目中概述的信息来计算弧度。


Math.E

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.E

参数

无。

返回

无。

说明

常数；代表自然对数的底的数学常数，表示为 e。e 的近似值为 2.71828。


Math.exp()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.exp(x)

参数

x 指数；数字或表达式。

返回

一个数字。

说明

方法；返回 e 的 x 次方的值，其中 e 为自然对数的底 (e)，x 为参数 x 中指定的指数。常数 Math.E 可以提供 e 的值。


Math.floor()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.floor(x)

参数

x 数字或表达式。

返回

一个数字。

说明

方法；返回参数 x 中指定的数字或表达式的下限值。下限值是小于等于指定数字或表达式的最接近的整数。

示例

下面的代码返回一个值 12：

Math.floor(12.5);


Math.log()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.log(x)

参数

x 其值大于 0 的数字或表达式。

返回

一个数字。

说明

方法；返回参数 x 的对数。


Math.LN2

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.LN2

参数

无。

返回

无。

说明

常数；代表 2 的自然对数的数学常数，表示为 loge2，其值大约为 0.69314718055994528623。


Math.LN10

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.LN10

参数

无。

返回

无。

说明

常数；代表 10 的自然对数的数学常数，表示为 loge10，其值大约为 2.3025850929940459011。


Math.LOG2E

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.LOG2E

参数

无。

返回

无。

说明

常数；代表常数 e (Math.E) 的以 2 为底的对数的数学常数，表示为 log2e，其值大约为 1.442695040888963387。


Math.LOG10E

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.LOG10E

参数

无。

返回

无。

说明

常数；代表常数 e (Math.E) 的以 10 为底的对数的数学常数，表示为 log10e，其值大约为 0.43429448190325181667。


Math.max()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.max(x , y)

参数

x 数字或表达式。

y 数字或表达式。

返回

一个数字。

说明

方法；计算 x 和 y 并返回较大的值。


Math.min()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.min(x , y)

参数

x 数字或表达式。

y 数字或表达式。

返回

一个数字。

说明

方法；计算 x 和 y 并返回较小的值。


Math.PI

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.PI

参数

无。

返回

无。

说明

常数；代表一个圆的周长与其直径的比值的数学常数，表示为 pi，其值大约为 3.14159265358979。


Math.pow()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.pow(x , y)

参数

x 将自乘的数字。

y 指定参数 x 自乘幂的数字。

返回

一个数字。

说明

方法；计算并返回 x 的 y 次方：xy。


Math.random()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.random()

参数

无。

返回

一个数字。

说明

方法；返回 n，其中 0 <= n < 1。

另请参见

random


Math.round()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.round(x)

参数

x 数字。

返回

一个数字。

说明

方法；将参数 x 的值向上或向下舍入为最接近的整数并返回值。


Math.sin()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.sin(x)

参数

x 以弧度为单位的角度值。

返回

数字；指定角度的正弦（-1.0 和 1.0 之间）。

说明

方法；计算并返回以弧度为单位指定的角度的正弦值。使用 Math 类条目中概述的信息来计算弧度。


Math.sqrt()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.sqrt(x)

参数

x 一个大于等于 0 的数字或表达式。

返回

一个数字。

说明

方法；计算并返回指定数字的平方根。


Math.SQRT1_2

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.SQRT1_2

参数

无。

返回

无。

说明

常数；代表 1/2 的平方根的数学常数。


Math.SQRT2

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.SQRT2

参数

无。

返回

无。

说明

常数；代表 2 的平方根的数学常数，其值大约为 1.414213562373。


Math.tan()

可用性

Flash Player 5。在 Flash Player 4 中，Math 类的方法和属性是使用近似值模拟的，可能不如 Flash Player 5 支持的非模拟数学函数那样精确。

用法

Math.tan(x)

参数

x 以弧度为单位的角度值。

返回

一个数字。

说明

方法；计算并返回指定角度的正切值。若要计算弧度，请使用 Math 类简介中所概述的信息。

另请参见

Math.atan()


maxscroll

可用性

Flash Player 4。不鼓励使用该函数，而推荐使用 TextField.maxscroll 属性。

用法

variable_name.maxscroll

说明

属性（只读）；一个不鼓励使用的属性，指示当字段中最底行也可见时，文本字段中最高文本可见行的行号。maxscroll 属性与 scroll 属性一起使用，来控制文本字段中信息的显示。该属性可被获取，但不能进行修改。

另请参见

TextField.maxscroll, TextField.scroll


mbchr

可用性

Flash Player 4。不鼓励使用该函数，而推荐使用 String.fromCharCode() 方法。

用法

mbchr(number)

参数

number 要转换为多字节字符的数字。

返回

字符串。

说明

字符串函数；将 ASCII 码数字转换为多字节字符。

另请参见

String.fromCharCode()


mblength

可用性

Flash Player 4。不鼓励使用该函数，而推荐使用 String 类。

用法

mblength(string)

参数

string 字符串。

返回

一个数字。

说明

字符串函数；返回多字节字符串的长度。


mbord

可用性

Flash Player 4。不鼓励在 Flash 5 中使用该函数，而推荐使用 String.charCodeAt()。

用法

mbord(character)

参数

character 要转换为多字节数字的字符。

返回

一个数字。

说明

字符串函数；将指定的字符转换为多字节数字。

另请参见

String.fromCharCode()


mbsubstring

可用性

Flash Player 4。不鼓励在 Flash 5 中使用该函数，而推荐使用 String.substr()。

用法

mbsubstring(value, index, count)

参数

value 要从其中提取新的多字节字符串的多字节字符串。

index 要提取的第一个字符的编号。

count 要包含在所提取字符串中的字符数，其中不包括 index 字符。

返回

字符串。

说明

字符串函数；从多字节字符串中提取一个新的多字节字符串。

另请参见

String.substr()


Microphone 类

可用性

Flash Player 6。

说明

Microphone 类用于从运行 Flash Player 的计算机上所连接的麦克风中捕获音频。

Microphone 类主要与 Flash Communication Server 一起使用，但在没有该服务器的情况下也能以有限的方式使用，例如通过本地系统上的扬声器传送麦克风中的声音。

若要创建或引用 Microphone 对象，请使用 Microphone.get() 方法。

Microphone 类的方法概要

方法 | 说明
Microphone.get() | 返回默认或指定的 Microphone 对象，如果麦克风不可用，则返回 null。
Microphone.setGain() | 指定麦克风信号的提升量。
Microphone.setRate() | 以 kHz 为单位指定麦克风的声音捕获频率。
Microphone.setSilenceLevel() | 指定激活麦克风所需的音量。
Microphone.setUseEchoSuppression() | 指定是否使用音频编解码器的回声抑制功能。

Microphone 类的属性概要

属性（只读） | 说明
Microphone.activityLevel | 麦克风所检测的音量。
Microphone.gain | 麦克风在传送信号前将信号提升的增益量。
Microphone.index | 当前麦克风的索引。
Microphone.muted | 布尔值，指定用户是允许还是拒绝对麦克风的访问。
Microphone.name | 当前声音捕获设备的名称，它由声音捕获硬件返回。
Microphone.names | 类属性：字符串的数组，反映所有可用的声音捕获设备（包括声卡和麦克风）的名称。
Microphone.rate | 声音捕获频率，单位为 kHz。
Microphone.silenceLevel() | 激活麦克风所需的音量。
Microphone.silenceTimeout() | 麦克风停止检测声音和调用 Microphone.onActivity(false) 这两个时间之间的毫秒数。
Microphone.useEchoSuppression() | 布尔值，指示是否使用回声抑制。

Microphone 类的事件处理函数概要

事件处理函数 | 说明
Microphone.onActivity | 在麦克风开始或停止检测声音时调用。
Microphone.onStatus | 在用户允许或拒绝对麦克风的访问时调用。

Microphone 类的构造函数

请参见 Microphone.get()。


Microphone.activityLevel

可用性

Flash Player 6。

用法

activeMicrophone.activityLevel

说明

只读属性；指定麦克风所检测的音量的数字值。值的范围从 0（未检测到声音）到 100（检测到非常大的声音）。此属性的值有助于确定向 Microphone.setSilenceLevel() 方法传递的适当值。

如果麦克风可用，但却因为尚未调用 Microphone.get() 而未被使用，则此属性设置为 -1。

示例

以下示例将变量 level 设置为当前麦克风的活动级别 myMic.activityLevel。

var level = myMic.activityLevel;

另请参见

Microphone.setGain()


Microphone.gain

可用性

Flash Player 6。

用法

activeMicrophone.gain

说明

只读属性；麦克风信号的提升量。有效值的范围是 0 到 100。默认值为 50。

示例

以下示例附加到滑动条的尖端。当加载此剪辑时，Flash 将检查值 myMic.gain，如果该值未定义，则提供默认值。然后，使用 _x 位置将麦克风的增益设置为用户的首选项。

onClipEvent (load) {
  if (_root.myMic.gain == undefined) {
    _root.myMic.setGain = 75;
  }

  this._x = _root.myMic.gain;
  _root.txt_micgain = this._x;

  left = this._x;
  right = left+50;
  top = this._y;
  bottom = top;
}

on (press) {
  startDrag(this, false, left, top, right, bottom);
  this._xscale = 100;
  this._yscale = 100;
}

on (release, releaseOutside) {
  stopDrag();
  g = (this._x-50)*2;
  _root.myMic.setGain(g);
  _root.txt_micgain = g;
  this._xscale = 100;
  this._yscale = 100;
}

另请参见

Microphone.setGain()


Microphone.get()

可用性

Flash Player 6。

用法

Microphone.get([index])

注意：正确的语法为 Microphone.get()。若要将 Microphone 对象分配给变量，请使用类似于 active_mic = Microphone.get() 的语法。

参数

index 一个从零开始的可选整数，指定要获取的麦克风，该整数根据 Microphone.names 包含的数组确定。若要获取默认的麦克风（建议大多数应用程序采用此设置），请省略此参数。

返回

  • 如果未指定 index，此方法将返回对默认麦克风的引用，如果默认麦克风不可用，则返回对第一个可用麦克风的引用。如果没有可用的麦克风或者未安装麦克风，该方法将返回 null。
  • 如果已指定 index，此方法将返回对所请求麦克风的引用，如果该麦克风不可用，则返回 null。

说明

方法；返回用于捕获音频的 Microphone 对象的引用。若要实际开始捕获音频，必须将 Microphone 对象附加到 MovieClip 对象（请参见 MovieClip.attachAudio()）。

与使用 new 构造函数创建的对象不同，对 Microphone.get() 的多次调用会引用相同的麦克风。因此，如果您的脚本包含代码行 mic1 = Microphone.get() 和 mic2 = Microphone.get()，mic1 和 mic2 均引用相同的（默认）麦克风。

通常情况下，不应该为 index 传递值，而应使用 Microphone.get() 方法返回对默认麦克风的引用。通过“麦克风设置”面板（将在本节的后面部分讨论），用户可以指定 Flash 应该使用的默认麦克风。如果为 index 传递值，则可能会试图引用用户首选项之外的麦克风。您可能会在极少见的情况下（即您的应用程序同时从两个麦克风中捕获音频）使用 index。

当 SWF 文件尝试访问 Microphone.get() 方法返回的麦克风时（例如，当您发出 MovieClip.attachAudio() 时），Flash Player 将显示一个“隐私”对话框，让用户选择是允许还是拒绝对麦克风的访问。（确保舞台大小至少为 215 x 138 像素；这是 Flash 显示该对话框所需的最小大小。）

当用户对此对话框做出响应时，Microphone.onStatus 事件处理函数将返回指示用户响应的信息对象。若要在不处理此事件处理函数的情况下确定用户是拒绝还是允许对摄像机的访问，请使用 Microphone.muted。

用户也可以为特定域指定永久隐私设置，方法是在 SWF 文件播放过程中右击 (Windows) 或按住 Control 键单击 (Macintosh)，选择“设置”，打开“隐私”面板，然后选择“记住”。

如果 Microphone.get() 返回 null，则表明麦克风正在由另一个应用程序使用，或者系统上没有安装麦克风。若要确定是否已安装麦克风，请使用 Microphones.names.length。若要显示 Flash Player“麦克风设置”面板（让用户选择 Microphone.get() 所引用的麦克风），请使用 System.showSettings(2)。

示例

以下示例让用户指定默认麦克风，然后捕获音频并在本地回放。若要避免回馈，可能需要带着耳机测试此代码。

System.showSettings(2);
myMic = Microphone.get();
_root.attachAudio(myMic);

另请参见

Microphone.index, Microphone.muted, Microphone.names, Microphone.onStatus, MovieClip.attachAudio()


Microphone.index

可用性

Flash Player 6。

用法

activeMicrophone.index

说明

只读属性；从零开始的整数，指定麦克风的索引，它反映在 Microphone.names 返回的数组中。

另请参见

Microphone.get(), Microphone.names


Microphone.muted

可用性

Flash Player 6。

用法

activeMicrophone.muted

说明

只读属性；布尔值，指定用户是已经拒绝对麦克风的访问 (true) 还是已经允许访问 (false)。当此值出现更改时，将调用 Microphone.onStatus。有关更多信息，请参见Microphone.get()。

示例

在以下示例中，当用户单击该按钮时，如果麦克风不处于静音状态，Flash 将发布并播放实时流。

on (press)
{
  // 如果用户将麦克风设置为静音，则显示脱机通知。
  // 否则，从麦克风中发布并播放实时流。
  if(myMic.muted) {
    _root.debugWindow+="Microphone offline."newline
  } else {

    // 通过调用根函数 pubLive()
    // 发布麦克风数据。
    _root.pubLive();

    // 播放通过调用根函数 pubLive()
    // 所发布的内容。
    _root.playLive();
  }
}

另请参见

Microphone.get(), Microphone.onStatus


Microphone.name

可用性

Flash Player 6。

用法

activeMicrophone.name

说明

只读属性；指定当前声音捕获设备的名称的字符串，它由声音捕获硬件返回。

示例

以下示例显示“输出”面板中默认麦克风的名称。

myMic = Microphone.get();
trace("The microphone name is:" + myMic.name);

另请参见

Microphone.get(), Microphone.names


Microphone.names

可用性

Flash Player 6。

用法

Microphone.names

注意：正确的语法是 Microphone.names。若要将返回值赋予变量，请使用类似于 mic_array = Microphone.names 的语法。若要确定当前麦克风的名称，请使用 activeMicrophone.name。

说明

只读类属性；获取反映所有可用声音捕获设备名称的字符串数组，而不显示 Flash Player“隐私设置”面板。此数组的行为与其它任何动作脚本数组均相同，即隐式提供每个声音捕获设备的从零开始索引以及系统上的声音捕获设备数量（通过 Microphone.names.length）。有关更多信息，请参见 Array 类条目。

若要调用 Microphone.names，需要广泛地检查硬件，而建立数组可能需要几秒钟的时间。大多数情况下，使用默认麦克风即可。

示例

以下代码返回关于音频设备数组的信息。

allMicNames_array = Microphone.names;
_root.debugWindow += "Microphone.names located these device(s):"newline
for(i=0; i < allMicNames_array.length; i++){
  debugWindow += "[" + i + "]:" + allMicNames[i] + newline;
}

例如，可能会显示以下信息。

Microphone.names located these device(s):
[0]: Crystal SoundFusion(tm)
[1]: USB Audio Device

另请参见

Array 类, Microphone.name


Microphone.onActivity

可用性

Flash Player 6。

用法

activeMicrophone.onActivity = function(activity) {
  // 此处是您的语句
}

参数

activity 布尔值，在麦克风开始检测声音时设置为 true，在停止时设置为 false。

返回

无。

说明

事件处理函数；在麦克风开始或停止检测声音时调用。如果要对此事件处理函数做出响应，则必须创建一个函数来处理其 activity 值。

若要指定调用 Microphone.onActivity(true) 所需的音量以及在调用 Microphone.onActivity(false) 之前必须在无声状态下经过的时间，请使用 Microphone.setSilenceLevel()。

示例

当麦克风开始或停止检测声音时，以下示例显示在“输出”面板中显示 true 或 false。

m = Microphone.get();
_root.attachAudio(m);
m.onActivity = function(mode)
{
  trace(mode);
};

另请参见

Microphone.onActivity, Microphone.setSilenceLevel()


Microphone.onStatus

可用性

Flash Player 6。

用法

activeMicrophone.onStatus = function(infoObject) {
  // 此处是您的语句
}

参数

infoObject 按照状态消息定义的参数。

返回

无。

说明

事件处理函数；在用户允许或拒绝对麦克风的访问时调用。如果要对此事件处理函数做出响应，必须创建一个函数来处理麦克风生成的信息对象。

当 SWF 文件尝试访问麦克风时，Flash Player 将显示一个“隐私”对话框，用户可以在其中选择是允许还是拒绝访问。

  • 如果用户允许访问，则 Microphone.muted 属性设置为 false，并且用 code 属性为 "Microphone.Unmuted"、level 属性为 "Status" 的信息对象调用此事件处理函数。
  • 如果用户拒绝访问，则 Microphone.muted 属性设置为 true，并且用 code 属性为 "Microphone.Muted"、level 属性为 "Status" 的信息对象调用此事件处理函数。

若要在不处理此事件处理函数的情况下确定用户是拒绝还是允许对麦克风的访问，请使用 Microphone.muted。

注意：如果用户选择永久允许或拒绝对来自指定域的所有 SWF 文件的访问，则对于来自该域的 SWF 文件不调用此方法，除非用户以后更改该隐私设置。有关更多信息，请参见Microphone.get()。

示例

请参见 Camera.onStatus 的示例。

另请参见

Microphone.get(), Microphone.muted


Microphone.rate

可用性

Flash Player 6。

用法

activeMicrophone.rate

说明

只读属性；麦克风的声音捕获频率，单位为 kHz。如果您的声音捕获设备支持，则默认值为 8 kHz。否则，默认值为您的声音捕获设置支持且高于 8 kHz 的下一个可用捕获级别，这通常是 11 kHz。

若要设置此值，请使用 Microphone.setRate()。

示例

以下示例将当前频率保存到变量 original。

original = myMic.rate;

另请参见

Microphone.setRate()


Microphone.setGain()

可用性

Flash Player 6。

用法

activeMicrophone.setGain(gain)

参数

gain 指定麦克风信号提升量的整数。有效值的范围是 0 到 100。默认值为 50；但是，用户可以在 Flash Player“麦克风设置”面板中更改该值。

返回

无。

说明

方法；设置麦克风增益，即麦克风在传送信号之前应该将信号加倍的数量。值为 0 将指示 Flash 乘以 0；即，麦克风不传送任何声音。

您可以将此设置视为立体声音响上的音量旋钮：0 表示无音量，50 表示正常音量；小于 50 的数字指定低于正常音量，而大于 50 的数字指定高于正常音量。

示例

以下示例确保麦克风增益设置小于或等于 55。

var myMic = Microphone.get();
if (myMic.gain > 55){
  myMic.setGain(55);
}

另请参见

Microphone.gain, Microphone.setUseEchoSuppression()


Microphone.setRate()

可用性

Flash Player 6。

用法

activeMicrophone.setRate(kHz)

参数

kHz 麦克风捕获声音的频率，单位是 kHz。可接受的值为 5、8、11、22 和 44。如果您的声音捕获设备支持，则默认值为 8 kHz。否则，默认值为您的声音捕获设置支持且高于 8 kHz 的下一个可用捕获级别，这通常是 11 kHz。

返回

无。

说明

方法；设置麦克风捕获声音的频率，单位是 kHz。

示例

以下示例将麦克风频率设置为用户的首选项（已经赋予 userRate 变量的值），前提是它是以下值之一：5、8、11、22 或 44。否则，该值将舍入到最近似的且声音捕获设备支持的可接受值。

myMic.setRate(userRate);

另请参见

Microphone.rate


Microphone.setSilenceLevel()

可用性

Flash Player 6。

用法

activeMicrophone.setSilenceLevel(level [, timeout])

参数

level 整数，指定激活麦克风和调用 Microphone.onActivity(true) 所需的音量。可接受值的范围是 0 到 100。默认值为 10。

timeout 可选的整数参数，指定必须经过多少毫秒的不活动时间，Flash 才能认为声音已停止并调用 Microphone.onActivity(false)。默认值为 2000（2 秒）。

返回

无。

说明

方法；设置应该被视为有声的最小输入级别以及（可选）指示静音已实际启用的静音时间。

  • 若要防止麦克风检测到任何声音，请为 level 传递值 100；这样就决不会调用 Microphone.onActivity。
  • 若要确定麦克风当前所检测的音量，请使用 Microphone.activityLevel。

活动检测是检测声音级别在何时表示某人正在谈话的功能。当某人没有谈话时，由于不需要发送关联的音频流，因此可以节约带宽。此信息也可用于视频反馈，以便让用户知道他们（或其他人）没有谈话。

静音值与活动值直接对应。完全静音对应于活动值 0。持续噪音（可以根据当前增益设置检测到的噪音）对应于活动值 100。当增益得到适当调整之后，活动值将在您未谈话时小于静音值，而在您谈话时大于静音值。

此方法的用途与 Camera.setMotionLevel() 相同；这两种方法都用于指定应该在何时调用 onActivity 事件处理函数。但是这些方法对发布流具有非常不同的影响：

  • Camera.setMotionLevel() 用于检测运动，它不影响带宽用量。即使视频流未检测到运动，仍将发送视频。
  • Microphone.setSilenceLevel() 用于优化带宽。当音频流被视为静音时，将不发送任何音频数据。所发送的是一个指示静音已启动的消息。

示例

以下代码根据用户的输入更改静音级别。该按钮附加了以下代码：

on (press)
{
  this.makeSilenceLevel(this.silenceLevel);
}

该按钮调用的 makeSilenceLevel() 函数将继续：

function makeSilenceLevel(s)
{
  this.obj.setSilenceLevel(s);
  this.SyncMode();
  this.silenceLevel= s;
}

有关更多信息，请参见 Camera.setMotionLevel() 的示例。

另请参见

Microphone.activityLevel, Microphone.onActivity, Microphone.setGain(), Microphone.silenceLevel(), Microphone.silenceTimeout()


Microphone.setUseEchoSuppression()

可用性

Flash Player 6。

用法

activeMicrophone.setUseEchoSuppression(suppress)

参数

suppress 布尔值，指定是 (true) 否 (false) 应该使用回声抑制。

返回

无。

说明

方法；指定是否使用音频编解码器的回声抑制功能。默认值为 false，除非用户已经在 Flash Player“麦克风设置”面板中选择“降低回声”。

回声抑制是指降低音频回馈效果，当麦克风发出的声音由同一台计算机上的麦克风拾取时，将导致音频回馈。（这不同于回声消除，后者完全消除回馈。）

通常情况下，当所捕获的声音通过同一台计算机上的扬声器（而不是耳机）播放时，建议使用回声抑制。如果您的 SWF 文件允许用户指定声音输出设备，则当他们指出他们正在使用扬声器并且还将使用麦克风时，可能需要调用 Microphone.setUseEchoSuppression(true)。

用户也可以在 Flash Player“麦克风设置”面板中调整这些设置。

示例

以下示例启用回声抑制。

my_mic.setUseEchoSuppression(true);

另请参见

Microphone.setGain(), Microphone.useEchoSuppression()


Microphone.silenceLevel()

可用性

Flash Player 6。

用法

activeMicrophone.silenceLevel

说明

只读属性；指定激活麦克风和调用 Microphone.onActivity(true) 所需的音量的整数。默认值为 10。

示例

请参见 Microphone.silenceTimeout() 的示例。

另请参见

Microphone.gain, Microphone.setSilenceLevel()


Microphone.silenceTimeout()

可用性

Flash Player 6。

用法

activeMicrophone.silenceTimeout

说明

只读属性；表示麦克风停止检测声音和调用 Microphone.onActivity(false) 这两个事件之间的毫秒数的数字值。默认值为 2000（2 秒）。

若要设置此值，请使用 Microphone.setSilenceLevel()。

示例

以下示例将超时设置为其当前值的两倍。

myMic.setSilenceLevel(myMic.silenceLevel, myMic.silenceTimeOut * 2);

另请参见

Microphone.setSilenceLevel()


Microphone.useEchoSuppression()

可用性

Flash Player 6。

用法

activeMicrophone.useEchoSuppression

说明

只读属性；如果启用回声抑制，则为布尔值 true；否则为 false。默认值为 false，除非用户已经在 Flash Player“麦克风设置”面板上选择“降低回声”。

示例

以下示例检查回声抑制，如果它尚未启用，则将其启用。

_root.myMic.onActivity = function(active) {
  if (active == true) {
    if (_root.myMic.useEchoSuppression == false) {
      _root.myMic.setUseEchoSuppression(true);
    }
  }
}

另请参见

Microphone.setUseEchoSuppression()


MMExecute()

可用性

Flash Player 7。

用法

MMExecute("Flash JavaScript API command;")

参数

Flash JavaScript API command 您可以在 Flash JavaScript (JSFL) 文件中使用的任何命令。

返回

JavaScript 语句发送的结果（如果有）。

说明

函数；可用于从动作脚本中发出 Flash JavaScript API 命令。

Flash JavaScript API (JSAPI) 提供若干对象、方法和属性，以重制或模拟用户可以在创作环境中输入的命令。使用 JSAPI，您可以编写通过以下若干方式扩展 Flash 的脚本：向菜单添加命令、处理舞台上的对象和重复命令序列等。

通常，用户通过选择“命令”>“运行命令”运行 JSAPI 脚本。不过，您可以在动作脚本中使用此函数以直接调用 JSAPI 命令。如果您在文件的第 1 帧上的脚本中使用 MMExecute()，则该命令在加载 SWF 文件时执行。

有关 JSAPI 的更多信息，请参见 www.macromedia.com/go/JSAPI_info_zh_cn。

示例

下面的命令返回库中对象的数组：

var libe:Array = MMExecute("fl.getDocumentDOM().library.items;");
trace(libe.length + " items in library");


Mouse 类

可用性

Flash Player 5。

说明

Mouse 类是不通过构造函数即可访问其属性和方法的顶级类。您可以使用 Mouse 类的方法来隐藏和显示 SWF 文件中的鼠标指针（光标）。默认情况下鼠标指针是可见的，但是您可以将其隐藏并实现用影片剪辑创建的自定义指针（请参见创建自定义鼠标指针）。

Mouse 类的方法概要

方法 | 说明
Mouse.addListener() | 注册一个对象以接收 onMouseDown、onMouseMove 和 onMouseUp 通知。
Mouse.hide() | 隐藏 SWF 文件中的鼠标指针。
Mouse.removeListener() | 删除用 addListener() 注册的对象。
Mouse.show() | 在 SWF 文件中显示鼠标指针。

Mouse 类的侦听器概要

方法 | 说明
Mouse.onMouseDown | 按下鼠标按钮时获得通知。
Mouse.onMouseMove | 移动鼠标按钮时获得通知。
Mouse.onMouseUp | 释放鼠标按钮时获得通知。
Mouse.onMouseWheel | 当用户滚动鼠标滚轮时获得通知。


Mouse.addListener()

可用性

Flash Player 6。

用法

Mouse.addListener (newListener)

参数

newListener 一个对象。

返回

无。

说明

方法；注册一个对象以接收 onMouseDown、onMouseMove 和 onMouseUp 侦听器的通知。

newListener 参数应该包含一个带有为 onMouseDown、onMouseMove 和 onMouseUp 侦听器定义的方法的对象。

当按下、移动或释放鼠标时，不论输入焦点位于何处，用此方法注册的所有侦听对象都调用其 onMouseDown、onMouseMove 或 onMouseUp 方法。可以有多个对象侦听鼠标通知。如果已经注册了侦听器 newListener，则不会发生任何更改。

另请参见

Mouse.onMouseDown, Mouse.onMouseMove, Mouse.onMouseUp


Mouse.hide()

可用性

Flash Player 5。

用法

Mouse.hide()

参数

无。

返回

布尔值：如果指针可见，则为 true；如果指针不可见，则为 false。

说明

方法；隐藏 SWF 文件中的指针。指针在默认情况下可见。

示例

附加到主时间轴上影片剪辑的以下代码会隐藏标准指针，并将 customPointer_mc 影片剪辑实例的 x 和 y 位置设置为主时间轴中的 x 和 y 鼠标位置。

onClipEvent (enterFrame) {
  Mouse.hide();
  customPointer_mc._x = _root._xmouse;
  customPointer_mc._y = _root._ymouse;
}

另请参见

Mouse.show(), MovieClip._xmouse, MovieClip._ymouse


Mouse.onMouseDown

可用性

Flash Player 6。

用法

someListener.onMouseDown

参数

无。

返回

无。

说明

侦听器；按下鼠标时获得通知。若要使用 onMouseDown 侦听器，必须先创建一个侦听器对象。然后可以为 onMouseDown 定义一个函数并使用 addListener() 向 Mouse 对象注册该侦听器，如以下代码所示：

someListener = new Object();
someListener.onMouseDown = function () { ... };
Mouse.addListener(someListener);

侦听器可以使不同的代码片段协同工作，因为多个侦听器可以接收有关单个事件的通知。

另请参见

Mouse.addListener()


Mouse.onMouseMove

可用性

Flash Player 6。

用法

someListener.onMouseMove

参数

无。

返回

无。

说明

侦听器；鼠标移动时获得通知。若要使用 onMouseMove 侦听器，必须先创建一个侦听器对象。然后可以为 onMouseMove 定义一个函数并使用 addListener() 向 Mouse 对象注册该侦听器，如以下代码所示：

someListener = new Object();
someListener.onMouseMove = function () { ... };
Mouse.addListener(someListener);

侦听器可以使不同的代码片段协同工作，因为多个侦听器可以接收有关单个事件的通知。

另请参见

Mouse.addListener()


Mouse.onMouseUp

可用性

Flash Player 6。

用法

someListener.onMouseUp

参数

无。

返回

无。

说明

侦听器；释放鼠标时获得通知。若要使用 onMouseUp 侦听器，必须先创建一个侦听器对象。然后可以为 onMouseUp 定义一个函数并使用 addListener() 方法向 Mouse 对象注册该侦听器，如以下代码所示：

someListener = new Object();
someListener.onMouseUp = function () { ... };
Mouse.addListener(someListener);

侦听器可以使不同的代码片段协同工作，因为多个侦听器可以接收有关单个事件的通知。

另请参见

Mouse.addListener()


Mouse.onMouseWheel

可用性

Flash Player 7（仅限 Windows）。

用法

someListener.onMouseWheel = function ( [ delta , scrollTarget ]) {
  // 此处是您的语句
}

参数

delta 一个可选数字，指示对于用户将鼠标滚轮滚动的每个刻度，屏幕上将滚动多少行。正 delta 值指示向上的滚动；而负值指示向下的滚动。常用值为 1 到 3，而较快的滚动可能产生较大的值。

如果您不想为 delta 指定值，但想为 scrollTarget 指定值，则为 delta 传递 null。

scrollTarget 当滚动鼠标滚轮时位于鼠标下的最顶部的影片剪辑实例。

返回

无。

说明

侦听器；在用户滚动鼠标滚轮时获得通知。若要使用 onMouseWheel 侦听器，必须先创建一个侦听器对象。然后可以为 onMouseWheel 定义一个函数并使用 addListener() 向 Mouse 对象注册该侦听器。

注意：鼠标滚轮事件侦听器只有在 Windows 版的 Flash Player 上才可用。

示例

以下示例显示如何创建对鼠标滚轮事件做出响应的侦听器对象。在此示例中，每当用户滚动鼠标滚轮时，名为 clip_mc（未显示）的影片剪辑对象的 x 坐标将发生更改。

mouseListener = new Object();
mouseListener.onMouseWheel = function(delta) {
  clip_mc._x += delta;
}
Mouse.addListener(mouseListener);

另请参见

Mouse.addListener(), TextField.mouseWheelEnabled


Mouse.removeListener()

可用性

Flash Player 6。

用法

Mouse.removeListener (listener)

参数

listener 一个对象。

返回

如果成功删除了 listener 对象，则该方法返回 true；如果未成功删除 listener（例如，如果 listener 不在 Mouse 对象的侦听器列表中），则该方法返回 false。

说明

方法；删除以前用 addListener() 注册的对象。


Mouse.show()

可用性

Flash Player 5。

用法

Mouse.show()

参数

无。

返回

无。

说明

方法；在 SWF 文件中显示鼠标指针。指针在默认情况下可见。

另请参见

Mouse.show(), MovieClip._xmouse, MovieClip._ymouse


MovieClip 类

可用性

Flash Player 3。

说明

MovieClip 类的方法提供的功能与定位影片剪辑的动作所提供的功能相同。还有一些其它方法在“动作”面板中的“动作”工具箱中没有等效动作。

无需使用构造函数方法即可调用 MovieClip 类的方法；只需使用以下语法按名称引用影片剪辑实例即可：

my_mc.play();
my_mc.gotoAndPlay(3);

MovieClip 类的方法概要

方法 | 说明
MovieClip.attachAudio() | 从麦克风硬件中捕获并播放本地音频。
MovieClip.attachMovie() | 附加库中的 SWF 文件。
MovieClip.createEmptyMovieClip() | 创建一个空的影片剪辑。
MovieClip.createTextField() | 创建一个空的文本字段。
MovieClip.duplicateMovieClip() | 重制指定的影片剪辑。
MovieClip.getBounds() | 返回 SWF 文件在指定坐标空间中的最小和最大的 x、y 坐标。
MovieClip.getBytesLoaded() | 返回为指定影片剪辑加载的字节数。
MovieClip.getBytesTotal() | 以字节为单位返回影片剪辑的大小。
MovieClip.getDepth() | 返回影片剪辑的深度。
MovieClip.getInstanceAtDepth() | 指定某特定深度是否已被影片剪辑所占用。
MovieClip.getNextHighestDepth() | 指定一个深度值，您可以将该值传递给其它方法，以确保 Flash 将该影片剪辑呈现在当前影片剪辑中所有其它对象的前面。
MovieClip.getSWFVersion() | 返回一个整数，该整数指示所发布的影片剪辑的 Flash Player 版本
MovieClip.getTextSnapshot() | 返回包含指定影片剪辑的静态文本字段中的文本的 TextSnapshot 对象。
MovieClip.getURL() | 从一个 URL 获取文档。
MovieClip.globalToLocal() | 将 point 对象的坐标从舞台坐标转换为指定影片剪辑的本地坐标。
MovieClip.gotoAndPlay() | 将播放头转到影片剪辑中的特定帧并播放 SWF 文件。
MovieClip.gotoAndStop() | 将播放头转到影片剪辑中的特定帧并停止 SWF 文件。
MovieClip.hitTest() | 如果指定影片剪辑的边框与目标影片剪辑的边框交叉，则返回 true。
MovieClip.loadMovie() | 将指定的 SWF 文件加载到影片剪辑中。
MovieClip.loadVariables() | 将来自 URL 或其它位置的变量加载到影片剪辑中。
MovieClip.localToGlobal() | 将 Point 对象的坐标从影片剪辑的本地坐标转换为全局舞台坐标。
MovieClip.nextFrame() | 将播放头转到影片剪辑的下一帧。
MovieClip.play() | 播放指定的影片剪辑。
MovieClip.prevFrame() | 将播放头转到影片剪辑的上一帧。
MovieClip.removeMovieClip() | 如果影片剪辑是用 duplicateMovieClip()、MovieClip.duplicateMovieClip() 或 MovieClip.attachMovie() 创建的，则将其从时间轴中删除。
MovieClip.setMask() | 将影片剪辑指定为另一个影片剪辑的遮罩。
MovieClip.startDrag() | 将影片剪辑指定为可拖动的并开始拖动该影片剪辑。
MovieClip.stop() | 停止当前播放的 SWF 文件。
MovieClip.stopDrag() | 停止拖动任何正在拖动的影片剪辑。
MovieClip.swapDepths() | 交换两个 SWF 文件的深度级别。
MovieClip.unloadMovie() | 删除用 loadMovie() 加载的 SWF 文件。

MovieClip 类的绘制方法概要

方法 | 说明
MovieClip.beginFill() | 开始在舞台上绘制填充。
MovieClip.beginGradientFill() | 开始在舞台上绘制渐变填充。
MovieClip.clear() | 删除与影片剪辑实例相关联的所有绘画命令。
MovieClip.curveTo() | 使用最新的线条样式绘制曲线。
MovieClip.endFill() | 终止由 beginFill() 或 beginGradientFill() 指定的填充。
MovieClip.lineStyle() | 定义用 lineTo() 和 curveTo() 方法创建的线条的笔触。
MovieClip.lineTo() | 使用当前的线条样式绘制线条。
MovieClip.moveTo() | 将当前的绘画位置移到指定的坐标。

MovieClip 类的属性概要

属性 | 说明
MovieClip._alpha | 影片剪辑实例的透明度值。
MovieClip._currentframe | 播放头当前所处的帧的编号。
MovieClip._droptarget | 以斜杠语法记号表示的影片剪辑实例（放置可拖动影片剪辑的影片剪辑实例）的绝对路径。
MovieClip.enabled | 指示按钮影片剪辑是否处于启用状态。
MovieClip.focusEnabled | 使影片剪辑能够接收焦点。
MovieClip._focusrect | 指示具有焦点的影片剪辑周围是否有黄色矩形。
MovieClip._framesloaded | 从 SWF 文件流中已经加载的帧数。
MovieClip._height | 影片剪辑实例的高度，以像素为单位。
MovieClip.hitArea | 将另一个影片剪辑指定为按钮影片剪辑的点击区域。
MovieClip._highquality | 设置 SWF 文件的呈现品质。
MovieClip.menu | 将 ContextMenu 对象与影片剪辑关联。
MovieClip._name | 影片剪辑实例的实例名称。
MovieClip._parent | 对包含有该影片剪辑的影片剪辑的引用。
MovieClip._rotation | 影片剪辑实例的旋转角度。
MovieClip._soundbuftime | 声音开始进入流之前存储的秒数。
MovieClip.tabChildren | 指示影片剪辑的子级是否包含在 Tab 键的自动排序中。
MovieClip.tabEnabled | 指示某影片剪辑是否包含在 Tab 键排序中。
MovieClip.tabIndex | 指示对象的 Tab 键顺序。
MovieClip._target | 影片剪辑实例的目标路径。
MovieClip._totalframes | 影片剪辑实例中的总帧数。
MovieClip.trackAsMenu | 指示其它按钮是否可接收鼠标按钮释放事件。
MovieClip._url | 从中下载影片剪辑的 SWF 文件的 URL。
MovieClip.useHandCursor | 确定当用户滑过按钮影片剪辑时是否显示手形光标。
MovieClip._visible | 一个布尔值，确定影片剪辑实例是隐藏的还是可见的。
MovieClip._width | 影片剪辑实例的宽度，以像素为单位。
MovieClip._x | 影片剪辑实例的 x 坐标。
MovieClip._xmouse | 影片剪辑实例中鼠标指针的 x 坐标。
MovieClip._xscale | 指定用于水平缩放影片剪辑的百分比的值。
MovieClip._y | 影片剪辑实例的 y 坐标。
MovieClip._ymouse | 影片剪辑实例中鼠标指针的 y 坐标。
MovieClip._yscale | 指定用于垂直缩放影片剪辑的百分比的值。

MovieClip 类的事件处理函数概要

事件处理函数 | 说明
MovieClip.onData | 当所有数据都加载到影片剪辑中时调用。
MovieClip.onDragOut | 鼠标指针位于按钮内时按下鼠标按钮，然后滑出该按钮区域，在此条件下，当鼠标指针位于该按钮外时进行调用。
MovieClip.onDragOver | 鼠标指针位于按钮内时按下鼠标按钮，然后滑出该按钮区域，接着滑回到该按钮上，在此条件下，当鼠标指针位于该按钮上时进行调用。
MovieClip.onEnterFrame | 以 SWF 文件的帧频持续调用。首先处理与 enterFrame 剪辑事件关联的动作，然后才处理附加到受影响帧的所有帧动作脚本。
MovieClip.onKeyDown | 当按下按键时调用。使用 Key.getCode() 和 Key.getAscii() 方法可获取关于最后所按键的信息。
MovieClip.onKeyUp | 当释放按键时调用。
MovieClip.onKillFocus | 当从按钮移除焦点时调用。
MovieClip.onLoad | 当影片剪辑被实例化并显示在时间轴上时调用。
MovieClip.onMouseDown | 当按下鼠标左键时调用。
MovieClip.onMouseMove | 每次移动鼠标时调用。
MovieClip.onMouseUp | 当释放鼠标左键时调用。
MovieClip.onPress | 在鼠标指针位于按钮上方的情况下，按下鼠标按钮时调用。
MovieClip.onRelease | 在鼠标指针位于按钮上方的情况下，释放鼠标按钮时调用。
MovieClip.onReleaseOutside | 在这样的情况下调用：在鼠标指针位于按钮内部的情况下按下按钮，然后将鼠标指针移到该按钮外部并释放鼠标按钮。
MovieClip.onRollOut | 当鼠标指针滚动到按钮区域之外时调用。
MovieClip.onRollOver | 当鼠标指针滚过按钮时调用。
MovieClip.onSetFocus | 当按钮具有输入焦点而且释放某按键时调用。
MovieClip.onUnload | 从时间轴删除影片剪辑后，在第 1 帧中调用。处理与 Unload 影片剪辑事件关联的动作之前，不将任何动作附加到受影响的帧。


MovieClip._alpha

可用性

Flash Player 4。

用法

my_mc._alpha

说明

属性；my_mc 指定的影片剪辑的 alpha 透明度值。有效值为 0（完全透明）到 100（完全不透明）。默认值为 100。如果影片剪辑的 _alpha 设置为 0，即使其中的对象不可见，但也是活动的。例如，您仍可以单击一个 _alpha 属性设置为 0 的影片剪辑中的按钮。

示例

下面的代码完成以下任务：当单击按钮时，将名为 star_mc 的影片剪辑的 _alpha 属性设置为 30%：

on (release) {
  star_mc._alpha = 30;
}

另请参见

Button._alpha, TextField._alpha


MovieClip.attachAudio()

可用性

Flash Player 6；能够附加来自 Flash Player 7 中添加的 Flash 视频 (FLV) 文件的音频。

用法

my_mc.attachAudio(source)

参数

source 包含要播放的音频的对象。有效值是 Microphone 对象、播放 FLV 文件的 NetStream 对象以及 false（停止播放音频）。

返回

无。

说明

方法；指定要播放的音频源。若要停止播放音频源，请为 source 传递 false。

示例

以下代码将一个麦克风附加到影片剪辑。

my_mic = Microphone.get();
this.attachAudio(my_mic);

下面的示例显示如何使用 Sound 对象控制与 FLV 文件关联的声音。

// Clip 是包含
// 视频对象“my_video”的影片剪辑的实例名称。
_root.Clip.my_video.attachVideo(_root.myNetStream);
_root.Clip.attachAudio(_root.myNetStream);
var snd = new Sound("_root.Clip");
//调整音频：
_root.snd.setVolume(100);

另请参见

Microphone 类, NetStream.play(), Sound 类, Video.attachVideo()


MovieClip.attachMovie()

可用性

Flash Player 5。

用法

my_mc.attachMovie(idName, newName, depth [, initObject])

参数

idName 库中要附加到舞台上某影片剪辑的影片剪辑元件的链接名称。这是在“链接属性”对话框中的“标识符”字段中输入的名称。

newname 附加到该影片剪辑的影片剪辑实例的唯一名称。

depth 一个整数，指定 SWF 文件所放位置的深度级别。

initObject （Flash Player 6 和更高版本支持）包含要用来填充新附加的影片剪辑的属性的对象。此参数使动态创建的影片剪辑能够接收剪辑参数。如果 initObject 不是对象，则将被忽略。initObject 的所有属性均将复制到新实例中。构造函数可使用通过 initObject 指定的属性。此参数是可选的。

返回

对新创建的实例的引用。

说明

方法；从库中取一个元件并将其附加到舞台上由 my_mc 指定的 SWF 文件中。使用 removeMovieClip() 或 unloadMovie() 可删除用 attachMovie() 附加的 SWF 文件。

示例

下面的示例将链接标识符为“circle”的元件附加到位于 SWF 文件舞台上的影片剪辑实例中。

on (release) {
    thing.attachMovie( "circle", "circle1", 2 );
}

另请参见

MovieClip.removeMovieClip(), MovieClip.unloadMovie(), Object.registerClass(), removeMovieClip()


MovieClip.beginFill()

可用性

Flash Player 6。

用法

my_mc.beginFill([rgb[, alpha]])

参数

rgb 一个十六进制颜色值（例如，红色是 0xFF0000，蓝色是 0x0000FF，等等）。如果未提供或未定义该值，则不创建填充。

alpha 一个介于 0 到 100 之间的整数，指定填充的 alpha 值。如果未提供该值，则使用 100（纯色）。如果该值小于 0，则 Flash 使用 0。如果该值大于 100，则 Flash 使用 100。

返回

无。

说明

方法；指示新的绘画路径的开始。如果存在一个开放路径（即如果当前的绘制位置不等于 moveTo() 方法中指定的上一个位置），并且该路径具有与其关联的填充，则用线条闭合该路径，然后进行填充。这类似于调用 endFill() 方法时的情形。如果当前没有填充与该路径相关联，则必须调用 endFill() 才能应用填充。

另请参见

MovieClip.beginGradientFill(), MovieClip.endFill()


MovieClip.beginGradientFill()

可用性

Flash Player 6。

用法

my_mc.beginGradientFill(fillType, colors, alphas, ratios, matrix)

参数

fillType 字符串 "linear" 或字符串 "radial"。

colors 一个数组，包括要在渐变中使用的 RGB 十六进制颜色值（例如，红色是 0xFF0000，蓝色是 0x0000FF，等等）。

alphas 一个数组，包括与 colors 数组中颜色相对应的 alpha 值；有效值范围为 0 到 100。如果该值小于 0，则 Flash 使用 0。如果该值大于 100，则 Flash 使用 100。

ratios 颜色配额的数组；有效值范围为 0 到 255。该值按 100% 定义了对颜色进行采样处的宽度的百分比。

matrix 一个变形矩阵，它是具有下列两组属性之一的对象：

  • a、b、c、d、e、f、g、h、i，它们用于描述如下形式的 3 x 3 矩阵：
    a   b   c
d   e   f
g   h i

    下面的示例使用 beginGradientFill() 方法，其 matrix 参数是具有这些属性的对象。

    _root.createEmptyMovieClip( "grad", 1 );
  with ( _root.grad )

  {

  colors = [ 0xFF0000, 0x0000FF ];
  alphas = [ 100, 100 ];
  ratios = [ 0, 0xFF ];
  matrix = { a:200, b:0, c:0, d:0, e:200, f:0, g:200, h:200, i:1 };
  beginGradientFill( "linear", colors, alphas, ratios, matrix );
  moveto(100,100);
  lineto(100,300);
  lineto(300,300);
  lineto(300,100);
  lineto(100,100);
  endFill();

  }

    如果 matrixType 属性不存在，则其余参数都是必需的；如果缺少其中任何一个，该函数都会失败。该矩阵缩放、平移、旋转和倾斜在 (-1,-1) 和 (1,1) 处定义的单位渐变。

  • matrixType、x、y、w、h、r。

    这些属性表示下列含义：matrixType 是字符串 "box"，x 是相对于该渐变左上角父级剪辑的注册点的水平位置，y 是相对于该渐变左上角父级剪辑的注册点的垂直位置，w 是渐变的宽度，h 是渐变的高度，r 是渐变的旋转角度（以弧度为单位）。

    下面的示例使用 beginGradientFill() 方法，其 matrix 参数是具有这些属性的对象。

    _root.createEmptyMovieClip( "grad", 1 );
              with ( _root.grad )

              {

              colors = [ 0xFF0000, 0x0000FF ];
              alphas = [ 100, 100 ];
              ratios = [ 0, 0xFF ];
              matrix = { matrixType:"box", x:100, y:100, w:200, h:200, r:(45/180)*Math.PI };
              beginGradientFill( "linear", colors, alphas, ratios, matrix );
              moveto(100,100);
              lineto(100,300);
              lineto(300,300);
              lineto(300,100);
              lineto(100,100);
              endFill();
              }

如果 matrixType 属性存在，则它必须等于 "box"，并且其余参数都是必需的。如果这些条件中的任何一个不满足，则该函数将失败。

返回

无。

说明

方法；指示新的绘画路径的开始。如果第一个参数为 undefined，或者未传递任何参数，则该路径将不填充。如果存在一个开放路径（即如果当前绘画位置不等于 moveTo() 方法中指定的上一个位置），并且该路径具有与其关联的填充，则用线条闭合该路径，然后进行填充。这类似于调用 endFill() 时的情形。

如果存在下列任意一种情况，则该方法将失败：

  • colors、alphas 和 ratios 参数中的项目数不相等。
  • fillType 参数不是 "linear" 或 "radial"。
  • 表示 matrix 参数的对象中的任意一个字段缺少或无效。

示例

下列代码使用两种方法绘制两个堆积矩形，这两个矩形具有红蓝渐变填充并使用 5 磅纯绿色笔触。

_root.createEmptyMovieClip("goober",1);
with ( _root.goober )
{
  colors = [ 0xFF0000, 0x0000FF ];
  alphas = [ 100, 100 ];
  ratios = [ 0, 0xFF ];
  lineStyle( 5, 0x00ff00 );
  matrix = { a:500,b:0,c:0,d:0,e:200,f:0,g:350,h:200,i:1};
  beginGradientFill( "linear", colors, alphas, ratios, matrix );
  moveto(100,100);
  lineto(100,300);
  lineto(600,300);
  lineto(600,100);
  lineto(100,100);
  endFill();
  matrix = { matrixType:"box", x:100, y:310, w:500, h:200, r:(0/180)*Math.PI };
  beginGradientFill( "linear", colors, alphas, ratios, matrix );
  moveto(100,310);
  lineto(100,510);
  lineto(600,510);
  lineto(600,310);
  lineto(100,310);
  endFill();
}

另请参见

MovieClip.beginFill(), MovieClip.endFill(), MovieClip.lineStyle(), MovieClip.lineTo(), MovieClip.moveTo()


MovieClip.clear()

可用性

Flash Player 6。

用法

my_mc.clear()

参数

无。

返回

无。

说明

方法；删除使用影片剪辑绘画方法（包括用 MovieClip.lineStyle() 指定的线条样式）在运行时创建的所有图形。创作过程中（用 Flash 绘画工具）手动绘制的形状和线条不受影响。

另请参见

MovieClip.lineStyle()


MovieClip.createEmptyMovieClip()

可用性

Flash Player 6。

用法

my_mc.createEmptyMovieClip(instanceName, depth)

参数

instanceName 标识新影片剪辑的实例名称的字符串。

depth 指定新影片剪辑的深度的整数。

返回

对新创建的影片剪辑的引用。

说明

方法；创建作为现有影片剪辑子级的空影片剪辑。该方法的行为类似于 attachMovie() 方法，但是不必为新的影片剪辑提供外部链接名称。新创建的空影片剪辑的注册点为左上角。如果缺少任意一个参数，则该方法将失败。

另请参见

MovieClip.attachMovie()


MovieClip.createTextField()

可用性

Flash Player 6。

用法

my_mc.createTextField(instanceName, depth, x, y, width, height)

参数

instanceName 一个字符串，指示新文本字段的实例名称。

depth 一个正整数，指定新文本字段的深度。

x 一个整数，指定新文本字段的 x 坐标。

y 一个整数，指定新文本字段的 y 坐标。

width 一个正整数，指定新文本字段的宽度。

height 一个正整数，指定新文本字段的高度。

返回

无。

说明

方法；创建一个新的、空文本字段作为由 my_mc 指定的影片剪辑的子级。可以使用 createTextField() 在 SWF 文件播放时创建文本字段。文本字段位于 (x, y)，尺寸为 width 乘 height。参数 x 和 y 都相对于容器影片剪辑；这些参数与文本字段的 _x 和 _y 属性相对应。参数 width 和 height 与文本字段的 _width 和 _height 属性相对应。

文本字段的默认属性如下所示：

type = "dynamic"
border = false
background = false
password = false
multiline = false
html = false
embedFonts = false
variable = null
maxChars = null

用 createTextField() 创建的文本字段可以接收下列默认 TextFormat 对象：

font = "Times New Roman"
size = 12
textColor = 0x000000
bold = false
italic = false
underline = false
url = ""
target = ""
align = "left"
leftMargin = 0
rightMargin = 0
indent = 0
leading = 0
bullet = false
tabStops = [] (empty array)

示例

下面的示例创建一个宽 300，高 100 的文本字段，其 x 坐标为 100，y 坐标为 100，该文本字段没有边框，文本为红色并带下划线。

_root.createTextField("mytext",1,100,100,300,100);
mytext.multiline = true;
mytext.wordWrap = true;
mytext.border = false;

myformat = new TextFormat();
myformat.color = 0xff0000;
myformat.bullet = false;
myformat.underline = true;

mytext.text = "this is my first test field object text";
mytext.setTextFormat(myformat);

另请参见

TextFormat 类


MovieClip._currentframe

可用性

Flash Player 4。

用法

my_mc._currentframe

说明

属性（只读）；返回由 my_mc 指定的时间轴中播放头所处的帧的编号。

示例

下面的示例使用 _currentframe 属性指示影片剪辑 actionClip_mc 的播放头从当前位置前进 5 帧。

actionClip_mc.gotoAndStop(_currentframe + 5);


MovieClip.curveTo()

可用性

Flash Player 6。

用法

my_mc.curveTo(controlX, controlY, anchorX, anchorY)

参数

controlX 一个整数，指定控制点相对于父级影片剪辑注册点的水平位置。

controlY 一个整数，指定控制点相对于父级影片剪辑注册点的垂直位置。

anchorX 一个整数，指定下一个锚记点相对于父级影片剪辑注册点的水平位置。

anchorY 一个整数，指定下一个锚记点相对于父级影片剪辑注册点的垂直位置。

返回

无。

说明

方法；使用由 (controlX, controlY) 指定的控制点，以当前线条样式绘制从当前绘画位置到 (anchorX, anchorY) 的曲线。当前绘画位置随后设置为 (anchorX, anchorY)。如果正在其中进行绘制的影片剪辑中含有用 Flash 绘画工具创建的内容，则调用 curveTo() 将在此内容下进行绘制。如果在对 moveTo() 进行任何调用之前调用了 curveTo()，则当前绘画位置默认为 (0, 0)。如果缺少任何一个参数，则此方法将失败，并且当前绘画位置不改变。

示例

下面的示例用极细磅值、纯蓝色线条和纯红色填充绘制一个圆。

_root.createEmptyMovieClip( "circle", 1 );
with ( _root.circle )
{
  lineStyle( 0, 0x0000FF, 100 );
  beginFill( 0xFF0000 );
  moveTo( 500, 500 );
  curveTo( 600, 500, 600, 400 );
  curveTo( 600, 300, 500, 300 );
  curveTo( 400, 300, 400, 400 );
  curveTo( 400, 500, 500, 500 );
  endFill();
}

另请参见

MovieClip.beginFill(), MovieClip.createEmptyMovieClip(), MovieClip.endFill(), MovieClip.lineStyle(), MovieClip.lineTo(), MovieClip.moveTo()


MovieClip._droptarget

可用性

Flash Player 4。

用法

my_mc._droptarget

说明

属性（只读）；以斜杠语法记号表示法返回 my_mc 放置到的影片剪辑实例的绝对路径。_droptarget 属性始终返回以斜杠 (/) 开始的路径。若要将实例的 _droptarget 属性与引用进行比较，请使用 eval() 函数将返回值从斜杠语法转换为点语法表示的引用。

注意：如果您正使用动作脚本 2.0，则必须执行此转换，因为动作脚本 2.0 不支持斜杠语法。

示例

下面的示例计算 garbage 影片剪辑实例的 _droptarget 属性并使用 eval() 将其从斜杠语法转换为点语法表示的引用。然后将 garbage 引用与对 trash 影片剪辑实例的引用进行比较。如果两个引用相等，则将 garbage 的可见性设置为 false。如果它们不相等，则将 garbage 实例重置为其原始位置。

if (eval(garbage._droptarget) == _root.trash) {
  garbage._visible = false;
} else {
  garbage._x = x_pos;
  garbage._y = y_pos;
}

变量 x_pos 和 y_pos 是用下列脚本在 SWF 文件的第 1 帧上设置的：

x_pos = garbage._x;
y_pos = garbage._y;

另请参见

startDrag()


MovieClip.duplicateMovieClip()

可用性

Flash Player 5。

用法

my_mc.duplicateMovieClip(newname, depth [,initObject])

参数

newname 一个用于重制影片剪辑的唯一标识符。

depth 一个用于指定深度的唯一编号，指定的 SWF 文件将放在该位置上。

initObject （Flash Player 6 和更高版本支持此函数。）包含用于填充重制影片剪辑的属性的对象。此参数使动态创建的影片剪辑能够接收剪辑参数。如果 initObject 不是对象，则将被忽略。initObject 的所有属性均将复制到新实例中。构造函数可使用 initObject 指定的属性。此参数是可选的。

返回

对重制的影片剪辑的引用。

说明

方法；在 SWF 文件播放时创建指定影片剪辑的实例。无论调用 duplicateMovieClip() 方法时原始影片剪辑位于哪一帧，重制的影片剪辑总是从第 1 帧开始播放。父级影片剪辑中的变量不复制到重制的影片剪辑中。对于用 duplicateMovieClip() 创建的影片剪辑，如果对其父级调用 duplicateMovieClip()，则不重制该影片剪辑。如果删除父级影片剪辑，则重制的影片剪辑也被删除。 .

另请参见

duplicateMovieClip(), MovieClip.removeMovieClip()


MovieClip.enabled

可用性

Flash Player 6。

用法

my_mc.enabled

说明

属性；一个布尔值，指示按钮影片剪辑是否处于启用状态。enabled 的默认值为 true。如果将 enabled 设置为 false，则不再调用按钮影片剪辑的回调方法和 on action 事件处理函数，并且禁用 Over、Down 和 Up 帧。 enabled 属性不影响按钮影片剪辑的时间轴；如果影片剪辑正在播放，则该影片剪辑将继续播放。影片剪辑将继续接收影片剪辑事件（例如，mouseDown、mouseUp、keyDown 和 keyUp）。

enabled 属性仅控制按钮影片剪辑的按钮式 (button-like) 属性。可以在任何时候更改 enabled 属性；可以立即启用或禁用修改后的按钮影片剪辑。可以从原型对象中读出 enabled 属性。如果将 enabled 设置为 false，则该对象将不包含在 Tab 键的自动排序中。


MovieClip.endFill()

可用性

Flash Player 6。

用法

my_mc.endFill()

参数

无。

返回

无。

说明

方法；对自从上次调用 beginFill() 或 beginGradientFill() 以来添加的线条和曲线应用填充。Flash 使用的是对 beginFill() 或 beginGradientFill() 的上一次调用中指定的填充。如果当前绘画位置不等于 moveTo() 方法中指定的上一个位置，而且定义了填充，则用线条闭合该路径，然后进行填充。


MovieClip.focusEnabled

可用性

Flash Player 6。

用法

my_mc.focusEnabled

说明

属性；如果值为 undefined 或 false，则除非是按钮影片剪辑，否则影片剪辑不能接收输入焦点。如果 focusEnabled 属性值为 true，则即使影片剪辑不是按钮影片剪辑，它也可以接收输入焦点。


MovieClip._focusrect

可用性

Flash Player 6。

用法

my_mc._focusrect

说明

属性；一个布尔值，指定当影片剪辑具有键盘焦点时其周围是否有黄色矩形。此属性可以覆盖全局 _focusrect 属性。


MovieClip._framesloaded

可用性

Flash Player 4。

用法

my_mc._framesloaded

说明

属性（只读）；从 SWF 文件流中已经加载的帧数。该属性很有用，可确定特定帧及其前面所有帧的内容是否已经加载，并且是否可在浏览器本地使用。该属性对于监视大 SWF 文件的下载很有用。例如，可能需要向用户显示一条消息以表明 SWF 文件正在下载，直到 SWF 文件中的指定帧完成下载为止。

示例

下面的示例使用 _framesloaded 属性在所有帧都已加载后开始播放 SWF 文件。如果未加载完所有帧，则会等比例增大影片剪辑实例 loader 的 _xscale 属性以创建进度栏。

if (_framesloaded >= _totalframes) {
  gotoAndPlay ("Scene 1", "start");
} else {
  _root.loader._xscale = (_framesloaded/_totalframes)*100;
}

另请参见

MovieClipLoader 类


MovieClip.getBounds()

可用性

Flash Player 5。

用法

my_mc.getBounds(targetCoordinateSpace)

参数

targetCoordinateSpace 其坐标系统要用作参考点的时间轴的目标路径。

返回

一个对象，带有属性 xMin、xMax、yMin 和 yMax。

说明

方法；返回作为实例的最小和最大 x、y 坐标值的属性，该实例是由 my_mc 为 targetCoordinateSpace 参数指定的。

注意：分别使用 MovieClip.localToGlobal() 和 MovieClip.globalToLocal() 将影片剪辑的本地坐标转换为舞台坐标或将舞台坐标转换为本地坐标。

示例

在下面的示例中，将 getBounds() 返回的对象分配给标识符 clipBounds。然后可以访问每个属性的值并将其用在脚本中。在该脚本中，将另一个影片剪辑实例 clip2 与 clip 并排放置。

clipBounds = clip.getBounds(_root);
clip2._x = clipBounds.xMax;

另请参见

MovieClip.globalToLocal(), MovieClip.localToGlobal()


MovieClip.getBytesLoaded()

可用性

Flash Player 5。

用法

my_mc.getBytesLoaded()

参数

无。

返回

一个整数，指示所加载的字节数。

说明

方法；返回已为 my_mc 指定的影片剪辑加载（流处理）的字节数。您可以将此值与 MovieClip.getBytesTotal() 返回的值进行比较以确定已加载影片剪辑的百分比。

另请参见

MovieClip.getBytesTotal()


MovieClip.getBytesTotal()

可用性

Flash Player 5。

用法

my_mc.getBytesTotal()

参数

无。

返回

一个整数，指示 my_mc 的总大小（以字节为单位）。

说明

方法；以字节为单位返回 my_mc 指定的影片剪辑的大小。对于那些外部的影片剪辑（加载到某个目标或某个级别的根 SWF 文件或影片剪辑），返回值为 SWF 文件的大小。

另请参见

MovieClip.getBytesLoaded()


MovieClip.getDepth()

可用性

Flash Player 6。

用法

my_mc.getDepth()

参数

无。

返回

一个整数。

说明

方法；返回影片剪辑实例的深度。有关更多信息，请参见管理影片剪辑的深度。

另请参见

MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth(), MovieClip.swapDepths()


MovieClip.getInstanceAtDepth()

可用性

Flash Player 7。

用法

my_mc.getInstanceAtDepth(depth)

参数

depth 一个整数，指定要查询的深度级别。

返回

对位于指定深度的 MovieClip 实例的引用，或者如果该深度处没有影片剪辑，则为 undefined。

说明

方法；用于确定特定深度是否已被某个影片剪辑占用。您可以在使用 MovieClip.attachMovie()、MovieClip.duplicateMovieClip() 或 MovieClip.createEmptyMovieClip() 前使用此方法确定要传递给这些方法的深度参数所指定的深度是否已包含影片剪辑。有关更多信息，请参见管理影片剪辑的深度。

另请参见

MovieClip.getDepth(), MovieClip.getNextHighestDepth(), MovieClip.swapDepths()


MovieClip.getNextHighestDepth()

可用性

Flash Player 7。

用法

my_mc.getNextHighestDepth()

参数

无。

返回

一个整数，反映下一个可用的深度值，采用该深度值的对象将显示在 my_mc 中同一级和同一层上所有其它对象之上。

说明

方法；用于确定可传递到 MovieClip.attachMovie()、MovieClip.duplicateMovieClip() 或 MovieClip.createEmptyMovieClip() 的深度值以确保 Flash 将该影片剪辑呈现在当前影片剪辑中同一级和同一层上所有其它对象的前面。返回值为 0 或更大的数字（即，不返回负数）。

有关更多信息，请参见管理影片剪辑的深度。

另请参见

MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.swapDepths()


MovieClip.getSWFVersion()

可用性

Flash Player 7。

用法

my_mc.getSWFVersion()

参数

无。

返回

一个整数，该整数指定在发布加载到 my_mc 中的 SWF 文件时以其为目标播放器的 Flash Player 版本。

说明

方法；返回一个整数，指示发布的 my_mc 的 Flash Player 版本。如果 my_mc 是 JPEG 文件，或者如果出现错误并且 Flash 不能确定 my_mc 的 SWF 版本，则返回 -1。


MovieClip.getTextSnapshot()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

my_mc.getTextSnapshot();

参数

无。

返回

一个包含来自 my_mc 的静态文本的 TextSnapshot 对象；或者，如果 my_mc 不包含任何静态文本，则为空字符串。

说明

方法；返回一个 TextSnapshot 对象，该对象包含指定影片剪辑的所有静态文本字段中的文本；不包括子影片剪辑中的文本。

Flash 连接文本并将文本放置于 TextSnapshot 对象中，放置的顺序反映影片剪辑中静态文本字段的 Tab 键索引顺序。没有 Tab 键索引值的文本字段将以随机的顺序放置于该对象中，并且放在来自具有 Tab 键索引值的字段的所有文本前。没有换行符或格式指示一个字段从哪里结束、另一个字段从哪里开始。

注意：您不能在 Flash 中为静态文本指定 Tab 键索引值。不过，其它产品可以这样做；例如 Macromedia FlashPaper 就可以。

TextSnapshot 对象的内容不是动态的；即，如果影片剪辑移到不同的帧，或者以某种方式被更改（例如，影片剪辑中的对象被添加或删除），则 TextSnapshot 对象可能不表示影片剪辑中的当前文本。若要确保该对象的内容是最新的，应根据需要重新发出此命令。

另请参见

TextSnapshot 对象


MovieClip.getURL()

可用性

Flash Player 5。

用法

my_mc.getURL(URL [,window, variables])

参数

URL 要从中获得文档的 URL 位置。

window 一个可选参数，它指定名称、帧或表达式，这些内容指定文档将加载到其中的窗口或 HTML 框架。也可以使用下列保留的目标名称之一：_self 指定当前窗口中的当前帧，_blank 指定一个新窗口，_parent 指定当前帧的父级，_top 指定当前窗口中的顶级帧。

variables 一个可选参数，指定与要加载 SWF 文件关联的变量的发送方法。如果没有变量，则省略该参数；否则请指定是使用 GET 方法还是使用 POST 方法加载变量。GET 将变量追加到 URL 的末尾，用于发送少量的变量。POST 在单独的 HTTP 标头中发送变量，用于发送大量的变量。

返回

无。

说明

方法；从指定 URL 将文档加载到指定窗口。getURL 方法还可以通过 GET 或 POST 方法向 URL 中定义的另一个应用程序传递变量。

另请参见

getURL()


MovieClip.globalToLocal()

可用性

Flash Player 5。

用法

my_mc.globalToLocal(point)

参数

point 用通用 Object 类创建的对象的名称或标识符。该对象指定 x 和 y 坐标作为属性。

返回

无。

说明

方法；将 point 对象从舞台（全局）坐标转换为影片剪辑的（本地）坐标。

示例

下面的示例将 point 对象的全局 x 和 y 坐标转换为影片剪辑的本地坐标。

onClipEvent(mouseMove) {
  point = new object();
  point.x = _root._xmouse;
  point.y = _root._ymouse;
  globalToLocal(point);
  trace(_root._xmouse + " " + _root._ymouse);
  trace(point.x + " " + point.y);
  updateAfterEvent();
}

另请参见

MovieClip.getBounds(), MovieClip.localToGlobal()


MovieClip.gotoAndPlay()

可用性

Flash Player 5。

用法

my_mc.gotoAndPlay(frame)

参数

frame 表示将播放头转到的帧编号的数字，或者表示将播放头转到的帧的标签的字符串。

返回

无。

说明

方法；从指定帧开始播放 SWF 文件。如果您要指定场景以及帧，则使用 gotoAndPlay()。


MovieClip.gotoAndStop()

可用性

Flash Player 5。

用法

my_mc.gotoAndStop(frame)

参数

frame 播放头要转到的帧的编号。

返回

无。

说明

方法；将播放头移到该影片剪辑的指定帧并停在那里。

另请参见

gotoAndStop()


MovieClip._height

可用性

Flash Player 4。

用法

my_mc._height

说明

属性；影片剪辑的高度（以像素为单位）。

示例

下面的代码示例在用户单击鼠标按钮时设置影片剪辑的高度和宽度。

onClipEvent(mouseDown) {
  _width=200;
  _height=200;
}


MovieClip._highquality

可用性

Flash Player 6。

用法

my_mc._highquality

说明

属性（全局）；指定应用于当前 SWF 文件的锯齿消除级别。指定 2（最高品质）可应用高品质，并使位图平滑处理始终打开。指定 1（高品质），则应用消除锯齿功能；如果 SWF 文件不包含动画，这将对位图进行平滑处理。指定 0（低品质），则不消除锯齿。此属性可以覆盖全局 _highquality 属性。

示例

my_mc._highquality = 2;

另请参见

_quality


MovieClip.hitArea

可用性

Flash Player 6。

用法

my_mc.hitArea

返回

对影片剪辑的引用。

说明

属性；将另一个影片剪辑指定为按钮影片剪辑的点击区域。如果 hitArea 属性不存在或者为 null 或 undefined，则按钮影片剪辑自身将用作点击区域。hitArea 属性的值可以是对影片剪辑对象的引用。

可以在任何时候更改 hitArea 属性；修改后的按钮影片剪辑会立即获得新的点击区域行为。指定为点击区域的影片剪辑不必是可见的；虽然有的点击区域不可见，但可以点击测试其图形形状。可以从原型对象读出 hitArea 属性。


MovieClip.hitTest()

可用性

Flash Player 5。

用法

my_mc.hitTest(x, y, shapeFlag)
my_mc.hitTest(target)

参数

x 舞台上点击区域的 x 坐标。

y 舞台上点击区域的 y 坐标。

x 和 y 坐标都在全局坐标空间中定义。

target 可能与由 my_mc 指定的实例交叉或重叠的点击区域的目标路径。target 参数通常表示一个按钮或文本输入字段。

shapeFlag 一个布尔值，指定是计算指定实例的整个形状 (true) 还是仅计算边框 (false)。只有当用 x 和 y 坐标参数标识点击区域时，才可以指定该参数。

返回

如果 my_mc 与指定的点击区域重叠，则为布尔值 true，否则为 false。

说明

方法；计算由 my_mc 指定的实例以确定它与由 target 或 x 和 y 坐标参数所标识的点击区域是否重叠或交叉。

用法 1：按照 shapeFlag 的设置，将 x 和 y 坐标与指定实例的形状或边框进行比较。如果 shapeFlag 设置为 true，则只计算舞台上实例实际占据的区域，如果 x 和 y 重叠任意一点，则返回 true 值。这对于确定影片剪辑是否在指定的点击区域或热点区域中很有用。

用法 2：计算 target 与指定实例的边框，如果它们在任意一点上重叠或交叉，则返回 true。

示例

下面的示例使用带有 _xmouse 和 _ymouse 属性的 hitTest() 来确定鼠标指针是否位于目标的边框上方：

if (hitTest( _root._xmouse, _root._ymouse, false));

下面的示例使用 hitTest() 来确定影片剪辑 ball 是否与影片剪辑 square 重叠或交叉：

if(_root.ball.hitTest(_root.square)){
  trace("ball intersects square");
}

另请参见

MovieClip.getBounds(), MovieClip.globalToLocal(), MovieClip.localToGlobal()


MovieClip.lineStyle()

可用性

Flash Player 6。

用法

my_mc.lineStyle([thickness[, rgb[, alpha]]])

参数

thickness 一个整数，以磅为单位指示线条的粗细；有效值为 0 到 255。如果未指定数值，或者该参数为 undefined，则不绘制线条。如果传递的值小于 0，则 Flash 使用 0。数值 0 指示极细的粗细；最大粗细为 255。如果传递的值大于 255，则 Flash 解释程序使用 255。

rgb 线条的十六进制颜色值（例如，红色为 0xFF0000，蓝色为 0x0000FF，等等）。如果未指示该值，则 Flash 使用 0x000000（黑色）。

alpha 一个整数，指示线条颜色的 alpha 值；有效值为 0 到 100。如果未指示该值，则 Flash 使用 100（纯色）。如果该值小于 0，则 Flash 使用 0。如果该值大于 100，则 Flash 使用 100。

返回

无。

说明

方法；指定一个线条样式，供 Flash 用于对 lineTo() 和 curveTo() 的后续调用，直到使用不同的参数调用 lineStyle() 为止。可以在绘制路径的中间调用 lineStyle() 来为路径中的不同线条段指定不同的样式。

注意：调用 clear 会将 lineStyle() 重置为 undefined。

示例

下面的代码用 5 磅、纯洋红色线条绘制一个无填充的三角形。

_root.createEmptyMovieClip( "triangle", 1 );
with ( _root.triangle )
{
lineStyle( 5, 0xff00ff, 100 );
moveTo( 200, 200 );
lineTo( 300,300 );
lineTo( 100, 300 );
lineTo( 200, 200 );
}

另请参见

MovieClip.beginFill(), MovieClip.beginGradientFill(), MovieClip.clear(), MovieClip.curveTo(), MovieClip.lineTo(), MovieClip.moveTo()


MovieClip.lineTo()

可用性

Flash Player 6。

用法

my_mc.lineTo(x, y)

参数

x 一个整数，指示相对于父级影片剪辑的注册点的水平位置。

y 一个整数，指示相对于父级影片剪辑的注册点的垂直位置。

返回

无。

说明

方法；使用当前线条样式从当前绘画位置向 (x, y) 绘制线条；当前绘画位置随后被设置为 (x, y)。如果正在其中绘制的影片剪辑包含用 Flash 绘画工具创建的内容，则调用 lineTo() 将在该内容下面进行绘制。如果在对 moveTo() 方法进行任何调用之前调用了 lineTo()，则当前绘画位置默认为 (0, 0)。如果缺少任何一个参数，则此方法将失败，并且当前绘画位置不改变。

示例

下面的示例绘制一个没有线条、具有半透明蓝色填充的三角形。

_root.createEmptyMovieClip( "triangle", 1 );
  with (_root.triangle){
    beginFill (0x0000FF, 50);
    lineStyle (5, 0xFF00FF, 100);
    moveTo (200, 200);
    lineTo (300, 300);
    lineTo (100, 300);
    lineTo (200, 200);
    endFill();
}

另请参见

MovieClip.beginFill(), MovieClip.createEmptyMovieClip(), MovieClip.endFill(), MovieClip.lineStyle(), MovieClip.moveTo()


MovieClip.loadMovie()

可用性

Flash Player 5。

用法

my_mc.loadMovie("url" [,variables])

参数

url 要加载的 SWF 文件或 JPEG 文件的绝对或相对 URL。相对路径必须相对于级别 0 处的 SWF 文件。绝对 URL 必须包括协议引用，例如 http:// 或 file:///。

variables 一个可选参数，指定发送或加载变量所使用的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，它用于发送大量的变量。

返回

无。

说明

方法；在播放原始 SWF 文件的时候，将 SWF 文件或 JPEG 文件加载到 Flash Player 中的影片剪辑中。

提示：如果您要监视下载的进度，则使用 MovieClipLoader.loadClip() 而不是此函数。

如果不使用 loadMovie() 方法，则 Flash Player 显示单个 SWF 文件，然后关闭。使用 loadMovie() 方法可以一次显示几个 SWF 文件并且无需加载另一个 HTML 文档即可在 SWF 文件间进行切换。

加载到影片剪辑的 SWF 文件或图像会继承该影片剪辑的位置、旋转和缩放属性。可以用影片剪辑的目标路径来定位加载的 SWF 文件。

使用 unloadMovie() 方法删除用 loadMovie() 方法加载的 SWF 文件或图像。使用 loadVariables() 方法可以保持 SWF 文件处于活动状态，并用新值更新变量。

另请参见

loadMovie(), loadMovieNum(), MovieClip.loadVariables(), MovieClip.unloadMovie(), unloadMovie(), unloadMovieNum()


MovieClip.loadVariables()

可用性

Flash Player 5；行为在 Flash Player 7 中发生了变化。

用法

my_mc.loadVariables("url", variables)

参数

url 包含要加载变量的外部文件的绝对或相对 URL。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

variables 可选参数，指定发送变量所使用的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量，则省略此参数。GET 方法将变量追加到 URL 的末尾，它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量，它用于发送大量的变量。

返回

无。

说明

方法；从外部文件读取数据并设置 my_mc 中变量的值。外部文件可以是由 CGI 脚本、Active Server Page (ASP) 或 PHP 脚本生成的文本文件，并且可以包含任意数量的变量。

此方法还可用于使用新值更新活动影片剪辑中的变量。

此方法要求 URL 的文本使用标准的 MIME 格式：application/x-www-form-urlencoded（CGI 脚本格式）。

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

另请参见

loadMovie(), loadVariables(), loadVariablesNum(), MovieClip.unloadMovie()


MovieClip.localToGlobal()

可用性

Flash Player 5。

用法

my_mc.localToGlobal(point)

参数

point 用 Object 类创建的对象的名称或标识符，并指定 x 和 y 坐标作为属性。

返回

无。

说明

方法；将 point 对象从影片剪辑（本地）坐标转换为舞台（全局）坐标。

示例

下面的示例将 point 对象的 x 和 y 坐标从影片剪辑（本地）坐标转换为舞台（全局）坐标。本地 x 和 y 坐标是用 _xmouse 和 _ymouse 属性指定的，以获取鼠标指针位置的 x 和 y 坐标。

onClipEvent(mouseMove) {
  point = new object();
  point.x = _xmouse;
  point.y = _ymouse;
  _root.out3 = point.x + " === " + point.y;
  _root.out = _root._xmouse + " === " + _root._ymouse;
  localToGlobal(point);
  _root.out2 = point.x + " === " + point.y;
  updateAfterEvent();
}

另请参见

MovieClip.globalToLocal()


MovieClip._lockroot

可用性

Flash Player 7。

用法

my_mc._lockroot

说明

属性；指定将 SWF 文件加载到影片剪辑中时 _root 所指的内容。默认情况下，_lockroot 属性为 undefined。您可以在正在被加载的 SWF 文件中或正在加载影片剪辑的处理函数中设置此属性。

例如，假设有一个名为 Games.fla 的文档，该文档让用户选择要玩的游戏并将该游戏（例如 Chess.swf）加载到 game_mc 影片剪辑中。您要确保如果 _root 用于 Chess.swf 中，在被加载到 Games.swf 中之后，它仍然是指 Chess.swf 中的 _root。如果您可以访问 Chess.fla 并将其发布到 Flash Player 7 或更高版本，则可以向其添加以下语句：

this._lockroot = true;

如果您无法访问 Chess.fla（例如，如果您从其他人的站点加载 Chess.swf），则可以在加载时设置其 _lockroot 属性，如下所示。在这种情况下，只要向 Flash Player 7 或更高版本发布 Games.swf，便可以向任何版本的 Flash Player 发布 Chess.swf。

  onClipEvent (load)
  {
    this._lockroot = true;
  }
  game_mc.loadMovie ("Chess.swf");

如果在所有 SWF 文件中都没有使用 this._lockroot = true 语句，则在将 Chess.swf 加载到 Games.swf 中之后，Chess.swf 中的 _root 将引用 Games.swf 中的 _root。

另请参见

_root, MovieClip.attachMovie(), MovieClip.loadMovie()


MovieClip.menu

可用性

Flash Player 7。

用法

my_mc.menu = contextMenu

参数

contextMenu 一个 ContextMenu 对象。

说明

属性；将指定的 ContextMenu 对象与影片剪辑 my_mc 关联起来。ContextMenu 类用于修改当用户在 Flash Player 中右击 (Windows) 或按住 Control 键单击 (Macintosh) 时显示的上下文菜单。

示例

以下示例将 ContextMenu 对象 menu_cm 指定给影片剪辑 content_mc。ContextMenu 对象包含一个标有“Print...”的自定义菜单项，该菜单项具有名为 doPrint() 的关联回调处理函数。

var menu_cm = new ContextMenu();
menu_cm.customItems.push(new ContextMenuItem("Print...", doPrint));
function doPrint(menu, obj) {
  // 此处为打印代码
}
content_mc.menu = menu_cm;

另请参见

Button.menu, ContextMenu 类, ContextMenuItem 类, TextField.menu


MovieClip.moveTo()

可用性

Flash Player 6。

用法

my_mc.moveTo(x, y)

参数

x 一个整数，指示相对于父级影片剪辑的注册点的水平位置。

y 一个整数，指示相对于父级影片剪辑的注册点的垂直位置。

返回

无。

说明

方法；将当前绘画位置移动到 (x, y)。如果缺少任何一个参数，则此方法将失败，并且当前绘画位置不改变。

示例

该示例使用 5 磅的纯洋红色线条绘制无填充的三角形。第一行创建一个要进行绘制的空影片剪辑。在 with 语句内部，定义一个线条类型，然后由 moveTo() 方法指示起始绘画位置。

_root.createEmptyMovieClip( "triangle", 1 );
with ( _root.triangle )
{
lineStyle( 5, 0xff00ff, 100 );
moveTo( 200, 200 );
lineTo( 300,300 );
lineTo( 100, 300 );
lineTo( 200, 200 );
}

另请参见

MovieClip.createEmptyMovieClip(), MovieClip.lineStyle(), MovieClip.lineTo()


MovieClip._name

可用性

Flash Player 4。

用法

my_mc._name

说明

属性；由 my_mc 指定的影片剪辑的实例名称。


MovieClip.nextFrame()

可用性

Flash Player 5。

用法

my_mc.nextFrame()

参数

无。

返回

无。

说明

方法；将播放头转到下一帧并停止。

另请参见

nextFrame()


MovieClip.onData

可用性

Flash Player 6。

用法

my_mc.onData = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当影片剪辑从 loadVariables() 或 loadMovie() 调用接收数据时调用。必须定义一个在调用事件处理函数时执行的函数。

此处理函数只能与某些影片剪辑一起使用，对于这些影片剪辑，它们在库中有与类关联的元件。如果要在特定影片剪辑收到数据时调用事件处理函数，则必须使用 onClipEvent(data) 而不能使用此处理函数。当任何影片剪辑收到数据时，都会调用处理函数 onClipEvent(data)。

示例

下面的示例说明了 MovieClip.onData() 和 onClipEvent(data) 的正确用法。

// symbol_mc 是库中的影片剪辑元件。
// 它被链接到 MovieClip 类。
// 对于 symbol_mc 的每个实例，在这些实例被实例化并显示在时间轴上时将触发
//   下面的函数。
symbol_mc.onData = function() {
   trace("The movie clip has received data");
}

// dynamic_mc 是使用 MovieClip.loadMovie() 加载的影片剪辑。
//   此代码尝试在加载该剪辑时调用函数，
//   但此代码不起作用，因为加载的 SWF 不是库中与 MovieClip 类关联的
//   元件。
function output()
{
    trace("Will never be called.");
}
dynamic_mc.onData = output;
dynamic_mc.loadMovie("replacement.swf");

// 对于任何显示在时间轴上的影片剪辑，系统都将调用下面的函数，
// 而不管该影片剪辑是否存在于库中。
// 因此，当实例化 symbol_mc 时
//    以及加载 replacement.swf 时都将调用此函数。
OnClipEvent( data ) {
   trace("The movie clip has received data");
}

另请参见

onClipEvent()


MovieClip.onDragOut

可用性

Flash Player 6。

用法

my_mc.onDragOut = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当按下鼠标按钮并且指针滑出对象时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onDragOut 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onDragOut = function () {
  trace ("onDragOut called");
};

另请参见

MovieClip.onDragOver


MovieClip.onDragOver

可用性

Flash Player 6。

用法

my_mc.onDragOver = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当鼠标指针在影片剪辑外拖动并且随后拖过该影片剪辑时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onDragOver 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onDragOver = function () {
  trace ("onDragOver called");
};

另请参见

MovieClip.onDragOut


MovieClip.onEnterFrame

可用性

Flash Player 6。

用法

my_mc.onEnterFrame = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；以 SWF 文件的帧频持续调用。首先处理与 enterFrame 剪辑事件关联的动作，然后才处理附加到受影响帧的所有帧动作。

必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onEnterFrame 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onEnterFrame = function () {
  trace ("onEnterFrame called");
};


MovieClip.onKeyDown

可用性

Flash Player 6。

用法

my_mc.onKeyDown = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当影片剪辑具有输入焦点并有按键被按下时调用。调用 onKeyDown 事件处理函数时没有参数。您可以使用 Key.getAscii() 和 Key.getCode() 方法来确定按下了哪个键。必须定义一个在调用事件处理函数时执行的函数。

仅当影片剪辑的输入焦点被启用和设置后，onKeyDown 事件处理函数才能工作。首先，必须将影片剪辑的 focusEnabled 属性设置为 true。然后，必须使该剪辑获得焦点。这可以通过使用 Selection.setFocus() 或通过设置 Tab 键以导航至该剪辑来实现。

如果使用 Selection.setFocus()，则必须将影片剪辑的路径传递给 Selection.setFocus()。当鼠标移动后，非常容易让其它元素重新获得焦点。

示例

下面的示例为 onKeyDown() 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onKeyDown = function () {
  trace ("onKeyDown called");
};

以下示例设置输入焦点。

MovieClip.focusEnabled = true;
Selection.setFocus(MovieClip);

另请参见

MovieClip.onKeyUp


MovieClip.onKeyUp

可用性

Flash Player 6。

用法

my_mc.onKeyUp = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当释放按键时调用。调用 onKeyUp 事件处理函数时没有参数。您可以使用 Key.getAscii() 和 Key.getCode() 方法来确定按下了哪个键。必须定义一个在调用事件处理函数时执行的函数。

仅当影片剪辑的输入焦点被启用和设置后，onKeyUp 事件处理函数才能工作。首先，必须将影片剪辑的 focusEnabled 属性设置为 true。然后，必须使该剪辑获得焦点。这可以通过使用 Selection.setFocus() 或通过设置 Tab 键以导航至该剪辑来实现。

如果使用 Selection.setFocus()，则必须将影片剪辑的路径传递给 Selection.setFocus()。当鼠标移动后，非常容易让其它元素重新获得焦点。

示例

下面的示例为 onKeyUp 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onKeyUp = function () {
  trace ("onKeyUp called");
};

以下示例设置输入焦点：

MovieClip.focusEnabled = true;
Selection.setFocus(MovieClip);


MovieClip.onKillFocus

可用性

Flash Player 6。

用法

my_mc.onKillFocus = function (newFocus) {
  // 此处是您的语句
}

参数

newFocus 要接收键盘焦点的对象。

返回

无。

说明

事件处理函数；当影片剪辑失去键盘焦点时调用。onKillFocus 方法接收一个参数 newFocus，该参数是一个对象，表示要接收焦点的新对象。如果没有对象接收焦点，则 newFocus 将包含值 null。


MovieClip.onLoad

可用性

Flash Player 6。

用法

my_mc.onLoad = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当影片剪辑被实例化并出现在时间轴上时调用。必须定义一个在调用事件处理函数时执行的函数。

此处理函数只能与某些影片剪辑一起使用，对于这些影片剪辑，它们在库中有与类关联的元件。如果要在特定影片剪辑加载时（例如当使用 MovieClip.loadMovie() 动态加载 SWF 文件时）调用事件处理函数，必须使用 onClipEvent(load) 而不能使用此处理函数。当任何影片剪辑加载时，都会调用处理函数 onClipEvent(load)。

示例

下面的示例说明了 MovieClip.onLoad() 和 onClipEvent(load) 的正确用法。

// symbol_mc 是库中的影片剪辑元件。
// 它被链接到 MovieClip 类。
// 对于 symbol_mc 的每个实例，在这些实例被实例化并显示在时间轴上时将触发
//   下面的函数。
symbol_mc.onLoad = function() {
   trace("The movie clip is loaded");
}

// dynamic_mc 是使用 MovieClip.loadMovie() 加载的影片剪辑。
//   此代码尝试在加载该剪辑时调用函数，
//   但此代码不起作用，因为加载的 SWF 不是库中与 MovieClip 类关联的
//   元件。
function output()
{
    trace("Will never be called.");
}
dynamic_mc.onLoad = output;
dynamic_mc.loadMovie("replacement.swf");

// 对于任何显示在时间轴上的影片剪辑，系统都将调用下面的函数，
// 而不管该影片剪辑是否存在于库中。
// 因此，当实例化 symbol_mc 时
//    以及加载 replacement.swf 时都将调用此函数。
OnClipEvent( load ) {
   trace("The movie clip is loaded");
}

另请参见

onClipEvent()


MovieClip.onMouseDown

可用性

Flash Player 6。

用法

my_mc.onMouseDown = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当按下鼠标按钮时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onMouseDown 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onMouseDown = function () {
  trace ("onMouseDown called");
}


MovieClip.onMouseMove

可用性

Flash Player 6。

用法

my_mc.onMouseMove = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当鼠标移动时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onMouseMove 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onMouseMove = function () {
  trace ("onMouseMove called");
};


MovieClip.onMouseUp

可用性

Flash Player 6。

用法

my_mc.onMouseUp = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当释放鼠标按钮时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onMouseUp 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onMouseUp = function () {
  trace ("onMouseUp called");
};


MovieClip.onPress

可用性

Flash Player 6。

用法

my_mc.onPress = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当鼠标指针处于影片剪辑之上而用户单击鼠标按钮时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onPress 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onPress = function () {
  trace ("onPress called");
};


MovieClip.onRelease

可用性

Flash Player 6。

用法

my_mc.onRelease = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当释放按钮影片剪辑时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onPress 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onRelease = function () {
  trace ("onRelease called");
};


MovieClip.onReleaseOutside

可用性

Flash Player 6。

用法

my_mc.onReleaseOutside = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；该函数在这种情况下调用：即在影片剪辑内部按下鼠标按钮后，鼠标指针在该影片剪辑外面时释放鼠标按钮。

必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onReleaseOutside 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onReleaseOutside = function () {
  trace ("onReleaseOutside called");
};


MovieClip.onRollOut

可用性

Flash Player 6。

用法

my_mc.onRollOut = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当鼠标指针移出影片剪辑区域的外面时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onRollOut 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onRollOut = function () {
  trace ("onRollOut called");
};


MovieClip.onRollOver

可用性

Flash Player 6。

用法

my_mc.onRollOver = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当鼠标指针滑过影片剪辑区域时调用。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 onRollOver 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onRollOver = function () {
  trace ("onRollOver called");
};


MovieClip.onSetFocus

可用性

Flash Player 6。

用法

my_mc.onSetFocus = function(oldFocus){
  // 此处是您的语句
}

参数

oldFocus 将失去焦点的对象。

返回

无。

说明

事件处理函数；当影片剪辑接收键盘焦点时调用。oldFocus 参数是失去焦点的对象。例如，如果用户按 Tab 键将输入焦点从影片剪辑移到文本字段，则 oldFocus 包含该影片剪辑实例。

如果以前没有具有焦点的对象，则 oldFocus 包含 null 值。


MovieClip.onUnload

可用性

Flash Player 6。

用法

my_mc.onUnload = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；从时间轴删除影片剪辑后，在第 1 帧中调用。Flash 先处理与 onUnload 事件处理函数关联的动作，然后才将动作附加到受影响的帧。必须定义一个在调用事件处理函数时执行的函数。

示例

下面的示例为 MovieClip.onUnload 方法定义一个函数，该函数将 trace() 动作发送到“输出”面板。

my_mc.onUnload = function () {
  trace ("onUnload called");
};


MovieClip._parent

可用性

Flash Player 5。

用法

my_mc._parent.property
_parent.property

说明

属性；指向包含当前影片剪辑或对象的影片剪辑或对象的引用。当前对象是包含引用 _parent 的动作脚本代码的对象。使用 _parent 属性来指定一个相对路径，该路径指向当前影片剪辑或对象上级的影片剪辑或对象。

可以使用 _parent 在显示列表中攀升多个级别，如下所示：

_parent._parent._alpha = 20;

另请参见

Button._parent, _root, targetPath, TextField._parent


MovieClip.play()

可用性

Flash Player 5。

用法

my_mc.play()

参数

无。

返回

无。

说明

方法：在影片剪辑的时间轴中移动播放头。

另请参见

play()


MovieClip.prevFrame()

可用性

Flash Player 5。

用法

my_mc.prevFrame()

参数

无。

返回

无。

说明

方法；将播放头转到前一帧并停止。

另请参见

prevFrame()


MovieClip.removeMovieClip()

可用性

Flash Player 5。

用法

my_mc.removeMovieClip()

参数

无。

返回

无。

说明

方法；删除用 duplicateMovieClip()、MovieClip.duplicateMovieClip() 或 MovieClip.attachMovie() 创建的影片剪辑实例。


MovieClip._rotation

可用性

Flash Player 4。

用法

my_mc._rotation

说明

属性；影片剪辑距其原始方向的旋转程度（以度为单位）。从 0 到 180 的值表示顺时针方向的旋转；从 0 到 -180 的值表示逆时针方向的旋转。对于此范围之外的值，可以通过加上或减去 360 获得该范围内的值。例如，语句 my_mc._rotation = 450 与 my_mc._rotation = 90 相同。

另请参见

Button._rotation, TextField._rotation


MovieClip.setMask()

可用性

Flash Player 6。

用法

my_mc.setMask(mask_mc)

参数

my_mc 要使用遮罩的影片剪辑的实例名称。

mask_mc 将成为遮罩的影片剪辑的实例名称。

返回

无。

说明

方法；使参数 mask_mc 中的影片剪辑成为遮罩，该遮罩展示由 my_mc 参数指定的影片剪辑。

此方法允许将带有复杂的多图层内容的多帧影片剪辑用作遮罩。可以在运行时打开或关闭遮罩。但是，不能将同一遮罩用于多个遮罩受体（如果使用遮罩层，则这是可能的）。如果在使用遮罩的影片剪辑中有设备字体，则它们可以进行绘制但不使用遮罩。不能将影片剪辑设置为其自己的遮罩，例如 my_mc.setMask(my_mc)。

如果创建包含影片剪辑的遮罩层，然后对其应用 setMask() 方法，则 setMask() 调用会获得优先权并且这是不可逆的。例如，在名为 UIMask 的遮罩层中有一个影片剪辑，该影片剪辑对包含名为 UIMaskee 的另一个影片剪辑的其它图层使用遮罩。如果在 SWF 文件播放时调用 UIMask.setMask(UIMaskee)，则从这一刻开始，由 UIMaskee 对 UIMask 使用遮罩。

若要取消用动作脚本创建的遮罩，可以将值 null 传递给 setMask() 方法。下面的代码将在不影响时间轴中的遮罩层的情况下取消遮罩。

UIMask.setMask(null);

示例

下面的代码使用影片剪辑 circleMask_mc 对影片剪辑 theMaskee_mc 使用遮罩。

theMaskee_mc.setMask(circleMask_mc);


MovieClip._soundbuftime

可用性

Flash Player 6。

用法

my_mc._soundbuftime

说明

属性（全局）；一个整数，指定在声音开始进入流之前，预先缓冲的秒数。


MovieClip.startDrag()

可用性

Flash Player 5。

用法

my_mc.startDrag([lock, [left, top, right, bottom]])

参数

lock 一个布尔值，指定可拖动影片剪辑是锁定到鼠标位置中央 (true)，还是锁定到用户首次单击该影片剪辑的位置上 (false)。此参数是可选的。

left、top、right、bottom 相对于影片剪辑父级坐标的值，这些值指定该影片剪辑的约束矩形。这些参数是可选的。

返回

无。

说明

方法；允许用户拖动指定的影片剪辑。该影片剪辑将一直保持可拖动，直到通过对 MovieClip.stopDrag() 的调用明确停止为止，或者直到另一个影片剪辑变为可拖动为止。在同一时间只有一个影片剪辑是可拖动的。

另请参见

MovieClip._droptarget, startDrag(), MovieClip.stopDrag()


MovieClip.stop()

可用性

Flash Player 5。

用法

my_mc.stop()

参数

无。

返回

无。

说明

方法；停止当前正在播放的影片剪辑。

另请参见

stop()


MovieClip.stopDrag()

可用性

Flash Player 5。

用法

my_mc.stopDrag()

参数

无。

返回

无。

说明

方法；终止 MovieClip.startDrag() 方法。用该方法变为可拖动的影片剪辑将一直保持可拖动状态，直到添加了 stopDrag() 方法为止，或者直到另一个影片剪辑变为可拖动为止。在同一时间只有一个影片剪辑是可拖动的。

另请参见

MovieClip._droptarget, MovieClip.startDrag(), stopDrag()


MovieClip.swapDepths()

可用性

Flash Player 5。

用法

my_mc.swapDepths(depth)
my_mc.swapDepths(target)

参数

depth 一个数字，指定 my_mc 将被放置的深度级别。

target 一个字符串，指定其深度将被 my_mc 指定的实例交换的影片剪辑实例。两个实例必须具有相同的父级影片剪辑。

返回

无。

说明

方法；用由 target 参数指定的影片剪辑或者当前占据着 depth 参数中指定的深度级别的影片剪辑交换指定实例 (my_mc) 的堆叠，即 z 顺序（深度级别）。两个影片剪辑必须具有相同的父级影片剪辑。交换影片剪辑的深度级别的作用是将一个影片剪辑移到另一个影片剪辑的前面或后面。如果调用该方法时影片剪辑正在补间，则补间会停止。有关更多信息，请参见管理影片剪辑的深度。

另请参见

_level, MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth()


MovieClip.tabChildren

可用性

Flash Player 6。

用法

my_mc.tabChildren

说明

属性；默认情况下为 undefined。如果 tabChildren 为 undefined 或 true，则影片剪辑的子级包含在 Tab 键的自动排序中。如果 tabChildren 的值为 false，则影片剪辑的子级不包含在 Tab 键的自动排序中。

示例

一个构建为影片剪辑的列表框 UI 窗口小部件包含几个项目。用户可以单击每项来进行选择，因此每项都是一个按钮。但是，只有列表框自身应为 Tab 键停靠位。列表框内部的项目应该排除在 Tab 键排序之外。为实现此目的，该列表框的 tabChildren 属性应设置为 false。

如果使用 tabIndex 属性，则 tabChildren 属性不起作用；tabChildren 属性只影响 Tab 键的自动排序。

另请参见

Button.tabIndex, MovieClip.tabEnabled, MovieClip.tabIndex, TextField.tabIndex


MovieClip.tabEnabled

可用性

Flash Player 6。

用法

my_mc.tabEnabled

说明

属性；指定 my_mc 是否包含在 Tab 键的自动排序中。默认情况下它是 undefined。

如果 tabEnabled 为 undefined，则只有它定义至少一个按钮处理函数（例如 MovieClip.onRelease）后，该对象才包括在 Tab 键的自动排序中。如果 tabEnabled 为 true，则该对象包括在 Tab 键的自动排序中。如果 tabIndex 属性也设置为某个值，则该对象也包括在 Tab 键的自定义排序中。

如果 tabEnabled 为 false，则即使设置了 tabIndex 属性，该对象也不包括在 Tab 键的自动或自定义排序中。但是，如果 MovieClip.tabChildren 为 true，则即使 tabEnabled 为 false，影片剪辑的子级可能仍包含在 Tab 键的自动排序中。

另请参见

Button.tabEnabled, MovieClip.tabChildren, MovieClip.tabIndex, TextField.tabEnabled


MovieClip.tabIndex

可用性

Flash Player 6。

用法

my_mc.tabIndex

说明

属性；使您可以自定义影片中对象的 Tab 键排序。默认情况下，tabIndex 属性为 undefined。可以对按钮、影片剪辑或文本字段实例设置 tabIndex。

如果 SWF 文件中的一个对象包含 tabIndex 属性，则禁用 Tab 键的自动排序，并且使用该 SWF 文件中对象的 tabIndex 属性来计算 Tab 键排序。Tab 键的自定义排序仅包括那些具有 tabIndex 属性的对象。

tabIndex 属性必须为正整数。将根据这些对象的 tabIndex 属性按升序对这些对象进行排序。tabIndex 值为 1 的对象位于 tabIndex 值为 2 的对象之前。Tab 键的自定义排序会忽略 SWF 文件中对象的层次关系。SWF 文件中具有 tabIndex 属性的所有对象都按 Tab 键顺序排列。多个对象不应使用相同的 tabIndex 值。

另请参见

Button.tabIndex, TextField.tabIndex


MovieClip._target

可用性

Flash Player 4。

用法

my_mc._target

说明

属性（只读）；返回 my_mc 参数指定的影片剪辑实例的目标路径。


MovieClip._totalframes

可用性

Flash Player 4。

用法

my_mc._totalframes

说明

属性（只读）；返回 MovieClip 参数中指定的影片剪辑实例中的总帧数。


MovieClip.trackAsMenu

可用性

Flash Player 6。

用法

my_mc.trackAsMenu

说明

属性；指示其它按钮或影片剪辑是否可接收鼠标按钮释放事件的布尔值属性。这将允许您创建菜单。您可以对任何按钮或影片剪辑对象设置 trackAsMenu 属性。如果 trackAsMenu 属性不存在，则默认行为是 false。

可以在任何时候更改 trackAsMenu 属性；修改后的按钮影片剪辑会立即获得新的行为。

另请参见

Button.trackAsMenu


MovieClip.unloadMovie()

可用性

Flash Player 5。

用法

my_mc.unloadMovie()

参数

无。

返回

无。

说明

方法；删除影片剪辑实例的内容。保留实例属性和剪辑处理函数。

若要删除实例（包括其属性和剪辑处理函数），请使用MovieClip.removeMovieClip()。

另请参见

MovieClip.attachMovie(), MovieClip.loadMovie(), unloadMovie(), unloadMovieNum()


MovieClip._url

可用性

Flash Player 4。

用法

my_mc._url

说明

属性（只读）；获取从中下载影片剪辑的 SWF 文件的 URL。


MovieClip.useHandCursor

可用性

Flash Player 6。

用法

my_mc.useHandCursor

说明

属性；一个布尔值，指示当鼠标滑过按钮影片剪辑时是否显示手形光标（指示手光标）。useHandCursor 的默认值为 true。如果将 useHandCursor 设置为 true，则当鼠标滑过按钮影片剪辑时会显示用于按钮的指示手光标。如果 useHandCursor 为 false，则改用箭头光标。

可以在任何时候更改 useHandCursor 属性；修改后的按钮影片剪辑会立即获得新的光标行为。可以从原型对象读出 useHandCursor 属性。


MovieClip._visible

可用性

Flash Player 4。

用法

my_mc._visible

说明

属性；一个布尔值，指示 my_mc 指定的影片剪辑是否可见。不可见的影片剪辑（_visible 属性设置为 false）处于禁用状态。例如，不能单击 _visible 设置为 false 的影片剪辑中的按钮。

另请参见

Button._visible, TextField._visible


MovieClip._width

可用性

Flash Player 4，作为只读属性。

用法

my_mc._width

说明

属性；影片剪辑的宽度（以像素为单位）。

示例

下面的示例在用户单击鼠标按钮时设置影片剪辑的高度和宽度属性。

onclipEvent(mouseDown) {
  _width=200;
  _height=200;
}

另请参见

MovieClip._height


MovieClip._x

可用性

Flash Player 3。

用法

my_mc._x

说明

属性；设置影片剪辑 x 坐标的整数，该坐标相对于父级影片剪辑的本地坐标。如果影片剪辑在主时间轴中，则其坐标系统将舞台的左上角作为 (0, 0)。如果影片剪辑位于另一个具有变形的影片剪辑中，则该影片剪辑位于包含它的影片剪辑的本地坐标系统中。因此，对于逆时针旋转 90 度的影片剪辑，该影片剪辑的子级将继承逆时针旋转 90 度的坐标系统。影片剪辑的坐标指的是注册点的位置。

另请参见

MovieClip._xscale, MovieClip._y, MovieClip._yscale


MovieClip._xmouse

可用性

Flash Player 5。

用法

my_mc._xmouse

说明

属性（只读）；返回鼠标位置的 x 坐标。

另请参见

Mouse 类, MovieClip._ymouse


MovieClip._xscale

可用性

Flash Player 4。

用法

my_mc._xscale

说明

属性；确定从影片剪辑的注册点开始应用的影片剪辑的水平缩放比例 (percentage)。默认注册点为 (0,0)。

缩放本地坐标系统将影响 _x 和 _y 属性的设置，这些设置是以整像素定义的。例如，如果父级影片剪辑缩放到 50%，则设置 _x 属性将移动影片剪辑中的对象，距离为在影片设置为 100% 时其像素数的一半。

另请参见

MovieClip._x, MovieClip._y, MovieClip._yscale


MovieClip._y

可用性

Flash Player 3。

用法

my_mc._y

说明

属性；设置影片剪辑的 y 坐标，该坐标相对于父级影片剪辑的本地坐标。如果影片剪辑在主时间轴中，则其坐标系统将舞台的左上角作为 (0, 0)。如果影片剪辑位于另一个具有变形的影片剪辑中，则该影片剪辑位于包含它的影片剪辑的本地坐标系统中。因此，对于逆时针旋转 90 度的影片剪辑，该影片剪辑的子级将继承逆时针旋转 90 度的坐标系统。 影片剪辑的坐标指的是注册点的位置。

另请参见

MovieClip._x, MovieClip._xscale, MovieClip._yscale


MovieClip._ymouse

可用性

Flash Player 5。

用法

my_mc._ymouse

说明

属性（只读）；指示鼠标位置的 y 坐标。

另请参见

Mouse 类, MovieClip._xmouse


MovieClip._yscale

可用性

Flash Player 4。

用法

my_mc._yscale

说明

属性；设置从影片剪辑注册点开始应用的该影片剪辑的垂直缩放比例 (percentage)。默认注册点为 (0,0)。

缩放本地坐标系统将影响 _x 和 _y 属性的设置，这些设置是以整像素定义的。例如，如果将父级影片剪辑缩放到 50%，则设置 _x 属性将移动影片剪辑中的对象，距离为在影片为 100% 时其像素数的一半。

另请参见

MovieClip._x, MovieClip._xscale, MovieClip._y


MovieClipLoader 类

可用性

Flash Player 7。

说明

此类用于实现在 SWF 或 JPEG 文件正被加载到（下载到）影片剪辑中时提供状态信息的侦听器回调。若要使用 MovieClipLoader 功能，请使用 MovieClipLoader.loadClip()（而不是 loadMovie() 或 MovieClip.loadMovie()）来加载 SWF 文件。

在发出 MovieClipLoader.loadClip() 命令后，以下事件按下列顺序发生：

  • 在下载的文件的第一个字节写入磁盘后，调用 MovieClipLoader.onLoadStart() 侦听器。
  • 如果您已实现了 MovieClipLoader.onLoadProgress() 侦听器，则在加载过程中调用它。

    注意：您可以在加载过程中随时调用 MovieClipLoader.getProgress()。

  • 在整个下载的文件都写入磁盘后，调用 MovieClipLoader.onLoadComplete() 侦听器。
  • 在执行下载的文件的第一个帧动作后，调用 MovieClipLoader.onLoadInit() 侦听器。

在调用 MovieClipLoader.onLoadInit() 后，您可以设置属性，使用方法，以及与加载的影片交互。

如果文件未能完全加载，则调用 MovieClipLoader.onLoadError() 侦听器。

MovieClipLoader 类的方法概要

方法 | 说明
MovieClipLoader.addListener() | 注册一个对象，以便在调用 MovieClipLoader 事件处理函数时接收通知。
MovieClipLoader.getProgress() | 返回使用 MovieClipLoader.loadClip() 正加载的文件的已加载字节数和该文件的总字节数。
MovieClipLoader.loadClip() | 在播放原始影片时，将 SWF 或 JPEG 文件加载到 Flash Player 中的影片剪辑中。
MovieClipLoader.removeListener() | 删除已使用 MovieClipLoader.addListener() 注册的对象。
MovieClipLoader.unloadClip() | 删除已通过 MovieClipLoader.loadClip() 加载的影片剪辑。

MovieClipLoader 类的侦听器概要

侦听器 | 说明
MovieClipLoader.onLoadComplete() | 在使用 MovieClipLoader.loadClip() 加载的文件已完全下载时调用。
MovieClipLoader.onLoadError() | 在使用 MovieClipLoader.loadClip() 加载的文件未能加载时调用。
MovieClipLoader.onLoadInit() | 当执行加载的剪辑的第一帧上的动作时调用。
MovieClipLoader.onLoadProgress() | 加载过程中每当将加载的内容写入磁盘时调用。
MovieClipLoader.onLoadStart() | 当对 MovieClipLoader.loadClip() 的调用已成功开始下载文件时调用。

MovieClipLoader 类的构造函数

可用性

Flash Player 7。

用法

new MovieClipLoader()

参数

无。

返回

无。

说明

构造函数；创建一个 MovieClipLoader 对象，您可以使用该对象实现许多侦听器，以在正下载 SWF 或 JPEG 文件时对事件做出响应。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.addListener()


MovieClipLoader.addListener()

可用性

Flash Player 7。

用法

my_mcl.addListener(listenerObject)

参数

listenerObject 侦听来自 MovieClipLoader 事件处理函数的回调通知的对象。

返回

无。

说明

方法；注册一个对象以在调用 MovieClipLoader 事件处理函数时接收通知。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.onLoadComplete(), MovieClipLoader.onLoadError(), MovieClipLoader.onLoadInit(), MovieClipLoader.onLoadProgress(), MovieClipLoader.onLoadStart(), MovieClipLoader.removeListener()


MovieClipLoader.getProgress()

可用性

Flash Player 7。

用法

my_mcl.getProgress(target_mc)

参数

target_mc 一个使用 MovieClipLoader.loadClip() 加载的 SWF 或 JPEG 文件。

返回

一个具有以下两个整数属性的对象：bytesLoaded 和 bytesTotal。

说明

方法；返回使用 MovieClipLoader.loadClip() 正加载的文件的已加载字节数和该文件的总字节数；对于压缩的影片，它反映压缩的字节数。此方法使您可以显式请求此信息，而不是（或除此之外还）编写 MovieClipLoader.onLoadProgress() 侦听器函数。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.onLoadProgress()


MovieClipLoader.loadClip()

可用性

Flash Player 7。

用法

my_mcl.loadClip("url", target )

参数

url 要加载的 SWF 文件或 JPEG 文件的绝对或相对 URL。相对路径必须相对于级别 0 处的 SWF 文件。绝对 URL 必须包括协议引用，例如 http:// 或 file:///。文件名不能包括磁盘驱动器说明。

target 影片剪辑的目标路径，或者指定 Flash Player 中影片将加载到的级别的整数。目标影片剪辑将替换为加载的影片或图像。

返回

无。

说明

方法；在播放原始影片时，将 SWF 或 JPEG 文件加载到 Flash Player 中的影片剪辑中。使用此方法可以一次显示几个影片并且无需加载另一个 HTML 文档即可在影片间进行切换。

使用此方法（而不是 loadMovie() 或 MovieClip.loadMovie()）具有以下若干优点：

  • 在加载开始时调用 MovieClipLoader.onLoadStart() 处理函数。
  • 在无法加载剪辑时调用 MovieClipLoader.onLoadError() 处理函数。
  • 在加载进程正进行时调用 MovieClipLoader.onLoadProgress() 处理函数。
  • 在执行该剪辑的第一帧中的动作后调用 MovieClipLoader.onLoadInit() 处理函数，以便您可以处理加载的剪辑。

加载到影片剪辑的影片或图像会继承该影片剪辑的位置、旋转和缩放属性。可以用该影片剪辑的目标路径来定位加载的影片。

您可以使用此方法将一个或多个文件加载到单个影片剪辑或级别中；将 MovieClipLoader 侦听器对象作为参数传递给正加载的目标影片剪辑实例。或者，您可以为加载的每一文件创建不同的 MovieClipLoader 对象。

使用 MovieClipLoader.unloadClip() 删除用此方法加载的影片或图像，或者取消正在进行中的加载操作。

示例

以下示例举例说明如何使用多个 MovieClipLoader 方法和侦听器。

// 首先设置侦听器
var my_mcl = new MovieClipLoader();
myListener = new Object();
myListener.onLoadStart = function (target_mc)
{
myTrace ("*********First my_mcl instance*********");
myTrace ("Your load has begun on movie clip .= " + target_mc);
var loadProgress = my_mcl.getProgress(target_mc);
myTrace(loadProgress.bytesLoaded + " = bytes loaded at start" );
myTrace(loadProgress.bytesTotal + " = bytes total at start");
}
myListener.onLoadProgress = function (target_mc, loadedBytes, totalBytes)
{
myTrace ("*********First my_mcl instance Progress*********");
myTrace ("onLoadProgress() called back on movie clip " + target_mc);
myTrace(loadedBytes + " = bytes loaded at progress callback " );
myTrace(totalBytes + " = bytes total at progress callback \n");
}
myListener.onLoadComplete = function (target_mc)
{
myTrace ("*********First my_mcl instance*********");
myTrace ("Your load is done on movie clip = " + target_mc);
var loadProgress = my_mcl.getProgress(target_mc);
myTrace(loadProgress.bytesLoaded + " = bytes loaded at end");
myTrace(loadProgress.bytesTotal + " = bytes total at end=");
}
myListener.onLoadInit = function (target_mc)
{
myTrace ("*********First my_mcl instance*********");
myTrace ("Movie clip = " + target_mc + " is now initialized");
// 您现在可以进行所需的任何设置，例如：
target_mc._width = 100;
target_mc._width = 100;
}
myListener.onLoadError = function (target_mc, errorCode)
{
myTrace ("*********First my_mcl instance*********");
myTrace ("ERROR CODE = " + errorCode);
myTrace ("Your load failed on movie clip = " + target_mc + "\n");
 }
my_mcl.addListener(myListener);
//现在将这些文件加载到其目标中。
// 加载到影片剪辑中 - 字符串用作目标
my_mcl.loadClip("http://www.somedomain.somewhere.com/someFile.swf","_root.myMC");
my_mcl.loadClip("http://www.somedomain.somewhere.com/someOtherFile.swf", "_level0.myMC2");
//失败的加载
my_mcl.loadClip("http://www.somedomain.somewhere.com/someFile.jpg", _root.myMC5);

// 加载到影片剪辑中 - 影片剪辑实例用作目标。
my_mcl.loadClip("http://www.somedomain.somewhere.com/someOtherFile.jpg", _level0.myMC3);

// 加载到 _level1
my_mcl.loadClip("file:///C:/media/images/somePicture.jpg", 1);

//第二次设置侦听器
var another_mcl = new MovieClipLoader();
myListener2 = new Object();
myListener2.onLoadStart = function (target_mc)
{
myTrace ("*********Second my_mcl instance*********");
myTrace ("Your load has begun on movie clip22 .= " + target_mc);
var loadProgress = my_mcl.getProgress(target_mc);
myTrace(loadProgress.bytesLoaded + " = bytes loaded at start" );
myTrace(loadProgress.bytesTotal + " = bytes total at start");
}
myListener2.onLoadComplete = function (target_mc)
{
myTrace ("*********Second my_mcl instance*********");
myTrace ("Your load is done on movie clip = " + target_mc);
var loadProgress = my_mcl.getProgress(target_mc);
myTrace(loadProgress.bytesLoaded + " = bytes loaded at end");
myTrace(loadProgress.bytesTotal + " = bytes total at end" );
}
myListener2.onLoadError = function (target_mc, errorCode)
{
myTrace ("*********Second my_mcl instance*********");
myTrace ("ERROR CODE = " + errorCode);
myTrace ("Your load failed on movie clip = " + target_mc + "\n");
 }
another_mcl.addListener(myListener2);
//现在将这些文件加载到其目标中（使用 MovieClipLoader 的第二个实例）
another_mcl.loadClip("http://www.somedomain.somewhere.com/yetAnotherFile.jpg", _root.myMC4);
// 在完成下载以及已调用 my_mcl.onLoadInit 后
// 发出以下语句。
// my_mcl.removeListener(myListener)
// my_mcl.removeListener(myListener2)

另请参见

MovieClipLoader.unloadClip()


MovieClipLoader.onLoadComplete()

可用性

Flash Player 7。

用法

listenerObject.onLoadComplete() = function(target_mc) {
  // 此处是您的语句
}

参数

listenerObject 一个已使用 MovieClipLoader.addListener() 加载的侦听器对象。

target_mc 通过 MovieClipLoader.loadClip() 方法加载的影片剪辑。

返回

无。

说明

侦听器；在使用 MovieClipLoader.loadClip() 加载的文件已完全下载时调用。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.addListener(), MovieClipLoader.onLoadStart(), MovieClipLoader.onLoadError()


MovieClipLoader.onLoadError()

可用性

Flash Player 7。

用法

listenerObject.onLoadError() = function(target_mc, errorCode) {
  // 此处是您的语句
}

参数

listenerObject 一个已使用 MovieClipLoader.addListener() 加载的侦听器对象。

target_mc 通过 MovieClipLoader.loadClip() 方法加载的影片剪辑。

errorCode 解释失败原因的字符串。

返回

以下两个字符串之一：“URLNotFound”或“LoadNeverCompleted”。

说明

侦听器；在使用 MovieClipLoader.loadClip() 加载的文件未能加载时调用。

如果 MovieClipLoader.onLoadStart() 和 MovieClipLoader.onLoadComplete() 侦听器均未调用，则返回字符串“URLNotFound”。例如，如果服务器关闭或未找到该文件，则不调用这些侦听器。

如果已调用 MovieClipLoader.onLoadStart() 但未调用 MovieClipLoader.onLoadComplete()，则返回字符串“LoadNeverCompleted”。例如，如果调用 MovieClipLoader.onLoadStart()，但下载由于服务器超载或服务器崩溃等原因而中断，将不调用 MovieClipLoader.onLoadComplete()。

示例

请参见 MovieClipLoader.loadClip()。


MovieClipLoader.onLoadInit()

可用性

Flash Player 7。

用法

listenerObject.onLoadInit() = function(target_mc) {
  // 此处是您的语句
}

参数

listenerObject 一个已使用 MovieClipLoader.addListener() 加载的侦听器对象。

target_mc 通过 MovieClipLoader.loadClip() 方法加载的影片剪辑。

返回

无。

说明

侦听器；当执行加载的剪辑的第一帧上的动作时调用。在调用此侦听器后，您可以设置属性，使用方法，以及与加载的影片交互。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.onLoadStart()


MovieClipLoader.onLoadProgress()

可用性

Flash Player 7。

用法

listenerObject.onLoadProgress() =
  function(target_mc [, loadedBytes [, totalBytes ] ] ) {
  // 此处是您的语句
}

参数

listenerObject 一个已使用 MovieClipLoader.addListener() 加载的侦听器对象。

target_mc 通过 MovieClipLoader.loadClip() 方法加载的影片剪辑。

loadedBytes 在调用该侦听器时已加载的字节数。

totalBytes 在正加载的文件中的总字节数。

返回

无。

说明

侦听器；在加载过程中每当将加载的内容写入磁盘时（即，在 MovieClipLoader.onLoadStart() 和 MovieClipLoader.onLoadComplete() 之间）调用。您可以使用此方法以及使用 loadedBytes 和 totalBytes 参数，显示与下载的进度有关的信息。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.getProgress()


MovieClipLoader.onLoadStart()

可用性

Flash Player 7。

用法

listenerObject.onLoadStart() = function(target_mc) {
  // 此处是您的语句
}

参数

listenerObject 一个已使用 MovieClipLoader.addListener() 添加的侦听器对象。

target_mc 通过 MovieClipLoader.loadClip() 方法加载的影片剪辑。

返回

无。

说明

侦听器；在对 MovieClipLoader.loadClip() 的调用已成功开始下载文件时调用。

示例

请参见 MovieClipLoader.loadClip()。

另请参见

MovieClipLoader.onLoadError(), MovieClipLoader.onLoadInit(), MovieClipLoader.onLoadComplete()


MovieClipLoader.removeListener()

可用性

Flash Player 7。

用法

my_mcl.removeListener(listenerObject)

参数

listenerObject 一个已使用 MovieClipLoader.addListener() 加载的侦听器对象。

返回

无。

说明

方法；删除用来在调用 MovieClipLoader 事件处理函数时接收通知的对象。

示例

请参见 MovieClipLoader.loadClip()。


MovieClipLoader.unloadClip()

可用性

Flash Player 7。

用法

my_mcl.unloadClip(target)

参数

target 传递到对 my_mcl.loadClip() 的相应调用的字符串或整数。

返回

无。

说明

方法；删除通过 MovieClipLoader.loadClip() 已加载的影片剪辑。如果您在正加载影片时发出此命令，则调用 MovieClipLoader.onLoadError()。

另请参见

MovieClipLoader.loadClip()


NaN

可用性

Flash Player 5。

用法

NaN

说明

变量；代表 NaN（非数字）的、具有 IEEE-754 标准值的预定义变量。若要确定某个数字是否是 NaN，请使用 isNaN()。

另请参见

isNaN(), Number.NaN


ne（不等于 - 字符串专用）

可用性

Flash Player 4。不鼓励使用此运算符，推荐使用 !=（不等于） 运算符。

用法

expression1 ne expression2

参数

expression1、expression2 数字、字符串或变量。

返回

一个布尔值。

说明

运算符（比较）；将 expression1 与 expression2 进行比较，如果 expression1 不等于 expression2，则返回 true；否则，返回 false。

另请参见

!=（不等于）


NetConnection 类

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此类。有关更多信息，请参见 Flash Communication Server 文档。

说明

NetConnection 类提供从本地驱动器或 HTTP 地址播放 FLV 文件流的方法。有关视频回放的更多信息，请参见动态回放外部 FLV 文件。

NetConnection 类的方法摘要

方法 | 说明
NetConnection.connect() | 打开您可以通过它从 HTTP 地址或本地文件系统回放视频 (FLV) 文件的本地连接。

NetConnection 类的构造函数

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此类。有关更多信息，请参见 Flash Communication Server 文档。

用法

new NetConnection()

参数

无。

返回

无。

说明

构造函数；创建 NetConnection 对象，您可以将该对象与 NetStream 对象一起使用来回放本地视频流 (FLV) 文件。在创建 NetConnection 对象后，使用 NetConnection.connect() 进行实际连接。

与在 Flash 文档中嵌入视频相比，播放外部 FLV 文件有多个好处，例如更好的性能和内存管理以及独立的视频和 Flash 帧频。有关更多信息，请参见动态回放外部 FLV 文件。

另请参见

NetStream 类, Video.attachVideo()


NetConnection.connect()

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此方法。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_nc.connect(null);

参数

无（您必须传递 null）。

返回

无。

说明

构造函数；打开您可以通过它从 HTTP 地址或本地文件系统回放视频 (FLV) 文件的本地连接。

另请参见

NetStream 类


NetStream 类

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此类。有关更多信息，请参见 Flash Communication Server 文档。

说明

NetStream 类提供从本地文件系统或 HTTP 地址播放 Flash 视频 (FLV) 文件的方法和属性。您使用 NetStream 对象以通过 NetConnection 对象对视频进行流式处理。与在 Flash 文档中嵌入视频相比，播放外部 FLV 文件有多个好处，例如更好的性能和内存管理以及独立的视频和 Flash 帧频。该类提供若干方法和属性，您可以利用这些方法和属性在一个文件加载和播放时跟踪该文件的进度，以及便于用户控制回放（停止或暂停等）。

有关视频回放的更多信息，请参见动态回放外部 FLV 文件。

NetStream 类的方法摘要

NetConnection 和 NetStream 类的以下方法和属性用于控制 FLV 回放。

方法 | 目的
NetStream.close() | 关闭流但不清除视频对象。
NetStream.pause() | 暂停或恢复流的回放。
NetStream.play() | 开始回放外部视频 (FLV) 文件。
NetStream.seek() | 搜寻 FLV 文件中的特定位置。
NetStream.setBufferTime() | 指定将数据存入缓冲区多长时间后开始显示流。

NetStream 类的属性摘要

属性 | 说明
NetStream.bufferLength | 数据当前存在于缓冲区中的秒数。
NetStream.bufferTime | 只读：由 NetStream.setBufferTime() 分配给缓冲区的秒数。
NetStream.bytesLoaded | 只读；已加载到播放器中的数据的字节数。
NetStream.bytesTotal | 只读；正加载到播放器中的文件的总大小（以字节为单位）。
NetStream.currentFps | 每秒所显示的帧的数目。
NetStream.time | 只读；播放头的位置，以秒为单位。

NetStream 类的事件处理函数摘要

事件处理函数 | 说明
NetStream.onStatus | 每当状态更改或发布针对 NetStream 对象的错误时调用。

NetStream 类的构造函数

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此类。有关更多信息，请参见 Flash Communication Server 文档。

用法

new NetStream(my_nc)

参数

my_nc 一个 NetConnection 对象。

返回

无。

说明

构造函数；创建可用于通过指定的 NetConnection 对象播放 FLV 文件的流。

示例

以下代码首先构造新的 NetConnection 对象 my_nc，并且使用它构造称为 videoStream_ns 的新 NetStream 对象。

my_nc = new NetConnection();
my_nc.connect(null);
videoStream_ns = new NetStream(my_nc);

另请参见

NetConnection 类, NetStream 类, Video.attachVideo()


NetStream.bufferLength

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此属性。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.bufferLength

说明

只读属性；数据当前位于缓冲区的秒数。您可以将此属性与 NetStream.bufferTime 一起使用以评估如何关闭将要满的缓冲区；例如，要向正等待数据加载到缓冲区中的用户显示反馈。

另请参见

NetStream.bytesLoaded


NetStream.bufferTime

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此属性。有关更多信息，请参见 Flash Communication Server 文档。

用法

myStream.bufferTime

说明

只读属性；由 NetStream.setBufferTime() 分配给缓冲区的秒数。默认值为 .1（十分之一秒）。若要确定当前位于缓冲区中的秒数，请使用 NetStream.bufferLength。

另请参见

NetStream.time


NetStream.bytesLoaded

可用性

Flash Player 7。

用法

my_ns.bytesLoaded

说明

只读属性；已加载到播放器中的数据的字节数。您可以将此方法与 NetStream.bytesTotal 一起使用以评估如何关闭将要满的缓冲区；例如，要向正等待数据加载到缓冲区中的用户显示反馈。

另请参见

NetStream.bufferLength


NetStream.bytesTotal

可用性

Flash Player 7。

用法

my_ns.bytesLoaded

说明

只读属性；正加载到播放器中的文件的总大小（以字节为单位）。

另请参见

NetStream.bytesLoaded, NetStream.bufferTime


NetStream.close()

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此方法。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.close()

参数

无。

返回

无。

说明

方法；停止播放流上的所有数据，将 NetStream.time 属性设置为 0，使该流可用于其它用途。此命令还删除已使用 HTTP 下载的 FLV 文件的本地副本。

示例

以下 onDisconnect() 函数关闭一个连接并删除已存储在本地磁盘上的 someFile.flv 的临时副本。

my_nc = new NetConnection();
my_nc.connect(null);
my_ns = new NetStream(my_nc);
my_ns.play("http://www.someDomain.com/videos/someFile.flv");

function onDisconnect() {
  my_ns.close();
}

另请参见

NetStream.pause(), NetStream.play()


NetStream.currentFps

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此属性。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.currentFps

说明

只读属性；每秒显示的帧数。如果您正导出 FLV 文件以在多个系统上回放，可以在测试期间检查该值以帮助您确定在导出该文件时应用了多大程度的压缩。


NetStream.onStatus

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此处理函数。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.onStatus = function(infoObject) {
  // 此处是您的代码
}

参数

infoObject 按照状态或错误信息定义的参数。有关此参数的更多信息，请参见下面的“说明”。

返回

无。

说明

事件处理函数；每当状态发生更改或发布针对 NetStream 对象的错误时调用。如果要对此事件处理函数做出响应，则必须创建一个函数来处理该信息对象。

信息对象具有一个 code 属性（该属性包含的字符串说明 onStatus 处理函数的结果）和一个 level 属性（该属性包含字符串 "Status" 或 "Error"）。

除了此 onStatus 处理函数外，Flash 还提供称作 System.onStatus 的“超级”函数。如果为特定对象调用了 onStatus 但未分配任何函数对其进行响应，则 Flash 将处理分配到 System.onStatus 的函数（如果存在）。

以下事件在发生某些 NetStream 活动时通知您。

Code 属性 | Level 属性 | 含义
NetStream.Buffer.Empty | Status | 数据的接收速度不足以填充缓冲区。数据流将在缓冲区重新填充前中断，此时将发送 NetStream.Buffer.Full 消息，并且该流将再次开始播放。
NetStream.Buffer.Full | Status | 缓冲区已满并且流将开始播放。
NetStream.Play.Start | Status | 回放已开始。
NetStream.Play.Stop | Status | 回放已结束。
NetStream.Play.StreamNotFound | Error | 无法找到传递到 play() 方法的 FLV。

示例

以下示例将有关流的数据写入日志文件。

my_ns.onStatus = function(info)
{
  _root.log_stream += "Stream status.\n";
  _root.log_stream += "Event:" + info.code + "\n";
  _root.log_stream += "Type:" + info.level + "\n";
}

另请参见

System.onStatus


NetStream.pause()

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此方法。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.pause( [ pauseResume ] )

参数

pauseResume 可选：一个布尔值，指定是暂停播放 (true) 还是恢复播放 (false)。如果您省略此参数，NetStream.pause() 将会在暂停播放和恢复播放之间切换：第一次对指定的流调用该方法时，该流暂停播放；下一次调用该方法时，该流恢复播放。

返回

无。

说明

方法；暂停或恢复流的回放。

第一次您调用此方法时（不发送参数），它将暂停播放；下一次调用此方法时，它恢复播放。您可能要将此方法附加到一个按钮上，用户可以按下该按钮来暂停或恢复回放。

示例

以下示例阐释该方法的某些用法。

my_ns.pause(); // 第一次发出时暂停播放
my_ns.pause(); // 恢复播放
my_ns.pause(false); // 没有影响，播放继续
my_ns.pause(); // 暂停播放

另请参见

NetStream.close(), NetStream.play()


NetStream.play()

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此方法。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.play("fileName");

参数

fileName 用引号括起来的要播放的 FLV 文件的名称。支持 http:// 和 file:// 格式；file:// 位置始终相对于 SWF 文件的位置。

返回

无。

说明

方法；开始外部视频 (FLV) 文件的回放。若要查看视频数据，您必须调用 Video.attachVideo() 方法；与视频一起进行流式处理的音频或只包含音频的 FLV 文件自动播放。

如果要控制与 FLV 文件关联的音频，您可以使用 MovieClip.attachAudio() 将音频路由到影片剪辑；然后可以创建 Sound 对象来控制音频的某些属性。有关更多信息，请参见MovieClip.attachAudio()。

如果无法找到 FLV 文件，则调用 NetStream.onStatus 事件处理函数。如果您要停止当前正播放的流，请使用 NetStream.close()。

您可以播放与 SWF 文件存储于同一目录中或存储于其子目录中的本地 FLV 文件；但不能导航到更高级别的目录。例如，如果 SWF 文件位于名为 /training 的目录中，并且您要播放存储于 /training/videos 目录中的视频，则应使用以下语法：

my_ns.play("file://videos/videoName.flv");

若要播放存储于 /training 目录中的视频，应使用以下语法：

my_ns.play("file://videoName.flv");

示例

以下示例说明使用 NetStream.play() 命令的若干方法。

// 播放用户计算机上的文件
// joe_user 目录是存储 SWF 文件的目录
//     的子目录
my_ns.play("file://joe_user/flash/videos/lectureJune26.flv");

// 播放服务器上的文件
my_ns.play("http://someServer.someDomain.com/flash/video/orientation.flv");

另请参见

MovieClip.attachAudio(), NetStream.close(), NetStream.pause(), Video.attachVideo()


NetStream.seek()

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此方法。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.seek(numberOfSeconds)

参数

numberOfSeconds 要移入 FLV 文件的以秒为单位的时间近似值。播放头移向最接近 numberOfSeconds 的关键帧。

  • 若要返回到该流的开始处，请为 numberOfSeconds 传递 0。
  • 若要从此流的开始处向前搜寻，应传递您要前进的秒数。例如，若要将播放头放置于距开始处 15 秒的位置，请使用 myStream.seek(15)。
  • 若要相对于当前位置进行搜寻，请传递 mystream.time + n 或 mystream.time - n，以相对于当前位置分别向前或向后搜寻 n 秒。例如，若要从当前位置后退 20 秒，请使用 my_ns.seek(my_ns.time - 20)。

返回

无。

说明

方法；搜寻距流的开始处的最接近于指定秒数的关键帧。该流在达到该流中的指定位置时恢复播放。

示例

以下示例说明几种使用 NetStream.seek() 命令的方法。

// 返回到流的开始处
my_ns.seek(0);

// 移到距流的开始处 30 秒钟的位置
my_ns.seek(30);

//向后移到距当前位置 3 分钟的位置
my_ns.seek(my_ns.time - 180);

另请参见

NetStream.play(), NetStream.time


NetStream.setBufferTime()

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此方法。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.setBufferTime(numberOfSeconds)

参数

numberOfSeconds Flash 开始显示数据前存入缓冲区的数据的秒数。默认值是 .1（十分之一秒）。

说明

方法；指定将消息存入缓冲区多长时间后开始显示流。例如，如果您要确保流的最初 15 秒无中断播放，则将 numberOfSeconds 设置为 15；Flash 只在将 15 秒的数据存入缓冲区后才开始播放该流。

另请参见

NetStream.bufferTime


NetStream.time

可用性

Flash Player 7。

注意：当与 Flash Communication Server 一起使用时，Flash Player 6 也支持此属性。有关更多信息，请参见 Flash Communication Server 文档。

用法

my_ns.time

说明

只读属性；以秒为单位的播放头的位置。

另请参见

NetStream.bufferLength, NetStream.bytesLoaded


new

可用性

Flash Player 5。

用法

new constructor()

参数

constructor 一个函数，其后括号中可以是任何可选参数。此函数通常是要构造的对象类型的名称（如 Array、Number 或 Object）。

返回

无。

说明

运算符；创建一个初始时匿名的新对象，然后调用由 constructor 参数标识的函数。new 运算符将括号中的任何可选参数和用关键字 this 引用的新建对象传递给函数。然后构造函数可以用 this 来设置对象的变量。

示例

下面的示例创建 Book() 函数，然后使用 new 运算符来创建对象 book1 和 book2。

function Book(name, price){
  this.name = name;
  this.price = price;
}

book1 = new Book("Confederacy of Dunces", 19.95);
book2 = new Book("The Floating Opera", 10.95);

示例

下面的示例使用 new 运算符来创建具有 18 个元素的 Array 对象：

golfCourse_array = new Array(18);

另请参见

[]（数组访问）, {}（对象初始值设定项）


newline

可用性

Flash Player 4。

用法

newline

参数

无。

返回

无。

说明

常量；插入一个回车符 (\n)，该回车符在代码生成的文本输出中插入一个空行。newline 可用来为代码中的函数或动作所获取的信息留出空间。

示例

下面的示例说明 newline 如何将 trace() 动作的输出显示在多行上。

var myName:String = "Lisa", myAge:Number = 30;
trace(myName + myAge);
trace(myName + newline + myAge);


nextFrame()

可用性

Flash 2。

用法

nextFrame()

参数

无。

返回

无。

说明

函数；将播放头转到下一帧并停止。

示例

在这个示例中，当用户单击此按钮时，播放头转到下一帧并停下来。

on (release) {
  nextFrame();
}


nextScene()

可用性

Flash 2。

用法

nextScene()

参数

无。

返回

无。

说明

函数；将播放头移到下一场景的第 1 帧并停止。

示例

在这个示例中，当用户释放此按钮时，播放头被移到下一场景的第 1 帧。

on (release) {
  nextScene();
}

另请参见

prevScene()


not

可用性

Flash Player 4。不鼓励使用此运算符，推荐使用 !（逻辑 NOT） 运算符。

用法

not expression

参数

expression 转换为布尔值的变量或其它表达式。

说明

运算符；在 Flash Player 4 中执行逻辑 NOT 运算。

另请参见

!（逻辑 NOT）


null

可用性

Flash Player 5。

用法

null

参数

无。

返回

无。

说明

常量；一个可以赋予变量或者可以由函数返回（在函数不提供数据时）的特殊值。 可以使用 null 表示缺少的或者未定义数据类型的值。

示例

在用于数值的情况下，null 计算结果为 0。可对 null 执行相等测试。在这个语句中，二元树节点没有左分支，因此左分支的字段可以设置为 null。

if (tree.left == null) {
  tree.left = new TreeNode();
}


Number 类

可用性

Flash Player 5（已成为 Flash Player 6 本身的对象，Flash Player 6 大大提高了性能）。

说明

Number 类是 Number 数据类型的简单包装对象。使用与 Number 类关联的方法和属性可以操作基本数值。此类与 JavaScript Number 类完全相同。

调用 Number 对象的方法时必须使用构造函数，但是当调用 Number 对象的属性时则不需要使用构造函数。下面的示例指示调用 Number 对象的方法和属性的语法。

下面的示例调用 Number 对象的 toString() 方法，此调用返回字符串“1234”。

myNumber = new Number (1234);
myNumber.toString();

此示例调用 Number 对象的 MIN_VALUE 属性（也称作常量）：

smallest = Number.MIN_VALUE

Number 类的方法摘要

方法 | 说明
Number.toString() | 返回 Number 对象的字符串表示形式。
Number.valueOf() | 返回 Number 对象的原始值。

Number 类的属性摘要

属性 | 说明
Number.MAX_VALUE | 表示最大可表示数（双精度 IEEE-754 标准）的常量。此数字大约为 1.79E+308。
Number.MIN_VALUE | 表示最小可表示数（双精度 IEEE-754 标准）的常量。此数字大约为 5e-324。
Number.NaN | 表示“非数字”(NaN) 值的常量。
Number.NEGATIVE_INFINITY | 表示负无穷大值的常量。
Number.POSITIVE_INFINITY | 表示正无穷大值的常量。此值等同于全局变量 Infinity。

Number 类的构造函数

可用性

Flash Player 5。

用法

new Number(value)

参数

value 要创建的 Number 对象的数值，或者要转换为数字的值。

返回

无。

说明

构造函数；新建一个 Number 对象。当使用 Number.toString() 和 Number.valueOf() 时必须使用 Number 构造函数。而使用 Number 对象的属性时不需要使用构造函数。new Number 构造函数主要用作占位符。Number 对象与 Number() 函数不同，后者将参数转换为原始值。

示例

下面的代码构造新的 Number 对象。

n1 = new Number(3.4);
n2 = new Number(-10);

另请参见

Number()


Number.MAX_VALUE

可用性

Flash Player 5。

用法

Number.MAX_VALUE

说明

属性；最大可表示的数（双精度 IEEE-754 标准）。此数字大约为 1.79E+308。


Number.MIN_VALUE

可用性

Flash Player 5。

用法

Number.MIN_VALUE

说明

属性；最小可表示的数（双精度 IEEE-754 标准）。此数字大约为 5e-324。


Number.NaN

可用性

Flash Player 5。

用法

Number.NaN

说明

属性；表示“非数字”(NaN) 的 IEEE-754 标准值。

另请参见

isNaN(), NaN


Number.NEGATIVE_INFINITY

可用性

Flash Player 5。

用法

Number.NEGATIVE_INFINITY

说明

属性；指定表示负无穷大的 IEEE-754 标准值。此属性的值与常数 -Infinity 的值相同。

负无穷大是当数学运算或函数返回的值超过可表示的负值时，返回的一个特殊数值。


Number.POSITIVE_INFINITY

可用性

Flash Player 5。

用法

Number.POSITIVE_INFINITY

说明

属性；指定表示正无穷大的 IEEE-754 标准值。此属性的值与常数 Infinity 的值相同。

正无穷大是当数学运算或函数返回的值大于可表示的值时，返回的一个特殊数值。


Number.toString()

可用性

Flash Player 5；行为在 Flash Player 7 中发生了变化。

用法

myNumber.toString(radix)

参数

radix 指定要用于数字到字符串转换的基数（从 2 到 36）。如果未指定 radix 参数，则默认值为 10。

返回

字符串。

说明

方法；返回指定 Number 对象 (myNumber) 的字符串表示形式。

如果 myNumber 未定义，则返回值如下：

  • 在以 Flash Player 6 或更低版本为目标播放器发布的文件中，结果是 0。
  • 在以 Flash Player 7 或更高版本为目标播放器发布的文件中，结果是 NaN。

示例

下面的示例使用 2 和 8 用于 radix 参数并返回包含数字 9 的相应表示形式的字符串。

myNumber = new Number (9);
trace(myNumber.toString(2)); / 1001
trace(myNumber.toString(8)); / 11

另请参见

NaN


Number.valueOf()

可用性

Flash Player 5。

用法

myNumber.valueOf()

参数

无。

返回

一个数字。

说明

方法；返回指定 Number 对象的原始值类型。


Number()

可用性

Flash Player 4；行为在 Flash Player 7 中发生了变化。

用法

Number(expression)

参数

expression 要转换为数字的表达式。

返回

一个数字或 NaN。

说明

函数；将参数 expression 转换为数字并按如下规则返回一个值：

  • 如果 expression 为数字，则返回值为 expression。
  • 如果 expression 为布尔值，当 expression 为 true 时，返回值为 1；当 expression 为 false 时，返回值为 0。
  • 如果 expression 为字符串，则该函数尝试将 expression 解析为一个带有可选尾随指数的十进制数字，例如 1.57505e-3。
  • 如果 expressionx 为 undefined，则返回值如下：
    • 在以 Flash Player 6 或更低版本为目标播放器发布的文件中，结果是 0。
    • 在以 Flash Player 7 或更高版本为目标播放器发布的文件中，结果是 NaN。

此函数用于转换导入 Flash 5 或更高版本创作环境的、包含不鼓励使用的运算符的 Flash 4 文件。有关更多信息，请参见&（按位 AND 运算符）。

另请参见

NaN, Number 类


Object 类

可用性

Flash Player 5（已成为 Flash Player 6 本身的对象，Flash Player 6 大大提高了性能）。

说明

Object 类位于动作脚本类层次结构的根处。此类包含 JavaScript Object 类所提供功能的一小部分。

Object 类的方法摘要

方法 | 说明
Object.addProperty() | 在对象上创建 getter/setter 属性。
Object.registerClass() | 将影片剪辑元件与动作脚本对象类相关联。
Object.toString() | 将指定对象转换为字符串然后返回它。
Object.unwatch() | 删除 Object.watch() 创建的监视点。
Object.valueOf() | 返回对象的原始值。
Object.watch() | 注册当动作脚本对象的指定属性更改时要调用的事件处理函数。

Object 类的属性摘要

属性 | 说明
Object.__proto__ | 指向对象构造函数的 prototype 属性的引用。

Object 类的构造函数

可用性

Flash Player 5。

用法

new Object([value])

参数

value 要转换为对象的数字、布尔值或字符串。此参数是可选的。 如果未指定 value，则该构造函数创建一个未定义属性的新对象。

返回

无。

说明

构造函数；新建一个 Object 对象。


Object.addProperty()

可用性

Flash Player 6。在外部类文件中，您可以使用 get 或 set 来代替此方法。

用法

myObject.addProperty(prop, getFunc, setFunc)

参数

prop 要创建的对象属性的名称。

getFunc 被调用以获取属性值的函数；此参数是一个函数对象。

setFunc 被调用以设置属性值的函数；此参数是一个函数对象。如果向此参数传递 null 值，则该属性为只读。

返回

如果属性创建成功，则返回值为 true；否则，返回 false。

说明

方法；创建一个 getter/setter 属性。当 Flash 读取 getter/setter 属性时，它调用 get 函数，而该函数的返回值成为 prop 的值。当 Flash 写入 getter/setter 属性时，它调用 set 函数，并且将新值作为参数传递给它。如果具有给定名称的属性已经存在，新属性将覆盖它。

“get”函数没有参数。它的返回值可以为任何类型。它的类型可以在两次调用之间改变。返回值视作该属性的当前值。

“set”函数只有一个参数，即该属性的新值。例如，如果属性 x 由语句 x = 1 进行赋值，则将数字类型的参数 1 传递给 set 函数。忽略 set 函数的返回值。

可以向原型对象添加 getter/setter 属性。如果向一个原型对象添加 getter/setter 属性，则继承此原型对象的所有对象实例都将继承 getter/setter 属性。这样就能够在一个位置（即原型对象）添加 getter/setter 属性，然后使它传播到类的所有实例（与向原型对象添加方法非常相似）。如果为继承的原型对象中的 getter/setter 属性调用 get/set 函数，则传递给该 get/set 函数的引用将是最初引用的对象，而不是该原型对象。

如果调用不正确，Object.addProperty() 可能出错并失败。下表描述了可能发生的错误：

出错条件 | 后果
prop 不是有效的属性名；例如，一个空字符串。 | 返回 false，而且不添加该属性。
getFunc 不是有效的函数对象。 | 返回 false，而且不添加该属性。
setFunc 不是有效的函数对象。 | 返回 false，而且不添加该属性。

示例

用法 1：某个对象具有两个内部方法：setQuantity() 和 getQuantity()。当设置或获取了属性 bookcount 后，该属性可用于调用这些方法。第三个内部方法 getTitle() 返回一个与属性 bookname 关联的只读值：

function Book() {

this.setQuantity = function(numBooks) {

    this.books = numBooks;
  }

this.getQuantity = function() {
  return this.books;

  }
  this.getTitle = function() {
    return "Catcher in the Rye";
  }
  this.addProperty("bookcount", this.getQuantity, this.setQuantity);
  this.addProperty("bookname", this.getTitle, null);
}
myBook = new Book();
myBook.bookcount = 5;
order = "You ordered "+myBook.bookcount+" copies of "+myBook.bookname;

当脚本获取 myBook.bookcount 的值时，动作脚本解释程序将自动调用 myBook.getQuantity()。当脚本修改 myBook.bookcount 的值时，该解释程序调用 myObject.setQuantity()。bookname 属性未指定 set 函数，因此忽略修改 bookname 的尝试。

用法 2：上述示例中的 bookcount 和 bookname 正常工作，但将属性 bookcount 和 bookname 添加到 Book 对象的每个实例中。这意味着要拥有这些属性，该对象的每个实例都必须具有两个属性位置。如果类中有许多像 bookcount 和 bookname 这样的属性，则它们可能占用大量的内存。为避免这种情况，可以向 Book.prototype 添加属性：

function Book () {}
Book.prototype.setQuantity = function(numBooks) {
  this.books = numBooks;
}
Book.prototype.getQuantity = function() {
  return this.books;
}
Book.prototype.getTitle = function() {
  return "Catcher in the Rye";
}
Book.prototype.addProperty("bookcount", Book.prototype.getQuantity, Book.prototype.setQuantity);
Book.prototype.addProperty("bookname", Book.prototype.getTitle, null);
myBook = new Book();
myBook.bookcount = 5;
order = "You ordered "+myBook.bookcount+" copies of "+myBook.bookname;

现在，bookcount 和 bookname 属性只存在于一个地方：Book.prototype 对象。但是效果与用法 1 中的代码相同，用法 1 将 bookcount 和 bookname 直接添加到每个实例。如果访问 Book 实例中的 bookcount 或 bookname，则上溯原型链并找到 Book.prototype 中的 getter/setter 属性。

用法 3：内置属性 TextField.scroll 和 TextField.maxscroll 为 getter/setter 属性。TextField 对象具有内部方法 getScroll()、setScroll() 和 getMaxScroll()。TextField 构造函数创建 getter/setter 属性，并将它们指向这些内部 get/set 方法，如下所示：

this.addProperty("scroll", this.getScroll, this.setScroll);
this.addProperty("maxscroll", this.getMaxScroll, null);

当脚本获取 myTextField.scroll 的值时，动作脚本解释程序自动调用 myTextField.getScroll()。当脚本修改 myTextField.scroll 的值时，解释程序调用 myTextField.setScroll()。maxscroll 属性未指定 set 函数，因此忽略修改 maxscroll 的尝试。

用法 4：虽然内置属性 TextField.scroll 和 TextField.maxscroll 在用法 3 示例中可以发挥作用，但会将属性 scroll 和 maxscroll 添加到 TextField 对象的每个实例中。这意味着拥有这些属性，则该对象的每个实例都必须具有两个属性位置。如果类中有许多像 scroll 和 maxscroll 这样的属性，则它们可能占用大量的内存。为避免这种情况，可以向 TextField.prototype 添加 scroll 和 maxscroll 属性：

TextField.prototype.addProperty("scroll", this.getScroll, this.setScroll);
TextField.prototype.addProperty("maxscroll", this.getMaxScroll, null);

现在，scroll 和 maxscroll 属性只存在于一个地方：TextField.prototype 对象。但是效果与上面的代码相同，上面的代码将 scroll 和 maxscroll 直接添加到每个实例。如果访问 TextField 实例中的 scroll 或 maxscroll，则上溯原型链并找到 TextField.prototype 中的 getter/setter 属性。


Object.__proto__

可用性

Flash Player 5。

用法

myObject.__proto__

参数

无。

说明

属性；引用创建 myObject 的构造函数的 prototype 属性。在创建所有对象时，将自动赋予这些对象 __proto__ 属性。动作脚本解释程序使用 __proto__ 属性访问对象构造函数的 prototype 属性，以查找该对象从其类中继承的属性和方法。


Object.registerClass()

可用性

Flash Player 6。如果您使用的是外部类文件，则可以使用“链接属性”或“元件属性”对话框中的“动作脚本 2.0 类”字段将一个对象与一个类关联，而不是使用此方法。

用法

Object.registerClass(symbolID, theClass)

参数

symbolID 影片剪辑元件的链接标识符，或动作脚本类的字符串标识符。

theClass 指向动作脚本类的构造函数的引用，如果为 null，则取消注册元件。

返回

如果类注册成功，则返回值为 true；否则，返回 false。

说明

方法；将影片剪辑元件与动作脚本对象类相关联。如果元件不存在，则 Flash 在字符串标识符和对象类之间创建关联关系。

时间轴放置指定影片剪辑元件的实例时，该实例注册到由 theClass 参数指定的类，而不是注册到 MovieClip 类。

使用 MovieClip.attachMovie() 或 MovieClip.duplicateMovieClip() 创建指定影片剪辑元件的实例时，该实例注册到由 theClass 指定的类，而不是注册到 MovieClip 类。如果 theClass 为 null，则此方法删除任何与指定影片剪辑元件或类标识符相关联的动作脚本类定义。对于影片剪辑元件，该影片剪辑的任何现有实例保持不变，但此元件的新实例将与默认类 MovieClip 相关联。

如果元件已注册到某个类，则此方法用新注册将其替换。

如果影片剪辑实例是由时间轴放置或使用 attachMovie() 或 duplicateMovieClip() 创建的，则动作脚本使用指向此对象的关键字 this 调用适当类的构造函数。此构造函数在调用时不带有参数。

如果使用此方法将影片剪辑注册到动作脚本类而不是 MovieClip，则该影片剪辑元件不继承内置 MovieClip 类的方法、属性和事件，除非将 MovieClip 类包括在新类的原型链中。下面的代码创建一个新的名为 theClass 的 ActionScript 类，它继承了 MovieClip 类的属性：

theClass.prototype = new MovieClip();

另请参见

MovieClip.attachMovie(), MovieClip.duplicateMovieClip()


Object.toString()

可用性

Flash Player 5。

用法

myObject.toString()

参数

无。

返回

字符串。

说明

方法；将指定对象转换为字符串然后将其返回。


Object.unwatch()

可用性

Flash Player 6。

用法

myObject.unwatch (prop)

参数

prop 一个字符串，不应再进行监视的对象属性的名称。

返回

一个布尔值。

说明

方法；删除 Object.watch() 创建的监视点。如果监视点成功删除，则此方法返回 true 值；否则它返回 false 值。


Object.valueOf()

可用性

Flash Player 5。

用法

myObject.valueOf()

参数

无。

返回

指定对象的原始值，或对象本身。

说明

方法；返回指定对象的原始值。如果此对象没有原始值，则返回对象本身。


Object.watch()

可用性

Flash Player 6。

用法

myObject.watch( prop, callback [, userData] )

参数

prop 一个字符串，表示要监视的对象属性的名称。

callback 当监视的属性发生变化时要调用的函数。此参数为函数对象，而非字符串形式的函数名。callback 的格式是 callback(prop, oldval, newval, userData)。

userData 传递给 callback 方法的动作脚本数据的任意片段。如果省略 userData 参数，则将 undefined 传递给回调方法。此参数是可选的。

返回

如果监视点创建成功，则返回 true 值；否则，返回 false 值。

说明

方法；注册一个当动作脚本对象的某个指定属性更改时要调用的事件处理函数。当该属性更改时，调用该事件处理函数，并且 myObject 作为包含对象。您必须从 Object.watch 方法返回新值，否则将为监视的对象属性指定值 undefined。

通过返回已修改的 newval（或 oldval），监视点可以筛选（或取消）赋值。如果删除已为其设置了监视点的属性，则该监视点并不消失。如果以后重新创建此属性，则该监视点依然起作用。若要删除监视点，请使用 Object.unwatch 方法。

在一个属性上只能注册一个监视点。对于同一属性，对 Object.watch() 的后续调用会替换原来的监视点。

Object.watch() 方法的行为类似于 Netscape JavaScript 1.2 和更高版本中的 Object.watch() 函数。其主要区别在于 userData 参数，该参数是 Flash 对 Object.watch() 的增补，Netscape Navigator 不支持它。可将 userData 参数传递给事件处理函数，并在该事件处理函数中使用它。

Object.watch() 方法不能监视 getter/setter 属性。Getter/setter 属性以一种“懒惰计算”的方式进行操作，即直到实际查询属性时才确定属性的值。“懒惰计算”常常效率很高，原因在于属性并非不停地更新；而是在需要时才进行计算。但是，Object.watch() 需要计算属性才能激发此属性上的监视点。若要与 getter/setter 属性一起使用，Object.watch() 必须不断地计算属性，可是这样做的效率很低。

通常，动作脚本的预定义属性（如 _x、_y、_width 和 _height）为 getter/setter 属性，因此不能用 Object.watch() 进行监视。

另请参见

Object.addProperty(), Object.unwatch()


Object()

可用性

Flash Player 5。

用法

Object( [ value ] )

参数

value 一个数值、字符串或布尔值。

返回

一个对象。

说明

转换函数；创建新的空对象，或者将指定的数值、字符串或布尔值转换为一个对象。此命令等效于使用 Object 构造函数创建对象（请参见Object 类的构造函数）。


on()

可用性

Flash 2。在 Flash 2 中，不是所有的事件都受支持。

用法

on(mouseEvent) {
  // 此处是您的语句
}

参数

statement(s) 发生 mouseEvent 时执行的指令。

mouseEvent 是称作“事件”的触发器。当发生此事件时，执行事件后面大括号中的语句。可以为 mouseEvent 参数指定下面的任何值：

  • press 在鼠标指针经过按钮时按下鼠标按钮。
  • release 在鼠标指针经过按钮时释放鼠标按钮。
  • releaseOutside 当鼠标指针在按钮之内时按下按钮后，将鼠标指针移到按钮之外，此时释放鼠标按钮。
  • rollOut 鼠标指针滑出按钮区域。
  • rollOver 鼠标指针滑过按钮。
  • dragOut 在鼠标指针滑过按钮时按下鼠标按钮，然后滑出此按钮区域。
  • dragOver 在鼠标指针滑过按钮时按下鼠标按钮，然后滑出此按钮，再滑回此按钮。
  • keyPress ("key") 按下指定的键。对于此参数的 key 部分，需指定键控代码或键常量。有关与标准键盘上的键相关联的键控代码的列表，请参见键盘键和键控代码值；有关键常量的列表，请参见Key 类的属性概要。

说明

事件处理函数；指定触发动作的鼠标事件或按键事件。

示例

在下面的脚本中，当按下鼠标按钮时，将执行 startDrag() 动作，当释放鼠标按钮时，将执行条件脚本，然后放下该对象。

on (press) {
  startDrag("rabbit");
}
on (release) {
  trace(_root.rabbit._y);
  trace(_root.rabbit._x);
  stopDrag();
}

另请参见

onClipEvent()


onClipEvent()

可用性

Flash Player 5。

用法

onClipEvent(movieEvent){
  // 此处是您的语句
}

参数

movieEvent 是一个称作事件 的触发器。当事件发生时，执行该事件后面大括号中的语句。可以为 movieEvent 参数指定下面的任何值：

  • load 影片剪辑一旦被实例化并出现在时间轴中时，即启动此动作。
  • unload 在从时间轴中删除影片剪辑之后，此动作在第 1 帧中启动。在向受影响的帧附加任何动作之前，先处理与 Unload 影片剪辑事件关联的动作。
  • enterFrame 以影片剪辑帧频不断触发的动作。首先处理与 enterFrame 剪辑事件关联的动作，然后才处理附加到受影响帧的所有帧动作。
  • mouseMove 每次移动鼠标时启动此动作。_xmouse 和 _ymouse 属性用于确定当前鼠标位置。
  • mouseDown 当按下鼠标左键时启动此动作。
  • mouseUp 当释放鼠标左键时启动此动作。
  • keyDown 当按下某个键时启动此动作。使用 Key.getCode() 获取有关最后按下的键的信息。
  • keyUp 当释放某个键时启动此动作。使用 Key.getCode() 方法获取有关最后按下的键的信息。
  • data 当在 loadVariables() 或 loadMovie() 动作中接收数据时启动此动作。当与 loadVariables() 动作一起指定时，data 事件只在加载最后一个变量时发生一次。当与 loadMovie() 动作一起指定时，获取数据的每一部分时，data 事件都重复发生。

说明

事件处理函数；触发为特定影片剪辑实例定义的动作。

示例

下面的语句在导出 SWF 文件时包括来自外部文件的脚本；当加载包含脚本中的动作所附加到的影片剪辑时，运行这些动作：

onClipEvent (load) {
  #include "myScript.as"
}

下面的示例将 onClipEvent() 与 keyDown 影片事件一起使用。keyDown 影片事件通常与 Key 对象的一个或多个方法和属性一起使用。下面的脚本使用 Key.getCode() 找出用户按下了哪个键；如果按下的键与 Key.RIGHT 属性相匹配，则将影片转到下一帧；如果按下的键与 Key.LEFT 属性相匹配，则将影片转到上一帧。

onClipEvent(keyDown) {
  if (Key.getCode() == Key.RIGHT) {
    _parent.nextFrame();
  } else if (Key.getCode() == Key.LEFT){
    _parent.prevFrame();
  }
}

下面的示例将 onClipEvent() 与 mouseMove 影片事件一起使用。_xmouse 和 _ymouse 属性跟踪每次鼠标移动时的鼠标位置。

onClipEvent(mouseMove) {
  stageX=_root._xmouse;
  stageY=_root._ymouse;
}

另请参见

Key 类, MovieClip._xmouse, MovieClip._ymouse, on(), updateAfterEvent()


onUpdate

可用性

Flash Player 6。

用法

function onUpdate (){
   ...statements...;
}

参数

无。

返回

无。

说明

事件处理函数；onUpdate 是为用于组件的实时预览影片定义的。当舞台上组件的实例具有实时预览影片时，每次组件实例的组件参数发生变化，创作工具都会调用实时预览影片的 onUpdate 函数。创作工具调用 onUpdate 函数时不使用参数，并且将忽略其返回值。应该在实时预览影片的主时间轴上声明 onUpdate 函数。

在实时预览影片中定义 onUpdate 函数是可选的。

有关实时预览影片的更多信息，请参见使用组件。

示例

onUpdate 函数使实时预览影片可以更新其视觉外观以匹配组件参数的新值。当用户更改组件属性检查器或“组件参数”面板中的参数值时，即会调用 onUpdate。onUpdate 函数将执行某些操作对其自身进行更新。例如，如果组件包括 color 参数，则 onUpdate 函数可能会更改实时预览中影片剪辑的颜色以反映新的参数值。另外，它可以将新颜色存储在内部变量中。

这里是一个使用 onUpdate 函数的示例，该示例通过实时预览影片中的空影片剪辑传递参数值。假设某个带有标签的按钮组件具有变量 labelColor，该变量指定文本标签的颜色。以下代码在组件影片主时间轴的第 1 帧中：

//定义 textColor 参数变量指定按钮标签文本的颜色。
buttonLabel.textColor = labelColor;

在实时预览影片中，将一个名为“xch”的空影片剪辑放置在实时预览影片中。然后将以下代码放置到实时预览影片的第 1 帧中。将“xch”添加到 labelColor 变量路径以通过 my_mc 影片剪辑传递变量：

//编写一个 onUpdate 函数，将“my_mc.”添加到参数变量名中：
function onUpdate (){
  buttonLabel.textColor = my_mc.labelColor;
}


or

可用性

Flash 4。不鼓励使用此运算符，推荐使用 ||（逻辑 OR） 运算符。

用法

condition1 or condition2

参数

condition1、2 计算结果为 true 或 false 的表达式。

返回

无。

说明

运算符；计算 condition1 和 condition2，如果两个表达式中的任何一个为 true，则整个表达式为 true。

另请参见

||（逻辑 OR）, |（按位 OR）


ord

可用性

Flash Player 4。不鼓励使用此函数，推荐使用 String 类的方法和属性。

用法

ord(character)

参数

character 要转换为 ASCII 代码数字的字符。

返回

无。

说明

字符串函数；将字符转换为 ASCII 代码数字。

另请参见

String 类


_parent

可用性

Flash Player 5。

用法

_parent.property
_parent._parent.property

说明

标识符；指定或返回一个引用，该引用指向包含当前影片剪辑或对象的影片剪辑或对象。当前对象是包含引用 _parent 的动作脚本代码的对象。使用 _parent 可以指定一个相对路径，该路径指向当前影片剪辑或对象之上的影片剪辑或对象。

示例

在下面的示例中，影片剪辑 desk 是影片剪辑 classroom 的子级。当以下脚本在影片剪辑 desk 内执行时，播放头将跳到影片剪辑 classroom 时间轴中的第 10 帧。

_parent.gotoAndStop(10);

另请参见

_root, targetPath


parseFloat()

可用性

Flash Player 5。

用法

parseFloat(string)

参数

string 要读取并转换为浮点数的字符串。

返回

一个数字或 Nan。

说明

函数；将字符串转换为浮点数。此函数读取（或“分析”）并返回字符串中的数字，直到它到达不是数字（其初始含义为数字）部分的字符。如果字符串不是以一个可以分析的数字开始的，则 parseFloat 返回 NaN。有效整数前面的空白将被忽略，有效整数后面的非数值字符也将被忽略。

示例

下面的示例使用 parseFloat 函数计算各种类型的数字。

parseFloat(" -2") 返回 -2

parseFloat(" 2.5") 返回 2.5

parseFloat("3.5e6") 返回 3.5e6 或 3500000

parseFloat("foobar") 返回 NaN

parseFloat(" 5.1") 返回 5.1

parseFloat("3.75math") 返回 3.75

parseFloat("0garbage") 返回 0

另请参见

NaN


parseInt

可用性

Flash Player 5。

用法

parseInt(expression [, radix])

参数

expression 转换为整数的字符串。

radix 可选；表示要分析数字的基数（基）的整数。合法值为 2 到 36。

返回

一个数字或 NaN。

说明

函数；将字符串转换为整数。如果参数中指定的字符串不能转换为数字，则此函数返回 NaN。以 0x 开头的字符串被解释为十六进制数字。以 0 开头的整数或指定基数为 8 的整数被解释为八进制数字。有效整数前面的空白将被忽略，有效整数后面的非数值字符也将被忽略。

示例

下面的示例使用 parseInt 函数计算各种类型的数字。

parseInt("3.5")

// 返回 3

parseInt("bar")
// 返回 NaN

parseInt("4foo")
// 返回 4

以下是十六进制转换的示例：

parseInt("0x3F8")
// 返回 1016

parseInt("3E8", 16)
// 返回 1000

以下是一个二进制转换的示例：

parseInt("1010", 2)
// 返回 10 （二进制 1010 的十进值表示形式）

以下是八进制数字分析的示例：

parseInt("0777")
parseInt("777", 8)
// 返回 511 （八进制 777 的十进值表示形式）


play()

可用性

Flash 2。

用法

play()

参数

无。

返回

无。

说明

函数；在时间轴中向前移动播放头。

示例

下面的代码使用 if 语句检查用户输入的名称值。如果用户输入 Steve，则调用 play() 动作，而且播放头在时间轴中向前移动。如果用户输入 Steve 以外的任何其它内容，则不播放 SWF 文件，而显示带有变量名 alert 的文本字段。

stop();
if (name == "Steve") {
  play();
} else {
  alert="You are not Steve!";
}


prevFrame()

可用性

Flash 2。

用法

prevFrame()

参数

无。

返回

无。

说明

函数；将播放头转到前一帧并停止。如果当前帧为第 1 帧，则播放头不移动。

示例

当用户单击附加了以下处理函数的按钮时，播放头移到上一帧。

on (release) {
  prevFrame();
}

另请参见

MovieClip.prevFrame()


prevScene()

可用性

Flash 2。

用法

prevScene()

参数

无。

返回

无。

说明

函数；将播放头移到前一场景的第 1 帧并停止。

另请参见

nextScene()


print()

可用性

Flash Player 4.20。

注意：如果您要为 Flash Player 7 或更高版本进行创作，则可以创建一个 PrintJob 对象，它将为您（和用户）提供对打印进程的更多控制。有关更多信息，请参见 PrintJob 类 条目。

用法

print(target, "Bounding box")

参数

target 要打印的影片剪辑的实例名称。默认情况下，将打印目标实例中的所有帧。如果要打印影片剪辑中的特定帧，请将 #p 帧标签分配给这些帧。

Bounding box 设置影片剪辑打印区域的修饰符。将此参数用引号引起来，然后指定以下值之一：

  • bmovie 将影片中某一特定帧的边框指定为该影片中所有可打印帧的打印区域。为要将其边框用作打印区域的帧分配一个 #b 帧标签。
  • bmax 将所有可打印帧的所有边框的合并区域指定为打印区域。当影片中可打印帧的大小各不相同时，可指定 bmax。
  • bframe 指定将每个可打印帧的边框用作该帧的打印区域。这将为每个帧更改打印区域，并缩放对象以符合打印区域。如果在每个帧中有不同大小的对象，而您希望每个对象都充满打印页面，请使用 bframe。

返回

无。

说明

函数；根据在参数中所指定的边界（bmovie、bmax 或 bframe）打印 target 影片剪辑。如果要打印目标影片剪辑中的特定帧，请将 #P 帧标签附加到这些帧。尽管 print() 所实现的打印品质高于 printAsBitmap()，但是它不能用于打印使用 Alpha 透明度或特殊色彩效果的影片剪辑。

如果对 Bounding box 参数使用 bmovie，但未向帧分配 #b 标签，则打印区域由加载的影片的舞台大小来确定。（加载的影片不继承主影片的舞台大小。）

必须先完全加载完影片中的所有可打印元素才能开始打印。

Flash Player 打印功能支持 PostScript 和非 PostScript 打印机。非 PostScript 打印机将矢量转换成位图。

示例

下面的示例打印影片剪辑 my_mc 中所有可打印的帧，而打印区域则由带有 #b 帧标签的帧的边框来定义：

print(my_mc,"bmovie");

下面的示例打印 my_mc 中所有可打印的帧，而打印区域由每个帧的边框定义：

print(my_mc,"bframe");

另请参见

printAsBitmap(), printAsBitmapNum(), PrintJob 类, printNum()


printAsBitmap()

可用性

Flash Player 4.20。

注意：如果您要为 Flash Player 7 或更高版本进行创作，则可以创建一个 PrintJob 对象，它将为您（和用户）提供对打印进程的更多控制。有关更多信息，请参见 PrintJob 类 条目。

用法

printAsBitmap(target, "Bounding box")

参数

target 要打印的影片剪辑的实例名称。默认情况下，打印影片中的所有帧。如果要打印影片中的特定帧，可将 #P 帧标签附加到这些帧。

Bounding box 设置影片打印区域的修饰符。将此参数用引号引起来，然后指定以下值之一：

  • bmovie 将影片中某一特定帧的边框指定为该影片中所有可打印帧的打印区域。为要将其边框用作打印区域的帧分配一个 #b 帧标签。
  • bmax 将所有可打印帧的所有边框的合并区域指定为打印区域。当影片中可打印帧的大小各不相同时，请指定 bmax 参数。
  • bframe 指定将每个可打印帧的边框用作该帧的打印区域。这将为每个帧更改打印区域，并缩放对象以符合打印区域。如果在每个帧中有不同大小的对象，而您希望每个对象都充满打印页面，请使用 bframe。

返回

无。

说明

函数；根据参数中指定的边界（bmovie、bmax 或 bframe）将 target 影片剪辑打印为位图。printAsBitmap() 可用于打印特定的影片，这种影片包含的帧具有使用透明度或色彩效果的对象。printAsBitmap() 动作以打印机可用的最高分辨率进行打印，以达到尽可能高的清晰度和品质。

如果影片不包含 Alpha 透明度或色彩效果，Macromedia 建议您使用 print() 以获得更好的品质效果。

如果对 Bounding box 参数使用 bmovie，但未向帧分配 #b 标签，则打印区域由加载的影片的舞台大小来确定。（加载的影片不继承主影片的舞台大小。）

必须先完全加载完影片中的所有可打印元素才能开始打印。

Flash Player 打印功能支持 PostScript 和非 PostScript 打印机。非 PostScript 打印机将矢量转换成位图。

另请参见

print(), printAsBitmapNum(), PrintJob 类, printNum()


printAsBitmapNum()

可用性

Flash Player 5。

注意：如果您要为 Flash Player 7 或更高版本进行创作，则可以创建一个 PrintJob 对象，它将为您（和用户）提供对打印进程的更多控制。有关更多信息，请参见 PrintJob 类 条目。

用法

printAsBitmapNum(level, "Bounding box")

参数

level Flash Player 中要打印的级别。默认情况下，打印该级别中的所有帧。如果要打印该级别中的特定帧，请将 #p 帧标签分配给这些帧。

Bounding box 设置影片打印区域的修饰符。将此参数用引号引起来，然后指定以下值之一：

  • bmovie 将影片中某一特定帧的边框指定为该影片中所有可打印帧的打印区域。为要将其边框用作打印区域的帧分配一个 #b 帧标签。
  • bmax 将所有可打印帧的所有边框的合并区域指定为打印区域。当影片中可打印帧的大小各不相同时，请指定 bmax 参数。
  • bframe 指定将每个可打印帧的边框用作该帧的打印区域。这将为每个帧更改打印区域，并缩放对象以符合打印区域。如果在每个帧中有不同大小的对象，而您希望每个对象都充满打印页面，请使用 bframe。

返回

无。

说明

函数；根据参数中指定的边界（bmovie、bmax 或 bframe）将 Flash Player 中的级别打印为位图。printAsBitmapNum() 可用于打印特定的影片，这种影片包含的帧具有使用透明度或色彩效果的对象。printAsBitmapNum() 动作以打印机可用的最高分辨率进行打印，以达到尽可能高的清晰度和品质。在指明将帧作为位图打印的情况下，若要计算该帧的可打印文件的大小，可将像素宽度、像素高度和打印机分辨率相乘。

如果影片不包含 Alpha 透明度或色彩效果，建议您使用 printNum() 以获得更好的品质效果。

如果对 Bounding box 参数使用 bmovie，但未向帧分配 #b 标签，则打印区域由加载的影片的舞台大小来确定。（加载的影片不继承主影片的舞台大小。）

必须先完全加载完影片中的所有可打印元素才能开始打印。

Flash Player 打印功能支持 PostScript 和非 PostScript 打印机。非 PostScript 打印机将矢量转换成位图。

另请参见

print(), printAsBitmap(), PrintJob 类, printNum()


PrintJob 类

可用性

Flash Player 7。

说明

PrintJob 类用于创建内容并将其打印为一页或多页。除了对 print() 方法提供的打印功能进行改进之外，此类还允许呈现屏幕上未显示的动态内容、通过单个打印对话框提示用户，并且可以打印未经缩放的文档，使用的比例与内容的比例相同。此功能特别适用于呈现和打印外部动态内容，例如数据库内容和动态文本。

另外，使用由 PrintJob.start() 填充的属性，文档可以访问您的用户打印机设置，例如页高度、宽度和方向，并且您可以配置文档以动态设置适用于打印机设置的 Flash 内容的格式。

PrintJob 类的方法摘要

您必须以下表中列出的顺序使用 PrintJob 类的方法。

方法 | 说明
PrintJob.start() | 显示操作系统的打印对话框并开始后台处理。
PrintJob.addPage() | 将一页添加到打印后台处理程序。
PrintJob.send() | 将经过后台处理的页发送到打印机。

PrintJob 类的构造函数

可用性

Flash Player 7。

用法

my_pj = new PrintJob()

参数

无。

返回

无。

说明

构造函数；创建一个可用于打印一页或多页的 PrintJob 对象。

若要实现打印作业，请按照所显示的顺序使用这些方法：

// 创建 PrintJob 对象
my_pj = new PrintJob();                        // 实例化对象

// 显示打印对话框
my_pj.start();                                 // 启动打印作业

// 将指定的区域添加到打印作业
// 为要打印的每一页都重复一次
my_pj.addPage([params]);                       // 将页发送到后台处理程序
my_pj.addPage([params]);
my_pj.addPage([params]);
my_pj.addPage([params]);

// 将页从后台处理程序发送到打印机
my_pj.send();                                   // 打印页

// 进行清理
delete my_pj;                                    // 删除对象

在您自己的 PrintJob 对象实现中，应先检查 PrintJob.start() 和 PrintJob.addPage() 的返回值，然后再继续打印。请参见 PrintJob.addPage() 的示例。

在任何已创建的 PrintJob 对象不再活动之前（即，已成功完成或失败），不能创建 PrintJob 对象。如果在第一个 PrintJob 对象仍处于活动状态时尝试（通过调用 new PrintJob()）创建另一个 PrintJob 对象，则将不会创建第二个 PrintJob 对象。

示例

请参见 PrintJob.addPage()。

另请参见

PrintJob.addPage(), PrintJob.send(), PrintJob.start()


PrintJob.addPage()

可用性

Flash Player 7。

用法

my_pj.addPage(target [, printArea] [, options ] [, frameNumber])

参数

target 要打印的影片剪辑的级别或实例名称。传递一个数字来指定级别（例如，0 是 _root 影片）或传递一个字符串（括在引号中）来指定影片剪辑的实例名称。

printArea 一个指定要打印的区域的可选对象，格式如下：

{xMin:topLeft, xMax:topRight, yMin:bottomLeft, yMax:bottomRight}

您为 printArea 指定的坐标表示屏幕像素，这些屏幕像素相对于 _root 影片（如果 target = 0）的注册点或 target 指定的级别或影片剪辑的注册点。您必须提供所有四个坐标。宽度 (xMax-xMin) 和高度 (yMax-yMin) 必须都大于 0。

磅是用于打印的度量单位，像素是屏幕的度量单位；一磅的大小等于一个像素的大小。您可以使用以下换算公式将英寸或厘米转换为缇、像素或磅（1 缇为 1/20 像素）：

  • 1 像素 = 1 磅 = 1/72 英寸 = 20 缇 (twip)
  • 1 英寸 = 72 像素 = 72 磅 = 1440 缇
  • 1 厘米 = 567缇

注意：如果以前曾使用 print()、printAsBitmap()、printAsBitmapNum() 或 printNum() 从 Flash 进行打印，则使用了 #b 帧标签来指定打印区域。当使用 addPage() 方法时，您必须使用 printArea 参数来指定打印区域；#b 帧标签将被忽略。

如果省略了 printArea 参数或错误地传递了该参数，则将打印 target 的整个舞台区域。如果不想为 printArea 指定值，但想为 options 或 frameNumber 指定值，则为 printArea 传递 null。

options 一个可选参数；指定是作为矢量打印还是作为位图打印，格式如下：

{printAsBitmap:Boolean}

默认情况下，将以矢量格式打印页。若要作为位图打印 target，则为 printAsBitmap 传递 true。默认值是 false，该值表示要求进行矢量打印。当确定要使用的值时，请记住以下建议：

  • 如果要打印的内容包括位图图像，则应使用 {printAsBitmap:true} 以包括任何透明和色彩效果。
  • 如果内容不包括位图图像，则应忽略此参数或者使用 {printAsBitmap:false} 以较高品质的矢量格式打印内容。

如果省略或错误地传递了 options，则执行矢量打印。如果您不想为 options 指定值，但想为 frameNumber 指定值，则为 options 传递 null。

frameNumber 一个可选数字，用于指定要打印的帧；请注意，将不调用该帧上的任何动作脚本。如果省略此参数，则打印 target 中的当前帧。

注意：如果以前曾使用 print()、printAsBitmap()、printAsBitmapNum() 或 printNum() 从 Flash 进行打印，则可能在多个帧上使用了 #p 帧标签指定要打印哪些页。若要使用 PrintJob.addPage() 打印多个帧，您必须对每个帧发出 PrintJob.addPage() 命令；#p 帧标签将被忽略。有关以编程的方式实现此目的的方法，请参见本条目稍后部分中的示例。

返回

如果页被成功发送到打印后台处理程序，则为布尔值 true；否则为 false。

说明

方法；将指定的级别或影片剪辑作为单个页发送到打印后台处理程序。在使用此方法之前，您必须使用 PrintJob.start()；在对打印作业调用了一次或多次 PrintJob.addPage() 之后，您必须使用 PrintJob.send() 将经过后台处理的页发送到打印机。

如果此方法返回 false（例如，如果您未调用 PrintJob.start() 或者用户取消了打印作业），则对 PrintJob.addPage() 的任何后续调用都将失败。但是，如果此前对 PrintJob.addPage() 的调用成功，则结束的 PrintJob.send() 命令会将经成功后台处理的所有页发送到打印机。

如果为 printArea 传递了一个值，则 xMin 和 yMin 坐标对应于页上可打印区域的左上角（坐标 0,0）；可打印区域是由 PrintJob.start() 设置的 pageHeight 和 pageWidth 属性确定的。因为打印输出会和页上可打印区域的左上角对齐，所以如果 printArea 中定义的区域大于页上的可打印区域，则打印输出在右边和/或底部会被截断。如果没有为 printArea 传递值并且舞台大于可打印区域，则发生同样类型的截断操作。

如果要在打印前对影片剪辑进行缩放，可在调用此方法前设置其 MovieClip._xscale 和 MovieClip._yscale 属性，并在打印后将它们设回原始值。影片剪辑的缩放与 printArea 无关。也就是说，如果指定打印大小为 50 x 50 像素的区域，则将打印 2500 像素。如果对影片剪辑进行了缩放，同样会打印 2500 像素，但是将以缩放的大小进行打印。

Flash Player 打印功能支持 PostScript 和非 PostScript 打印机。非 PostScript 打印机将矢量转换成位图。

示例

下面的示例说明了发布 addPage() 命令的多种方式。

my_btn.onRelease = function()
{
  var pageCount = 0;

  var my_pj = new PrintJob();

  if (my_pj.start())
  {
    // 以矢量格式打印 _root 影片的全部当前帧
    if (my_pj.addPage(0))
    {
      pageCount++;

      // 从 0,0 开始，以矢量格式打印 _root 影片当前帧的
      // 400 像素宽 500 像素高的区域
      if (my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500}))
      {
        pageCount++;

        // 从 0,0 开始，以位图格式打印 _root 影片第 1 帧的
        // 400 像素宽 500 像素高的区域
        if (my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500},
            {printAsBitmap:true}, 1))
        {
          pageCount++;

          // 从 0,0 右侧 50 像素、下方 70 像素开始，
          // 以矢量格式打印级别 5 的第 4 帧的
          // 500 像素宽 600 像素高的区域
          if (my_pj.addPage(5, {xMin:50,xMax:550,yMin:70,yMax:670},null, 4))
          {
            pageCount++;

            // 从 0,0 开始，以位图格式打印
            // “dance_mc”影片剪辑的第 3 帧的
            // 400 像素宽 400 像素高的区域
            if (my_pj.addPage("dance_mc",
                {xMin:0,xMax:400,yMin:0,yMax:400},{printAsBitmap:true}, 3))
            {
              pageCount++;

              // 从 0,0 开始，以矢量格式打印
              // “dance_mc”影片剪辑的第 3 帧的 400 像素宽 600 像素高的区域，
              // 大小为实际大小的 50%
              var x = dance_mc._xscale;
              var y = dance_mc._yscale;
              dance_mc._xscale = 50;
              dance_mc._yscale = 50;

              if (my_pj.addPage("dance_mc",
                  {xMin:0,xMax:400,yMin:0,yMax:600},null, 3))
              {
                pageCount++;
              }

              dance_mc._xscale = x;
              dance_mc._yscale = y;
            }
          }
        }
      }
    }
  }

  if (pageCount)
  {
    my_pj.send();
  }
  delete my_pj;
}

另请参见

PrintJob.send(), PrintJob.start()


PrintJob.send()

可用性

Flash Player 7。

用法

my_pj.send()

参数

无。

返回

无。

说明

方法；用在 PrintJob.start() 和 PrintJob.addPage() 之后，将经过后台处理的页发送到打印机。

示例

请参见 PrintJob.addPage()。

另请参见

PrintJob.addPage(), PrintJob.start()


PrintJob.start()

可用性

Flash Player 7。

用法

my_pj.start()

参数

无。

返回

如果出现打印对话框时用户单击“确定”，则为布尔值 true，如果用户单击“取消”或出现错误，则为 false。

说明

方法；显示操作系统的打印对话框并开始后台处理。打印对话框允许用户更改打印设置，然后填充以下只读属性（请注意，1 磅等于屏幕上的 1 个像素）：

属性 | 类型 | 单位 | 备注
PrintJob.paperHeight | 数字 | 磅 | 纸张整体高度
PrintJob.paperWidth | 数字 | 磅 | 纸张整体宽度
PrintJob.pageHeight | 数字 | 磅 | 页上实际可打印区域的高度；忽略任何用户设置的边距
PrintJob.pageWidth | 数字 | 磅 | 页上实际可打印区域的宽度；忽略任何用户设置的边距
PrintJob.orientation | 字符串 | 无 | “纵向”或“横向”

当用户在打印对话框中单击“确定”之后，播放器开始在后台将打印作业处理到操作系统。您应该发布影响打印输出的任何动作脚本命令，然后可以使用 PrintJob.addPage() 命令开始将页发送到后台处理程序。如果愿意，可以使用此方法返回的高度、宽度和方向属性确定如何设置打印输出的格式。

因为在单击“确定”后用户马上会看到诸如“正在打印第 1 页”这样的信息，所以应该尽快调用 PrintJob.addPage() 和 PrintJob.send() 命令。

如果此方法返回 false（例如，如果用户单击“取消”而不是“确定”），则对 PrintJob.addPage() 和 PrintJob.send() 的任何后续调用都将失败。但是，如果只测试此返回值，而不需要发出 PrintJob.addPage() 命令，则仍需要删除 PrintJob 对象，以确保清除该打印后台处理程序，如下所示。

var my_pj = new PrintJob();
var myResult = my_pj.start();
  if(myResult){
    // 此处为 addPage() 和 send() 语句
  }
delete my_pj;

示例

请参见 PrintJob.addPage()。

另请参见

PrintJob.addPage(), PrintJob.send()


printNum()

可用性

Flash Player 5。

注意：如果您要为 Flash Player 7 或更高版本进行创作，则可以创建一个 PrintJob 对象，它将为您（和用户）提供对打印进程的更多控制。有关更多信息，请参见 PrintJob 类条目。

用法

printNum (level, "Bounding box")

参数

level Flash Player 中要打印的级别。默认情况下，打印该级别中的所有帧。如果要打印该级别中的特定帧，请将 #p 帧标签分配给这些帧。

Bounding box 设置影片打印区域的修饰符。将此参数用引号引起来，然后指定以下值之一：

  • bmovie 将影片中某一特定帧的边框指定为该影片中所有可打印帧的打印区域。为要将其边框用作打印区域的帧分配一个 #b 帧标签。
  • bmax 将所有可打印帧的所有边框的合并区域指定为打印区域。当影片中可打印帧的大小各不相同时，请指定 bmax 参数。
  • bframe 指定将每个可打印帧的边框用作该帧的打印区域。这将为每个帧更改打印区域，并缩放对象以符合打印区域。如果在每个帧中有不同大小的对象，而您希望每个对象都充满打印页面，请使用 bframe。

返回

无。

说明

函数；根据在 Bounding box 参数中指定的边界（"bmovie"、"bmax"、"bframe"）打印 Flash Player 中的级别。如果要打印目标影片中的特定帧，请将 #P 帧标签附加到这些帧。尽管使用 printNum() 实现的打印品质高于使用 printAsBitmapNum()，但是不能使用 printNum() 打印带有 Alpha 透明度或特殊色彩效果的影片。

如果对 Bounding box 参数使用 bmovie，但未向帧分配 #b 标签，则打印区域由加载的影片的舞台大小来确定。（加载的影片不继承主影片的舞台大小。）

必须先完全加载完影片中的所有可打印元素才能开始打印。

Flash Player 打印功能支持 PostScript 和非 PostScript 打印机。非 PostScript 打印机将矢量转换成位图。

另请参见

print(), printAsBitmap(), printAsBitmapNum(), PrintJob 类


private

可用性

Flash Player 6。

用法

class someClassName{
  private var name;
  private function name() {
    // 此处是您的语句
  }
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

name 要指定为 private 的变量或函数的名称。

说明

关键字；指定变量或函数只对声明或定义该变量或函数的类或该类的子类可用。默认情况下，变量或函数对调用它的任何类都可用。使用此关键字可以限制对变量或函数的访问。有关更多信息，请参见控制成员访问。

您只能在类定义中使用此关键字，不能在接口定义中使用。

另请参见

public, static


public

Flash Player 6。

用法

class someClassName{
  public var name;
  public function name() {
    // 此处是您的语句
  }
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

name 要指定为 public 的变量或函数的名称。

说明

关键字；指定变量或函数对调用它的任何类都可用。因为默认情况下变量和函数是公共的，所以使用此关键字主要是出于格式上的原因。例如，在包含 private 或 static 变量的代码块中，您可能要使用此关键字来保持格式一致。

示例

下面两个代码块在功能上是相同的。

private var age:Number;
public var name:String;
static var birth:Date;

private var age:Number;
var name:String;
static var birth:Date;

有关更多信息，请参见控制成员访问。

另请参见

private, static


_quality

可用性

Flash Player 5。

用法

_quality

说明

属性（全局）；设置或获取用于影片的呈现品质。设备字体始终是带有锯齿的，因此不受 _quality 属性的影响。

_quality 属性可设置为下列值：

  • "LOW" 低呈现品质。不消除图形的锯齿，位图不进行平滑处理。
  • "MEDIUM" 中等呈现品质。使用 2 x 2 网格（以像素为单位）消除图形锯齿，但不对位图进行平滑处理。适用于不包含文本的影片。
  • "HIGH" 高呈现品质。使用 4 x 4 网格（以像素为单位）消除图形锯齿，如果影片是静态的，则对位图进行平滑处理。这是 Flash 使用的默认呈现品质设置。
  • "BEST" 极高的呈现品质。使用 4 x 4 网格（以像素为单位）消除图形锯齿，并且始终对位图进行平滑处理。

示例

下面的示例将呈现品质设置为 LOW：

_quality = "LOW";

另请参见

_highquality, toggleHighQuality()


random

可用性

Flash Player 4。不鼓励在 Flash 5 中使用该函数，而推荐使用 Math.random()。

用法

random(value)

参数

value 一个整数。

返回

一个整数。

说明

函数；返回一个随机整数，此整数介于 0 和 value 参数中指定的整数减 1 之间。

示例

下面对 random() 的使用将返回 0、1、2、3 或 4 中的一个值：

random(5);

另请参见

Math.random()


removeMovieClip()

可用性

Flash Player 4。

用法

removeMovieClip(target)

参数

target 用 duplicateMovieClip() 创建的影片剪辑实例的目标路径，或者是用 MovieClip.attachMovie() 或 MovieClip.duplicateMovieClip() 创建的影片剪辑的实例名称。

返回

无。

说明

函数；删除指定的影片剪辑。

另请参见

duplicateMovieClip(), MovieClip.duplicateMovieClip(), MovieClip.attachMovie(), MovieClip.removeMovieClip()


return

可用性

Flash Player 5。

用法

return[expression]

参数

expression 要作为函数值计算并返回的字符串、数字、数组或对象。此参数是可选的。

返回

如果提供了 expression 参数，则返回计算的结果。

说明

语句；指定由函数返回的值。return 动作计算 expression 并将结果作为它在其中执行的函数的值返回。return 动作导致函数停止运行，并用返回值代替函数。如果单独使用 return 语句，则它返回 null。

您不能返回多个值。如果尝试返回多个值，则将只返回最后一个值。在下面的示例中，返回 c：

return a, b, c ;

示例

下面的示例在 sum() 函数体内使用 return 动作，以返回三个参数相加后的值。下一行代码调用 sum() 并将返回值赋予变量 newValue：

function sum(a, b, c){
  return a + b + c;
}
newValue = sum(4, 32, 78);
trace(newValue);
// 将 114 发送到“输出”面板

另请参见

function


_root

可用性

Flash Player 5。

用法

_root.movieClip
_root.action
_root.property

参数

movieClip 影片剪辑的实例名称。

action 动作或方法。

property MovieClip 对象的属性。

说明

属性；指定或返回指向根影片时间轴的引用。如果影片有多个级别，则根影片时间轴位于包含当前正在执行脚本的级别上。 例如，如果级别 1 中的脚本计算 _root，则返回 _level1。

指定 _root 与在当前级别内用斜杠记号 (/) 指定绝对路径的效果相同。

注意：如果包含 _root 的影片被加载到另一个影片中，则 _root 指的是加载影片的时间轴，而不是包含 _root 的时间轴。如果要确保 _root 指的是被加载影片的时间轴（即使该影片被加载到另一个影片中），请使用 MovieClip._lockroot。

示例

下面的示例停止包含当前正在执行脚本的级别的时间轴：

_root.stop();

下面的示例将当前级别中的时间轴移至第 3 帧：

_root.gotoAndStop(3);

另请参见

MovieClip._lockroot, _parent, targetPath


scroll

可用性

Flash Player 4。

用法

textFieldVariableName.scroll = x

说明

属性；一种不鼓励使用的属性，控制如何显示与某变量关联的文本字段中的信息。scroll 属性定义文本字段开始显示内容的位置；设置此属性后，当用户滚动该文本字段时，Flash Player 将更新此属性。scroll 属性很有用，该属性可以帮助用户定位到长篇文章的特定段落，或者创建滚动文本字段。可以获取和修改此属性。

示例

下面是附加到“向上”按钮上的代码，该按钮用于滚动文本字段 myText：

on (release) {
  myText.scroll = myText.scroll + 1;
}

另请参见

TextField.maxscroll, TextField.scroll


Selection 类

可用性

Flash Player 5。

说明

利用 Selection 类可以设置和控制插入点所在的文本字段，即，具有焦点的字段。选择范围 (Selection-span) 索引是从零开始的（例如，第一个位置为 0、第二个位置为 1，依此类推）。

Selection 类没有构造函数，这是因为在同一时间只能有一个当前具有焦点的字段。

Selection 类的方法摘要

方法 | 说明
Selection.addListener() | 注册一个对象，以便在调用 onSetFocus 时接收通知。
Selection.getBeginIndex() | 返回选择范围的开始索引。如果没有索引或当前没有选中的字段，则返回 -1。
Selection.getCaretIndex() | 返回当前具有焦点的选择范围中当前插入符号（插入点）的位置。如果没有插入符号位置，或者当前没有具有焦点的选择范围，则返回 -1。
Selection.getEndIndex() | 返回选择范围的结束索引。如果没有索引或当前没有选中的字段，则返回 -1。
Selection.getFocus() | 返回当前具有焦点的文本字段的变量的名称。如果当前没有具有焦点的文本字段，则返回 null。
Selection.removeListener() | 删除用 addListener() 注册的对象。
Selection.setFocus() | 使与指定变量关联的文本字段获得焦点。
Selection.setSelection() | 设置选择范围的开始索引和结束索引。

Selection 类的侦听器摘要

侦听器 | 说明
Selection.onSetFocus | 当输入焦点更改时获得通知。


Selection.addListener()

可用性

Flash Player 6。

用法

Selection.addListener(newListener)

参数

newListener 具有 onSetFocus 方法的对象。

返回

无。

说明

方法；注册一个对象，以接收键盘焦点更改通知。当焦点更改时（例如，每当调用 Selection.setFocus() 时），所有用 addListener() 注册的侦听对象都调用它们的 onSetFocus 方法。可以有多个对象侦听焦点更改通知。如果已经注册了侦听器 newListener，则不会发生任何更改。


Selection.getBeginIndex()

可用性

Flash Player 5。

用法

Selection.getBeginIndex()

参数

无。

返回

一个整数。

说明

方法；返回选择范围开始处的索引。如果不存在索引，或者当前没有具有焦点的文本字段，则该方法返回 -1。选择范围索引是从零开始的（例如，第一个位置为 0、第二个位置为 1，依此类推）。


Selection.getCaretIndex()

可用性

Flash Player 5。

用法

Selection.getCaretIndex()

参数

无。

返回

一个整数。

说明

方法；返回闪烁插入点（插入符号）位置的索引。如果没有显示闪烁插入点，则该方法返回 -1。选择范围索引是从零开始的（例如，第一个位置为 0、第二个位置为 1，依此类推）。


Selection.getEndIndex()

可用性

Flash Player 5。

用法

Selection.getEndIndex()

参数

无。

返回

一个整数。

说明

方法；返回当前具有焦点的选择范围的结束索引。如果不存在索引，或者当前没有具有焦点的选择范围，则该方法返回 -1。选择范围索引是从零开始的（例如，第一个位置为 0、第二个位置为 1，依此类推）。


Selection.getFocus()

可用性

Flash Player 5。按钮和文本字段的实例名称在 Flash Player 6 和更高版本中可正常工作。

用法

Selection.getFocus()

参数

无。

返回

字符串或 null。

说明

方法；返回具有焦点的文本字段的变量名。如果没有任何文本字段具有焦点，则该方法返回 null。如果当前具有焦点的是一个按钮，并且该按钮是 Button 对象，则 getFocus() 以字符串形式返回目标路径。如果当前具有焦点的是一个文本字段，并且该文本字段是 TextField 对象，则 getFocus() 以字符串形式返回目标路径。

如果按钮影片剪辑是当前具有焦点的按钮，则 Selection.getFocus() 返回该按钮影片剪辑的目标路径。如果当前具有焦点的是具有实例名称的文本字段，则 Selection.getFocus() 返回该 TextField 对象的目标路径。否则，它返回该文本字段的变量名。


Selection.onSetFocus

可用性

Flash Player 6。

用法

someListener.onSetFocus = function(oldFocus, newFocus){
statements;
}

说明

侦听器；当输入焦点更改时获得通知。若要使用 onSetFocus，必须创建一个侦听器对象。然后可以为 onSetFocus 定义一个函数，并使用 addListener() 将该侦听器注册到 Selection 对象，如下所示：

someListener = new Object();
someListener.onSetFocus = function () { ... };
Selection.addListener(someListener);

侦听器可以使不同的代码片段协同工作，因为多个侦听器可以接收有关单个事件的通知。

另请参见

Selection.addListener()


Selection.removeListener()

可用性

Flash Player 6。

用法

Selection.removeListener(listener)

参数

listener 不再接收焦点通知的对象。

返回

如果成功删除了 listener，则该方法返回值 true。如果未成功删除 listener（例如，如果 listener 不在 Selection 对象的侦听器列表中），则该方法返回值 false。

说明

方法；删除以前用 addListener() 注册的对象。


Selection.setFocus()

可用性

Flash Player 5。按钮和影片剪辑的实例名称只在 Flash Player 6 和更高版本中可正常工作。

用法

Selection.setFocus("instanceName")

参数

instanceName 一个字符串，指定按钮、影片剪辑或文本字段的实例名的路径。

返回

事件。

说明

方法；使 instanceName 指定的可选择（可编辑）文本字段、按钮或影片剪辑具有焦点。instanceName 参数必须是表示实例路径的文本字符串。可以使用点或斜杠记号指定路径。也可以使用相对路径或绝对路径。如果使用动作脚本 2.0，则必须使用点记号表示法。

如果传递 null，则清除当前焦点。

示例

下面的示例使与主时间轴上的 myVar 关联的文本字段具有焦点。因为 instanceName 参数是绝对路径，所以您可以从任何时间轴调用该动作。

Selection.setFocus("_root.myVar");

在下面的示例中，与 myVar 关联的文本字段位于主时间轴上名为 myClip 的影片剪辑中。您可以使用下面两种路径之一来设置焦点；第一条语句使用的是相对路径，第二条语句使用的是绝对路径。

Selection.setFocus("myClip.myVar");
Selection.setFocus("_root.myClip.myVar");


Selection.setSelection()

可用性

Flash Player 5。

用法

Selection.setSelection(start, end)

参数

start 选择范围的开始索引。

end 选择范围的结束索引。

返回

无。

说明

方法；设置当前具有焦点的文本字段的选择范围。新的选择范围将从 start 参数中指定的索引开始，到 end 参数中指定的索引结束。选择范围索引是从零开始的（例如，第一个位置为 0、第二个位置为 1，依此类推）。如果当前没有具有焦点的文本字段，则此方法无效。


set

可用性

Flash Player 6。

用法

function set property(varName) {
  // 此处是您的语句
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

property 您要用来指 set 将访问的属性的单词；此值必须与对应的 get 命令中使用的值相同。

varName 设置您正在指定的值的局部变量。

返回

无。

说明

关键字；允许根据您在外部类文件中定义的类隐式“设置”与对象关联的属性。使用隐式设置方法允许您访问对象的属性，而不用直接访问对象。隐式获取/设置方法是对动作脚本 1 中 Object.addProperty() 方法的句法简化。

有关更多信息，请参见隐式获取/设置方法。

另请参见

get, Object.addProperty()


set variable

可用性

Flash Player 4。

用法

set(variable, expression)

参数

variable 保存 expression 参数值的标识符。

expression 分配给变量的值。

返回

无。

说明

语句；为变量赋值。variable 是保存数据的容器。容器本身始终不变，但内容可以更改。通过在 SWF 文件播放时更改变量的值，可以记录和保存有关用户所执行操作的信息、记录当 SWF 文件播放时更改的值，或者计算某条件是 true 还是 false。

变量可以保存任何类型的数据（例如，字符串、数字、布尔值、对象或影片剪辑）。每个 SWF 文件和影片剪辑的时间轴都有其自己的变量集，每个变量又都有其自己的独立于其它时间轴上的变量的值。

set 语句中不支持严格数据类型指定。如果使用此语句将某个变量设置为一个值，而该值的数据类型与类文件中与该变量关联的数据类型不同，则不引发编译器错误。

示例

此示例设置一个名为 orig_x_pos 的变量，该变量存储 ship 影片剪辑的原始 x 轴位置，以便以后在 SWF 文件中将船 (ship) 重置到其起始位置。

on (release) {
  set("orig_x_pos", getProperty ("ship", _x ));
}

上面的代码与下面的代码结果一样：

on (release) {
  orig_x_pos = ship._x;
}

另请参见

var, call()


setInterval()

可用性

Flash Player 6。

用法

setInterval(functionName, interval [, param1, param2, ..., paramN])

参数

functionName 一个函数名或者一个对匿名函数的引用。

interval 对 functionName 参数的两次调用之间的时间（以毫秒为单位）。

param1, param2, ..., paramN 传递到 function 或 methodName 参数的可选参数。

返回

间隔标识符，可以将该标识符传递给 clearInterval() 以取消该间隔。

说明

函数；在播放 SWF 文件时，每隔一定的时间，就调用函数、方法或对象。可以使用间隔函数更新来自数据库的变量或更新时间显示。

如果 interval 小于 SWF 文件的帧频（例如，每秒 10 帧 [fps] 相当于 100 毫秒），则按照尽可能接近 interval 的时间间隔调用间隔函数。而且必须使用 updateAfterEvent() 函数来确保以足够的频率刷新屏幕。如果 interval 大于 SWF 文件的帧频，则只有在每次播放头进入帧时才调用该间隔函数，这样可以尽可能减小每次刷新屏幕的影响。

示例

用法 1：下面的示例每隔 1000 毫秒（每隔 1 秒）调用一次匿名函数。

setInterval( function(){ trace("interval called"); }, 1000 );

用法 2：下面的示例定义两个事件处理函数并分别调用它们。对 setInterval() 的两次调用的结果都是每隔 1000 毫秒就向“输出”面板发送字符串 "interval called"。对 setInterval() 的第一个调用将调用 callback1() 函数，该函数包含 trace() 动作。对 setInterval() 的第二个调用将 "interval called" 字符串作为参数传递给函数 callback2()。

function callback1() {
  trace("interval called");
}

function callback2(arg) {
  trace(arg);
}

setInterval( callback1, 1000 );
setInterval( callback2, 1000, "interval called" );

用法 3：此示例使用对象的方法。当要调用为对象定义的方法时，必须使用此语法。

obj = new Object();
obj.interval = function() {
  trace("interval function called");
}

setInterval( obj, "interval", 1000 );

obj2 = new Object();
obj2.interval = function(s) {
  trace(s);
}
setInterval( obj2, "interval", 1000, "interval function called" );

必须使用第二种格式的 setInterval() 语法来调用对象的方法，如下所示：

setInterval( obj2, "interval", 1000, "interval function called" );

另请参见

clearInterval(), updateAfterEvent()


setProperty()

可用性

Flash Player 4。

用法

setProperty(target, property, value/expression)

参数

target 到要设置其属性的影片剪辑实例名称的路径。

property 要设置的属性。

value 属性的新文本值。

expression 计算结果为属性新值的公式。

返回

无。

说明

函数；当影片播放时，更改影片剪辑的属性值。

示例

当单击按钮时，此语句将名为 star 的影片剪辑的 _alpha 属性设置为 30%：

on (release) {
  setProperty("star", _alpha, "30");
}

另请参见

getProperty


SharedObject 类

可用性

Flash Player 6。

说明

共享对象相当强大：它们提供用户计算机上永久对象间的实时数据共享。您可以将本地共享对象看作“Cookie”。

您可以使用本地共享对象维持本地永久性。这是使用共享对象最简单的方式。例如，您可以调用 SharedObject.getLocal() 在播放器中创建共享对象，例如具有内存的计算器。因为共享对象在本地是永久性的，所以当 SWF 文件结束时 Flash 会将其数据属性保存在用户的计算机上。SWF 文件下次运行时，计算器仍包含 SWF 文件结束时它所具有的值。或者，如果在 SWF 结束前将共享对象的属性设置为 null，则当 SWF 文件下次运行时，计算器打开时不带有任何以前的值。

若要创建本地共享对象，请使用以下语法：

// 创建本地共享对象
so = SharedObject.getLocal("foo");

本地磁盘空间注意事项

在可用内存和磁盘空间用完之前，客户端上的本地共享对象总是永久性的。

默认情况下，Flash 可以在本地保存多达 100K 大小的永久性远程共享对象。当您尝试保存一个较大的对象时，Flash Player 将显示“本地存储”对话框，用户可以使用该对话框允许或拒绝请求访问的域的本地存储。确保舞台大小至少为 215 x 138 像素；这是 Flash 显示该对话框所需的最小大小。

如果用户单击“允许”，则将保存该对象，并用 SharedObject.Flush.Success 的 code 属性调用 SharedObject.onStatus；如果用户单击“拒绝”，则不保存该对象，并用 SharedObject.Flush.Failed 的 code 属性调用 SharedObject.onStatus。

用户还可以指定特定域的永久本地存储设置，方法是在 SWF 文件播放时右击 (Windows) 或按住 Control 键单击 (Macintosh)，选择“设置”，然后打开“本地存储”面板。

下表总结用户的磁盘空间选择如何与共享对象互相影响：

  • 如果用户选择“从不”，则从不在本地保存对象，为该对象发出的所有 SharedObject.flush() 命令都返回 false。
  • 如果用户选择“无限制”（一直向右移动滑块），则在本地保存对象直到达到最大可用磁盘空间。
  • 如果用户选择“无”（一直向左移动滑块）则为该对象发出的所有 SharedObject.flush() 命令都返回 "pending"，播放器将询问用户是否可以分配额外的磁盘空间以容纳该对象，如上所述。
  • 如果用户选择“10 KB”、“100 KB”、“1 MB”或“10 MB”，则将在本地保存对象，并且如果这些对象的大小未超过指定的空间量，则 SharedObject.flush() 返回 true。如果需要更多空间，SharedObject.flush() 将返回 "pending"，播放器将询问用户是否可以分配额外的磁盘空间以容纳该对象，如上所述。

另外，如果用户选择的值小于本地永久数据当前使用的磁盘空间量，则播放器将警告用户将删除所有本地保存的共享对象。

注意：在创作环境中运行的 Flash Player 没有大小限制。

SharedObject 类的方法摘要

方法 | 说明
SharedObject.clear() | 清除共享对象中的所有数据并从磁盘删除共享对象。
SharedObject.flush() | 将本地永久共享对象立即写入本地文件。
SharedObject.getLocal() | 返回对本地永久共享对象的引用，该对象只可用于当前客户端。
SharedObject.getSize() | 获取共享对象的当前大小（以字节为单位）。

SharedObject 类的属性摘要

属性（只读） | 说明
SharedObject.data | 分配到该对象 data 属性的属性集合，可以共享和/或存储这些属性。

SharedObject 类的事件处理函数摘要

事件处理函数 | 说明
SharedObject.onStatus | 每次为共享对象公布错误、警告或信息性通知时调用。

SharedObject 类的构造函数

有关创建本地共享对象的信息，请参见 SharedObject.getLocal()。


SharedObject.clear()

可用性

Flash Player 7。

用法

my_so.clear()

参数

无。

返回

无。

说明

方法；清除共享对象中的所有数据并从磁盘删除共享对象。对 my_so 的引用仍然处于活动状态，my_so 现在已空。


SharedObject.data

可用性

Flash Player 6。

用法

myLocalSharedObject.data

说明

只读属性；分配到对象 data 属性的属性集合，可以共享和/或存储这些属性。每个属性都可以是所有基本 ActionScript 或 JavaScript 类型（数组、数字、布尔值等）的对象。例如，下面几行将值分配到共享对象的不同方面：

itemsArray = new Array(101,346,483);
currentUserIsAdmin = true;
currentUserName = "Ramona";
so.data.itemNumbers = itemsArray;
so.data.adminPrivileges = currentUserIsAdmin;
so.data.userName = currentUserName;

如果对象是永久性的，则将保存共享对象 data 属性的所有属性。

注意：不要将值直接赋予共享对象的 data 属性（例如 so.data = someValue）；Flash 将忽略这些赋值。

若要删除本地共享对象的属性，请使用诸如 delete so.data.attributeName 这样的代码；将本地共享对象的属性设置为 null 或 undefined 不会删除该属性。

若要创建共享对象的“私有”值（该对象正在使用时只有客户端实例才可以使用并且当对象关闭时不与该对象存储在一起的值），请创建名称不为 data 的属性来存储它们，如下面的示例所示。

so.favoriteColor = "blue";
so.favoriteNightClub = "The Bluenote Tavern";
so.favoriteSong = "My World is Blue";

示例

下面的示例将当前流设置为用户的选择。

curStream = _root.so.data.msgList[selected].streamName;

另请参见

Sound 类


SharedObject.flush()

可用性

Flash Player 6。

用法

myLocalSharedObject.flush([minimumDiskSpace])

参数

minimumDiskSpace 一个可选整数，指定必须为此对象分配的字节数。默认值为 0。

返回

布尔值 true 或 false，或者是字符串值 "pending"。

  • 如果用户允许此域中的对象进行本地信息存储，并且所分配的空间量足够存储该对象，则此方法返回 true。（如果已为 minimumDiskSpace 传递了一个值，则所分配的空间量必须至少等于使此方法能够返回 true 的值）。
  • 如果用户允许此域中的对象进行本地信息存储，但所分配的空间量不足以存储该对象，则此方法返回 "pending"。
  • 如果用户已永久拒绝此域中的对象进行本地信息存储，或者如果 Flash 出于任何原因无法保存对象，则此方法返回 false。

说明

方法；将本地永久共享对象立即写入本地文件。如果您不使用此方法，则 Flash 会在共享对象会话结束时（也就是说，在 SWF 文件关闭时、在共享对象不再具有引用而被作为垃圾回收时、或者在您调用 SharedObject.data 时）将共享对象写入文件。

如果此方法返回 "pending"，Flash Player 将显示对话框要求用户增加磁盘空间量以供此域中的对象使用。若要允许将来保存共享对象时其空间能够“增长”，从而避免返回值 "pending"，请为 minimumDiskSpace 传递一个值。当 Flash 尝试写入文件时，它查找传递到 minimumDiskSpace 的字节数，而不是查找以共享对象的当前大小保存该对象刚刚够用的空间。

例如，如果预期共享对象增长到最大大小 500 字节，则即使它开始时要小得多，也为 minimumDiskSpace 传递 500。如果 Flash 要求用户为该共享对象分配磁盘空间，它将要求 500 字节。在用户分配了请求的空间量之后，当以后尝试刷新该对象时（只要其大小不超过 500 字节），Flash 将无需要求更多的空间。

在用户响应该对话框之后，此方法将被再次调用并返回 true 或 false；另外，将用 SharedObject.Flush.Success 或 SharedObject.Flush.Failed 的 code 属性调用 SharedObject.onStatus。

有关更多信息，请参见本地磁盘空间注意事项。

示例

下面的函数获取共享对象 SO，并用用户提供的设置填充可写属性。最后，调用 flush() 以保存设置并分配最少 1000 字节的磁盘空间。

this.SyncSettingsCore=function(soname, override, settings)
{
  var SO=SharedObject.getLocal(soname, "http://www.mydomain.com/app/sys");

  // 设置列表索引
  var i;

  // 对于设置中每个指定的值：
  // 如果 override 为 true，则将永久设置设置为所提供的值。
  // 如果 override 为 false，则获取永久设置，除非
  // 没有永久设置，在这种情况下，将其设置为所提供的值。
  for (i in settings) {
    if (override || (SO.data[i] == null)) {
      SO.data[i]= settings[i];
    } else {
      settings[i]= SO.data[i];
    }
  }
  SO.flush(1000);
}


SharedObject.getLocal()

可用性

Flash Player 6。

用法

SharedObject.getLocal(objectName [, localPath])

注意：正确的语法是 SharedObject.getLocal。若要将该对象分配到变量，请使用类似于 myLocalSO = SharedObject.getLocal 的语法。

参数

objectName 对象的名称。该名称可以包含正斜杠 (/)；例如 work/addresses 就是合法名称。共享对象名称中不允许使用空格，也不允许使用以下字符：

~ % & \ ; :  " ' , < > ? #

localPath 一个可选字符串参数；该参数指定指向创建共享对象的 SWF 文件的完整路径或部分并确定共享对象的本地存储位置。默认值是完整路径。

返回

一个对共享对象的引用，该共享对象在本地是永久性的并且只可用于当前客户端。如果 Flash 无法创建或找到共享对象（例如，如果指定了 localPath 但不存在此目录），则此方法返回 null。

说明

方法；返回对只可用于当前客户端的本地永久共享对象的引用。

为了避免名称冲突，Flash 会考虑创建共享对象的 SWF 文件的位置。例如，如果位于 www.myCompany.com/apps/stockwatcher.swf 的 SWF 文件创建了一个名为 portfolio 的共享对象，该共享对象不会与位于 www.yourCompany.com/photoshoot.swf 的 SWF 文件所创建的另一个名为 portfolio 的对象冲突，这是因为这两个 SWF 文件源于两个不同的目录。

示例

下面的示例将用户输入的最后一个帧保存到本地共享对象 kookie。

// 获取 kookie
so = sharedobject.getlocal("kookie");

// 获取 kookie 的用户并转到为此用户保存的帧编号。
if (so.data.user != undefined) {
  this.user = so.data.user;
  this.gotoAndStop(so.data.frame);
}

下面的代码块放置在每个 SWF 帧上。

// 在每个帧上，调用 rememberme 函数保存帧编号。
function rememberme() {
  so.data.frame=this._currentFrame;
  so.data.user="John";
}


SharedObject.getSize()

可用性

Flash Player 6。

用法

myLocalSharedObject.getSize()

参数

无。

返回

一个指定共享对象大小（以字节为单位）的数值。

说明

方法；获取共享对象的当前大小（以字节为单位）。

Flash 通过逐句调试共享对象的每个数据属性计算该对象的大小；对象具有的数据属性越多，评估其大小所花的时间就越长。出于此原因，评估对象大小可能要花费巨大的处理开销。因此，除非有特定需求，否则应避免使用此方法。

示例

下面的示例获取共享对象 so 的大小。

var soSize= this.so.getSize();


SharedObject.onStatus

可用性

Flash Player 6。

用法

myLocalSharedObject.onStatus = function(infoObject) {
  // 此处是您的语句
}

参数

infoObject 按照状态消息定义的参数。

返回

无。

说明

事件处理函数；每次为共享对象公布错误、警告或信息性通知时调用。如果要响应此事件处理函数，您必须创建一个函数来处理共享对象生成的信息对象。

信息对象具有一个 code 属性（该属性包含的字符串说明 onStatus 处理函数的结果）和一个 level 属性（该属性包含字符串 "Status" 或 "Error"）。

除了此 onStatus 处理函数外，Flash 还提供称作 System.onStatus 的“超级”函数。如果为特定对象调用了 onStatus 但未分配任何函数对其进行响应，则 Flash 将处理分配到 System.onStatus 的函数（如果存在）。

当发生特定的 SharedObject 活动时，以下事件将发出通知。

Code 属性 | Level 属性 | 含义
SharedObject.Flush.Failed | Error | 返回 "pending" 的 SharedObject.flush() 命令失败（当 Flash Player 显示“本地存储设置”对话框时，用户未为共享对象分配额外的磁盘空间）。
SharedObject.Flush.Success | Status | 返回 "pending" 的 SharedObject.flush() 命令成功完成（用户为共享对象分配了额外的磁盘空间）。

另请参见

SharedObject.getLocal(), System.onStatus


Sound 类

可用性

Flash Player 5。

说明

Sound 类使您可以控制影片中的声音。可以在影片正在播放时从库中向该影片剪辑添加声音，并控制这些声音。如果在创建新 Sound 对象时没有指定 target，则可以使用方法控制整个影片的声音。

在调用 Sound 类的方法之前，您必须使用构造函数 new Sound 创建 Sound 对象。

Sound 类的方法摘要

方法 | 说明
Sound.attachSound() | 附加在参数中指定的声音。
Sound.getBytesLoaded() | 返回为指定声音加载的字节数。
Sound.getBytesTotal() | 以字节为单位返回声音的大小。
Sound.getPan() | 返回上一个 setPan() 调用的值。
Sound.getTransform() | 返回上一个 setTransform() 调用的值。
Sound.getVolume() | 返回上一个 setVolume() 调用的值。
Sound.loadSound() | 将 MP3 文件加载到 Flash Player 中。
Sound.setPan() | 设置声音的左/右均衡。
Sound.setTransform() | 设置要在每个扬声器中播放的每个声道（左声道和右声道）的音量。
Sound.setVolume() | 设置声音的音量级别。
Sound.start() | 从头开始播放声音，或者可选择从参数中设置的某偏移点开始播放声音。
Sound.stop() | 停止指定声音或当前播放的所有声音。

Sound 类的属性摘要

属性 | 说明
Sound.duration | 声音的长度，以毫秒为单位。
Sound.ID3 | 提供对作为 MP3 文件一部分的元数据的访问。
Sound.position | 声音已播放的毫秒数。

Sound 类的事件处理函数摘要

事件处理函数 | 说明
Sound.onID3 | 每次有新的 ID3 数据可用时调用。
Sound.onLoad | 加载声音时调用。
Sound.onSoundComplete | 声音停止播放时调用。

Sound 类的构造函数

可用性

Flash Player 5。

用法

new Sound([target])

参数

target Sound 对象操作的影片剪辑实例。此参数是可选的。

返回

无。

说明

构造函数；为指定的影片剪辑创建新的 Sound 对象。如果没有指定目标实例，则 Sound 对象控制影片中的所有声音。

示例

下面的示例创建名为 global_sound 的新 Sound 对象。示例中的第二行调用 setVolume() 并将影片中的所有声音的音量调整为 50%。

global_sound = new Sound();
global_sound.setVolume(50);

下面的示例创建一个新 Sound 对象，将目标影片剪辑 my_mc 传递给它，然后调用 start 方法，该方法开始播放 my_mc 中的所有声音。

movie_sound = new Sound(my_mc);
movie_sound.start();


Sound.attachSound()

可用性

Flash Player 5。

用法

my_sound.attachSound("idName")

参数

idName 库中导出声音的标识符。该标识符位于“链接属性”对话框。

返回

无。

说明

方法；将 idName 参数中指定的声音附加到指定的 Sound 对象。该声音必须位于当前 SWF 文件的库中，并且必须已经在“链接属性”对话框中指定为导出。必须调用 Sound.start() 才能开始播放该声音。

为了确保从 SWF 文件中的任何场景都可以控制声音，请将声音放置在 SWF 文件的主时间轴上。


Sound.duration

可用性

Flash Player 6。

用法

my_sound.duration

说明

属性（只读）；声音的持续时间，以毫秒为单位。


Sound.getBytesLoaded()

可用性

Flash Player 6。

用法

my_sound.getBytesLoaded()

参数

无。

返回

一个整数，指示所加载的字节数。

说明

方法；返回为指定 Sound 对象加载（进入流）的字节数。可以比较 getBytesLoaded() 的值与 getBytesTotal() 的值，以确定已加载声音的百分比。

另请参见

Sound.getBytesTotal()


Sound.getBytesTotal()

可用性

Flash Player 6。

用法

my_sound.getBytesTotal()

参数

无。

返回

一个整数，以字节为单位指示指定 Sound 对象的总大小。

说明

方法；以字节为单位返回指定 Sound 对象的大小。

另请参见

Sound.getBytesLoaded()


Sound.getPan()

可用性

Flash Player 5。

用法

my_sound.getPan();

参数

无。

返回

一个整数。

说明

方法；返回在上一次 setPan() 调用中设置的面板级别，这是一个从 -100（左）到 100（右）之间的整数。（0 平衡地设置左右声道。）该面板设置控制 SWF 文件中当前和将来声音的左右均衡。

此方法是用 setVolume() 或 setTransform() 累积的。

另请参见

Sound.setPan()


Sound.getTransform()

可用性

Flash Player 5。

用法

my_sound.getTransform();

参数

无。

返回

一个具有属性的对象，这些属性包含指定声音对象的声道百分比值。

说明

方法；返回用上一次 Sound.setTransform() 调用设置的指定 Sound 对象的声音转换信息。


Sound.getVolume()

可用性

Flash Player 5。

用法

my_sound.getVolume()

参数

无。

返回

一个整数。

说明

方法；返回音量级别，这是一个从 0 到 100 之间的整数，其中 0 表示关闭，100 表示最大音量。默认设置为 100。

另请参见

Sound.setVolume()


Sound.ID3

可用性

Flash Player 6；行为在 Flash Player 7 中进行了更新。

用法

my_sound.ID3

说明

属性（只读）；提供对作为 MP3 文件一部分的元数据的访问。

MP3 声音文件可以包含 ID3 标签，ID3 标签提供有关该文件的元数据。如果使用 Sound.attachSound() 或 Sound.loadSound() 加载的 MP3 声音包含 ID3 标签，则您可以查询这些属性。只支持使用 UTF-8 字符集的 ID3 标签。

Flash Player 6 40 版和更高版本使用 Sound.id3 属性支持 ID3 1.0 和 ID3 1.1 标签。Flash Player 7 添加了对 ID3 2.0 标签的支持，特别是 2.3 和 2.4。为了向后兼容，同时支持 Sound.id3 和 Sound.ID3。只有小写的 id3 才支持代码提示（请参见使用代码提示）。

下表列出了标准 ID3 2.0 标签以及这些标签所表示内容的类型，您可以以 my_sound.ID3.COMM、my_sound.ID3.TIME 等格式查询这些标签。MP3 文件可以包含此表中所列标签之外的其它标签，Sound.ID3 也提供对这些标签的访问。

属性 | 说明
COMM | 注释
TALB | 唱片/影片/演出名称
TBPM | 每分钟节拍数
TCOM | 作曲家
TCON | 内容类型
TCOP | 版权信息
TDAT | 日期
TDLY | 播放列表延迟
TENC | 编码者
TEXT | 歌词作者/乐谱作者
TFLT | 文件类型
TIME | 时间
TIT1 | 内容组描述
TIT2 | 标题/歌曲名称/内容描述
TIT3 | 副标题/主要描述
TKEY | 最初关键字
TLAN | 语言
TLEN | 长度
TMED | 媒体类型
TOAL | 原唱片/影片/演出名称
TOFN | 原文件名
TOLY | 原歌词作者/乐谱作者
TOPE | 原歌手/演奏者
TORY | 最初发行年份
TOWN | 文件所有者/许可证持有人
TPE1 | 领衔演奏者/独唱（奏）者
TPE2 | 乐队/交响乐队/伴奏
TPE3 | 指挥/主要演奏者
TPE4 | 翻译、混录员、或以其它方式进行修改的人员
TPOS | 作品集的部分
TPUB | 发行人
TRCK | 音轨编号/作品集中的位置
TRDA | 录制日期
TRSN | Internet 电台名称
TRSO | Internet 电台所有者
TSIZ | 大小
TSRC | ISRC（国际标准音像制品编码）
TSSE | 编码使用的软件/硬件和设置
TYER | 年份
WXXX | URL 链接帧

Flash Player 6 支持若干种 ID3 1.0 标签。如果这些标签不在 MP3 文件中，而相应的 ID3 2.0 标签却在 MP3 文件中，则 ID3 2.0 标签会被复制到下表所示的 ID3 1.0 属性中。此过程提供与您已编写的、读取 ID3 1.0 属性的脚本的向后兼容性。

ID3 2.0 标签 | 相应的 ID3 1.0 属性
COMM | Sound.id3.comment
TALB | Sound.id3.album
TCON | Sound.id3.genre
TIT2 | Sound.id3.songname
TPE1 | Sound.id3.artist
TRCK | Sound.id3.track
TYER | Sound.id3.year

示例

有关此属性用法的示例，请参见 Sound.onID3。

另请参见

Sound.attachSound(), Sound.loadSound()


Sound.loadSound()

可用性

Flash Player 6。

用法

my_sound.loadSound("url", isStreaming)

参数

url MP3 声音文件在服务器上的位置。

isStreaming 一个布尔值，指示声音是声音流 (true) 还是事件声音 (false)。

返回

无。

说明

方法；将 MP3 文件加载到 Sound 对象中。可以使用 isStreaming 参数指示该声音是事件声音还是声音流。

事件声音在完全加载后才能播放。它们由动作脚本 Sound 类进行管理，并且响应此类的所有方法和属性。

声音流在下载的同时播放。当接收的数据足以启动解压缩程序时，播放开始。

使用此方法加载的所有 MP3（事件或流）都保存在用户系统上浏览器的文件缓存中。

示例

下面的示例加载事件声音：

my_sound.loadSound( "http://serverpath:port/mp3filename", false);

下面的示例加载声音流：

my_sound.loadSound( "http://serverpath:port/mp3filename", true);

另请参见

Sound.onLoad


Sound.onID3

可用性

Flash Player 7。

用法

my_sound.onID3 = function(){
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；每次有新的 ID3 数据可用于使用 Sound.attachSound() 或 Sound.loadSound() 加载的 MP3 文件时调用。此处理程序提供对 ID3 数据的访问而无需轮询。如果文件中同时出现 ID3 1.0 和 ID3 2.0 标签，则此处理函数将被调用两次。

示例

下面的示例用 trace 命令将 song.mp3 的 ID3 属性发送到“输出”面板。

my_sound = new Sound();
my_sound.onID3 = function(){
  for( var prop in my_sound.ID3 ){
    trace( prop + " :"+ my_sound.ID3[prop] );
  }
}
my_sound.loadSound("song.mp3", false);

另请参见

Sound.attachSound(), Sound.ID3, Sound.loadSound()


Sound.onLoad

可用性

Flash Player 6。

用法

my_sound.onLoad = function(success){
  // 此处是您的语句
}

参数

success 如果 my_sound 已成功加载，则为布尔值 true，否则为 false。

返回

无。

说明

事件处理函数；当加载声音时自动调用。必须创建在调用此处理函数时执行的函数。您可以使用匿名函数或命名函数（有关每种情况的示例，请参见 Sound.onSoundComplete）。您应在调用 my_sound.loadSound() 之前定义此处理函数。

另请参见

Sound.loadSound()


Sound.onSoundComplete

可用性

Flash Player 6。

用法

my_sound.onSoundComplete = function(){
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；当声音播放完时自动调用。您可以使用此处理函数在声音播放完毕后触发 SWF 文件中的事件。

必须创建一个在调用该处理函数时执行的函数。既可以使用匿名函数也可以使用命名函数。

示例

用法 1：下面的示例使用匿名函数：

my_sound = new Sound();
my_sound.attachSound("mySoundID");
my_sound.onSoundComplete = function() {
  trace("mySoundID completed");
}
my_sound.start();

用法 2：下面的示例使用命名函数：

function callback1() {
  trace("mySoundID completed");
}

my_sound = new Sound();
my_sound.attachSound("mySoundID");
my_sound.onSoundComplete = callback1;
my_sound.start();

另请参见

Sound.onLoad


Sound.position

可用性

Flash Player 6。

用法

my_sound.position

说明

属性（只读）；声音已播放的毫秒数。如果声音是循环的，则在每次循环开始时，位置将被重置为 0。


Sound.setPan()

可用性

Flash Player 5。

用法

my_sound.setPan(pan);

参数

pan 一个整数，指定声音的左右均衡。有效值的范围为 -100 到 100，其中 -100 表示仅使用左声道，100 表示仅使用右声道，而 0 表示在两个声道间平均地均衡声音。

返回

一个整数。

说明

方法；确定声音在左右声道（扬声器）中是如何播放的。对于单声道声音，pan 确定声音通过哪个扬声器（左或右）进行播放。

示例

下面的示例创建一个 Sound 对象 my_sound，并从库中为其附加具有标识符 L7 的声音。它还调用 setVolume() 和 setPan() 来控制 L7 声音。

onClipEvent(mouseDown) {
// 创建一个声音对象
  my_sound = new Sound(this);
// 从库中附加声音
  my_sound.attachSound("L7");
//将音量设置为 50%
  my_sound.setVolume(50);
//关闭右声道中的声音
  my_sound.setPan(-100);
//从声音的第 30 秒开始播放并播放 5 遍
  my_sound.start(30, 5);

另请参见

Sound.attachSound(), Sound.setPan(), Sound.setTransform(), Sound.setVolume(), Sound.start()


Sound.setTransform()

可用性

Flash Player 5。

用法

my_sound.setTransform(soundTransformObject)

参数

soundTransformObject 一个用通用 Object 类的构造函数创建的对象。

返回

无。

说明

方法；设置 Sound 对象的声音转换（即，均衡）信息。

soundTransformObject 参数是一个用通用 Object 类的构造函数方法创建的对象，该对象具有指定声音在左右声道（扬声器）间如何分布的参数。

声音占用相当大的磁盘空间和内存。因为立体声声音使用的数据是单声道声音的两倍，通常情况下最好使用 22 KHz 6 位单声道声音。您可以使用 setTransform() 将单声道声音播放为立体声、将立体声声音播放为单声道以及向声音添加有趣的效果。

soundTransformObject 的属性如下：

11 一个百分数值，指定左输入在左扬声器里播放的量 (0-100)。

1r 一个百分数值，指定右输入在左扬声器里播放的量 (0-100)。

rr 一个百分数值，指定右输入在右扬声器里播放的量 (0-100)。

rl 一个百分数值，指定左输入在右扬声器里播放的量 (0-100)。

这些参数的净结果由以下公式表示：

leftOutput = left_input * ll + right_input * lr
rightOutput = right_input * rr + left_input * rl

left_input 或 right_input 的值由 SWF 文件中的声音类型（立体声或单声道）确定。

立体声声音将声音输入在左右扬声器之间平均分配，且在默认情况下具有下面的转换设置：

ll = 100
lr = 0
rr = 100
rl = 0

单声道声音在左扬声器里播放所有的声音输入，且在默认情况下具有下面的转换设置：

ll = 100
lr = 100
rr = 0
rl = 0

示例

下面的示例说明了这样一个设置，它可以通过使用 setTransform() 实现，但不能通过使用 setVolume() 或 setPan() 实现，即使将后两种方法结合起来使用也无法实现该设置。

下面的代码新建一个 soundTransformObject 对象并设置其属性，以便只在左声道中播放来自两个声道的声音。

mySoundTransformObject = new Object;
mySoundTransformObject.ll = 100;
mySoundTransformObject.lr = 100;
mySoundTransformObject.rr = 0;
mySoundTransformObject.rl = 0;

若要将 soundTransformObject 对象应用到 Sound 对象，则需要使用 setTransform() 将此对象传递给 Sound 对象，如下所示：

my_sound.setTransform(mySoundTransformObject);

下面的示例将立体声声音播放为单声道声音；soundTransformObjectMono 对象具有下列参数：

mySoundTransformObjectMono = new Object;
mySoundTransformObjectMono.ll = 50;
mySoundTransformObjectMono.lr = 50;
mySoundTransformObjectMono.rr = 50;
mySoundTransformObjectMono.rl = 50;
my_sound.setTransform(soundTransformObjectMono);

此示例只播放左声道音量的一半，而将左声道的剩余部分添加到右声道；soundTransformObjectHalf 对象具有下列参数：

mySoundTransformObjectHalf = new Object;
mySoundTransformObjectHalf.ll = 50;
mySoundTransformObjectHalf.lr = 0;
mySoundTransformObjectHalf.rr = 100;
mySoundTransformObjectHalf.rl = 50;
my_sound.setTransform(soundTransformObjectHalf);

另请参见

Object 类


Sound.setVolume()

可用性

Flash Player 5。

用法

my_sound.setVolume(volume)

参数

volume 一个从 0 到 100 之间的数字，表示声音级别。100 为最大音量，而 0 为没有音量。默认设置为 100。

返回

无。

说明

方法；设置 Sound 对象的音量。

示例

下面的示例将音量设置为 50%，并随时间的推移，不断地将声音从左扬声器逐渐传输到右扬声器：

onClipEvent (load) {
  i = -100;
  my_sound = new Sound();
  my_sound.setVolume(50);
}
onClipEvent (enterFrame) {
  if (i <= 100) {
    my_sound.setPan(i++);
  }
}

另请参见

Sound.setPan(), Sound.setTransform()


Sound.start()

可用性

Flash Player 5。

用法

my_sound.start([secondOffset, loop])

参数

secondOffset 一个可选参数，用于从某个特定点开始播放声音。例如，如果您有一个 30 秒的声音，而您希望该声音从中间开始播放，可将 secondOffset 参数指定为 15。并非声音延迟 15 秒，而是从 15 秒标记处开始播放。

loop 一个可选参数，用于指定声音连续播放的次数。

返回

无。

说明

方法；如果未指定参数，则从开头开始播放最近附加的声音；或者从参数 secondOffset 指定的声音点处开始播放。

另请参见

Sound.stop()


Sound.stop()

可用性

Flash Player 5。

用法

my_sound.stop(["idName"])

参数

idName 一个可选参数，用于指定要停止播放的某个特定声音。idName 参数必须置于引号 (" ") 之中。

返回

无。

说明

方法；如果未指定参数，则停止当前播放的所有声音，否则只停止在 idName 参数中指定的声音。

另请参见

Sound.start()


_soundbuftime

可用性

Flash Player 4。

用法

_soundbuftime = integer

参数

integer 在 SWF 文件开始进入流之前缓冲的秒数。

说明

属性（全局）；规定声音流缓冲的秒数。默认值为 5 秒。


Stage 类

可用性

Flash Player 6。

说明

Stage 类是一个顶级类，不必使用构造函数即可访问其方法、属性和处理函数。

此类的方法和属性用于访问和操作有关 SWF 文件边界的信息。

Stage 类的方法摘要

方法 | 说明
Stage.addListener() | 添加一个检测 SWF 的大小何时进行了调整的侦听器对象。
Stage.removeListener() | 从 Stage 对象删除侦听器对象。

Stage 类的属性摘要

属性 | 说明
Stage.align | SWF 文件在播放器或浏览器中的对齐方式。
Stage.height | 舞台的高度，以像素为单位。
Stage.scaleMode | SWF 文件的当前缩放设置。
Stage.showMenu | 显示或隐藏 Flash Player 上下文菜单中的默认项。
Stage.width | 舞台的宽度，以像素为单位。

Stage 类的事件处理函数摘要

事件处理函数 | 说明
Stage.onResize | 当 Stage.scaleMode 设置为 "noScale" 而且 SWF 的大小进行了调整时调用。


Stage.addListener()

可用性

Flash Player 6。

用法

Stage.addListener(myListener)

参数

myListener 侦听来自 Stage.onResize 事件的回调通知的对象。

返回

无。

说明

方法；检测 SWF 文件的大小何时进行了调整（仅当 Stage.scaleMode = "noScale" 的情况下）。当缩放设置为默认影片缩放设置 ("showAll") 或其它缩放设置（"exactFit" 和 "noBorder"）时，addListener() 方法不起作用。

若要使用 addListener()，必须先创建一个侦听器对象。舞台侦听器对象接收来自 Stage.onResize 的通知。

示例

此示例新建一个名为 myListener 的侦听器对象。然后使用 myListener 调用 onResize，并定义一个当触发 onResize 时将调用的函数。最后，此代码将 myListener 对象添加到 Stage 对象的回调列表中。侦听器对象允许多个对象侦听调整大小的通知。

myListener = new Object();
myListener.onResize = function () { ... }
Stage.scaleMode = "noScale"
Stage.addListener(myListener);

另请参见

Stage.onResize, Stage.removeListener()


Stage.align

可用性

Flash Player 6。

用法

Stage.align

说明

属性；指示 SWF 文件在播放器或浏览器中的当前对齐方式。

下表列出了 align 属性的值。此处未列出的值会将 SWF 文件居中放置在播放器或浏览器区域内。

值 | 垂直 | 水平
"T" | 顶部 | 中间
"B" | 底部 | 中间
"L" | 中间 | 左侧
"R" | 中间 | 右侧
"TL" | 顶部 | 左侧
"TR" | 顶部 | 右侧
"BL" | 底部 | 左侧
"BR" | 底部 | 右侧


Stage.height

可用性

Flash Player 6。

用法

Stage.height

说明

属性（只读）；以像素为单位指示舞台的当前高度。当 Stage.scaleMode 的值为 "noScale" 时，height 属性表示播放器的高度。当 Stage.scaleMode 的值不为 "noScale" 时，height 表示 SWF 文件的高度。

另请参见

Stage.align, Stage.scaleMode, Stage.width


Stage.onResize

可用性

Flash Player 6。

用法

myListener.onResize = function(){
  // 此处是您的语句
}

参数

无。

参数

无。

返回

无。

说明

事件处理函数；当 Stage.scaleMode 设置为 "noScale" 并且 SWF 文件的大小调整时调用此函数。可以利用此事件处理函数编写一个函数，当 SWF 文件的大小调整时布置舞台上对象的布局。

示例

当舞台大小调整时，下面的示例在“输出”面板中显示一条消息。

Stage.scaleMode = "noScale"
myListener = new Object();
myListener.onResize = function () {
  trace("Stage size is now " + Stage.width + " by " + Stage.height);
}
Stage.addListener(myListener);
// 稍后，调用 Stage.removeListener(myListener)

另请参见

Stage.addListener(), Stage.removeListener()


Stage.removeListener()

可用性

Flash Player 6。

用法

Stage.removeListener(myListener)

参数

myListener 用 addListener() 添加到对象回调列表中的对象。

返回

一个布尔值。

说明

方法；删除用 addListener() 创建的侦听器对象。

另请参见

Stage.addListener()


Stage.scaleMode

可用性

Flash Player 6。

用法

Stage.scaleMode = "value"

说明

属性；指示舞台内 SWF 文件的当前缩放设置。scaleMode 属性将 SWF 文件强制设置为特定的缩放模式。默认情况下，SWF 文件使用在“发布设置”对话框中设置的 HTML 参数。

scaleMode 属性可以使用以下值："exactFit"、"showAll"、"noBorder" 和 "noScale"。任何其它值都会将 scaleMode 属性设置为默认值 "showAll"。


Stage.showMenu

可用性

Flash Player 6。

用法

Stage.showMenu

说明

属性（只读）；指定显示或隐藏 Flash Player 上下文菜单中的默认项。如果 showMenu 设置为 true（默认设置），所有上下文菜单项都将显示。如果 showMenu 设置为 false，则只出现“设置”项。

另请参见

ContextMenu 类, ContextMenuItem 类


Stage.width

可用性

Flash Player 6。

用法

Stage.width

说明

属性（只读）；以像素为单位指示舞台的当前宽度。当 Stage.scaleMode 的值为 "noScale" 时，width 属性表示播放器的宽度。当 Stage.scaleMode 的值不为 "noScale" 时，width 表示 SWF 文件的宽度。

另请参见

Stage.align, Stage.height, Stage.scaleMode


startDrag()

可用性

Flash Player 4。

用法

startDrag(target,[lock ,left , top , right, bottom])

参数

target 要拖动的影片剪辑的目标路径。

lock 一个布尔值，指定可拖动影片剪辑是锁定到鼠标位置中央 (true)，还是锁定到用户首次单击该影片剪辑的位置上 (false)。此参数是可选的。

left、top、right、bottom 相对于影片剪辑父级坐标的值，这些值指定该影片剪辑的约束矩形。这些参数是可选的。

返回

无。

说明

函数；使 target 影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行了 startDrag() 操作后，影片剪辑将保持可拖动状态，直到用 stopDrag() 明确停止拖动为止，或直到对其它影片剪辑调用了 startDrag() 动作为止。

示例

若要创建用户可以放在任何位置的影片剪辑，可将 startDrag() 和 stopDrag() 动作附加到该影片剪辑内的某个按钮上。

on (press) {
  startDrag(this,true);
}
on (release) {
  stopDrag();
}

另请参见

MovieClip._droptarget, MovieClip.startDrag(), stopDrag()


static

可用性

Flash Player 6。

用法

class someClassName{
  static var name;
  static function name() {
    // 此处是您的语句
  }
}

注意：若要使用此关键字，必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚本 2.0”和“Flash Player 6 或更高版本”。仅支持在外部脚本文件中使用此关键字，而不支持在用“动作”面板编写的脚本中使用此关键字。

参数

name 要指定为 static 的变量或函数的名称。

说明

关键字；指定某个变量或函数只为每个类创建一次，而不是在基于该类的每个对象中都创建。有关更多信息，请参见实例成员和类成员。

您只能在类定义中使用此关键字，不能在接口定义中使用。

另请参见

private, public


stop()

可用性

Flash 2。

用法

stop

参数

无。

返回

无。

说明

函数；停止当前正在播放的 SWF 文件。此动作最通常的用法是用按钮控制影片剪辑。


stopAllSounds()

可用性

Flash Player 3。

用法

stopAllSounds()

参数

无。

返回

无。

说明

函数；在不停止播放头的情况下停止 SWF 文件中当前正在播放的所有声音。设置到流的声音在播放头移过它们所在的帧时将恢复播放。

示例

下面的代码可以应用到一个按钮，这样当单击此按钮时，将停止 SWF 文件中的所有声音。

on (release) {
  stopAllSounds();
}

另请参见

Sound 类


stopDrag()

可用性

Flash Player 4。

用法

stopDrag()

参数

无。

返回

无。

说明

函数；停止当前的拖动操作。

示例

此代码在用户释放鼠标按钮时，在实例 my_mc 上停止拖动动作：

on (press) {
  startDrag("my_mc");
}
on (release) {
  stopdrag();
}

另请参见

MovieClip._droptarget, MovieClip.stopDrag(), startDrag()


" "（字符串分隔符）

可用性

Flash Player 4。

用法

"text"

参数

text 一个字符。

返回

无。

说明

字符串分隔符；在字符的前后加上引号后，引号指示这些字符具有其字面值；这些字符将被视作一个字符串，而不是一个变量、数值或其它动作脚本元素。

示例

此示例使用引号指示变量 yourGuess 的值是文本字符串“Prince Edward Island”，而不是变量名。province 的值是一个变量，而不是文本；要确定 province 的值，必须找到 yourGuess 的值。

yourGuess = "Prince Edward Island";
on (release) {
  province = yourGuess;
  trace(province);
}

// 在“输出”面板中显示“Prince Edward Island”

另请参见

String 类, String()


String 类

可用性

Flash Player 5（已成为 Flash Player 6 本身的对象，Flash Player 6 大大提高了性能）。

说明

String 类是字符串原始数据类型的包装，提供用于操作原始字符串值类型的方法和属性。您可以通过 String() 函数将任何对象的值转换为字符串。

除了 concat()、fromCharCode()、slice() 和 substr() 之外，String 对象的所有其它方法都是通用方法。这意味着这些方法本身先调用 this.toString()，然后再执行它们的操作，而且您可以将这些方法用于其它非 String 对象。

因为所有字符串索引都是从零开始的，所以任何字符串 x 的最后一个字符的索引都是 x.length - 1。

可以使用构造函数方法 new String 或者使用字符串文本值调用 String 类的任何方法。如果您指定了一个字符串，则动作脚本解释程序自动将其转换为一个临时 String 对象，再调用方法，然后放弃该临时 String 对象。您还可以将 String.length 属性用于字符串。

请不要将字符串和 String 对象相混淆。在下面的示例中，第一行代码创建字符串 s1，而第二行代码创建 String 对象 s2。

s1 = "foo"
s2 = new String("foo")

除非您确实需要使用 String 对象，否则请使用字符串。

String 类的方法摘要

方法 | 说明
String.charAt() | 返回字符串中特定位置处的字符。
String.charCodeAt() | 返回指定索引处字符的值，此值为介于 0 到 65535 之间的一个 16 位整数。
String.concat() | 合并两个字符串的文本，并返回一个新字符串。
String.fromCharCode() | 返回由参数中指定的字符组成的字符串。
String.indexOf() | 返回指定子字符串的第一个匹配项的位置。
String.lastIndexOf() | 返回指定子字符串的最后一个匹配项的位置。
String.slice() | 提取字符串的一部分，并返回一个新字符串。
String.split() | 通过将字符串分隔为子字符串，从而将 String 对象拆分为字符串数组。
String.substr() | 返回字符串内指定数量的字符，字符计数从指定的位置开始。
String.substring() | 返回字符串内两个索引间的字符。
String.toLowerCase() | 将字符串转换为小写然后返回结果；不更改原始对象的内容。
String.toUpperCase() | 将字符串转换为大写然后返回结果；不更改原始对象的内容。

String 类的属性摘要

属性 | 说明
String.length | 一个非从零开始的整数，表示指定 String 对象中的字符数。

String 类的构造函数

可用性

Flash Player 5。

用法

new String(value)

参数

value 新 String 对象的初始值。

返回

无。

说明

构造函数；创建一个新 String 对象。

另请参见

String(), " "（字符串分隔符）


String.charAt()

可用性

Flash Player 5。

用法

my_str.charAt(index)

参数

index 整数，指定字符在字符串中的位置。第一个字符由 0 表示，最后一个字符由 my_str.length-1 表示。

返回

一个字符。

说明

方法；返回参数 index 所指定位置处的字符。如果 index 不是 0 到 string.length - 1 之间的数字，则返回一个空字符串。

此方法与 String.charCodeAt() 类似，所不同的是它返回的值是字符，而不是 16 位整数字符代码。

示例

在下面的示例中，对字符串 "Chris" 的第一个字母调用了此方法。

my_str = new String("Chris");
i = my_str.charCodeAt(0); // i = "C"


String.charCodeAt()

可用性

Flash Player 5。

用法

my_str.charCodeAt(index)

参数

index 整数，指定字符在字符串中的位置。第一个字符由 0 表示，最后一个字符由 my_str.length-1 表示。

返回

一个整数。

说明

方法；返回一个 0 到 65535 之间的 16 位整数，表示由 index 指定的字符。如果 index 不是 0 到 string.length - 1 之间的数字，则返回 NaN。

此方法与 String.charAt() 类似，所不同的是它返回的值是 16 位整数字符代码，而不是字符。

示例

在下面的示例中，对字符串 "Chris" 的第一个字母调用了该方法。

my_str = new String("Chris");
i = my_str.charCodeAt(0); // i = 67


String.concat()

可用性

Flash Player 5。

用法

my_str.concat(value1,...valueN)

参数

value1...valueN 零或多个要连接的值。

返回

字符串。

说明

方法；将该 String 对象的值与参数合并，并返回新组成的字符串；而原始值 my_str 不变。


String.fromCharCode()

可用性

Flash Player 5。

用法

String.fromCharCode(c1,c2,...cN)

参数

c1,c2,...cN 表示 ASCII 值的十进制整数。

返回

字符串。

说明

方法；返回一个由参数中 ASCII 值表示的字符组成的字符串。

示例

此示例使用 fromCharCode() 在电子邮件地址中插入一个 @ 字符。

address_str = "dog" + String.fromCharCode(64) + "house.net";
trace(address_str); // dog@house.net


String.indexOf()

可用性

Flash Player 5。

用法

my_str.indexOf(substring, [startIndex])

参数

substring 一个整数或字符串，指定要在 my_str 中搜索的子字符串。

startIndex 一个可选整数，指定要在 my_str 中搜索该子字符串的起始点。

返回

指定子字符串的第一个匹配项的位置，或 -1。

说明

方法；搜索字符串，并返回在调用字符串内 startIndex 处或之后找到的 substring 的第一个匹配项的位置。如果没有找到 substring，则此方法返回 -1。

另请参见

String.lastIndexOf()


String.lastIndexOf()

可用性

Flash Player 5。

用法

my_str.lastIndexOf(substring, [startIndex])

参数

substring 一个整数或字符串，指定要搜索的字符串。

startIndex 一个可选整数，指定搜索 substring 的起始点。

返回

指定子字符串的最后一个匹配项的位置，或 -1。

说明

方法；在字符串中从右向左搜索，并返回调用此方法的字符串中在 startIndex 之前找到的 substring 的最后一个匹配项的索引。如果没有找到 substring，则此方法返回 -1。

另请参见

String.indexOf()


String.length

可用性

Flash Player 5。

用法

my_str.length

说明

属性；一个非从零开始的整数，表示指定 String 对象中的字符数。

因为所有字符串索引都是从零开始的，所以任何字符串 x 的最后一个字符的索引都是 x.length - 1。


String.slice()

可用性

Flash Player 5。

用法

my_str.slice(start, [end])

参数

start 指定片段起始点索引的数字。如果 start 是一个负数，则起始点从字符串的结尾开始确定，-1 表示最后一个字符。

end 一个比片段终点索引大 1 的整数。提取出来的字符串中不包括由 end 参数索引指定的字符。如果省略了此参数，将使用 String.length。如果 end 是一个负数，则终点根据从字符串的结尾向后数确定，-1 表示最后一个字符。

返回

指定字符串的子字符串。

说明

方法；返回一个字符串，该字符串包括从 start 字符直到 end 字符（但不包括该字符）之间的所有字符。不修改原始 String 对象。如果未指定 end 参数，则子字符串的结尾就是原字符串的结尾。如果 start 的值大于或等于 end 的值，则此方法返回一个空字符串。

示例

下面的示例先设置一个变量 text，再创建一个 String 对象 my_str，然后将 text 变量传递给该对象。slice() 方法提取该变量中所包含字符串的一部分，然后 trace() 将其发送到“输出”面板。下面的示例说明对 end 参数使用正值和负值两种情况。

text = "Lexington";
my_str = new String( text );
trace(my_str.slice( 1, 3 )); // "ex"
trace(my_str.slice( 1, -6 )); // "ex"

另请参见

String.substr(), String.substring()


String.split()

可用性

Flash Player 5。

用法

my_str.split("delimiter", [limit])

参数

delimiter 拆分 my_str 所依据的字符或字符串。

limit 要放入数组中的项目数。此参数是可选的。

返回

包含 my_str 的子字符串的数组。

说明

方法；在指定的 delimiter 参数出现的所有位置断开 String 对象，将其拆分为多个子字符串，然后以数组形式返回这些子字符串。如果使用空字符串 ("") 作为分隔符，则字符串中的每个字符都将被作为元素放入数组中，如下面的代码所示。

my_str = "Joe";
i = my_str.split("");
trace (i);

“输出”面板将显示以下结果：

J,o,e

如果未定义 delimiter 参数，则会将整个字符串放入返回数组的第一个元素中。

示例

下面的示例返回含有五个元素的数组。

my_str = "P, A, T, S, Y";
my_str.split(",");

此示例返回一个具有以下两个元素的数组："P" 和 "A"。

my_str.split(",", 2);


String.substr()

可用性

Flash Player 5。

用法

my_str.substr(start, [length])

参数

start 一个整数，指示 my_str 中用于创建子字符串的第一个字符的位置。如果 start 为一个负数，则起始位置从字符串的结尾开始确定，-1 表示最后一个字符。

length 要创建的子字符串中的字符数。如果没有指定 length，则子字符串包括从 start 开始直到字符串结尾的所有字符。

返回

指定字符串的子字符串。

说明

方法；返回字符串中的字符，这些字符从 start 参数所指定的索引开始，直至达到 length 参数所指定的字符数为止。substr 方法不更改由 my_str 指定的字符串，而是返回一个新字符串。


String.substring()

可用性

Flash Player 5。

用法

my_str.substring(start, [end])

参数

start 一个整数，指示 my_str 中用于创建子字符串的第一个字符的位置。start 的有效值为 0 到 String.length - 1。如果 start 为负值，则使用 0。

end 一个整数，为 1 + my_str 中要提取的最后一个字符的索引。end 的有效值为 1 到 String.length。提取出来的字符串中不包括由 end 参数索引指定的字符。如果省略了此参数，将使用 String.length。如果此参数是一个负值，则使用 0。

返回

字符串。

说明

方法；返回一个字符串，此字符串由 start 和 end 参数指定的两点之间的字符组成。如果未指定 end 参数，则子字符串的结尾就是原字符串的结尾。如果 start 的值等于 end 的值，则此方法返回一个空字符串。如果 start 的值大于 end 的值，则在函数执行前两个参数将自动互换，且原始值不变。


arguments.length

可用性

Flash Player 5。

用法

arguments.length

说明

属性；实际传递给函数的参数数量。


String.toLowerCase()

可用性

Flash Player 5。

用法

my_str.toLowerCase()

参数

无。

返回

字符串。

说明

方法；返回 String 对象的一个副本，其中所有的大写字符转换为小写。原始值不变。


String.toUpperCase()

可用性

Flash Player 5。

用法

my_str.toUpperCase()

参数

无。

返回

字符串。

说明

方法；返回 String 对象的一个副本，其中所有的小写字符转换为大写。原始值不变。


String()

可用性

Flash Player 4；行为在 Flash Player 7 中发生了变化。

用法

String(expression)

参数

expression 要转换为字符串的表达式。

返回

字符串。

说明

函数；返回指定参数的字符串表示形式，如下所示：

如果 expression 是数字，则返回的字符串为此数字的文本表示形式。

如果 expression 为字符串，则返回的字符串就是 expression。

如果 expression 是一个对象，则返回值为该对象的字符串表示形式，这是通过调用该对象的字符串属性生成的；如果不存在此类属性，则是通过调用 Object.toString() 生成的。

如果 expression 为 undefined，则返回值如下：

  • 在为 Flash Player 6 或更早版本发布的文件中，结果是空字符串 ("")。
  • 在为 Flash Player 7 或更高版本发布的文件中，结果是 undefined。

如果 expression 为布尔值，则返回的字符串为 "true" 或 "false"。

如果 expression 是一个影片剪辑，则返回值是以斜杠 (/) 记号表示的该影片剪辑的目标路径。

注意：动作脚本 2.0 不支持斜杠记号。

另请参见

Number.toString(), Object.toString(), String 类, " "（字符串分隔符）


substring

可用性

Flash Player 4。不鼓励使用此函数，而推荐使用 String.substr()。

用法

substring("string", index, count)

参数

string 从中提取新字符串的字符串。

index 要提取的第一个字符的编号。

count 要包含在所提取字符串中的字符数，其中不包括 index 字符。

返回

无。

说明

字符串函数；提取部分字符串。此函数是从 1 开始的，而 String 对象方法是从 0 开始的。

另请参见

String.substr()


super

可用性

Flash Player 6。

用法

super.method([arg1, ..., argN])
super([arg1, ..., argN])

参数

method 要在超类中调用的方法。

arg1 可选参数，这些参数或者传递给方法的超类版本（语法 1），或者传递给超类的构造函数（语法 2）。

返回

两种格式都调用一个函数。该函数可以返回任何值。

说明

运算符：第一种语法格式可以用于对象方法体内，用以调用方法的超类版本，而且可以选择向超类方法传递参数 (arg1 ... argN)。这对于创建某些子类方法很有用，这些子类方法在向超类方法添加附加行为的同时，又调用这些超类方法执行其原始行为。

第二种语法格式可以用于构造函数体内，用以调用此构造函数的超类版本，而且可以选择向它传递参数。这对于创建子类很有用，该子类在执行附加的初始化的同时，又调用超类构造函数执行超类初始化。


switch

可用性

Flash Player 4。

用法

switch (expression){
  caseClause:
  [defaultClause:]
}

参数

expression 任何表达式。

caseClause 一个 case 关键字，其后跟有一个表达式、冒号和一组语句，如果在使用全等 (===) 的情况下，此处的表达式与 switch 的 expression 参数相匹配，则执行这组语句。

defaultClause 一个 default 关键字，其后跟有一组语句，如果 case 表达式都不与 switch 的 expression 参数全等 (===) 匹配时，将执行这些语句。

返回

无。

说明

语句；创建动作脚本语句的分支结构。像 if 动作一样，switch 动作测试一个条件，并在条件返回 true 值时执行语句。

示例

在下面的示例中，如果 number 参数的计算结果为 1，则执行 case 1 后面的 trace() 动作，如果 number 参数的计算结果为 2，则执行 case 2 后面的 trace() 动作，依此类推。如果 case 表达式与 number 参数都不匹配，则执行 default 关键字后面的 trace() 动作。

switch (number) {
  case 1:
    trace ("case 1 tested true");
    break;
  case 2:
    trace ("case 2 tested true");
    break;
  case 3:
    trace ("case 3 tested true");
    break;
  default:
    trace ("no case tested true")
}

在下面的示例中，第一个 case 组中没有 break，因此如果 number 为 1，则 A 和 B 都将被发送到“输出”面板：

switch (number) {
  case 1:
    trace ("A");
  case 2:
    trace ("B");
    break;
  default:
    trace ("D")
}

另请参见

===（全等）, break, case, default, if


System 类

可用性

Flash Player 6。

说明

这是一个顶级类，包括功能对象（请参见 System.capabilities 对象）、安全对象（请参见 System.security 对象），以及下面列出的方法、属性和事件处理函数。

System 类的方法摘要

方法 | 说明
System.setClipboard() | 用文本字符串替换系统剪贴板的内容。
System.showSettings() | 显示 Flash Player“设置”面板。

System 类的属性摘要

方法 | 说明
System.exactSettings | 指定当访问本地设置时是使用超级域匹配规则还是完全域匹配规则。
System.useCodepage | 通知 Flash Player 是使用 Unicode 来解释外部文本文件，还是使用运行播放器的操作系统的传统代码页来解释外部文本文件。

System 类的事件处理函数摘要

方法 | 说明
System.onStatus | 为某些对象提供超级事件处理函数


System.exactSettings

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

System.exactSettings

说明

属性；指定当访问本地设置（例如摄像头或麦克风访问权限）或本地永久数据（共享对象）时是使用超级域匹配规则还是完全域匹配规则。对于为 Flash Player 7 或更高版本发布的文件，默认值为 true，对于为 Flash Player 6 发布的文件，默认值为 false。

如果此值为 true，位于 here.xyz.com 的 SWF 文件的设置和数据将存储在 here.xyz.com 中，位于 there.xyz.com 的 SWF 文件的设置和数据将存储在 there.xyz.com 中，依此类推。如果此值为 false，则位于 here.xyz.com、there.xyz.com 和 xyz.com 的 SWF 文件的设置和数据是共享的，都将存储在 xyz.com 中。

如果某些文件将此属性设置为 false 而其它文件将其设置为 true，则将出现不同子域中的 Swf 文件共享设置和数据的情况。例如，如果位于 here.xyz.com 的 SWF 文件将此属性设置为 false 而位于 xyz.com 的 SWF 文件将此属性设置为 true，则两个文件将使用相同的设置和数据（即 xyz.com 中的设置和数据）。如果这不是您所希望的情况，则确保在每个文件中设置此属性以正确地表示所需的存储设置和数据的位置。

如果要更改此属性的默认值，则在文档的第一帧发布 System.exactSettings = false 命令。在发生任何需要访问本地设置的活动（例如 System.ShowSettings() 或 SharedObject.getLocal()）之后，将不能更改此属性。

如果使用 loadMovie()、MovieClip.loadMovie() 或 MovieClipLoader.loadClip() 将一个 SWF 文件加载到另一个 SWF 文件中，则为 Flash Player 7 发布的所有文件共享 System.exactSettings 的单个值，为 Flash Player 6 发布的所有文件共享 System.exactSettings 的单个值。因此，如果在一个为某个特定 Player 版本发布的文件中指定此属性的值，则应该在要加载的所有文件中执行此操作。如果加载多个文件，在最后一个加载的文件中指定的设置将覆盖所有以前指定的设置。

有关 Flash 中如何实现域匹配的更多信息，请参见Flash Player 安全功能。

另请参见

SharedObject.getLocal(), System.showSettings()


System.onStatus

可用性

Flash Player 6。

说明

事件处理函数：为某些对象提供“超级”事件处理函数。

LocalConnection、etStream 和SharedObject 对象提供 onStatus 事件处理函数，该事件处理函数使用信息对象提供信息、状态或错误消息。若要响应此事件处理函数，您必须创建一个函数来处理信息对象，同时还必须了解所返回的信息对象的格式和内容。

除了为上面列出的对象提供特定的 onStatus 方法之外，Flash 还提供名为 System.onStatus 的“超级”函数。如果为 level 属性为 "error" 的特定对象调用了 onStatus 但未分配任何函数对其进行响应，则 Flash 将处理分配到 System.onStatus 的函数（如果存在）。

注意：Camera 和 Microphone 类也具有 onStatus 处理函数，但不传递 level 属性为 "error" 的信息对象。因此，如果不为这些处理函数指定函数，则将不调用 System.onStatus。

下面的示例说明如何创建通用和特定函数来处理 onStatus 方法发送的信息对象。

// 创建通用函数
System.onStatus = function(genericError)
{
  // 您的脚本将在此处执行更有意义的操作
  trace("An error has occurred.Please try again.");
}

// 为 NetStream 对象创建函数
// 如果 NetStream 对象返回的信息对象不同于
// 下面列出的对象，其 level 属性为 "error"，
// 则将调用 System.onStatus

videoStream_ns.onStatus = function(infoObject) {
  if (infoObject.code == "NetStream.Play.StreamNotFound") {
    trace("Could not find video file.");
  }
}

另请参见

Camera.onStatus, LocalConnection.onStatus, Microphone.onStatus, NetStream.onStatus, SharedObject.onStatus


System.setClipboard()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

System.setClipboard(string)

参数

string 要放置在系统剪贴板上的纯文本字符串，替换系统剪贴板上的当前内容（如果有的话）。如果传递文本字符串而不是 String 类型的变量，则将文本引在引号中。

返回

如果文本被成功放置在剪贴板上，则为布尔值 true，否则为 false。

说明

方法；用指定的文本字符串替换系统剪贴板上的内容。


System.showSettings()

可用性

Flash Player 6。

用法

System.showSettings([panel])

参数

panel 一个可选数字，指定要显示哪个 Flash Player“设置”面板，如下表所示。

为 panel 传递的值 | 显示的“设置”面板
无（参数被忽略）或不支持的值 | 用户上次关闭 Player“设置”面板时，处于打开状态的那个面板
0 | 隐私
1 | 本地存储
2 | 麦克风
3 | 摄像头

返回

无。

说明

方法；显示指定的 Flash Player“设置”面板，使用户可以执行以下操作：

  • 允许或拒绝访问摄像头和麦克风
  • 指定可供共享对象使用的本地磁盘空间
  • 选择默认摄像头和麦克风
  • 指定麦克风增益和回声抑制设置

例如，如果您的应用程序需要使用摄像头，则可以通知用户在“Privacy Settings”（隐私设置）面板中选择“Allow”（允许），然后发出 System.showSettings(0) 命令。（应确保舞台大小至少为 215 x 138 像素；这是 Flash 显示该面板所需的最小大小。）

另请参见

Camera.get(), Microphone.get(), SharedObject.getLocal()


System.useCodepage

可用性

Flash Player 6。

用法

System.useCodepage

说明

属性；一个布尔值，它通知 Flash Player 是使用 Unicode 来解释外部文本文件，还是使用运行播放器的操作系统的传统代码页来解释外部文本文件。system.useCodepage 的默认值为 false。

  • 当该属性设置为 false 时，Flash Player 按 Unicode 解释外部文本文件。（保存这些文件时，必须使用 Unicode 对其进行编码。）
  • 当该属性设置为 true 时，Flash Player 使用运行播放器的操作系统的传统代码页来解释外部文本文件。

对于作为外部文件包含或加载的文本（使用 #include 命令，loadVariables() 或 getURL 动作，或 LoadVars 或 XML 对象），保存这些文本文件时必须使用 Unicode 对其进行编码，这样 Flash Player 才能将其识别为 Unicode。若要使用 Unicode 对外部文件进行编码，请在支持 Unicode 的应用程序（例如，Windows 2000 上的“记事本”）中保存这些文件。

如果包含或加载了非 Unicode 编码的外部文本文件，则应将 system.useCodepage 设置为 true。在加载数据的 SWF 文件的第一帧中，在最前面添加以下代码（第一行代码）：

system.useCodepage = true;

如果有这一行代码，Flash Player 将使用运行 Flash Player 的操作系统的传统代码页来解释外部文本。对于英文 Windows 操作系统，该代码页通常为 CP1252；对于日文操作系统，该代码页通常为 Shift-JIS。如果将 system.useCodepage 设置为 true，Flash Player 6 和更高版本处理文本的方式与 Flash Player 5 相同。（Flash Player 5 在处理文本时，将所有文本都视为按运行播放器的操作系统的传统代码页编码的文本。）

如果将 system.useCodepage 设置为 true，应注意您的外部文本文件中使用的字符必须包含在运行播放器的操作系统的传统代码页中，这样才能显示该文本。例如，如果您加载了一个包含中文字符的外部文本文件，这些字符在使用 CP1252 代码页的系统上将无法显示，因为该代码页不包含中文字符。

若要确保所有平台上的用户都能查看您的 SWF 文件中使用的外部文本文件，应使用 Unicode 对所有外部文本文件进行编码，并将 System.useCodepage 设置保留为其默认设置 false。这样，Flash Player 6 和更高版本将按 Unicode 解释文本。


System.capabilities 对象

可用性

Flash Player 6。

说明

使用 System.capabilities 对象可以确定承载 SWF 文件的系统和播放器的功能。这样，您就可以针对不同的格式对内容进行调整。例如，移动电话的屏幕（黑白，100 x 100 像素）就与 1000 x 1000 像素的彩色 PC 屏幕不同。为了向尽可能多的用户提供适当的内容，可以使用 System.capabilities 对象来确定用户所拥有的设备的类型。然后，您可以指定服务器根据不同的设备功能发送不同的 SWF 文件，或者通知 SWF 文件根据设备的功能改变它的播放方式。

可以使用 GET 或 POST HTTP 方法来发送功能信息。下面是一个设备的服务器字符串示例，该设备不支持 MP3、屏幕为 400 x 200 像素、8 x 4 厘米：

"A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=f&PR=t&SP=t&SB=f&DEB=t&V=WIN%207%2C0%2C0%2C226&M=Macromedia%20Windows&R=1152x864&DP=72&COL=color&AR=1.0&OS=Windows%20XP&L=en&PT=External&AVD=f&LFD=f"

System.capabilities 对象的属性摘要

属性 | 说明 | 服务器字符串
System.capabilities.avHardwareDisable | 只读；指定用户的摄像头和麦克风是否启用。 | AVD
System.capabilities.hasAccessibility | 指示播放器是否正在支持在 Flash Player 和辅助功能之间进行通讯的系统上运行。 | ACC
System.capabilities.hasAudio | 指示播放器是否正在具有音频功能的系统上运行。 | A
System.capabilities.hasAudioEncoder | 指示播放器是否正在能够对音频流（例如，来自麦克风的音频流）进行编码的系统上运行。 | AE
System.capabilities.hasEmbeddedVideo | 指示播放器是否正在支持嵌入视频的系统上运行。 | EV
System.capabilities.hasMP3 | 指示播放器是否正在具有 MP3 解码器的系统上运行。 | MP3
System.capabilities.hasPrinting | 指示播放器是否正在支持打印的系统上运行。 | PR
System.capabilities.hasScreenBroadcast | 指示播放器是否支持开发将通过 Flash Communication Server 运行的屏幕广播应用程序。 | SB
System.capabilities.hasScreenPlayback | 指示播放器是否支持回放正在通过 Flash Communication Server 运行的屏幕广播应用程序。 | SP
System.capabilities.hasStreamingAudio | 指示播放器是否可以播放流音频。 | SA
System.capabilities.hasStreamingVideo | 指示播放器是否可以播放流视频。 | SV
System.capabilities.hasVideoEncoder | 指示播放器是否能够对视频流（例如，来自 Web 摄像头的视频流）进行编码。 | VE
System.capabilities.isDebugger | 指示播放器是官方发布的版本，还是特殊的调试版本。 | DEB
System.capabilities.language | 指示运行播放器的系统的语言。 | L
System.capabilities.localFileReadDisable | 只读；指定播放器是否将尝试从用户的硬盘读取内容（包括播放器启动时播放的第一个 SWF 文件）。 | LFD
System.capabilities.manufacturer | 指示 Flash Player 的制造商。 | M
System.capabilities.os | 指示承载 Flash Player 的操作系统。 | OS
System.capabilities.pixelAspectRatio | 指示屏幕的像素高宽比。 | AR
System.capabilities.playerType | 指示播放器的类型：独立、外部、插件或 ActiveX。 | PT
System.capabilities.screenColor | 指示屏幕是彩色、灰度、还是黑白的。 | COL
System.capabilities.screenDPI | 指示屏幕分辨率（每英寸的点数），以像素为单位。 | DP
System.capabilities.screenResolutionX | 指示屏幕的水平大小。 | R
System.capabilities.screenResolutionY | 指示屏幕的垂直大小。 | R
System.capabilities.serverString | 一个 URL 编码的字符串，用于指定各个 System.capabilities 属性的值。 | 无
System.capabilities.version | 包含 Flash Player 版本和平台信息的字符串。 | V


System.capabilities.avHardwareDisable

可用性

Flash Player 7。

用法

System.capabilities.avHardwareDisable

说明

只读属性；一个布尔值，指定是否启用了用户的摄像头和麦克风。

另请参见

Camera.get(), Microphone.get(), System.showSettings()


System.capabilities.hasAccessibility

可用性

Flash Player 6 版本 65。

用法

System.capabilities.hasAccessibility

说明

属性；一个布尔值，指示播放器是否正在支持在 Flash Player 和辅助功能之间进行通讯的环境中运行。其服务器字符串为 ACC。

另请参见

Accessibility.isActive(), Accessibility.updateProperties(), _accProps


System.capabilities.hasAudio

可用性

Flash Player 6。

用法

System.capabilities.hasAudio

说明

属性；一个布尔值，指示播放器是否正在具有音频功能的系统上运行。其服务器字符串为 A。


System.capabilities.hasAudioEncoder

可用性

Flash Player 6。

用法

System.capabilities.hasAudioEncoder

说明

属性；一个布尔值，指示播放器是否能够对音频流（例如，来自麦克风的音频流）进行编码。其服务器字符串为 AE。


System.capabilities.hasEmbeddedVideo

可用性

Flash Player 6。

用法

System.capabilities.hasEmbeddedVideo

说明

属性；一个布尔值，指示播放器是否正在支持嵌入视频的系统上运行。其服务器字符串为 EV。


System.capabilities.hasMP3

可用性

Flash Player 6。

用法

System.capabilities.hasMP3

说明

属性；一个布尔值，指示播放器是否正在具有 MP3 解码器的系统上运行。其服务器字符串为 MP3。


System.capabilities.hasPrinting

可用性

Flash Player 6。

用法

System.capabilities.hasPrinting

说明

属性；一个布尔值，指示播放器是否正在支持打印的系统上运行。其服务器字符串为 PR。


System.capabilities.hasScreenBroadcast

可用性

Flash Player 6。

用法

System.capabilities.hasScreenBroadcast

说明

属性；一个布尔值，指示播放器是否支持开发将通过 Flash Communication Server 运行的屏幕广播应用程序。其服务器字符串为 SB。


System.capabilities.hasScreenPlayback

可用性

Flash Player 6。

用法

System.capabilities.hasScreenPlayback

说明

属性；一个布尔值，指示播放器是否支持回放正在通过 Flash Communication Server 运行的屏幕广播应用程序。其服务器字符串为 SP。


System.capabilities.hasStreamingAudio

可用性

Flash Player 6。

用法

System.capabilities.hasStreamingAudio

说明

属性；一个布尔值，指示播放器是否可以播放流音频。其服务器字符串为 SA。


System.capabilities.hasStreamingVideo

可用性

Flash Player 6。

用法

System.capabilities.hasStreamingVideo

说明

属性；一个布尔值，指示播放器是否可以播放流视频。其服务器字符串为 SV。


System.capabilities.hasVideoEncoder

可用性

Flash Player 6。

用法

System.capabilities.hasVideoEncoder

说明

属性；一个布尔值，指示播放器是否能够对视频流（例如，来自 Web 摄像头的视频流）进行编码。其服务器字符串为 VE。


System.capabilities.isDebugger

可用性

Flash Player 6。

用法

System.capabilities.isDebugger

说明

属性；一个布尔值，指示播放器是正式发布的版本 (false)，还是特殊的调试版本 (true)。其服务器字符串为 DEB。


System.capabilities.language

可用性

Flash Player 6。

用法

System.capabilities.language

说明

属性；指示运行播放器的系统的语言。此属性可以指定为 ISO 639-1 标准的两个小写字母表示的语言代码加上 ISO 3166 标准的两个大写字母表示的国家/地区代码子标签（后者为可选）。这些代码表示运行播放器的系统的语言。这些语言本身是用英语标签指定的。例如，“fr”指法语。

语言 | 标签 | 所支持的国家/地区及标签
捷克语 | cs |
丹麦语 | da |
荷兰语 | nl |
英语 | en |
芬兰语 | fi |
法语 | fr |
德语 | de |
匈牙利语 | hu |
意大利语 | it |
日语 | ja |
朝鲜语 | ko |
挪威语 | no |
其它/未知 | xu |
波兰语 | pl |
葡萄牙语 | pt |
俄语 | ru |
简体中文 | zh | 中国（简体中文）：zh-CN
西班牙语 | es |
瑞典语 | sv |
繁体中文 | zh | 中国台湾地区（繁体中文）：zh-TW
土耳其语 | tr |


System.capabilities.localFileReadDisable

可用性

Flash Player 7。

用法

System.capabilities.localFileReadDisable

说明

只读属性；一个布尔值，指定 Flash Player 是否尝试从用户的硬盘读取任何内容（包括 Flash Player 启动时播放的第一个 SWF 文件）。


System.capabilities.manufacturer

可用性

Flash Player 6。

用法

System.capabilities.manufacturer

说明

属性；一个字符串，指示 Flash Player 的制造商。其格式为 "Macromedia OSName"（OSName 可能为 "Windows"、"Macintosh"、"Linux" 或 "Other OS Name"）。其服务器字符串为 M。


System.capabilities.os

可用性

Flash Player 6。

用法

System.capabilities.os

说明

属性；一个字符串，指示当前操作系统。os 属性可能会返回以下字符串："Windows XP"、"Windows 2000"、"Windows NT"、"Windows 98/ME"、"Windows 95"、"Windows CE"（仅在 Flash Player SDK 中可用，在桌面版本中不可用）、"Linux" 和 "MacOS"。其服务器字符串为 OS。


System.capabilities.pixelAspectRatio

可用性

Flash Player 6。

用法

System.capabilities.pixelAspectRatio

说明

属性；指示屏幕像素高宽比的整数。其服务器字符串为 AR。


System.capabilities.playerType

可用性

Flash Player 7。

用法

System.capabilities.playerType

说明

属性；一个字符串，指示播放器的类型。此属性可以具有以下值："StandAlone"、"External"、"PlugIn" 或 "ActiveX"。其服务器字符串为 PT。


System.capabilities.screenColor

可用性

Flash Player 6。

用法

System.capabilities.screenColor

说明

属性；指示屏幕是彩色的 (color)、灰度的 (gray)、还是黑白的 (bw)。其服务器字符串为 COL。


System.capabilities.screenDPI

可用性

Flash Player 6。

用法

System.capabilities.screenDPI

说明

属性；指示屏幕分辨率（每英寸的点数 (dpi)），以像素为单位。其服务器字符串为 DP。


System.capabilities.screenResolutionX

可用性

Flash Player 6。

用法

System.capabilities.screenResolutionX

说明

属性；指示屏幕最大水平分辨率的整数。其服务器字符串为 R（它返回屏幕的宽度和高度）。


System.capabilities.screenResolutionY

可用性

Flash Player 6。

用法

System.capabilities.screenResolutionY

说明

属性；指示屏幕最大垂直分辨率的整数。其服务器字符串为 R（它返回屏幕的宽度和高度）。


System.capabilities.serverString

可用性

Flash Player 6。

用法

System.capabilities.serverString

说明

属性；一个 URL 编码的字符串，用于指定各个 System.capabilities 属性的值，如下例所示：

A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=f&PR=t&SP=t&SB=f&DEB=t&V=WIN%207%2C0%2C0%2C226&M=Macromedia%20Windows&R=1152x864&DP=72&COL=color&AR=1.0&OS=Windows%20XP&L=en&PT=External&AVD=f&LFD=f


System.capabilities.version

可用性

Flash Player 6。

用法

System.capabilities.version

说明

属性；一个包含 Flash Player 平台和版本信息的字符串，例如，"WIN 7,0,0,231"。其服务器字符串为 V。


System.security 对象

可用性

Flash Player 6。

说明

此对象包含的方法指定不同域中的 SWF 文件如何相互通讯。

System.security 对象的方法摘要

方法 | 说明
System.security.allowDomain() | 允许指定的域中的 SWF 文件访问调用此方法的 SWF 文件中的对象和变量，或与调用此方法的 SWF 文件位于同一个域中的任何其它 SWF 文件中的对象和变量。
System.security.allowInsecureDomain() | 允许指定的域中的 SWF 文件访问调用此方法的 SWF 文件中的对象和变量，该文件是使用 HTTPS 协议进行承载的。


System.security.allowDomain()

可用性

Flash Player 6；行为在 Flash Player 7 中发生了变化。

用法

System.security.allowDomain("domain1", "domain2, ... domainN")

参数

domain1, domain2, ... domainN 指定域的字符串，这些域可以访问包含 System.Security.allowDomain() 调用的文件中的对象和变量。可以按照以下格式指定域：

  • "domain.com"
  • "http://domain.com"
  • "http://IPaddress"

说明

方法；允许指定的域中的 SWF 文件访问调用此方法的 SWF 文件中的对象和变量，或与调用此方法的 SWF 文件位于同一个域中的任何其它 SWF 文件中的对象和变量。

在 Flash Player 7 或更高版本中播放的文件中，传递的参数必须遵守完全域命名规则。例如，若要允许位于 www.domain.com 或 store.domain.com 的 SWF 文件进行访问，则必须传递这两个域名：

// 对于 Flash Player 6
System.security.allowDomain("domain.com");
// 允许运行于 Flash Player 7 或更高版本中的 SWF 文件
// 进行访问的对应命令
System.security.allowDomain("www.domain.com"."store.domain.com");

另外，对于运行于 Flash Player 7 或更高版本中的文件，不能使用此方法让使用安全的协议 (HTTPS) 承载的 SWF 文件允许来自使用不安全的协议承载的 SWF 文件的访问；您必须改用 System.security.allowInsecureDomain()。

示例

位于 www.macromedia.com/MovieA.swf 的 SWF 文件包含以下代码行。

System.security.allowDomain("www.shockwave.com");
loadMovie("http://www.shockwave.com/MovieB.swf", _root.my_mc);

因为 MovieA 包含 allowDomain() 命令，所以 MovieB 可以访问 MovieA 中的对象和变量。如果 MovieA 中没有该命令，Flash 安全实施机制将不允许 MovieA 访问 MovieB 的对象和变量。


System.security.allowInsecureDomain()

可用性

Flash Player 7。

用法

System.Security.allowInsecureDomain("domain")

参数

domain 一个完全域名，例如“www.myDomainName.com”或“store.myDomainName.com”。

返回

无。

说明

方法；允许指定的域中的 SWF 文件访问调用此方法的 SWF 文件中的对象和变量，该文件是使用 HTTPS 协议进行承载的。

默认情况下，使用 HTTPS 协议承载的 SWF 文件只能被其它使用 HTTPS 协议承载的 SWF 文件访问。这种实现保持了 HTTPS 协议所提供的完整性。

因为此方法损害了 HTTPS 安全性，所以 Macromedia 不推荐使用此方法覆盖默认的行为。但是有时您可能需要这样做。例如，如果您必须允许为 Flash Player 6 发布的 HTTP 文件访问为 Flash Player 7 或更高版本发布的 HTTPS 文件。

为 Flash Player 6 发布的 SWF 文件可以使用 System.security.allowDomain() 允许 HTTP 对 HTTPS 的访问。但是，由于 Flash Player 7 中安全性的实现方式不同，您必须使用 System.Security.allowInsecureDomain() 允许在为 Flash Player 7 或更高版本发布的 SWF 文件中进行这种访问。

示例

在本例中，在安全的域中承载数学测试，以便只有注册的学生才能进行访问。您还开发了一些 SWF 文件用于说明某些概念，您将这些文件放置在不安全的域中。您希望学生能够从包含有关概念信息的 SWF 文件访问测试。

// 此 SWF 文件位于 https://myEducationSite.somewhere.com/mathTest.swf
// 概念文件位于 http://myEducationSite.somewhere.com
System.Security.allowInsecureDomain("myEducationSite.somewhere.com")

另请参见

System.security.allowDomain(), System.exactSettings


targetPath

可用性

Flash Player 5。

用法

targetpath(movieClipObject)

参数

movieClipObject 对要获取其目标路径的影片剪辑的引用（例如，_root 或 _parent）。

返回

包含指定影片剪辑的目标路径的字符串。

说明

函数；返回包含 movieClipObject 的目标路径的字符串。此目标路径以点记号表示形式返回。若要获取以斜杠记号表示的目标路径，请使用 _target 属性。

示例

此示例在加载影片剪辑时，立即显示该影片剪辑的目标路径。

onClipEvent (load) {
  trace(targetPath(this));
}

另请参见

eval()


tellTarget

可用性

Flash Player 3。（在 Flash 5 中不鼓励使用；建议使用点记号表示法和 with 动作。）

用法

tellTarget("target") {
  statement(s);
}

参数

target 一个字符串，指定要控制的时间轴的目标路径。

statement(s) 条件计算结果为 true 时要执行的指令。

返回

无。

说明

不鼓励使用的动作；将在 statements 参数中指定的指令应用到在 target 参数中指定的时间轴。tellTarget 动作对导航控制很有帮助。可以将 tellTarget 分配给停止或开始舞台上其它地方的影片剪辑的按钮。还可以使影片剪辑转到此剪辑的特定帧。例如，可以将 tellTarget 分配给停止或开始舞台上影片剪辑的按钮，或者提示影片剪辑跳至特定帧的按钮。

在 Flash 5 或更高版本中，可以使用点记号表示法代替 tellTarget 动作。可以使用 with 动作向同一个时间轴发出多个动作。使用 with 动作可将任何对象作为目标，而 tellTarget 动作只能将影片剪辑作为目标。

示例

此 tellTarget 语句控制主时间轴上的影片剪辑实例 ball。ball 实例的第 1 帧为空白而且有一个 stop() 动作，所以它在舞台上不可见。单击具有下列动作的按钮时，tellTarget 通知 ball 中的播放头转至第 2 帧（动画开始处）。

on (release) {
  tellTarget("ball") {
    gotoAndPlay(2);
  }
}

下面的示例使用点记号表示法达到同样的结果。

on (release) {
  ball.gotoAndPlay(2);
}

如果需要向 ball 实例发出多个命令，可以使用 with 动作，如下面的语句所示。

on (release) {
  with(ball) {
    gotoAndPlay(2);
    _alpha = 15;
    _xscale = 50;
    _yscale = 50;
  }
}

另请参见

with


TextField 类

可用性

Flash Player 6。

说明

SWF 文件中的所有动态文本字段和输入文本字段都是 TextField 类的实例。可以在属性检查器中为文本字段指定实例名称，并且可以在动作脚本中使用 TextField 类的方法和属性对文本字段进行操作。TextField 的实例名称显示在“影片管理器”中及“动作”面板的“插入目标路径”对话框中。

TextField 类继承自 Object 类。

若要动态创建文本字段，可以使用 MovieClip.createTextField()。

TextField 类的方法摘要

方法 | 说明
TextField.addListener() | 注册一个对象，以便在调用 onChanged 和 onScroller 事件处理函数时接收通知。
TextField.getFontList() | 返回播放器的主机系统上字体名称的数组。
TextField.getDepth() | 返回文本字段的深度。
TextField.getNewTextFormat() | 获取分配给新插入文本的默认文本格式。
TextField.getTextFormat() | 返回包含文本字段中一些或全部文本的格式信息的 TextFormat 对象。
TextField.removeListener() | 删除侦听器对象。
TextField.removeTextField() | 删除使用 MovieClip.createTextField() 创建的文本字段。
TextField.replaceSel() | 替换当前的所选内容。
TextField.setNewTextFormat() | 为由用户或方法插入的文本设置 TextFormat 对象。
TextField.setTextFormat() | 为文本字段中指定范围内的文本设置一个 TextFormat 对象。

TextField 类的属性摘要

属性 | 说明
TextField._alpha | 文本字段实例的透明度值。
TextField.autoSize | 控制文本字段的自动对齐和大小调整。
TextField.background | 指示文本字段是否具有背景填充。
TextField.backgroundColor | 指示背景填充的颜色。
TextField.border | 指示文本字段是否具有边框。
TextField.borderColor | 指示边框的颜色。
TextField.bottomScroll | 文本字段中最下面的可见行。只读。
TextField.embedFonts | 指示文本字段是使用嵌入字体轮廓还是使用设备字体。
TextField._height | 文本字段实例的高度，以像素为单位。它只影响文本字段的边框，不影响边框的粗细和文本字体大小。
TextField._highquality | 指示 SWF 文件的呈现品质。
TextField.hscroll | 指示文本字段的水平滚动值。
TextField.html | 指示文本字段的当前最大滚动位置。
TextField.htmlText | 包含文本字段内容的 HTML 表示形式。
TextField.length | 文本字段中的字符数。只读。
TextField.maxChars | 文本字段最多可容纳的字符数。
TextField.maxhscroll | TextField.hscroll 的最大值。只读。
TextField.maxscroll | TextField.scroll 的最大值。只读。
TextField.menu | 将 ContextMenu 对象与文本字段关联。
TextField.mouseWheelEnabled | 指示当鼠标指针停在文本字段上且用户滚动鼠标滚轮时，Flash Player 是否应自动滚动多行文本字段。
TextField.multiline | 指示文本字段是否包含多行。
TextField._name | 文本字段实例的实例名称。
TextField._parent | 对此实例的父级实例的引用；其类型为 Button 或 MovieClip。
TextField.password | 指示文本字段是否隐藏输入字符。
TextField._quality | 指示 SWF 文件的呈现品质。
TextField.restrict | 用户可输入文本字段的字符集。
TextField._rotation | 文本字段实例的旋转度数。
TextField.scroll | 指示文本字段的当前滚动位置。
TextField.selectable | 指示文本字段是否可选。
TextField._soundbuftime | 在声音进入流之前，必须预先缓冲的声音的时间量。
TextField.tabEnabled | 指示影片剪辑是否包括在 Tab 键的自动排序中。
TextField.tabIndex | 指示对象的 Tab 键顺序。
TextField._target | 指定文本字段实例的目标路径。只读。
TextField.text | 文本字段中的当前文本。
TextField.textColor | 文本字段中当前文本的颜色。
TextField.textHeight | 文本字段边框的高度。
TextField.textWidth | 文本字段边框的宽度。
TextField.type | 指示文本字段是输入文本字段还是动态文本字段。
TextField._url | 创建文本字段实例的 SWF 文件的 URL。只读。
TextField.variable | 与文本字段关联的变量名。
TextField._visible | 确定文本字段实例是隐藏还是可见的布尔值。
TextField._width | 文本字段实例的宽度，以像素为单位。它只影响文本字段的边框，不影响边框的粗细和文本字体大小。
TextField.wordWrap | 指示文本字段是否自动换行。
TextField._x | 文本字段实例的 x 坐标
TextField._xmouse | 指针相对于文本字段实例的 x 坐标。只读。
TextField._xscale | 指定水平缩放文本字段实例的百分比的值。
TextField._y | 文本字段实例的 y 坐标。
TextField._ymouse | 指针相对于文本字段实例的 y 坐标。只读。
TextField._yscale | 指定垂直缩放文本字段实例的百分比的值。

TextField 类的事件处理函数摘要

事件处理函数 | 说明
TextField.onChanged | 在文本字段更改时调用。
TextField.onKillFocus | 在文本字段失去焦点时调用。
TextField.onScroller | 在文本字段滚动属性之一发生更改时调用。
TextField.onSetFocus | 在文本字段接收焦点时调用。

TextField 类的侦听器摘要

方法 | 说明
TextField.onChanged | 在文本字段更改时获得通知。
TextField.onScroller | 在文本字段的 scroll 或 maxscroll 属性更改时获得通知。


TextField.addListener()

可用性

Flash Player 6。

用法

my_txt.addListener(listener)

参数

listener一个具有 onChanged 或 onScroller 事件处理函数的对象。

返回

无。

说明

方法；注册一个对象，以便在调用 onChanged 和 onScroller 事件处理函数时接收通知。当文本字段更改或滚动时，首先将调用 TextField.onChanged 和 TextField.onScroller 事件处理函数，然后调用任何注册为侦听器的对象的 onChanged 和 onScroller 事件处理函数。可将多个对象注册为侦听器。

若要从文本字段删除侦听器对象，可以调用 TextField.removeListener()。

事件源将把对该文本字段实例的一个引用作为参数传递给 onScroller 和 onChanged 处理函数。您可以通过将参数放入事件处理函数方法来捕获此数据。例如，以下代码使用 txt 作为传递给 onScroller 事件处理函数的参数。然后，在一条 trace 语句中使用该参数将文本字段的实例名称发送到“输出”面板。

myTextField.onScroller = function (txt) {
  trace (txt._name + " changed");
};

示例

下面的示例为输入文本字段 myText 定义一个 onChange 处理函数。然后定义一个新的侦听器对象，myListener，并为该对象定义一个 onChanged 处理函数。当文本字段 myText 发生更改时，将调用此处理函数。最后一行代码调用 TextField.addListener 向文本字段 myText 注册侦听器对象 myListener，这样，在 myText 更改时将通知该侦听器对象。

myText.onChanged = function (txt) {
  trace (txt._name + " changed");
};
myListener = new Object();
myListener.onChanged = function (txt) {
  trace(txt._name + " changed and notified myListener");
};

myText.addListener(myListener);

另请参见

TextField.onChanged, TextField.onScroller, TextField.removeListener()


TextField._alpha

可用性

Flash Player 6。

用法

my_txt._alpha

说明

属性；设置或获取由 my_txt 指定的文本字段的 Alpha 透明度值。有效值为 0（完全透明）到 100（完全不透明）。默认值为 100。

示例

下列代码在单击按钮时，将名为 text1_txt 的文本字段的 _alpha 属性设置为 30%：

on (release) {
  text1_txt._alpha = 30;
}

另请参见

Button._alpha, MovieClip._alpha


TextField.autoSize

可用性

Flash Player 6。

用法

my_txt.autoSize

说明

属性；控制文本字段的自动大小调整和对齐。autoSize 可接受的值是 "none"（默认值）、"left"、"right" 和 "center"。设置 autoSize 属性时，true 与 "left" 同义，而 false 与 "none" 同义。

autoSize、multiline 和 wordWrap 的值确定文本字段是否扩展或收缩到左边、右边或底边。您可以使用以下代码并为 autoSize、multiline 和 wordWrap 输入不同的值，观察当这些值更改时字段如何调整大小。

createTextField("my_txt", 1, 0, 0, 200, 20);
with (my_txt) {
  border = true;
  borderColor = 0x000000;
  multiline = false;
  wordWrap = false;
  autoSize = "none";
  text = "Here is a whole bunch of text that won't fit in the field ";
}

示例

下面的语句将文本字段 my_txt 的 autosize 属性设置为 "center"。

my_txt.autosize = "center";


TextField.background

可用性

Flash Player 6。

用法

my_txt.background

说明

属性；如果为 true，则文本字段具有背景填充。如果为 false，则文本字段没有背景填充。


TextField.backgroundColor

可用性

Flash Player 6。

用法

my_txt.backgroundColor

说明

属性；文本字段背景的颜色。默认值为 0xFFFFFF（白色）。即使当前没有背景（只有当文本字段有边框时，背景颜色才可见），也可获取或设置此属性。

另请参见

TextField.background


TextField.border

可用性

Flash Player 6。

用法

my_txt.border

说明

属性；如果为 true，则文本字段具有边框。如果为 false，则文本字段没有边框。


TextField.borderColor

可用性

Flash Player 6。

用法

my_txt.borderColor

说明

属性；文本字段边框的颜色，默认值为 0x000000（黑色）。即使当前没有边框，也可获取或设置此属性。

另请参见

TextField.border


TextField.bottomScroll

可用性

Flash Player 6。

用法

my_txt.bottomScroll

说明

属性（只读）；指示 my_txt 中当前最底端可见行的整数（从 1 开始的索引）。可将文本字段看作文本块上的一个“窗口”。TextField.scroll 属性是此窗口中最顶端可见行的索引（从 1 开始）。

在该文本字段中，第 TextField.scroll 行和第 TextField.bottomScroll 行之间的所有文本当前都可见。


TextField.condenseWhite

可用性

Flash Player 6。

用法

my_txt.condenseWhite

说明

属性；一个布尔值，指定当 HTML 文本字段在浏览器中呈现时是否删除字段中的额外空白（空格、换行符等）。默认值为 false。

如果将此值设置为 true，则必须使用标准 HTML 命令（如 <BR> 和 <P>）将换行符放在文本字段中。

如果 my_txt.html 为 false，则忽略此属性。

另请参见

TextField.html


TextField.embedFonts

可用性

Flash Player 6。

用法

my_txt.embedFonts

说明

属性；一个布尔值，当此值为 true 时，使用嵌入字体轮廓呈现文本字段。如果为 false，则使用设备字体呈现文本字段。


TextField.getDepth()

可用性

Flash Player 6。

用法

my_txt.getDepth()

参数

无。

返回

一个整数。

说明

方法；返回文本字段的深度。


TextField.getFontList()

可用性

Flash Player 6。

用法

TextField.getFontList()

参数

无。

返回

一个数组。

说明

方法；全局 TextField 类的一个静态方法。调用此方法时，不需要指定特定的文本字段（例如 my_txt）。此方法返回播放器的主机系统上字体名称的数组。（而不返回当前加载的 SWF 文件中所有字体的名称。）这些名称为 string 类型。

示例

下面的代码显示 getFontList() 返回的字体列表。

font_array = TextField.getFontList();
for( i in font_array){

  trace(font_array[i]);

}


TextField.getNewTextFormat()

可用性

Flash Player 6。

用法

my_txt.getNewTextFormat()

参数

无。

返回

TextFormat 对象。

说明

方法；返回一个 TextFormat 对象，该对象包含此文本字段的文本格式对象的副本。文本格式对象是新插入文本（例如，使用 replaceSel() 方法插入的文本或由用户输入的文本）接收到的格式。调用 getNewTextFormat() 时，返回的 TextFormat 对象的所有属性均已定义。所有属性都不为 null。


TextField.getTextFormat()

可用性

Flash Player 6。

用法

my_txt.getTextFormat()
my_txt.getTextFormat(index)
my_txt.getTextFormat(beginIndex, endIndex)

参数

index 一个整数，指定字符串中的某个字符。

beginIndex、endIndex 整数，指定 my_txt 内文本块的开始和结束位置。

返回

一个对象。

说明

方法；用法 1：返回一个 TextFormat 对象，该对象包含文本字段中所有文本的格式设置信息。在结果 TextFormat 对象中只设置文本字段中所有文本共有的属性。所有混合 型属性（意味着它在文本中的不同位置有不同的值）的值都设置为 null。

用法 2：返回一个 TextFormat 对象，该对象包含 index 处文本字段的文本格式的副本。

用法 3：返回一个 TextFormat 对象，该对象包含从 beginIndex 到 endIndex 的文本范围内的格式设置信息。

另请参见

TextField.getNewTextFormat(), TextField.setNewTextFormat(), TextField.setTextFormat()


TextField._height

可用性

Flash Player 6。

用法

my_txt._height

说明

属性；文本字段的高度，以像素为单位。

示例

下面的代码示例设置文本字段的高度和宽度。

my_txt._width = 200;
my_txt._height = 200;


TextField._highquality

可用性

Flash Player 6。

用法

my_txt._highquality

说明

属性（全局）；指定应用于当前 SWF 文件的锯齿消除级别。指定 2（最高品质），则应用高品质，位图平滑处理始终打开。指定 1（高品质），则应用锯齿消除功能；如果 SWF 文件不包含动画，将对位图进行平滑处理。指定 0（低品质），则不消除锯齿。

另请参见

_quality


TextField.hscroll

可用性

Flash Player 6。

用法

my_txt.hscroll

返回

一个整数。

说明

属性；指示当前水平滚动位置。如果 hscroll 属性为 0，则不能水平滚动文本。

有关滚动文本的更多信息，请参见创建滚动文本。

示例

下面的示例水平滚动文本。

on (release) {
  my_txt.hscroll += 1;
}

另请参见

TextField.maxhscroll, TextField.scroll


TextField.html

可用性

Flash Player 6。

用法

my_txt.html

说明

属性；指示文本字段是否包含 HTML 表示形式的标记。如果 html 属性为 true，则该文本字段为 HTML 文本字段。如果 html 为 false，则该文本字段为非 HTML 文本字段。

另请参见

TextField.htmlText


TextField.htmlText

可用性

Flash Player 6。

用法

my_txt.htmlText

说明

属性；如果该文本字段为 HTML 文本字段，则此属性包含该文本字段内容的 HTML 表示形式。如果该文本字段不是 HTML 文本字段，则其行为与 text 属性相同。可以通过以下方法指示某个文本字段是 HTML 文本字段：在属性检查器中指示；或通过将文本字段的 html 属性设置为 true 进行指示。

示例

在下面的示例中，文本字段 text2 中的文本以粗体呈现。

text2.html = true;
text2.htmlText = "<b> this is bold text </b>";

另请参见

TextField.html


TextField.length

可用性

Flash Player 6。

用法

my_txt.length

返回

一个数字。

说明

属性（只读）；指示文本字段中的字符数。此属性的返回值与 text.length 相同，但是它更快。如 Tab（“\t”）之类的字符视为一个字符。


TextField.maxChars

可用性

Flash Player 6。

用法

my_txt.maxChars

说明

属性；指示此文本字段最多可容纳的字符数。脚本插入的文本可能会比 maxChars 允许的字符数多；maxChars 属性只是指示用户可以输入多少文本。如果此属性的值为 null，则对用户可以输入的文本量没有限制。


TextField.maxhscroll

可用性

Flash Player 6。

用法

my_txt.maxhscroll

说明

属性（只读）；指示 TextField.hscroll 的最大值。


TextField.maxscroll

可用性

Flash Player 6。

用法

TextField.maxscroll

说明

属性（只读）；指示 TextField.scroll 的最大值。

有关滚动文本的更多信息，请参见创建滚动文本。


TextField.menu

可用性

Flash Player 7。

用法

my_txt.menu = contextMenu

参数

contextMenu 一个 ContextMenu 对象。

说明

属性；将 ContextMenu 对象 contextMenu 与文本字段 my_txt 相关联。ContextMenu 类用于修改当用户在 Flash Player 中右击 (Windows) 或按住 Control 键单击 (Macintosh) 时显示的上下文菜单。

此属性仅在可选（可编辑）文本字段上起作用；在非可选文本字段上，它不起作用。

示例

下面的示例将 ContextMenu 对象 menu_cm 分配给文本字段 news_txt。ContextMenu 对象包含一个标记为“Print”的自定义菜单项，该项带有一个名为 doPrint()、执行打印操作的（不显示出来）的关联回调处理函数：

var menu_cm = new ContextMenu();
menu_cm.customItems.push(new ContextMenuItem("Print...", doPrint));
function doPrint(menu, obj) {
  // 此处为打印代码
}
news_txt.menu = menu_cm;

另请参见

Button.menu, ContextMenu 类, ContextMenuItem 类, MovieClip.menu


TextField.mouseWheelEnabled

可用性

Flash Player 7。

用法

my_txt.mouseWheelEnabled

说明

属性；一个布尔值，指示当鼠标指针位于文本字段上且用户滚动鼠标滚轮时，Flash Player 是否应自动滚动多行文本字段。默认情况下，此值为 true。如果您想让文本字段在用户滚动鼠标滚轮时不随之滚动，或要实施您自己的文本字段滚动方式，可以使用此属性。

另请参见

Mouse.onMouseWheel


TextField.multiline

可用性

Flash Player 6。

用法

my_txt.multiline

说明

属性；指示文本字段是否为多行文本字段。如果此值为 true，则该文本字段为多行文本字段；如果此值为 false，则该文本字段为单行文本字段。


TextField._name

可用性

Flash Player 6。

用法

my_txt._name

说明

属性；由 my_txt 指定的文本字段的实例名称。


TextField.onChanged

可用性

Flash Player 6。

用法

my_txt.onChanged = function(){
  // 此处是您的语句
}

参数

无。

返回

文本字段的实例名称。

说明

事件处理函数；在文本字段的内容更改时调用。默认情况下它是未定义的；可以在脚本中定义它。

对该文本字段实例的一个引用将被作为参数传递给 onChanged 处理函数。您可以通过将参数放入事件处理函数方法来捕获此数据。例如，以下代码使用 txt 作为传递给 onChanged 事件处理函数的参数。然后，在 trace() 语句中使用该参数将文本字段的实例名称发送到“输出”面板。

myTextField.onChanged = function (txt) {
  trace (txt._name + " changed");
};


TextField.onKillFocus

可用性

Flash Player 6。

用法

my_txt.onKillFocus = function(newFocus){
  // 此处是您的语句
}

参数

newFocus 要接收焦点的对象。

返回

无。

说明

事件处理函数；在文本字段失去键盘焦点时调用。onKillFocus 方法接收一个参数 newFocus，该参数是一个对象，表示要接收焦点的新对象。如果没有对象接收焦点，则 newFocus 将包含值 null。


TextField.onScroller

可用性

Flash Player 6。

用法

my_txt.onScroller = function(textFieldInstance){
  // 此处是您的语句
}

参数

textFieldInstance 指向滚动位置被更改的 TextField 对象的引用。

返回

无。

说明

事件处理函数；在文本字段滚动属性中的某一个发生更改时调用。

对该文本字段实例的一个引用将被作为参数传递给 onScroller 处理函数。您可以通过将参数放入事件处理函数方法来捕获此数据。例如，以下代码使用 txt 作为传递给 onScroller 事件处理函数的参数。然后，在 trace() 语句中使用该参数将文本字段的实例名称发送到“输出”面板。

myTextField.onScroller = function (txt) {
  trace (txt._name + " scrolled");
};

另请参见

TextField.hscroll, TextField.maxhscroll, TextField.maxscroll, TextField.scroll


TextField.onSetFocus

可用性

Flash Player 6。

用法

my_txt.onSetFocus = function(oldFocus){
  // 此处是您的语句
}

参数

oldFocus 将失去焦点的对象。

返回

无。

说明

事件处理函数；在文本字段接收键盘焦点时调用。oldFocus 参数是失去焦点的对象。例如，如果用户按下 Tab 键将输入焦点从某个按钮移动到某个文本字段，则 oldFocus 包含该文本字段实例。

如果以前没有具有焦点的对象，则 oldFocus 包含 null 值。


TextField._parent

可用性

Flash Player 6。

用法

my_txt._parent.property
_parent.property

说明

属性；指向包含当前文本字段或对象的影片剪辑或对象的引用。当前对象是包含引用 _parent 的动作脚本代码的对象。

使用 _parent 可以指定一个相对路径，该路径指向当前文本字段之上的影片剪辑或对象。可以使用 _parent 在显示列表中攀升多个级别，如下所示：

_parent._parent._alpha = 20;

另请参见

Button._parent, MovieClip._parent, _root, targetPath


TextField.password

可用性

Flash Player 6。

用法

my_txt.password

说明

属性；如果 password 的值为 true，则该文本字段为密码文本字段，它将隐藏输入字符。如果为 false，则该文本字段不是密码文本字段。


TextField._quality

可用性

Flash Player 6。

用法

my_txt._quality

说明

属性（全局）；设置或获取用于 SWF 文件的呈现品质。设备字体始终是带有锯齿的，因此不受 _quality 属性的影响。

注意：虽然可以针对 TextField 对象指定此属性，但它实际上是一个全局属性，您可以简单地使用 _quality 指定其值。有关更多信息，请参见_quality。


TextField.removeListener()

可用性

Flash Player 6。

用法

my_txt.removeListener(listener)

参数

listener 不再从 TextField.onChanged 或 TextField.onScroller 接收通知的对象。

返回

如果成功删除了 listener，则该方法的返回值为 true。如果未能成功删除 listener（例如，如果 listener 不在该 TextField 对象的侦听器列表上），则该方法的返回值为 false。

说明

方法；删除以前使用 TextField.addListener() 向文本字段实例注册的侦听器对象。


TextField.removeTextField()

可用性

Flash Player 6。

用法

my_txt.removeTextField()

说明

方法；删除由 my_txt 指定的文本字段。只能对使用 MovieClip.createTextField() 创建的文本字段执行此操作。当调用此方法时，将删除文本字段。此方法与 MovieClip.removeMovieClip() 相似。


TextField.replaceSel()

可用性

Flash Player 6。

用法

my_txt.replaceSel(text)

参数

text 一个字符串。

返回

无。

说明

方法；使用 text 参数的内容替换当前所选内容。使用当前默认字符格式和默认段落格式，在当前所选内容的所在位置插入文本。即使该文本字段是 HTML 文本字段，也不会将这些文本视为 HTML。

可以使用 replaceSel() 方法插入并删除文本，而不破坏其余文本的字符和段落格式。

在发布此命令之前，您必须使用 Selection.setFocus() 将焦点放置在字段上。

另请参见

Selection.setFocus()


TextField.replaceText()

可用性

Flash Player 7。

用法

my_txt.replaceText(beginIndex, endIndex, text)

说明

方法；在指定的文本字段中，使用 text 参数的内容替换由 beginIndex 和 endIndex 参数所指定的范围内的字符。


TextField.restrict

可用性

Flash Player 6。

用法

my_txt.restrict

说明

属性；指示用户可输入到文本字段中的字符集。如果 restrict 属性的值为 null，则可以输入任何字符。如果 restrict 属性的值为空字符串，则任何字符都不能输入。如果 restrict 属性的值为一个字符串，则只能在文本字段中输入该字符串中的字符。从左向右扫描该字符串。范围可以使用短划线 (-) 进行指定。它只限制用户交互；脚本可将任何文本放入文本字段中。此属性不与属性检查器中的“嵌入字体轮廓”复选框同步。

如果此字符串以 ^ 开头，则先接受所有字符，然后从接受字符集中排除字符串中 ^ 之后的字符。如果此字符串不以 ^ 开头，则最初不接受任何字符，然后将字符串中的字符包括在接受字符集中。

示例

下面的示例仅允许在文本字段中输入大写字符、空格和数字：

my_txt.restrict = "A-Z 0-9";

下面的示例包含除小写字母之外的所有字符：

my_txt.restrict = "^a-z";

可以使用反斜杠输入 ^ 或 - 的本义。认可的反斜杠序列为 \-、\^ 或 \\。反斜杠在字符串中必须是一个本义字符，因此在动作脚本中指定时必须使用两个反斜杠。例如，下面的代码只包含短划线 (-) 和 插入符号 (^)：

my_txt.restrict = "\\-\\^";

可在字符串中的任何地方使用 ^，以在包含字符与排除字符之间进行切换。下面的代码只包含除大写字母 Q 之外的大写字母：

my_txt.restrict = "A-Z^Q";

可以使用 \u 转义序列构造 restrict 字符串。下面的代码只包含从 ASCII 32（空格）到 ASCII 126（代字号）之间的字符。

my_txt.restrict = "\u0020-\u007E";


TextField._rotation

可用性

Flash Player 6。

用法

my_txt._rotation

说明

属性；文本字段从其原始方向的旋转（以度为单位）。从 0 到 180 的值表示顺时针方向的旋转；从 0 到 -180 的值表示逆时针方向的旋转。对于此范围之外的值，可以通过加上或减去 360 获得该范围内的值。例如，语句 my_txt._rotation = 450 与 my_txt._rotation = 90 相同。

另请参见

Button._rotation, MovieClip._rotation


TextField.scroll

可用性

Flash Player 6。

用法

my_txt.scroll

说明

属性；定义文本在文本字段中的垂直位置。scroll 属性很有用，该属性可以帮助用户定位到长篇文章的特定段落，或者创建滚动文本字段。可以获取和修改此属性。

有关滚动文本的更多信息，请参见创建滚动文本。

示例

下面是附加到用于滚动 my_txt 文本字段的“向上”按钮上的代码。

on (release) {
  my_txt.scroll = myText.scroll + 1;
}

另请参见

TextField.hscroll, TextField.maxscroll


TextField.selectable

可用性

Flash Player 6。

用法

my_txt.selectable

说明

属性；一个布尔值，指示文本字段是否可选（可编辑）。值为 true 表示文本可选。


TextField.setNewTextFormat()

可用性

Flash Player 6。

用法

my_txt.setNewTextFormat(textFormat)

参数

textFormat 一个 TextFormat 对象。

返回

无。

说明

方法；为新插入的文本（例如文本字段中使用 replaceSel() 方法插入的文本或由用户输入的文本）设置一个 TextFormat 对象。每个文本字段都有一个新文本格式。插入文本时，将新文本格式分配给新文本。

文本格式在新 TextFormat 对象中设置。它包含字符和段落格式设置信息。字符格式设置信息描述单个字符的外观；例如，字体名称、磅值、颜色和关联 URL。段落格式设置信息描述段落的外观；例如，左边距、右边距、首行缩进和左对齐、右对齐及居中对齐。

另请参见

TextField.getNewTextFormat(), TextField.getTextFormat(), TextField.setTextFormat()


TextField.setTextFormat()

可用性

Flash Player 6。

用法

my_txt.setTextFormat (textFormat)
my_txt.setTextFormat (index, textFormat)
my_txt.setTextFormat (beginIndex, endIndex, textFormat)

参数

textFormat 一个包含字符和段落格式设置信息的 TextFormat 对象。

index 整数，指定 my_txt 内的一个字符。

beginIndex 一个整数。

endIndex 一个整数，指定所需文本范围后的第一个字符。

返回

无。

说明

方法；为文本字段中指定范围内的文本设置一个 TextFormat 对象。可以为文本字段中的每个字符分配一种文本格式。测试段落的第一个字符的文本格式，以执行整个段落的段落格式设置。setTextFormat() 方法更改应用于文本字段中单个字符、字符组或整体文本的文本格式。

文本格式在新 TextFormat 对象中设置。它包含字符和段落格式设置信息。字符格式设置信息描述单个字符的外观，例如，字体名称、磅值、颜色及关联 URL。段落格式设置信息描述段落的外观，例如，左边距、右边距、首行缩进和左对齐、右对齐及居中对齐。

用法 1：将 textFormat 的属性应用于文本字段中的所有文本。

用法 2：将 textFormat 的属性应用于 index 处的字符。

用法 3：将 textFormat 参数的属性应用于参数 beginIndex 到 endIndex 之间的文本范围。

请注意，用户手动插入的任何文本或使用 TextField.replaceSel() 替换的任何文本均不采用在 setTextFormat() 调用中指定的格式。若要设置 TextField 对象的默认格式，可使用 TextField.setNewTextFormat()。

示例

此示例新建一个名为 myTextFormat 的 TextFormat 对象，并将其 bold 属性设置为 true。然后调用 setTextFormat()，将新文本格式应用到 my_txt 文本字段。

myTextFormat = new TextFormat();
myTextFormat.bold = true;
my_txt.setTextFormat(myTextFormat);

另请参见

TextField.setNewTextFormat(), TextFormat 类


TextField._soundbuftime

可用性

Flash Player 6。

用法

my_txt._soundbuftime

说明

属性（全局）；一个整数，指定在声音开始进入流之前，预先缓冲的秒数。


TextField.StyleSheet 类

可用性

Flash Player 7。

说明

使用 TextField.StyleSheet 类可以创建包含文本格式设置规则（例如，字体大小、颜色和其它格式样式）的样式表对象。然后，可以将样式表定义的样式应用到包含 HTML 或 XML 格式文本的 TextField 对象。该 TextField 对象所包含的文本将自动根据该样式表对象定义的标签样式进行格式设置。可以使用文本样式来定义新的格式标签，重新定义内置的 HTML 标签，或创建可应用到某些 HTML 标签的样式类。

若要将样式应用到某个 TextField 对象，请将样式表对象赋给该 TextField 对象的 styleSheet 属性。

有关更多信息，请参见使用层叠样式表对文本进行格式设置。

TextField.StyleSheet 类的方法摘要

方法 | 说明
TextField.StyleSheet.getStyle() | 返回与指定样式名相关联的样式表对象的副本。
TextField.StyleSheet.getStyleNames() | 返回一个数组，其中包含该样式表对象中注册的所有样式的名称。
TextField.StyleSheet.load() | 开始将一个 CSS 文件载入该样式表对象。
TextField.StyleSheet.parseCSS() | 对 CSS 文本字符串进行分析，并创建指定的样式。
TextField.StyleSheet.setStyle() | 在该样式表对象中添加新样式。

TextField.StyleSheet 类的事件处理函数摘要

L
方法 | 说明
TextField.StyleSheet.onLoad | 回调处理函数，在 TextField.StyleSheet.load() 操作完成时调用。

TextField.StyleSheet 类的构造函数

可用性

Flash Player 7。

用法

new TextField.StyleSheet()

返回

无。

说明

构造函数；创建一个 TextField.StyleSheet 对象。


TextField.StyleSheet.getStyle()

可用性

Flash Player 7。

用法

styleSheet.getStyle(styleName)

参数

styleName 一个字符串，指定要获取的样式的名称。

返回

一个对象。

说明

方法；返回与名为 styleName 的样式相关联的样式对象的副本。如果没有样式对象与 styleName 相关联，则返回 null。

示例

假设一个名为 textStyles 的样式表对象加载了一个名为 styles.css 的外部样式表文件。该文件中只有一个名为 heading 的样式，它定义了 font-family、font-size 和 font-weight 属性，如下所示。

// 在 styles.css 中
heading {
  font-family:Arial;
  font-size:24px;
  font-weight:bold;
}

下面的代码将加载该 CSS 文件中的样式，然后在“输出”面板中显示各个属性名和它们的值。

var styleSheet = new TextField.styleSheet();
styleSheet.load("styles.css");
var sectionStyle = styleSheet.getStyle("heading");
for(property in sectionStyle) {
  var propName = property;
  var propValue = sectionStyle[property];
  trace(propName + " :" + propValue);
}

“输出”面板中将显示以下内容：

fontfamily :Arial
fontsize :24px
fontweight :bold

另请参见

TextField.StyleSheet.setStyle()


TextField.StyleSheet.getStyleNames()

可用性

Flash Player 7。

用法

styleSheet.getStyleNames()

参数

无。

返回

一个数组。

说明

方法；返回一个数组，其中包含该样式表中注册的所有样式的名称（字符串形式）。

示例

此示例创建一个名为 styleSheet 的样式表对象，其中包含两个样式：heading 和 bodyText。然后将调用该样式表对象的 getStyleNames() 方法，将结果赋给数组 names_array，并在“输出”面板中显示该数组的内容。

var styleSheet= new TextField.StyleSheet();
styleSheet.setStyle("heading", {
  fontsize:'24px'
});
styleSheet.setStyle("bodyText", {
  fontsize:'12px'
});
var names_array = styleSheet.getStyleNames();
trace(names.join("\n"));

下面是在“输出”面板中显示的内容：

bodyText
heading

另请参见

TextField.StyleSheet.getStyle()


TextField.StyleSheet.load()

可用性

Flash Player 7。

用法

styleSheet.load(url)

参数

url 要加载的 CSS 文件的 URL。该 URL 必须与 SWF 文件当前位于的 URL 在同一个域中。

返回

无。

说明

方法；开始将该 CSS 文件载入 styleSheet。加载操作是异步进行的；使用 TextField.StyleSheet.onLoad 回调处理函数可以确定该文件何时加载完毕。

该 CSS 文件必须与加载它的 SWF 文件位于完全相同的域中。有关跨域加载数据的限制的信息，请参见Flash Player 安全功能。

示例

以下示例将名为 styles.css（未显示）的 CSS 文件加载到样式表对象 styleObj 中。当该文件成功完成加载后，该样式表对象将应用到名为 news_txt 的 TextField 对象。

var styleObj = new TextField.StyleSheet();
styleObj.load("styles.css");
styleObj.onLoad = function (success) {
  if (success){
    news_txt.styleSheet = styleObj;
  }
}

另请参见

TextField.StyleSheet.onLoad


TextField.StyleSheet.onLoad

可用性

Flash Player 7。

用法

styleSheet.onLoad = function (success) {}

参数

success 一个布尔值，指示是否成功加载了该 CSS 文件。

返回

无。

说明

回调处理函数；在 TextField.StyleSheet.load() 操作完成后调用。如果成功加载了该样式表，success 参数为 true。如果未收到该文档，或从服务器接收响应时出现错误，则 success 参数为 false。

示例

以下示例将名为 styles.css（未显示）的 CSS 文件加载到样式表对象 styleObj 中。当该文件成功完成加载后，该样式表对象将应用到名为 news_txt 的 TextField 对象。

var styleObj = new TextField.StyleSheet();
styleObj.load("styles.css");
styleObj.onLoad = function (success) {
  if (success){
    news_txt.styleSheet = styleObj;
  }
}

另请参见

TextField.StyleSheet.load()


TextField.StyleSheet.parseCSS()

可用性

Flash Player 7。

用法

styleSheet.parseCSS(cssText)

参数

cssText 要分析的 CSS 文本（一个字符串）。

返回

一个布尔值，指示是否成功分析了该文本（如果成功，则为 true；如果失败，则为 false）。

说明

方法；分析 cssText 中的 CSS 并加载相应的样式表。如果 cssText 中的某个样式在 styleSheet 中已经存在，将保留 styleSheet 中的属性，而 styleSheet 中只会添加或更改 cssText 中有的属性。

若要扩展本机 CSS 分析功能，可通过创建 TextField.StyleSheet 类的子类来覆盖此方法。有关更多信息，请参见创建子类。


TextField.StyleSheet.setStyle()

可用性

Flash Player 7。

用法

styleSheet.setStyle(name, style)

参数

name 一个字符串，指定要添加到样式表中的样式的名称。

style 一个描述样式的对象，或 null。

返回

无。

说明

方法；将具有指定名称的新样式添加到该样式表对象中。如果该样式表中没有具有指定名称的样式，将添加该样式。如果该样式表中已经有具有指定名称的样式，将替换该样式。如果 style 参数为 null，将删除具有指定名称的样式。

Flash Player 将创建传递给此方法的样式对象的一个副本。

示例

下面的代码将一个名为 emphasized 的样式添加到样式表 myStyleSheet 中。该样式包含两个样式属性：color 和 fontWeight。该样式对象用 {} 运算符定义。

myStyleSheet.setStyle("emphasized", {color:'#000000',fontWeight:'bold'});

您也可以使用 Object 类的一个实例来创建样式对象，然后将该对象作为 style 参数传递给此方法，如下例所示。

var styleObj = new Object();
styleObj.color = '#000000';
styleObj.fontWeight = 'bold';
myStyleSheet.setStyle("emphasized", styleObj);
delete styleObj;

注意：最后一行代码 (delete styleObj) 删除传递给 setStyle() 的原始样式对象。虽然此步骤不是必需的，但可以降低内存使用量，因为 Flash Player 会创建传递给 setStyle() 的样式对象的副本。

另请参见

{}（对象初始值设定项）


TextField.styleSheet

可用性

Flash Player 7。

用法

my_txt.styleSheet = TextField StyleSheet

说明

属性；将一个样式表附加到由 my_txt 指定的文本字段。有关创建样式表的信息，请参见 TextField.StyleSheet 类条目和使用层叠样式表对文本进行格式设置。


TextField.tabEnabled

可用性

Flash Player 6。

用法

my_txt.tabEnabled

说明

属性；指定 my_txt 是否包括在 Tab 键的自动排序中。默认情况下它是 undefined。

如果 tabEnabled 属性为 undefined 或 true，则该对象包括在 Tab 键的自动排序中。如果 tabIndex 属性也设置为某个值，则该对象也包括在 Tab 键的自定义排序中。如果 tabEnabled 为 false，则即使设置了 tabIndex 属性，该对象也不包括在 Tab 键的自动或自定义排序中。

另请参见

Button.tabEnabled, MovieClip.tabEnabled


TextField.tabIndex

可用性

Flash Player 6。

用法

my_txt.tabIndex

参数

无。

返回

无。

说明

属性；可用于自定义 SWF 文件中对象的 Tab 键排序。可以设置按钮、影片剪辑或文本字段实例的 tabIndex 属性；默认情况下，它为 undefined。

如果 SWF 文件中当前显示的任意对象都包含 tabIndex 属性，则禁用 Tab 键的自动排序，而使用该 SWF 文件中对象的 tabIndex 属性来计算 Tab 键排序。Tab 键的自定义排序仅包括那些具有 tabIndex 属性的对象。

tabIndex 属性必须为正整数。将根据这些对象的 tabIndex 属性按升序对这些对象进行排序。tabIndex 值为 1 的对象排在 tabIndex 值为 2 的对象的前面。如果两个对象具有相同的 tabIndex 值，则在 Tab 键排序中哪个排在前面是 undefined。

由 tabIndex 属性定义的 Tab 键的自定义排序是平构 的。这意味着不考虑 SWF 文件中对象的层次结构关系。SWF 文件中具有 tabIndex 属性的所有对象都排入 Tab 键顺序中，而 Tab 键顺序由 tabIndex 值的顺序确定。如果两个对象具有相同的 tabIndex 值，则哪个在前面是 undefined。多个对象不应使用相同的 tabIndex 值。

另请参见

Button.tabIndex, MovieClip.tabIndex


TextField._target

可用性

Flash Player 6。

用法

my_txt._target

说明

属性（只读）；由 my_txt 指定的文本字段的目标路径。


TextField.text

可用性

Flash Player 6。

用法

my_txt.text

说明

属性；指示文本字段中的当前文本。行用回车符（“\r”即 ASCII 13）分隔。该属性包含文本字段中普通的无格式文本，不包含 HTML 标签，即使该文本字段为 HTML。

另请参见

TextField.htmlText


TextField.textColor

可用性

Flash Player 6。

用法

my_txt.textColor

说明

属性；指示文本字段中文本的颜色。


TextField.textHeight

可用性

Flash Player 6。

用法

my_txt.textHeight

说明

属性；指示文本的高度。


TextField.textWidth

可用性

Flash Player 6。

用法

my_txt.textWidth

说明

属性；指示文本的宽度。


TextField.type

可用性

Flash Player 6。

用法

my_txt.type

说明

属性；指定文本字段的类型。有两种值："dynamic" 指定动态文本字段（用户不能对其进行编辑）；"input" 指定输入文本字段。

示例

my_txt.type = "dynamic";


TextField._url

可用性

Flash Player 6。

用法

my_txt._url

说明

属性（只读）；获取创建文本字段的 SWF 文件的 URL。


TextField.variable

可用性

Flash Player 6。

用法

my_txt.variable

说明

属性；与文本字段关联的变量的名称。此属性的类型为 String。


TextField._visible

可用性

Flash Player 6。

用法

my_txt._visible

说明

属性；一个布尔值，指示文本字段 my_txt 是否可见。不可见的文本字段（_visible 属性设置为 false）被禁用。

另请参见

Button._visible, MovieClip._visible


TextField._width

可用性

Flash Player 6。

用法

my_txt._width

说明

属性；文本字段的宽度，以像素为单位。

示例

下面的示例设置文本字段的高度和宽度属性：

my_txt._width=200;
my_txt._height=200;

另请参见

MovieClip._height


TextField.wordWrap

可用性

Flash Player 6。

用法

my_txt.wordWrap

说明

属性；指示文本字段是否自动换行的布尔值。如果 wordWrap 的值为 true，则该文本字段自动换行；如果值为 false，则该文本字段不自动换行。


TextField._x

可用性

Flash Player 6。

用法

my_txt._x

说明

属性；一个整数，设置文本字段相对于父级影片剪辑的本地坐标的 x 坐标。如果文本字段在主时间轴上，则其坐标系统将舞台的左上角作为 (0, 0)。如果文本字段在具有变形的影片剪辑中，则该文本字段位于其所属影片剪辑的本地坐标系统中。因此，对于逆时针旋转 90 度的影片剪辑，其中的文本字段将继承逆时针旋转 90 度的坐标系统。文本字段的坐标指的是注册点的位置。

另请参见

TextField._xscale, TextField._y, TextField._yscale


TextField._xmouse

可用性

Flash Player 6。

用法

my_txt._xmouse

说明

属性（只读）；返回鼠标位置相对于文本字段的 x 坐标。

另请参见

TextField._ymouse


TextField._xscale

可用性

Flash Player 6。

用法

my_txt._xscale

说明

属性；确定从文本字段注册点开始应用的文本字段的水平缩放比例，以百分比形式表示。默认注册点为 (0,0)。

另请参见

TextField._x, TextField._y, TextField._yscale


TextField._y

可用性

Flash Player 6。

用法

my_txt._y

说明

属性；文本字段相对于父级影片剪辑本地坐标的 y 坐标。如果文本字段在主时间轴中，则其坐标系统将舞台的左上角作为 (0, 0)。如果文本字段位于另一个具有变形的影片剪辑中，则该文本字段位于其所属影片剪辑的本地坐标系统中。因此，对于逆时针旋转 90 度的影片剪辑，其中的文本字段将继承逆时针旋转 90 度的坐标系统。文本字段的坐标指的是注册点的位置。

另请参见

TextField._x, TextField._xscale, TextField._yscale


TextField._ymouse

可用性

Flash Player 6。

用法

my_txt._ymouse

说明

属性（只读）；指示鼠标位置相对于文本字段的 y 坐标。

另请参见

TextField._xmouse


TextField._yscale

可用性

Flash Player 6。

用法

my_txt._yscale

说明

属性；从文本字段的注册点开始应用的文本字段的垂直缩放比例，以百分比形式表示。默认注册点为 (0,0)。

另请参见

TextField._x, TextField._xscale, TextField._y


TextFormat 类

可用性

Flash Player 6。

说明

TextFormat 类描述字符格式设置信息。

必须在使用构造函数 new TextFormat() 创建了 TextFormat 对象之后，才能调用其方法。

可将 TextFormat 参数设置为 null，以指示它们是未定义的。使用 TextField.setTextFormat() 将 TextFormat 对象应用到文本字段时，只会应用该对象已定义的属性，如下面的示例所示：

my_fmt = new TextFormat();
my_fmt.bold = true;
my_txt.setTextFormat(my_fmt);

此代码首先创建一个空 TextFormat 对象，该对象的所有属性都未定义，然后将 bold 属性设置为一个定义的值。

代码 my_txt.setTextFormat(my_fmt) 只更改该文本字段默认文本格式的 bold 属性，因为 bold 属性是 my_fmt 中定义的唯一属性。该文本字段默认文本格式的所有其它内容保持不变。

调用 TextField.getTextFormat() 时，将返回一个 TextFormat 对象，该对象的所有属性均已定义；所有属性都不为 null。

TextFormat 类的方法摘要

方法 | 说明
TextFormat.getTextExtent() | 返回文本字符串的文本度量信息。

TextFormat 类的属性摘要

属性 | 说明
TextFormat.align | 指示段落的对齐方式。
TextFormat.blockIndent | 指示块的缩进，以磅为单位。
TextFormat.bold | 指示文本是否为粗体。
TextFormat.bullet | 指示文本是否在带有项目符号的列表中。
TextFormat.color | 指示文本的颜色。
TextFormat.font | 指示带有文本格式的文本的字体名称。
TextFormat.indent | 指示从左边距到段落中第一个字符的缩进。
TextFormat.italic | 指示文本是否为斜体。
TextFormat.leading | 指示行与行之间的垂直间距量（称为前导）。
TextFormat.leftMargin | 以磅为单位指示段落的左边距。
TextFormat.rightMargin | 以磅为单位指示段落的右边距。
TextFormat.size | 指示文本的磅值。
TextFormat.tabStops | 指定 Tab 键的自定义停靠位。
TextFormat.target | 指示浏览器中显示超链接的窗口。
TextFormat.underline | 指示文本是否带有下划线。
TextFormat.url | 指示文本所链接到的 URL。

TextFormat 类的构造函数

可用性

Flash Player 6。

用法

new TextFormat([font, [size, [color, [bold, [italic, [underline, [url, [target, [align, [leftMargin, [rightMargin, [indent, [leading]]]]]]]]]]]]])

参数

font 以字符串形式表示的文本字体名称。

size 指示磅值的整数。

color 使用此文本格式的文本的颜色。包含三个 8 位 RGB 分量的数字；例如，0xFF0000 为红色、0x00FF00 为绿色。

bold 指示文本是否为粗体的布尔值。

italic 指示文本是否为斜体的布尔值。

underline 指示文本是否带有下划线的布尔值。

url 使用此文本格式的文本超链接到的 URL。如果 url 为空字符串，则表示文本没有超链接。

target 显示超链接的目标窗口。如果目标窗口为空字符串，则文本显示在默认目标窗口 _self 中。如果 url 参数设置为空字符串或值 null，虽然您可以获取或设置此属性，但该属性不起作用。

align 以字符串形式表示的段落对齐方式。如果为 "left"，则段落为左对齐。如果为 "center"，则段落居中。如果为 "right"，则段落为右对齐。

leftMargin 指示段落的左边距，以磅为单位。

rightMargin 指示段落的右边距，以磅为单位。

indent 一个整数，指示从左边距到段落中第一个字符的缩进量。

leading 一个数字，指示行与行之间的前导垂直间距量。

返回

无。

说明

构造函数；使用指定的属性创建一个 TextFormat 对象。然后可更改 TextFormat 对象的属性以更改文本字段的格式设置。

任何参数都可设置为 null 以指示该参数未定义。所有的参数都是可选的；任何被忽略的参数都被视为 null。


TextFormat.align

可用性

Flash Player 6。

用法

my_fmt.align

说明

属性；以字符串形式指示段落的对齐方式。以字符串形式表示的段落的对齐方式。如果为 "left"，则段落为左对齐。如果为 "center"，则段落居中。如果为 "right"，则段落为右对齐。默认值为 null，它指示未定义该属性。


TextFormat.blockIndent

可用性

Flash Player 6。

用法

my_fmt.blockIndent

说明

属性；以磅为单位指示块缩进的数字。块缩进应用于整个文本块，即文本的所有行。相反，普通缩进 (TextFormat.indent) 只影响各段的第一行。如果此属性为 null，则 TextFormat 对象没有指定块缩进。


TextFormat.bold

可用性

Flash Player 6。

用法

my_fmt.bold

说明

属性；指示文本是否为粗体的布尔值。默认值为 null，它指示未定义该属性。


TextFormat.bullet

可用性

Flash Player 6。

用法

my_fmt.bullet

说明

属性；一个布尔值，指示文本为带项目符号的列表的一部分。在带项目符号的列表中，文本的各段都是缩进的。项目符号显示在各段第一行的左侧。默认值为 null。


TextFormat.color

可用性

Flash Player 6。

用法

my_fmt.color

说明

属性；指示文本的颜色。包含三个 8 位 RGB 分量的数字；例如，0xFF0000 为红色、0x00FF00 为绿色。


TextFormat.font

可用性

Flash Player 6。

用法

my_fmt.font

说明

属性；使用该文本格式的文本的字体名称，以字符串形式表示。默认值为 null，它指示未定义该属性。


TextFormat.getTextExtent()

可用性

Flash Player 6。Flash Player 7 中支持可选的 width 参数。

用法

my_fmt.getTextExtent(text, [width])

参数

text 一个字符串。

width 可选参数；一个表示宽度的数字（以像素为单位），指定的文本应在该处换行。

返回

一个对象，它具有以下属性：width、height、ascent、descent、textFieldHeight、textFieldWidth。

说明

方法；返回使用由 my_fmt 指定的格式表示的文本字符串 text 的文本度量信息。文本字符串被视为纯文本（而不是 HTML）。

此方法返回一个具有以下六个属性的对象：ascent、descent、width、height、textFieldHeight 和 textFieldWidth。所有度量值均以像素为单位。

如果指定了 width 参数，指定的文本将自动换行。这样，您就可以确定文本框在显示所有指定的文本时，它的高度是多少。

ascent 和 descent 度量值分别提供一行文本的基线上面或下面的距离。第一行文本的基线位于该文本字段的原点加上其 ascent 度量值的位置。

width 和 height 度量值提供该文本字符串的宽度和高度。textFieldHeight 和 textFieldWidth 度量值提供文本字段对象显示整个文本字符串所需要具有的高度和宽度。文本字段的四周有 2 个像素宽的“槽”，因此 textFieldHeight 的值等于 height 的值 + 4；同样，textFieldWidth 的值也始终等于 width 的值 + 4。

如果要根据文本度量值创建文本字段，应使用 textFieldHeight（而不是 height）和 textFieldWidth（而不是 width）。

下图中介绍这些度量值。

设置 TextFormat 对象时，所有属性设置必须与创建文本字段时所设置的属性完全一样，包括字体名称、字体大小和前导间距量。前导间距量的默认值为 2。

示例

此示例创建一个单行文本字段，其大小刚好足够使用指定格式显示一个文本字符串。

var text = "Small string";

// 创建一个 TextFormat 对象
// 并应用其属性。
var txt_fmt = new TextFormat();
with(txt_fmt) {
  font = "Arial";
  bold = true;
}

// 获取该文本字符串使用指定格式时
// 的度量信息。
var metrics = txt_fmt.getTextExtent(text);

// 创建一个文本字段，其大小刚好足够显示该文本。
this.createTextField ("textField", 0, 100, 100, metrics.textFieldWidth, metrics.textFieldHeight);
textField.border = true;
textField.wordWrap = true;
// 将相同的文本字符串和
// TextFormat 对象分配给该 TextField 对象。
textField.text = text;
textField.setTextFormat(txt_fmt);

下面的示例创建一个 100 像素宽的多行文本字段，其高度足够使用指定的格式显示一个字符串。

// 创建一个 TextFormat 对象。
var txt_fmt:TextFormat= new TextFormat();

// 为该 TextFormat 对象指定格式属性：
txt_fmt.font = "Arial";
txt_fmt.bold = true;
txt_fmt.leading = 4;

// 要显示的文本字符串
var textToDisplay:String = "Macromedia Flash 7, now with improved text metrics.";

// 获取在 100 像素换行处
// 该字符串的文本度量信息
var metrics:Object = txt_fmt.getTextExtent(textToDisplay, 100);

// 使用刚刚获取的度量信息创建一个
// 新的 TextField 对象。
this.createTextField ("textField", 0, 50, 50-metrics.ascent, 100, metrics.textFieldHeight)
textField.wordWrap = true;
textField.border = true;
// 将该文本和 TextFormat 对象分配给该 TextObject：
textField.text = textToDisplay;
textField.setTextFormat(aformat);


TextFormat.indent

可用性

Flash Player 6。

用法

my_fmt.indent

说明

属性；指示从左边距到段落中第一个字符的缩进的整数。默认值为 null，它指示未定义该属性。

另请参见

TextFormat.blockIndent


TextFormat.italic

可用性

Flash Player 6。

用法

my_fmt.italic

说明

属性；指示该文本格式中文本是否为斜体的布尔值。默认值为 null，它指示未定义该属性。


TextFormat.leading

可用性

Flash Player 6。

用法

my_fmt.leading

说明

属性；行与行之间的垂直间距量（称为前导）。默认值为 null，它指示未定义该属性。


TextFormat.leftMargin

可用性

Flash Player 6。

用法

my_fmt.leftMargin

说明

属性；段落的左边距，以磅为单位。默认值为 null，它指示未定义该属性。


TextFormat.rightMargin

可用性

Flash Player 6。

用法

my_fmt.rightMargin

说明

属性；段落的右边距，以磅为单位。默认值为 null，它指示未定义该属性。


TextFormat.size

可用性

Flash Player 6。

用法

my_fmt.size

说明

属性；该文本格式中文本的磅值。默认值为 null，它指示未定义该属性。


TextFormat.tabStops

可用性

Flash Player 6。

用法

my_fmt.tabStops

说明

属性；使用一个非负整数的数组指定自定义 Tab 键停靠位。以磅为单位指定每个 Tab 键的停靠位。如果没有指定自定义 Tab 键停靠位 (null)，则默认 Tab 键停靠位为 4（平均字符宽度）。


TextFormat.target

可用性

Flash Player 6。

用法

my_fmt.target

说明

属性；指示显示超链接的目标窗口。如果目标窗口为空字符串，则文本显示在默认目标窗口 _self 中。如果 TextFormat.url 属性是空字符串或 null，虽然您可以获取或设置此属性，但该属性不起作用。


TextFormat.underline

可用性

Flash Player 6。

用法

my_fmt.underline

说明

属性，一个布尔值，指定使用此文本格式的文本下面是否有下划线（如果有，则为 true；如果没有，则为 false）。此下划线类似于用 <U> 标签产生的下划线，但后者不是“真正”的下划线，因为它不能正确地跳过字母的下伸部分。默认值为 null，它指示未定义该属性。


TextFormat.url

可用性

Flash Player 6。

用法

my_fmt.url

说明

属性；指示该文本格式中的文本链接所至的 URL。如果 url 属性为空字符串，则文本没有超链接。默认值为 null，它指示未定义该属性。


TextSnapshot 对象

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

说明

TextSnapshot 对象可用于处理影片剪辑中的静态文本。例如，您可以使用它们用比动态文本所允许的更高的精确对文本进行布局，但仍以只读方式访问该文本。

不使用构造函数创建 TextSnapshot 对象；它是由 MovieClip.getTextSnapshot() 返回的。

TextSnapshot 对象的方法摘要

方法 | 说明
TextSnapshot.findText() | 返回指定文本的第一个匹配项的位置。
TextSnapshot.getCount() | 返回字符数。
TextSnapshot.getSelected() | 指定指定范围内的任何文本是否已被 TextSnapshot.setSelected() 选中。
TextSnapshot.getSelectedText() | 返回一个包含 TextSnapshot.setSelected() 指定的所有字符的字符串。
TextSnapshot.getText() | 返回一个包含指定范围内字符的字符串。
TextSnapshot.hitTestTextNearPos() | 用于确定对象中的哪个字符在指定的坐标上或靠近指定的坐标。
TextSnapshot.setSelectColor() | 指定当突出显示使用 TextSnapshot.setSelected() 命令选中的字符时要使用的颜色。
TextSnapshot.setSelected() | 指定是选择还是取消选择一系列字符。


TextSnapshot.findText()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

my_snap.findText( startIndex, textToFind, caseSensitive )

参数

startIndex 一个整数，指定在 my_snap 中搜索指定文本的起始点。

textToFind 一个字符串，指定要搜索的文本。如果指定文本字符串而不是 String 类型的变量，则将该字符串引在引号中。

caseSensitive 一个布尔值，指定 my_snap 中文本的大小写是否必须和 textToFind 中字符串的大小写匹配。

返回

指定文本的第一个匹配项的从零开始的索引位置，或 -1。

说明

方法；搜索指定的 TextSnapshot 对象，并返回在 startIndex 或其后找到的 textToFind 的第一个匹配项的位置。如果未找到 textToFind，则此方法返回 -1。

另请参见

TextSnapshot.getText()


TextSnapshot.getCount()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

my_snap.getCount()

参数

无。

返回

一个表示指定的 TextSnapshot 对象中字符数的整数。

说明

方法；返回 TextSnapshot 对象中的字符数。

另请参见

TextSnapshot.getText()


TextSnapshot.getSelected()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

my_snap.getSelected(from, to)

参数

from 一个整数，指示要检查的 my_snap 中第一个字符的位置。from 的有效值为 0 到 TextSnapshot.getCount() - 1。如果 from 为负值，则使用 0。

to 一个整数，为 1+ 要检查的 my_snap 中最后一个字符的索引。to 的有效值为 0 到 TextSnapshot.getCount()。提取出来的字符串中不包括由 to 参数索引指定的字符。如果省略了此参数，则使用 TextSnapshot.getCount()。如果此值小于或等于 from 的值，则使用 from+1。

返回

如果给定范围内至少一个字符已被对应的 TextSnapshot.setSelected() 命令选中，则为布尔值 true，否则为 false。

说明

方法；返回一个布尔值，该值指定 TextSnapshot 对象在指定范围内是否包含所选的文本。

若要搜索所有字符，则为 from 传递值 0，为 to 传递 TextSnapshot.getCount()（或任何一个非常大的数字）。若要搜索单个字符，则为 to 传递值 from+1。

另请参见

TextSnapshot.getSelectedText(), TextSnapshot.getText()


TextSnapshot.getSelectedText()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

mySnapshot.getSelectedText( [ includeLineEndings ] )

参数

includeLineEndings 一个可选布尔值，该值指定是否在返回的字符串中的适当位置插入换行符。默认值为 false。

返回

一个字符串，该字符串包含对应的 TextSnapshot.setSelected() 命令指定的所有字符。

说明

方法；返回一个字符串，该字符串包含对应的 TextSnapshot.setSelected() 命令指定的所有字符。如果未选择任何字符，则返回空字符串。

如果为 includeLineEndings 传递值 true，则在返回的字符串中认为适当的位置插入换行符。在这种情况下，返回字符串可能比输入范围要长。如果 includeLineEndings 为 false 或被省略，则返回所选的文本，不添加任何字符。

另请参见

TextSnapshot.getSelected()


TextSnapshot.getText()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

mySnapshot.getText(from, to [, includeLineEndings ] )

参数

from 一个整数，指示要包括在返回的字符串中的 my_snap 第一个字符的位置。from 的有效值为 0 到 TextSnapshot.getCount() - 1。如果 from 为负值，则使用 0。

to 一个整数，为 1+ 要检查的 my_snap 中最后一个字符的索引。to 的有效值为 0 到 TextSnapshot.getCount()。提取出来的字符串中不包括由 to 参数索引指定的字符。如果省略了此参数，则使用 TextSnapshot.getCount()。如果此值小于或等于 from 的值，则使用 from+1。

includeLineEndings 一个可选布尔值，该值指定是否在返回的字符串中的适当位置插入换行符。默认值为 false。

返回

一个包含指定范围中字符的字符串，如果指定范围中未找到任何字符，则为空字符串。

说明

方法；返回一个字符串，该字符串包含 from 和 to 参数指定的所有字符。如果未选择任何字符，则返回空字符串。

若要返回所有字符，则为 from 传递值 0，为 to 传递 TextSnapshot.getCount()（或任何一个非常大的数字）。若要返回单个字符，则为 to 传递值 from+1。

如果为 includeLineEndings 传递值 true，则在返回的字符串中认为适当的位置插入换行符。在这种情况下，返回字符串可能比输入范围要长。如果 includeLineEndings 为 false 或被省略，则返回所选的文本，不添加任何字符。

另请参见

TextSnapshot.getSelectedText()


TextSnapshot.hitTestTextNearPos()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

my_snap.hitTestTextNearPos(x, y [, maxDistance] )

参数

x 一个数字，表示包含 my_snap 中文本的影片剪辑的 x 坐标。

y 一个数字，表示包含 my_snap 中文本的影片剪辑的 y 坐标。

maxDistance 一个可选数字，表示从 x、y 坐标出发搜索文本的最大距离。此距离是从每个字符的中心点开始测量的。默认值为 0。

返回

一个整数，表示 my_snap 中与指定的 x、 y 坐标最近的字符的索引值，如果未找到任何字符，则为 -1。

说明

方法；用于确定 TextSnapshot 对象中哪个字符在影片剪辑（该影片剪辑包含 my_snap 中的文本）中指定的 x、y 坐标上或离该坐标最近。

如果为 maxDistance 传递值 0 或将其省略，则 x、y 坐标指定的位置必须在 my_snap 的边框内。

另请参见

MovieClip.getTextSnapshot(), MovieClip._x, MovieClip._y


TextSnapshot.setSelectColor()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

mySnapshot.setSelectColor(hexColor);

参数

hexColor 用于字符（这些字符已被对应的 TextSnapshot.setSelected() 命令选中）旁边边框的颜色，以 0xRRGGBB 格式表示。

返回

无。

说明

方法；指定当突出显示使用 TextSnapshot.setSelected() 命令选中的字符时要使用的颜色。该颜色一定是不透明的；不能指定透明值。


TextSnapshot.setSelected()

可用性

创作：Flash MX 2004。

回放：为 Flash Player 6 或更高版本发布的 SWF 文件，在 Flash Player 7 或更高版本中播放。

用法

mySnapshot.setSelected(from, to, select)

参数

from 一个整数，指示要选择的 my_snap 中第一个字符的位置。from 的有效值是 0 到 TextSnapshot.getCount() - 1。如果 from 为负值，则使用 0。

to 一个整数，为 1+ 要检查的 my_snap 中最后一个字符的索引。to 的有效值为 0 到 TextSnapshot.getCount()。提取出来的字符串中不包括由 to 参数索引指定的字符。如果省略了此参数，则使用 TextSnapshot.getCount()。如果此值小于或等于 from 的值，则使用 from+1。

select 一个布尔值，指定是应该选择文本 (true) 还是应该取消选择文本 (false)。

返回

无。

说明

方法；指定是选择还是取消选择 TextSnapshot 对象中的一系列字符。被选择的字符绘制时后面有一个带有颜色的矩形，与字符的边框匹配。边框的颜色由 TextSnapshot.setSelectColor() 确定。

若要选择或取消选择所有字符，为 from 传递值 0，为 to 传递 TextSnapshot.getCount()（或任何一个非常大的数字）。若要指定单个字符，则为 to 传递值 from+1。

因为字符是被单个地标为选中的，所以您可以多次发布此命令以选择多个字符；也就是说，使用此命令不会取消选择已由此命令设置的其它字符。


this

可用性

Flash Player 5。

用法

this

说明

标识符；引用对象或影片剪辑实例。在脚本执行时，this 引用包含该脚本的影片剪辑实例。在调用方法时，this 包含对包括所调用方法的对象的引用。

在附加到按钮的 on 事件处理函数动作中，this 引用包含该按钮的时间轴。在附加到影片剪辑的 onClipEvent() 事件处理函数动作中，this 引用该影片剪辑自身的时间轴。

因为 this 是在包含它的脚本的上下文中计算的，所以脚本中不能使用 this 引用类文件中定义的变量：

// 在文件 applyThis.as 中
class applyThis{
  var str:String = "Defined in applyThis.as";
  function conctStr(x:String):String{
    return x+x;
  }

  function addStr():String{
    return str;
  }
}

// 在 FLA 中使用以下代码测试影片
import applyThis;

var obj:applyThis = new applyThis();
var abj:applyThis = new applyThis();
abj.str = "defined in FLA";

trace(obj.addStr.call(abj,null));    // 在 FLA 中定义
trace(obj.addStr.call(this,null));   // 未定义
trace(obj.addStr.call(obj,null));    // 在 applyThis.as 中定义

同样，若要调用动态类中定义的函数，您必须使用 this 设置该函数的范围：

// simple.as 不正确的版本
dynamic class simple{
  function callfunc(){
    trace(func());
  }

}

// simple.as 正确的版本
dynamic class simple{
  function callfunc(){
    trace(this.func());
  }
}
// FLA 文件中的语句
import simple;
var obj:simple = new simple();
obj.num = 0;
obj.func = function():Boolean{
  return true;
}
obj.callfunc(); // simple.as 不正确版本中的语法错误

示例

在下面的示例中，关键字 this 引用 Circle 对象。

function Circle(radius) {
  this.radius = radius;
  this.area = Math.PI * radius * radius;
}

在下面分配给帧的语句中，关键字 this 引用当前的影片剪辑。

// 将当前影片剪辑的 alpha 属性设置为 20
this._alpha = 20;

在下面的 onClipEvent() 处理函数内的语句中，关键字 this 引用当前的影片剪辑。

// 加载该影片剪辑时，对当前影片剪辑
// 启动一个 startDrag() 操作。

onClipEvent (load) {
  startDrag (this, true);
}

另请参见

on(), onClipEvent()


throw

可用性

Flash Player 7。

用法

throw expression

说明

语句；生成（“抛出”）一个可由 catch{} 或 finally{} 代码块处理（“捕获”）的错误。如果异常未被 catch 或 finally 代码块捕获，抛出值的字符串表示形式将被发送到“输出”面板。

通常，抛出的错误是 Error 类或其子类的实例（请参见下面的示例）。

参数

expression 一个动作脚本表达式或对象。

示例

在此示例中，一个名为 checkEmail() 的函数检查传递给它的字符串是否为格式正确的电子邮件地址。如果该字符串不包含 @ 符号，则该函数将抛出一个错误。

function checkEmail(email:String) {
  if (email.indexOf("@") == -1) {
    throw new Error("Invalid email address");
  }
}

然后，下面的代码在一个 try 代码块内调用 checkEmail() 函数，将一个文本字段 (email_txt) 中的文本作为参数传递给该函数。如果该字符串参数中不包含有效的电子邮件地址，将在一个文本字段 (error_txt) 中显示该错误消息。

try {
  checkEmail("Joe Smith");
} catch (e) {
  error_txt.text = e.toString();
}

在此示例中，将抛出 Error 类的一个子类。我们对 checkEmail() 函数进行了修改，它将抛出该子类的一个示例。（有关更多信息，请参见创建子类。）

// 定义 Error 的子类 InvalidEmailError
// 在 InvalidEmailError.as 中：
class InvalidEmailAddress extends Error {
  var message = "Invalid email address.";
}

function checkEmail(email:String) {
  if (email.indexOf("@") == -1) {
    throw new InvalidEmailAddress();
  }
}

另请参见

Error 类, try..catch..finally


toggleHighQuality()

可用性

Flash 2；不鼓励使用，推荐使用 _quality。

用法

toggleHighQuality()

参数

无。

返回

无。

说明

不鼓励使用的函数；在 Flash Player 中开启和关闭消除锯齿功能。消除锯齿可使对象的边缘平滑并会减缓 SWF 播放的速度。此动作会影响 Flash Player 中的所有 SWF 文件。

示例

下面的代码可以应用到一个按钮，单击该按钮时会在开启和关闭消除锯齿功能间切换：

on (release) {
  toggleHighQuality();
}

另请参见

_highquality, _quality


trace()

可用性

Flash Player 4。

用法

trace(expression)

参数

expression 要计算的表达式。在 Flash 创作工具中使用“测试影片”命令打开 SWF 文件时，expression 参数的值显示在“输出”面板中。

返回

无。

说明

语句；在测试模式下，计算表达式并在“输出”面板中显示结果。

在测试影片时，使用此动作可在“输出”面板中记录编程注释或显示消息。使用 expression 参数可以检查是否存在某种条件，或在“输出”面板中显示值。trace() 动作类似于 JavaScript 中的 alert 函数。

可以使用“发布设置”中的“Omit Trace Actions”（省略 Trace 动作）命令将 trace() 动作从导出的 SWF 文件中删除。

示例

此示例来自一个游戏，在该游戏中一个名为 my_mc 的可拖动影片剪辑实例必须在特定目标上释放。我们使用一个条件语句来计算 _droptarget 属性并根据 my_mc 的释放位置执行不同的动作。在脚本的末尾使用 trace() 动作来计算 my_mc 影片剪辑的位置，并在“输出”面板中显示结果。如果 my_mc 的行为与预期的不一样（例如，如果它对齐的目标不正确），则由 trace() 动作发送到“输出”面板的值将有助于您确定脚本中的问题。

on (press) {
  my_mc.startDrag();
}

on (release) {
  if(eval(_droptarget) != target) {
      my_mc._x = my_mc_xValue;
      my_mc._y = my_mc_yValue;
  } else {
    var my_mc_xValue = my_mc._x;
    var my_mc_yValue = my_mc._y;
    target = "_root.pasture";
  }
  trace("my_mc_xValue = " + my_mc_xValue);
  trace("my_mc_xValue = " + my_mc_xValue);
  stopDrag();
}


true

可用性

Flash Player 5。

用法

true

说明

常量；表示与 false 相反的唯一布尔值。

另请参见

false


try..catch..finally

可用性

Flash Player 7。

用法

try {
  // ... try 代码块 ...
} finally {
  // ... finally 代码块 ...
}
try {
  // ... try 代码块 ...
} catch(error[:ErrorType1]) {
  // ... catch 代码块 ...
} [catch(error[:ErrorTypeN]) {
  // ... catch 代码块 ...
}] [finally {
  // ... finally 代码块 ...
}]

参数

error 从 throw 语句抛出的表达式，通常是 Error 类或其子类的一个实例。

ErrorType 可选参数；指定 error 标识符的类型。catch 子句只捕获指定类型的错误。

说明

关键字；在它们所包括的代码块内，如果发生错误，将对错误进行响应。如果 try 代码块内的任何代码抛出了一个错误（使用 throw 动作），控制将传递到 catch 代码块（如果有），然后传递到 finally 代码块（如果有）。无论是否有错误被抛出，finally 代码块都会执行。如果 try 代码块内的代码未抛出错误（也就是说，如果 try 代码块正常完成），则仍会执行 finally 代码块内的代码。即使 try 代码块使用 return 语句退出，finally 代码块仍会执行。

try 代码块后面必须跟有 catch 代码块、finally 代码块，或两者都有。一个 try 代码块可以有多个 catch 代码块，但只能有一个 finally 代码块。您可以根据需要嵌套多层 try 代码块（层数没有限制）。

在 catch 处理函数内指定的 error 参数必须为一个简单的标识符，例如，e 或 theException 或 x。您还可以为 catch 处理函数中的变量指定类型。如果指定了不同的错误类型，再结合使用多个 catch 代码块，可以捕获从一个 try 代码块抛出的多种类型的错误。

抛出的异常是对象时，如果抛出的对象是指定类型的一个子类，则类型将匹配。如果抛出的是特定类型的错误，将执行处理相应错误的 catch 代码块。如果抛出的不是指定类型的异常，则不会执行 catch 代码块，而会自动将该异常从 try 代码块抛出到与其相匹配的 catch 处理函数。

如果在某个函数内抛出了错误，而该函数中没有 catch 处理函数，则动作脚本解释器退出该函数以及任何调用函数，直到找到一个 catch 代码块。在此过程中，在各层上都会调用 finally 处理函数。

示例

下面的示例说明如何创建 try..finally 语句。由于 finally 代码块中的代码肯定会执行，因此，它通常用于在 try 代码块执行完毕后，执行必要的“清理”代码。在此示例中，finally 代码块用于删除一个动作脚本对象，而不管是否有错误发生。

var account = new Account()
try {
  var returnVal = account.getAccountInfo();
  if(returnVal != 0) {
    throw new Error("Error getting account information.");
  }
}
finally {
  // 无论是否有错误发生，都会删除“account”对象。
  if(account != null) {
    delete account;
  }
}

下面的示例演示一个 try..catch 语句。try 代码块内的代码将会执行。如果 try 代码块内的任何代码抛出异常，控制将传递到 catch 代码块。该代码块使用 Error.toString() 方法在一个文本字段中显示该错误消息。

var account = new Account()
try {
  var returnVal = account.getAccountInfo();
  if(returnVal != 0) {
    throw new Error("Error getting account information.");
  }
} catch (e) {
  status_txt.text = e.toString();
}

下面的示例演示一个带有多个 catch 代码块的 try 代码块，而且在 catch 代码块中指定了错误类型。try 代码块将根据所发生错误的类型抛出不同类型的对象。在此示例中，myRecordSet 是一个名为 RecordSet 的类（假设有这样一个类）的实例。该类的 sortRows() 方法可能会抛出以下两种不同类型的错误：RecordSetException 和 MalformedRecord。

在此示例中，RecordSetException 和 MalformedRecord 对象是 Error 类的子类。它们都是在其自己的 AS 类文件中定义的。（有关更多信息，请参见使用动作脚本 2.0 创建类。）

// 在 RecordSetException.as 中：
class RecordSetException extends Error {
  var message = "Record set exception occurred."
}
// 在 MalformedRecord.as 中：
class MalformedRecord extends Error {
  var message = "Malformed record exception occurred.";
}

在 RecordSet 类的 sortRows() 方法内，将根据所发生异常的类型抛出上面定义的两个错误对象之一。下面的代码片断显示了此代码的大致结构。

// 在 RecordSet.as 类文件内...
function sortRows() {
  ...
  if(recordSetErrorCondition) {
    throw new RecordSetException();
  }
  if(malFormedRecordCondition) {
    throw new MalformedRecord();
  }
  ...
}

最后，在另一个 AS 文件或 FLA 脚本中，以下代码对 RecordSet 类的一个实例调用 sortRows() 方法。它为 sortRows() 所抛出的各种类型的错误都分别定义了 catch 代码块。

try {
  myRecordSet.sortRows();
} catch (e:RecordSetException) {
  trace("Caught a recordset exception");
} catch (e:MalformedRecord) {
  trace("Caught a malformed record exception");
}

另请参见

Error 类, throw, class, extends


typeof

可用性

Flash Player 5。

用法

typeof(expression)

参数

expression 一个字符串、影片剪辑、按钮、对象或函数。

说明

运算符；放在单个参数前的一元运算符。typeof 运算符让 Flash 解释器计算 expression；其结果为一个字符串，指示该表达式是字符串、影片剪辑、对象、函数、数字，还是布尔值。下表显示对各类表达式使用 typeof 运算符的结果：

参数 | 输出
字符串 | string
影片剪辑 | movieclip
按钮 | object
文本字段 | object
数字 | number
布尔值 | boolean
对象 | object
函数 | function


undefined

可用性

Flash Player 5。

用法

undefined

参数

无。

返回

无。

说明

一个特殊值，通常用于指示变量尚未赋值。对未定义值的引用返回特殊值 undefined。动作脚本代码 typeof(undefined) 返回字符串 "undefined"。undefined 类型的唯一值就是 undefined。

在为 Flash Player 6 或更早版本发布的文件中，undefined.toString() 的值为 "" （空字符串）。 在为 Flash Player 7 或更高版本发布的文件中，undefined.toString() 的值为 undefined。

undefined 值与特殊值 null 相似。使用相等运算符对 null 和 undefined 进行比较时，它们的比较结果为相等。

示例

在此示例中，变量 x 尚未声明，所以其值为 undefined。在代码的第一部分，我们使用相等运算符 (==) 对 x 的值与值 undefined 进行比较，并将相应的结果发送到“输出”面板。在代码的第二部分，我们使用相等运算符对值 null 和 undefined 进行比较。

// x 尚未声明
trace ("The value of x is " + x);
if (x == undefined) {
  trace ("x is undefined");
} else {
  trace ("x is not undefined");
}

trace ("typeof (x) is " + typeof (x));
if (null == undefined) {
  trace ("null and undefined are equal");
} else {
  trace ("null and undefined are not equal");
}

下面的结果显示在“输出”面板中。

The value of x is undefined
x is undefined
typeof (x) is undefined
null and undefined are equal


unescape

可用性

Flash Player 5。

用法

unescape(x)

参数

x 要转义的十六进制序列字符串。

返回

对 URL 编码的参数进行解码所得到的字符串。

说明

函数；将参数 x 作为字符串计算，将该字符串从 URL 编码格式进行解码（将所有十六进制序列转换为 ASCII 字符），并返回该字符串。

示例

下面的示例说明了转义到反向转义的转换过程。

escape("Hello{[World]}");

转义结果如下：

("Hello%7B%5BWorld%5D%7D");

使用 unescape 可以返回到原始格式：

unescape("Hello%7B%5BWorld%5D%7D");

结果如下：

Hello{[World]}


unloadMovie()

可用性

Flash Player 3。

用法

unloadMovie(target)

参数

target 影片剪辑的目标路径。

返回

无。

说明

函数；从 Flash Player 中删除通过 loadMovie() 加载的影片剪辑。若要卸载通过 loadMovieNum() 加载的影片，应使用 unloadMovieNum()，而不应使用 unloadMovie()。

示例

下面的示例卸载主时间轴上的影片剪辑 draggable_mc，并将 movie.swf 加载到级别 4 中。

on (press) {
    unloadMovie ("_root.draggable_mc");
    loadMovieNum ("movie.swf", 4);
}

下面的示例卸载已经加载到级别 4 中的影片。

on (press) {
    unloadMovieNum (4);
}

另请参见

loadMovie(), MovieClipLoader.unloadClip()


unloadMovieNum()

可用性

Flash Player 3。

用法

unloadMovieNum(level)

参数

level 所加载影片的级别 (_levelN)。

返回

无。

说明

函数；从 Flash Player 中删除通过 loadMovieNum() 加载的影片。若要卸载通过 loadMovie() 加载的影片，应使用 unloadMovie()，而不应使用 unloadMovieNum()。

另请参见

loadMovie(), loadMovieNum(), unloadMovie()


updateAfterEvent()

可用性

Flash Player 5。

用法

updateAfterEvent()

参数

无。

返回

无。

说明

函数；在 onClipEvent() 处理函数内调用此函数时，或将其作为传递给 setInterval() 的函数或方法的一部分进行调用时，它将更新显示（与为影片设置的帧频无关）。如果对 updateAfterEvent 的调用不在 onClipEvent() 处理函数内，也不是传递给 setInterval() 的函数或方法的一部分，则 Flash 将忽略该调用。

另请参见

onClipEvent(), setInterval()


var

可用性

Flash Player 5。

用法

var variableName [= value1] [...,variableNameN [=valueN]]

参数

variableName 一个标识符。

value 赋给该变量的值。

返回

无。

说明

语句；用于声明局部或时间轴变量。

  • 如果变量是在函数内声明的，则这些变量是局部变量。它们是为该函数声明的，在函数调用结束时到期。
  • 如果变量不是在块 ({}) 内声明的，但执行该动作列表时使用的是 call() 动作，则这些变量也是局部变量，它们在当前列表结束时到期。
  • 如果变量不是在块中声明的，且执行当前动作列表时使用的不是 call() 动作，则这些变量被解释为时间轴变量。但是，您无需使用 var 来声明时间轴变量。

您不能将范围限于另一个对象的变量声明为局部变量：

my_array.length = 25;     // 正确
var my_array.length = 25; // 语法错误

当使用 var 时，您可以精确键入变量，请参见严格数据类型指定

注意：在外部脚本中定义的类还支持 public、private 和 static 变量范围。请参见使用动作脚本 2.0 创建类以及 private、public 和 static。


Video 类

可用性

Flash Player 6；播放 Flash 视频 (FLV) 文件的功能已添加到 Flash Player 7 中。

说明

使用 Video 类可以直接在舞台上显示实时视频流，而无需将其嵌入您的 SWF 文件中。可以使用 Camera.get() 来捕获视频。在为 Flash Player 7 和更高版本发布的文件中，您还可以使用 Video 类通过 HTTP 或在本地文件系统中回放 Flash 视频 (FLV) 文件。有关更多信息，请参见动态回放外部 FLV 文件、NetConnection 类和 NetStream 类。

Video 对象的使用方式类似于影片剪辑。就像放置在舞台上的其它对象一样，您可以控制 Video 对象的多种属性。例如，可以通过使用 Video 对象的 _x 和 _y 属性在舞台上移动该对象；可以通过使用其 _height 和 _width 属性更改其大小等。

若要显示视频流，首先将 Video 对象放置在舞台上。然后使用 Video.attachVideo() 将视频流附加到 Video 对象。

将 Video 对象放置在舞台上：

  1. 如果“库”面板不可见，选择“窗口”>“库”以显示该面板。
  2. 单击“库”面板标题栏右侧的“选项”菜单，然后选择“新建视频”，在库中添加一个嵌入的 Video 对象。
  3. 将该 Video 对象拖放到舞台上，然后使用属性检查器给它起一个唯一的实例名称，例如，my_video。（不要将其命名为“Video”。）

Video 类的方法摘要

方法 | 说明
Video.attachVideo() | 指定将在舞台上的 Video 对象的边界内显示的视频流。
Video.clear() | 清除该 Video 对象中当前显示的图像。

Video 类的属性摘要

属性 | 说明
Video.deblocking | 指定在视频进入流时，视频压缩器根据需要应用的解块过滤器的行为。
Video.height | 只读；视频流的高度，以像素为单位。
Video.smoothing | 指定在缩放视频时是否应对其进行平滑处理（插补数据）。
Video.width | 只读；视频流的宽度，以像素为单位。


Video.attachVideo()

可用性

Flash Player 6；处理 Flash 视频 (FLV) 文件的功能已添加到 Flash Player 7 中。

用法

my_video.attachVideo(source)

参数

source 一个正在捕获视频数据或 NetStream 对象的 Camera 对象。若要切断与该 Video 对象的连接，可在 source 参数中传递 null。

返回

无。

说明

方法；指定将在舞台上的 Video 对象的边界内显示的视频流 (source)。视频流要么是通过 NetStream.play() 命令显示的 FLV 文件（即 Camera 对象），要么是 null。如果 source 为 null，则该 Video 对象中将不再播放视频。

如果 FLV 文件只包含音频，则无需使用此方法；当发布 NetStream.play() 命令时，将自动播放 FLV 文件的音频部分。

如果要控制与 FLV 文件关联的音频，您可以使用 MovieClip.attachAudio() 将音频路由到影片剪辑；然后可以创建 Sound 对象来控制音频的某些属性。有关更多信息，请参见MovieClip.attachAudio()。

示例

下面的示例在本地播放实时视频。

my_cam = Camera.get();
my_video.attachVideo(my_cam); // my_video 是舞台上的一个 Video 对象

下面的示例播放一个以前录制的名为 myVideo.flv 的文件，该文件与 SWF 文件存储在同一个目录中。

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(my_nc);
my_video.attachVideo(ns); // my_video 是舞台上的一个 Video 对象
ns.play("myVideo.flv");

另请参见

Camera 类, NetStream 类


Video.clear()

可用性

Flash Player 6。

用法

my_video.clear()

参数

无。

返回

无。

说明

方法；清除该 Video 对象中当前显示的图像。例如，如果要显示待机信息，则可以使用此方法。这样就不必隐藏该 Video 对象了。

另请参见

Video.attachVideo()


Video.deblocking

可用性

Flash Player 6。

用法

my_video.deblocking
my_video.deblocking = setting

说明

属性；指定在视频进入流时，视频压缩器根据需要应用的解块过滤器的行为。下面是 setting 可以接受的值：

  • 0 （默认值）：让视频压缩器根据需要应用解块过滤器。
  • 1: 从不使用解块过滤器。
  • 2: 始终使用解块过滤器。

解块过滤器对整体回放性能有影响，而对于高带宽视频，通常不需要使用它。如果您的系统不够强大，在启用此过滤器的情况下回放视频可能会有困难。


Video.height

可用性

Flash Player 6。

用法

my_video.height

说明

只读属性；一个整数，指示该视频流的高度（以像素为单位）。对于实时流，此值与正在捕获该视频流的 Camera 对象的 Camera.height 属性相同。对于 FLV 文件，此值是以 FLV 形式导出的文件的高度。

例如，您可能需要使用此属性来确保用户以捕获时的相同大小观看视频，而无论 Video 对象在舞台上的实际大小是什么。

示例

用法 1：下面的示例设置 Video 对象的高度和宽度值以和 FLV 文件的值匹配。应该在调用 NetStream.onStatus（code 属性为 NetStream.Buffer.Full）之后调用此代码。如果在 code 属性为 NetStream.Play.Start 时调用此代码，则高度和宽度值将为 0，这是因为 Video 对象尚未具有加载的 FLV 文件的高度和宽度。

// Clip 是包含
// 视频对象“my_video”的影片剪辑的实例名称。
_root.Clip._width = _root.Clip.my_video.width;
_root.Clip._height = _root.Clip.my_video.height;

用法 2：以下示例让用户通过按一个按钮来设置正在 Flash Player 中显示的视频流的高度和宽度，使其与捕获该视频流时的高度和宽度相同。

on (release) {
  _root.my_video._width = _root.my_video.width
  _root.my_video._height = _root.my_video.height
}

另请参见

MovieClip._height, Video.width


Video.smoothing

可用性

Flash Player 6。

用法

my_video.smoothing

说明

属性；一个布尔值，指定在缩放该视频时是否应进行平滑处理（插补数据）。播放器必须处于高品质模式，平滑处理才起作用。默认值为 false（不进行平滑处理）。


Video.width

可用性

Flash Player 6。

用法

my_video.width

说明

只读属性；一个整数，指示视频流的宽度（以像素为单位）。对于实时流，此值与正在捕获该视频流的 Camera 对象的 Camera.width 属性相同。对于 FLV 文件，此值是以 FLV 文件形式导出的文件的宽度。

例如，您可能需要使用此属性来确保用户以捕获时的相同大小观看视频，而无论 Video 对象在舞台上的实际大小是什么。

示例

请参见 Video.height 的示例。


void

可用性

Flash Player 5。

用法

void (expression)

说明

运算符；一个一元运算符，它将放弃 expression 值并返回未定义值。void 操作符经常用于使用 == 运算符测试未定义值的比较运算中。


while

可用性

Flash Player 4。

用法

while(condition) {
  statement(s);
}

参数

condition 每次执行 while 动作时都要重新计算的表达式。

statement(s) 条件计算结果为 true 时要执行的指令。

返回

无。

说明

语句；测试一个表达式，只要该表达式为 true，就重复运行循环中的语句或语句序列。

在运行该语句块之前，首先测试 condition；如果测试返回 true，则运行该语句块。如果该条件为 false，则跳过该语句块，并执行 while 动作语句块之后的第一条语句。

通常当计数器变量小于某指定值时，使用循环执行动作。 在每个循环的结尾递增计数器的值，直到达到指定值为止。此时，condition 不再为 true，因此循环结束。

while 语句执行下面一系列步骤。第 1 步至第 4 步的每次重复，称作循环的一次迭代。每次迭代的开始将重新测试 condition，如下面的步骤所示：

  1. 计算表达式 condition。
  2. 如果 condition 的计算结果为 true，或是一个可转换为布尔值 true 的值（比如一个非零数字），则转到第 3 步。

    否则，while 语句结束，并从 while 循环之后的下一语句继续执行。

  3. 运行语句块 statement(s)。
  4. 转到步骤 1。

另请参见

do while, continue, for, for..in


with

可用性

Flash Player 5。

用法

with (object) {
  statement(s);
}

参数

object 动作脚本对象或影片剪辑的一个实例。

statement(s) 包括在大括号中的一个动作或一组动作。

返回

无。

说明

语句；允许您使用 object 参数指定一个对象（比如影片剪辑），并使用 statement(s) 参数计算该对象中的表达式和动作。这可以使您不必重复书写对象的名称或路径。

object 参数将成为读取 statement(s) 参数中的属性、变量与函数的上下文。例如，如果 object 为 my_array，且指定的属性中有 length 和 concat 这样两个属性，则这些属性将自动作为 my_array.length 和 my_array.concat 进行读取。在另一个示例中，如果 object 为 state.california，则 with 动作中的任何动作或语句将从 california 实例中调用。

查找 statement(s) 参数中某个标识符的值时，动作脚本将从 object 指定的范围链的开头开始查找，并按照特定的顺序在范围链的每个级别中搜索该标识符。

with 动作使用范围链解析标识符，该范围链从下面列表中的第一项开始，一直到最后一项结束：

  • 在最里面的 with 动作的 object 参数中指定的对象。
  • 在最外面的 with 动作的 object 参数中指定的对象。
  • 激活的对象。（当调用函数时自动创建的临时对象，该函数包含函数所调用的局部变量。）
  • 包含当前执行脚本的影片剪辑。
  • 全局对象（诸如 Math 与 String 的内置对象）。

若要在 with 动作中设置变量，该变量必须已在 with 动作外部进行了声明，或者您必须输入该变量所生存时间轴的完整路径。如果在 with 动作中设置了未声明的变量，则 with 动作将根据范围链查找该值。如果该变量尚不存在，则将在调用 with 动作的时间轴上设置此新值。

在 Flash 5 或更高版本中，with 动作替换了已不鼓励使用的 tellTarget 动作。建议您使用 with 而不使用 tellTarget，因为前者是对 ECMA-262 标准的一个标准动作脚本扩展功能。with 动作与 tellTarget 动作的主要区别在于：with 采用对影片剪辑或其它对象的引用作为其参数，而 tellTarget 采用标识影片剪辑的目标路径字符串作为其参数，且不能用于指向对象。

示例

下面的示例设置 someOther_mc 实例的 _x 和 _y 属性，然后指示 someOther_mc 转到第 3 帧并停止。

with (someOther_mc) {
  _x = 50;
  _y = 100;
  gotoAndStop(3);
}

下面的代码片断显示不使用 with 动作如何编写上面的代码。

someOther_mc._x = 50;
someOther_mc._y = 100;
someOther_mc.gotoAndStop(3);

还可使用 tellTarget 动作编写这段代码。但是，如果 someOther_mc 不是影片剪辑，而是一个对象，则不能使用 with 动作。

tellTarget ("someOther_mc") {
  _x = 50;
  _y = 100;
  gotoAndStop(3);
}

with 动作对于同时访问一个范围链列表中的多项十分有用。在下面的示例中，内置 Math 对象被放置在范围链的前面。将 Math 设置为默认对象可以将标识符 cos、sin 和 PI 分别解析为 Math.cos、Math.sin 和 Math.PI。标识符 a、x、y 和 r 不是 Math 对象的方法或属性，但由于它们处于函数 polar() 的对象激活范围内，所以会将它们解析为相应的局部变量。

function polar(r) {
  var a, x, y;
  with (Math) {
    a = PI * r * r;
    x = r * cos(PI);
    y = r * sin(PI/2);
}
trace("area = " +a);
trace("x = " + x);
trace("y = " + y);
}

可以使用嵌套的 with 动作访问多重范围中的信息。在下面的示例中，实例 fresno 和实例 salinas 是实例 california 的子级。该语句设置 fresno 和 salinas 的 _alpha 值，而不改变 california 的 _alpha 值。

with (california){
  with (fresno){
    _alpha = 20;
  }
  with (salinas){
    _alpha = 40;
  }
}

另请参见

tellTarget


XML 类

可用性

Flash Player 5（已成为 Flash Player 6 本身的对象，Flash Player 6 大大提高了性能）。

说明

使用 XML 类的方法和属性可以加载、分析、发送、生成和操作 XML 文档树。

必须先使用构造函数 new XML() 创建 XML 对象，然后才能调用 XML 类的方法。

XML 类的方法摘要

方法 | 说明
XML.addRequestHeader() | 添加或更改 POST 操作的 HTTP 标头。
XML.appendChild() | 在指定对象的子级列表结尾追加一个节点。
XML.cloneNode() | 克隆指定的节点，并可选择递归克隆所有子级。
XML.createElement() | 创建一个新的 XML 元素。
XML.createTextNode() | 创建一个新的 XML 文本节点。
XML.getBytesLoaded() | 返回为指定 XML 文档加载的字节数。
XML.getBytesTotal() | 返回 XML 文档的大小，以字节为单位。
XML.hasChildNodes() | 如果指定的节点有子级节点，则返回 true；否则返回 false。
XML.insertBefore() | 在指定节点的子级列表中的一个现有节点之前插入节点。
XML.load() | 从 URL 中加载文档（由 XML 对象指定）。
XML.parseXML() | 将 XML 文档分析为指定的 XML 对象树。
XML.removeNode() | 从指定节点的父级中将该节点删除。
XML.send() | 将指定的 XML 对象发送到 URL。
XML.sendAndLoad() | 将指定的 XML 对象发送到 URL，并将服务器响应加载到另一 XML 对象中。
XML.toString() | 将指定的节点与其任何子级转换为 XML 文本。

XML 类的属性摘要

属性 | 说明
XML.contentType | 表示传输到服务器的 MIME 类型。
XML.docTypeDecl | 设置和返回关于 XML 文档的 DOCTYPE 声明的信息。
XML.firstChild | 只读；引用指定节点列表中的第一个子级。
XML.ignoreWhite | 当设置为 true 时，在分析过程中将放弃仅包含空白的文本节点。
XML.lastChild | 引用指定节点列表中的最后一个子级。
XML.loaded | 只读；检查指定的 XML 对象是否已加载。
XML.nextSibling | 只读；引用父级节点的子级列表中的下一个同级。
XML.nodeName | XML 对象的节点名称。
XML.nodeType | 指定节点的类型（XML 元素或文本节点）。
XML.nodeValue | 如果指定节点为文本节点，则为该节点的文本。
XML.parentNode | 只读；引用指定节点的父级节点。
XML.previousSibling | 只读；引用父级节点的子级列表中的前一个同级。
XML.status | 一个数字状态代码，指示 XML 文档分析操作成功或失败。
XML.xmlDecl | 指定有关文档的 XML 声明的信息。

XML 类的集合摘要

方法 | 说明
XML.attributes | 返回一个包含指定节点所有属性的关联数组。
XML.childNodes | 只读；返回一个包含对指定节点的子级节点的引用的数组。

XML 类的事件处理函数摘要

事件处理函数 | 说明
XML.onData | 一个事件处理函数，当 XML 文本从服务器上被完全下载时，或者当从服务器上下载 XML 文本的过程中出现错误时进行调用。
XML.onLoad() | 一个事件处理函数，它返回一个布尔值，指示是否用 XML.load() 或 XML.sendAndLoad() 成功加载了该 XML 对象。

XML 类的构造函数

可用性

Flash Player 5。

用法

new XML([source])

参数

source 对其进行分析以创建新的 XML 对象的 XML 文本。

返回

无。

说明

构造函数；创建一个新的 XML 对象。必须先使用构造函数创建一个 XML 对象，然后才能调用 XML 类的方法。

注意：createElement() 和 createTextNode() 方法是用于在 XML 文档树中创建元素和文本节点的“构造函数”方法。

示例

用法 1：下面的示例创建一个新的空 XML 对象。

my_xml = new XML();

用法 2：下面的示例通过分析 source 参数中指定的 XML 文本创建一个 XML 对象，并使用得到的 XML 文档树填充新创建的 XML 对象。

anyOtherXML = new XML("<state>California<city>san francisco</city></state>");

另请参见

XML.createElement(), XML.createTextNode()


XML.addRequestHeader()

可用性

Flash Player 6。

用法

xml.addRequestHeader(headerName, headerValue)
xml.addRequestHeader(["headerName_1", "headerValue_1" ..."headerName_n", "headerValue_n"])

参数

headerName HTTP 请求标头名称。

headerValue 与 headerName 关联的值。

返回

无。

说明

方法，添加或更改用 POST 动作发送的 HTTP 请求标头（如 Content-Type 或 SOAPAction）。在第一种用法中，向该方法传递了两个字符串：headerName 和 headerValue。在第二种用法中，传递了字符串、替代标头名称和标头值的数组。

如果通过多次调用来设置相同的标头名称，则每个后继值将替换在上一次调用中设置的值。

您不能使用此方法添加或更改下列标准 HTTP 标头：Accept-Ranges、Age、Allow、Allowed、Connection、Content-Length、Content-Location、Content-Range、ETag、Host、Last-Modified、Locations、Max-Forwards、Proxy-Authenticate、Proxy-Authorization、Public、Range、Retry-After、Server、TE、Trailer、Transfer-Encoding、Upgrade、URI、Vary、Via、Warning 和 WWW-Authenticate。

示例

以下示例将值为 Foo 的自定义 HTTP 标头 SOAPAction 添加到名为 my_xml 的 XML 对象中。

my_xml.addRequestHeader("SOAPAction", "'Foo'");

下一个示例创建名为 headers 的数组，它包含两个替代 HTTP 标头及其关联值。然后将该数组作为参数传递给 addRequestHeader() 方法。

var headers = ["Content-Type", "text/plain", "X-ClientAppVersion", "2.0"];
my_xml.addRequestHeader(headers);

另请参见

LoadVars.addRequestHeader()


XML.appendChild()

可用性

Flash Player 5。

用法

my_xml.appendChild(childNode)

参数

childNode 要添加到指定 XML 对象的子级列表中的子级节点。

返回

无。

说明

方法；将指定的子级节点追加到 XML 对象的子级列表中。将追加的子级节点放入树结构中的同时，将该子级节点从其现有的父级节点（如果有的话）中删除。

示例

下面的示例从 doc1 中克隆最后一个节点，并将其追加到 doc2 中。

doc1 = new XML(src1);
doc2 = new XML();
node = doc1.lastChild.cloneNode(true);
doc2.appendChild(node);


XML.attributes

可用性

Flash Player 5。

用法

my_xml.attributes

参数

无。

返回

一个数组。

说明

属性；一个包含指定 XML 对象的所有属性的关联数组。

示例

下面的示例将 XML 属性的名称写到“输出”窗口。

str = "<mytag name=\"Val\"> intem </mytag>";
doc = new XML(str);
y = doc.firstChild.attributes.name;
  trace (y);
doc.firstChild.attributes.order = "first";
z = doc.firstChild.attributes.order
  trace(z);

下面的内容将被写到“输出”面板：

Val
first


XML.childNodes

可用性

Flash Player 5。

用法

my_xml.childNodes

参数

无。

返回

一个数组。

说明

属性（只读）；指定 XML 对象的子级组成的数组。数组中的每个元素都是对表示子级节点的 XML 对象的引用。这是一个只读属性，无法用于操作子级节点。若要操作子级节点，应使用 XML.appendChild()、XML.insertBefore() 和 XML.removeNode()。

对于文本节点 (nodeType == 3)，此属性未定义。

另请参见

XML.nodeType


XML.cloneNode()

可用性

Flash Player 5。

用法

my_xml.cloneNode(deep)

参数

deep 布尔值，指定是否递归克隆指定 XML 对象的子级。

返回

一个 XML 节点。

说明

方法；构造并返回一个类型、名称、值和属性与指定 XML 对象均相同的新 XML 节点。如果 deep 设置为 true，则递归克隆所有子级节点，这将得到一个与原始对象文档树完全相同的副本。

返回的克隆节点与被克隆项目的树不再相关联。因此，nextSibling、parentNode 和 previousSibling 的值均为 null。如果不执行剪贴板复制，firstChild 和 lastChild 也为 null。


XML.contentType

可用性

Flash Player 6。

用法

my_xml.contentType

说明

属性；调用 XML.send() 或 XML.sendAndLoad() 方法时发送到服务器的 MIME 类型。默认值为 application/x-www-form-urlencoded。

另请参见

XML.send(), XML.sendAndLoad()


XML.createElement()

可用性

Flash Player 5。

用法

my_xml.createElement(name)

参数

name 要创建的 XML 元素的标签名。

返回

一个 XML 元素。

说明

方法；使用参数中指定的名称创建一个新的 XML 元素。新元素开始时没有父级、子级和同级。该方法返回一个引用，该引用指向新创建的表示元素的 XML 对象。此方法与 createTextNode() 是为 XML 对象创建节点的构造函数方法。


XML.createTextNode()

可用性

Flash Player 5。

用法

my_xml.createTextNode(text)

参数

text 用于创建新文本节点的文本。

返回

无。

说明

方法；使用指定文本创建一个新的 XML 文本节点。该新节点开始时没有父级，且文本节点不能有子级或同级。这种方法返回对表示新文本节点的 XML 对象的引用。 此方法与 createElement() 是为 XML 对象创建节点的构造函数方法。


XML.docTypeDecl

可用性

Flash Player 5。

用法

my_xml.XMLdocTypeDecl

说明

属性；指定有关 XML 文档的 DOCTYPE 声明的信息。在将 XML 文本分析为 XML 对象后，该 XML 对象的 XML.docTypeDecl 属性将被设置为该 XML 文档的 DOCTYPE 声明的文本。例如，<!DOCTYPE greeting SYSTEM "hello.dtd">。此属性是使用 DOCTYPE 声明的字符串表示形式设置的，而不是使用 XML 节点对象设置的。

动作脚本的 XML 分析器不是具有验证功能的分析器。分析器读取 DOCTYPE 声明，并将其存储在 docTypeDecl 属性中，但不执行 DTD 验证。

如果在执行分析操作的过程中未遇到 DOCTYPE 声明，XML.docTypeDecl 将被设置为未定义。XML.toString() 在输出完存储在 XML.xmlDecl 中的 XML 声明后，将立即输出 XML.docTypeDecl 的内容，然后才输出 XML 对象中的任何其它文本。如果 XML.docTypeDecl 未定义，则不输出 DOCTYPE 声明。

示例

下面的示例使用 XML.docTypeDecl 设置 XML 对象的 DOCTYPE 声明：

my_xml.docTypeDecl = "<!DOCTYPE greeting SYSTEM \"hello.dtd\">";

另请参见

XML.toString(), XML.xmlDecl


XML.firstChild

可用性

Flash Player 5。

用法

my_xml.firstChild

说明

属性（只读）；计算指定的 XML 对象，并引用父级节点的子级列表中的第一个子级。如果节点没有子级，则此属性为 null。如果节点为文本节点，则该属性未定义。这是只读属性，无法用于操作子级节点；请使用 appendChild()、insertBefore() 和 removeNode() 来操作子级节点。

另请参见

XML.appendChild(), XML.insertBefore(), XML.removeNode()


XML.getBytesLoaded()

可用性

Flash Player 6。

用法

XML.getBytesLoaded()

参数

无。

返回

一个整数，指示所加载的字节数。

说明

方法；返回为 XML 文档加载（进入流）的字节数。可以对 getBytesLoaded() 的值与 getBytesTotal() 的值进行比较，从而确定 XML 文档已加载的百分比。

另请参见

XML.getBytesTotal()


XML.getBytesTotal()

可用性

Flash Player 6。

用法

XML.getBytesTotal()

参数

无。

返回

一个整数。

说明

方法；以字节为单位返回 XML 文档的大小。

另请参见

XML.getBytesLoaded()


XML.hasChildNodes()

可用性

Flash Player 5。

用法

my_xml.hasChildNodes()

参数

无。

返回

一个布尔值。

说明

方法；如果指定的 XML 对象有子级节点，则返回 true；否则返回 false。

示例

下面的示例在用户定义的函数中使用来自 XML 对象的信息。

if (rootNode.hasChildNodes()) {
  myfunc (rootNode.firstChild);
}


XML.ignoreWhite

可用性

Flash Player 5。

用法

my_xml.ignoreWhite = boolean
XML.prototype.ignoreWhite = boolean

参数

boolean 一个布尔值（true 或 false）。

说明

属性；默认设置为 false。当设置为 true 时，在分析过程中将放弃仅包含空白的文本节点。带有前导或尾随空白的文本节点不受影响。

用法 1：可以为单个 XML 对象设置 ignoreWhite 属性，如下面的代码所示：

my_xml.ignoreWhite = true

用法 2：可以为 XML 对象设置默认 ignoreWhite 属性，如下面的代码所示：

XML.prototype.ignoreWhite = true


XML.insertBefore()

可用性

Flash Player 5。

用法

my_xml.insertBefore(childNode, beforeNode)

参数

childNode 要插入的节点。

beforeNode childNode 插入点前面的节点。

返回

无。

说明

方法；在 XML 对象的子级列表中插入一个新的子级节点，插入位置在 beforeNode 节点之前。如果 beforeNode 参数未定义或为 null，将使用 appendChild() 添加该节点。如果 beforeNode 不是 my_xml 的子级，则插入将失败。


XML.lastChild

可用性

Flash Player 5。

用法

my_xml.lastChild

说明

属性（只读）；计算 XML 对象，并引用父级节点的子级列表中的最后一个子级。如果该节点没有子级，则此方法返回 null。这是只读属性，无法用于操作子级节点；请使用 appendChild()、insertBefore() 和 removeNode() 来操作子级节点。

另请参见

XML.appendChild(), XML.insertBefore(), XML.removeNode()


XML.load()

可用性

Flash Player 5；行为在 Flash Player 7 中发生了变化。

用法

my_xml.load(url)

参数

url 要加载的 XML 文档所位于的 URL。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

返回

无。

说明

方法；从指定的 URL 中加载 XML 文档，并使用下载的 XML 数据替换指定 XML 对象的内容。该 URL 是相对的，并且通过 HTTP 调用。加载过程是异步的；它不会在 load() 方法执行后立即结束。

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

执行 load() 时，XML 对象的属性 loaded 将被设置为 false。在 XML 数据下载完毕后，loaded 属性将被设置为 true，并调用 onLoad() 方法。直到 XML 数据完全下载后，才开始分析。如果该 XML 对象以前包含任何 XML 树，它们将被放弃。

您可以指定自己的事件处理函数来代替 onLoad() 方法。

示例

下面是一个使用 XML.load() 的简单示例：

doc = new XML();
doc.load ("theFile.xml");

另请参见

XML.loaded, XML.onLoad()


XML.loaded

可用性

Flash Player 5。

用法

my_xml.loaded

说明

属性（只读）；确定由 XML.load() 调用启动的文档加载过程是否已完成。如果该过程成功完成，则此方法返回 true；否则返回 false。

示例

下面的示例在一个简单的脚本中使用 XML.loaded。

if (doc.loaded) {
  gotoAndPlay(4);
}


XML.nextSibling

可用性

Flash Player 5。

用法

my_xml.nextSibling

说明

属性（只读）；计算 XML 对象，并引用父级节点的子级列表中的下一个同级。如果该节点没有下一个同级节点，则此方法返回 null。这是一个只读属性，无法用于操作子级节点。请使用 appendChild()、insertBefore() 和 removeNode() 来操作子级节点。

另请参见

XML.appendChild(), XML.insertBefore(), XML.removeNode()


XML.nodeName

可用性

Flash Player 5。

用法

my_xml.nodeName

说明

属性；XML 对象的节点名称。如果该 XML 对象是一个 XML 元素 (nodeType == 1)，则 nodeName 是 XML 文件中表示该节点的标签的名称。例如，TITLE 是 HTML 中 TITLE 标签的 nodeName。如果该 XML 对象是一个文本节点 (nodeType == 3)，则 nodeName 为 null。

另请参见

XML.nodeType


XML.nodeType

可用性

Flash Player 5。

用法

my_xml.nodeType

说明

属性（只读）；采用或返回一个 nodeType 值。值为 1 表示 XML 元素；值为 3 表示文本节点。

另请参见

XML.nodeValue


XML.nodeValue

可用性

Flash Player 5。

用法

my_xml.nodeValue

说明

属性；该 XML 对象的节点值。如果该 XML 对象是一个文本节点，则 nodeType 为 3，而 nodeValue 为该节点的文本。如果该 XML 对象是一个 XML 元素（节点类型为 1），则其 nodeValue 为 null，而且该属性为只读。

另请参见

XML.nodeType


XML.onData

可用性

Flash Player 5

用法

my_xml.onData = function(src) {
  // 此处是您的语句
}

参数

src 服务器发送的原始数据，通常为 XML 格式。

返回

无。

说明

事件处理函数；当 XML 文本从服务器上被完全下载后，或当从服务器上下载 XML 文本的过程中出现错误时调用该处理函数。在分析 XML 之前调用这个处理函数，因此它可用于调用一个自定义分析例程，从而不必使用 Flash XML 分析器。XML.onData 方法或者返回 undefined 值，或者返回一个包含从服务器上下载的 XML 文本的字符串。如果返回值为 undefined，说明从服务器上下载 XML 时出现了错误。

默认情况下，XML.onData 方法将调用 XML.onLoad()。可以用您自己定义的行为覆盖 XML.onData 方法，但这时就不再调用 XML.onLoad() 了，除非在您的 XML.onData 实现中又调用了该方法。

示例

onData 方法的默认实现如下例所示：

XML.prototype.onData = function (src) {
  if (src == undefined) {
    this.onLoad(false);
  } else {
    this.parseXML(src);
    this.loaded = true;
    this.onLoad(true);
  }
}

可以覆盖 XML.onData 方法，从而截获 XML 文本而不对其进行分析。


XML.onLoad()

可用性

Flash Player 5。

用法

my_xml.onLoad = function (success) {
  // 此处是您的语句
}

参数

success 一个布尔值，指示 XML.load() 或 XML.sendAndLoad() 操作是否成功加载了该 XML 对象。

返回

无。

说明

事件处理函数；接收到来自服务器的 XML 文档时由 Flash Player 调用。如果成功地收到了 XML 文档，则 success 参数为 true。如果未收到该文档，或在接收来自服务器响应时出现错误，则 success 参数为 false。该方法的默认实现是不活动的。若要覆盖默认实现，必须指定一个包含您自己的动作的函数。

示例

下面的示例为一个简单的电子商务店面应用程序创建一个简单的 SWF 文件。sendAndLoad() 方法传输包含用户名和密码的 XML 元素，并设置一个 onLoad 处理函数来处理服务器的应答。

function myOnLoad(success) {
  if (success){
    if (e.firstChild.nodeName == "LOGINREPLY_xml" &&
        e.firstChild.attributes.status == "OK") {
      gotoAndPlay("loggedIn")
    } else {
      gotoAndStop("loginFailed")
    }
  } else {
    gotoAndStop("connectionFailed")
  }
}
var myLoginReply_xml = new XML();
myLoginReply_xml.onLoad = myOnLoad;
my_xml.sendAndLoad("http://www.samplestore.com/login.cgi",
            myLoginReply_xml);

另请参见

function, XML.load(), XML.sendAndLoad()


XML.parentNode

可用性

Flash Player 5。

用法

my_xml.parentNode

说明

属性（只读）；引用指定 XML 对象的父级节点，如果该节点没有父级，则返回 null。这是一个只读属性，无法用于操作子级节点；请使用 appendChild()、insertBefore() 和 removeNode() 来操作子级。


XML.parseXML()

可用性

Flash Player 5。

用法

my_xml.parseXML(source)

参数

source 要分析并传递给指定 XML 对象的 XML 文本。

返回

无。

说明

方法；分析 source 参数中指定的 XML 文本，并使用得到的 XML 树填充指定的 XML 对象。XML 对象中任何现有的树将被放弃。


XML.previousSibling

可用性

Flash Player 5。

用法

my_xml.previousSibling

说明

属性（只读）；返回一个对父级节点的子级列表中的前一个同级的引用。如果该节点没有前一个同级节点，则此属性的值为 null。这是一个只读属性，不能用于操作子级节点；请使用 XML.appendChild()、XML.insertBefore() 和 XML.removeNode() 来操作子级节点。


XML.removeNode()

可用性

Flash Player 5。

用法

my_xml.removeNode()

参数

无。

返回

无。

说明

方法；从指定 XML 对象的父级中将该对象删除。该节点的所有后代也将被删除。


XML.send()

可用性

Flash Player 5。

用法

my_xml.send(url, [window])

参数

url 指定 XML 对象的目标 URL。

window 显示服务器返回数据的浏览器窗口：_self 指定当前窗口中的当前帧，_blank 指定一个新窗口，_parent 指定当前帧的父级，_top 指定当前窗口中的顶级帧。此参数是可选的；如果未指定 window 参数，则与指定 _self 相同。

返回

无。

说明

方法；将指定的 XML 对象编码为 XML 文档，并使用 POST 方法将其发送到指定的 URL。


XML.sendAndLoad()

可用性

Flash Player 5；行为在 Flash Player 7 中发生了变化。

用法

my_xml.sendAndLoad(url, targetXMLobject)

参数

url 指定 XML 对象的目标 URL。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

targetXMLobject 一个由 XML 构造函数方法创建的 XML 对象，该对象将接收来自服务器的返回信息。

返回

无。

说明

方法；将指定的 XML 对象编码为 XML 文档，并使用 POST 方法将其发送到指定的 URL，下载服务器的响应，然后将其加载到参数中指定的 targetXMLobject 中。服务器响应的加载方式与 load() 方法使用的方式相同。

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件。有关更多信息，请参见关于允许跨域数据加载。

执行 load() 时，XML 对象的属性 loaded 将被设置为 false。在 XML 数据下载完毕后，loaded 属性将被设置为 true，并调用 onLoad() 方法。直到 XML 数据完全下载后，才开始分析。如果该 XML 对象以前包含任何 XML 树，它们将被放弃。

另请参见

XML.load()


XML.status

可用性

Flash Player 5。

用法

my_xml.status

说明

属性；自动设置并返回一个数值，该数值指示 XML 文档是否成功地分析为 XML 对象。这些数字状态代码以及每个代码的说明列表如下：

  • 0 没有错误；成功地完成了分析。
  • -2 一个 CDATA 部分没有正确结束。
  • -3 XML 声明没有正确结束。
  • -4 DOCTYPE 声明没有正确结束。
  • -5 一个注释没有正确结束。
  • -6 一个 XML 元素有格式错误。
  • -7 内存不足。
  • -8 一个属性值没有正确结束。
  • -9 一个开始标签没有匹配的结束标签。
  • -10 遇到一个没有匹配的开始标签的结束标签。


XML.toString()

可用性

Flash Player 5。

用法

my_xml.toString()

参数

无。

返回

字符串。

说明

方法；计算指定的 XML 对象；构造一个包括节点、子级和属性的 XML 结构的文本表示形式，并以字符串形式返回结果。

对于顶级 XML 对象（那些用构造函数创建的对象），XML.toString() 首先输出文档的 XML 声明（存储在 XML.xmlDecl 中），随后输出文档的 DOCTYPE 声明（存储在 XML.docTypeDecl 中），然后输出该对象中所有 XML 节点的文本表示形式。如果 XML.xmlDecl 未定义，则不输出 XML 声明。如果 XML.docTypeDecl 未定义，则不输出 DOCTYPE 声明。

示例

下面的代码是 XML.toString() 方法的一个示例，该示例将 <h1>test</h1> 发送到“输出”面板。

node = new XML("<h1>test</h1>");
trace(node.toString());

另请参见

XML.docTypeDecl, XML.xmlDecl


XML.xmlDecl

可用性

Flash Player 5。

用法

my_xml.xmlDecl

说明

属性；指定有关文档的 XML 声明的信息。将 XML 文档分析为 XML 对象之后，该属性被设置为文档的 XML 声明的文本。使用 XML 声明的字符串表示形式而不是 XML 节点对象设置该属性。如果在分析操作过程中未遇到 XML 声明，则该属性将被设置为 undefined。XML.toString() 方法首先输出 XML.xmlDecl 的内容，然后才输出 XML 对象中的其它文本。如果 XML.xmlDecl 包含 undefined 类型，则不输出 XML 声明。

示例

下面的示例使用 XML.xmlDecl 为一个 XML 对象设置 XML 文档声明。

my_xml.xmlDecl = "<?xml version=\"1.0\" ?>";

下面是一个 XML 声明的示例：

<?xml version="1.0" ?>

另请参见

XML.docTypeDecl, XML.toString()


XMLNode 类

可用性

Flash Player 5。

说明

XMLnode 类支持以下属性、方法和集合；有关它们的用法的信息，请参见相应的 XML 类条目。

属性、方法或集合 | 相应的 XML 类条目
appendChild() | XML.appendChild()
attributes | XML.attributes
childNodes | XML.childNodes
cloneNode() | XML.cloneNode()
firstChild | XML.firstChild
hasChildNodes() | XML.hasChildNodes()
insertBefore() | XML.insertBefore()
lastChild | XML.lastChild
nextSibling | XML.nextSibling
nodeName | XML.nodeName
nodeType | XML.nodeType
nodeValue | XML.nodeValue
parentNode | XML.parentNode
previousSibling | XML.previousSibling
removeNode() | XML.removeNode()
toString() | XML.toString()

另请参见

XML 类


XMLSocket 类

可用性

Flash Player 5。

说明

XMLSocket 类用于实现客户端套接字。利用客户端套接字，运行 Flash Player 的计算机可以与由 IP 地址或域名标识的服务器计算机进行通讯。对于要求滞后时间较短的客户端/服务器应用程序，如实时聊天系统，XMLSocket 类非常有用。传统的基于 HTTP 的聊天解决方案频繁轮询服务器，并使用 HTTP 请求来下载新的消息。与此相反，XMLSocket 聊天解决方案保持与服务器的开放连接，这一连接允许服务器即时发送传入的消息，而无需客户端发出请求。

若要使用 XMLSocket 类，服务器计算机必须运行可识别 XMLSocket 类使用的协议的守护程序。 协议如下所示：

  • XML 消息通过全双工 TCP/IP 流套接字连接发送。
  • 每个 XML 消息都是一个完整的 XML 文档，以零字节结束。
  • 通过一个 XMLSocket 连接发送和接收的 XML 消息数没有限制。

XMLSocket 对象连接到服务器的方式和位置受下列限制：

  • XMLSocket.connect() 方法只能连接到端口号大于或等于 1024 的 TCP 端口。这种限制的一个后果是，与 XMLSocket 对象通讯的服务器守护程序也必须分配到端口号大于或等于 1024 的端口。端口号小于 1024 的端口通常由系统服务（如 FTP、Telnet 和 HTTP）使用，因此，出于安全方面的考虑，禁止 XMLSocket 对象使用这些端口。这种端口号方面的限制可以减少不恰当地访问和滥用这些资源的可能性。
  • XMLSocket.connect() 方法只能连接到 SWF 文件所在域中的计算机。这一限制不适用于在本地磁盘外运行的 SWF 文件。（这一限制与 loadVariables()、XML.sendAndLoad() 和 XML.load() 的安全规则相同。）若要连接到在 SWF 所在域之外的其它域中运行的服务器守护程序，可以在该服务器上创建一个允许从特定域进行访问的安全策略文件。有关为 XMLSocket 连接创建策略文件的更多信息，请参见关于允许跨域数据加载。

将服务器设置为与 XMLSocket 对象进行通讯可能会遇到一些困难。如果您的应用程序不需要进行实时交互，请使用 loadVariables() 动作或 Flash 的基于 HTTP 的 XML 服务器连接（XML.load()、XML.sendAndLoad()、XML.send()），而不要使用 XMLSocket 类。

若要使用 XMLSocket 类的方法，您必须首先使用构造函数 new XMLSocket 创建一个新的 XMLSocket 对象。

XMLSocket 类的方法摘要

方法 | 说明
XMLSocket.close() | 关闭一个打开的套接字连接。
XMLSocket.connect() | 建立一个到指定服务器的连接。
XMLSocket.send() | 向服务器发送一个 XML 对象。

XMLSocket 类的事件处理函数摘要

事件处理函数 | 说明
XMLSocket.onClose() | 当 XMLSocket 连接关闭时调用的事件处理函数。
XMLSocket.onConnect() | 一个事件处理函数，在通过 XMLSocket.connect() 启动的连接请求成功或失败后，Flash Player 将调用此函数。
XMLSocket.onData() | 当 XML 消息已从服务器上下载后调用的事件处理函数。
XMLSocket.onXML() | 当 XML 对象从服务器到达时调用的事件处理函数。

XMLSocket 类的构造函数

可用性

Flash Player 5。

用法

new XMLSocket()

参数

无。

返回

无。

说明

构造函数；创建一个新的 XMLSocket 对象。XMLSocket 对象开始时未与任何服务器连接。必须调用 XMLSocket.connect() 将该对象连接到服务器。


XMLSocket.close()

可用性

Flash Player 5。

用法

myXMLSocket.close()

参数

无。

返回

无。

说明

方法；关闭 XMLSocket 对象指定的连接。

另请参见

XMLSocket.connect()


XMLSocket.connect()

可用性

Flash Player 5；行为在 Flash Player 7 中发生了变化。

用法

myXMLSocket.connect(host, port)

参数

host 一个完全限定 DNS 域名，或一个 aaa.bbb.ccc.ddd 形式的 IP 地址。也可指定 null，这将连接到 SWF 文件所在的主机服务器。如果发布此调用的 SWF 文件运行在 Web 浏览器上，则 url 必须与 SWF 文件位于同一个域中；有关详细信息，请参见下面的“说明”。

port 主机上用于建立连接的 TCP 端口号。端口号必须为 1024 或更高。

返回

一个布尔值。

说明

方法；使用指定的 TCP 端口（必须为 1024 或更大）建立一个到指定 Internet 主机的连接，并根据是否成功建立了连接，返回 true 或 false。如果您不知道 Internet 宿主计算机的端口号，请与您的网络管理员联系。

如果将 host 参数指定为 null，则所联系的主机为调用 XMLSocket.connect() 的 SWF 文件所在的主机。例如，如果 SWF 文件是从 http://www.yoursite.com 下载的，则将 host 参数指定为 null 与输入 www.yoursite.com 的 IP 地址效果相同。

在运行于 Flash Player 7 以前版本的播放器的 SWF 文件中，url 必须与发布此调用的 SWF 文件位于同一个超级域中。例如，位于 www.someDomain.com 的 SWF 文件可以从位于 store.someDomain.com 的 SWF 文件加载变量，这是因为这两个文件都在同一个超级域 someDomain.com 中。

如果任何版本的 SWF 文件运行在 Flash Player 7 或更高版本中，url 必须处于完全相同的域中（请参见Flash Player 安全功能）。例如，位于 www.someDomain.com 的 SWF 文件只能从同样位于 www.someDomain.com 的 SWF 文件加载变量。如果要从其它域中加载变量，则可以在承载被访问的 SWF 文件的服务器上放置一个跨域策略文件（必须将其放置在运行于与套接字服务器所在的同一个域中端口 80 上的 HTTP 服务器上）。有关更多信息，请参见关于允许跨域数据加载。

执行 load() 时，XML 对象的属性 loaded 将被设置为 false。在 XML 数据下载完毕后，loaded 属性将被设置为 true，并调用 onLoad() 方法。直到 XML 数据完全下载后，才开始分析。如果该 XML 对象以前包含任何 XML 树，它们将被放弃。

如果 XMLSocket.connect() 返回 true 值，则表示连接过程的初始阶段是成功的；随后将调用 XMLSocket.onConnect 方法以确定最终连接是否成功。如果 XMLSocket.connect() 返回 false，则表示未能建立连接。

示例

下面的示例使用 XMLSocket.connect() 连接到 SWF 文件所在的主机，然后使用 trace 显示返回值，指示连接是否成功。

function myOnConnect(success) {
  if (success){
    trace ("Connection succeeded!")
  } else {
    trace ("Connection failed!")
  }
}
socket = new XMLSocket()
socket.onConnect = myOnConnect
if (!socket.connect(null, 2000)) {
  trace ("Connection failed!")
}

另请参见

function, XMLSocket.onConnect()


XMLSocket.onClose()

可用性

Flash Player 5。

用法

myXMLSocket.onClose() = function() {
  // 此处是您的语句
}

参数

无。

返回

无。

说明

事件处理函数；只有当某个打开的连接被服务器关闭时才调用此函数。此方法的默认实现不执行任何动作。若要覆盖默认实现，必须指定一个包含您自己的动作的函数。

另请参见

function, XMLSocket.onConnect()


XMLSocket.onConnect()

可用性

Flash Player 5。

用法

myXMLSocket.onConnect(success)
  // 此处是您的语句
}

参数

success 一个布尔值，指示是否成功建立了套接字连接（true 或 false）。

返回

无。

说明

事件处理函数；在通过 XMLSocket.connect() 启动的连接请求成功或失败后，Flash Player 将调用该函数。如果连接成功，则 success 参数为 true；否则 success 参数为 false。

此方法的默认实现不执行任何动作。若要覆盖默认实现，必须指定一个包含您自己的动作的函数。

示例

下面的示例说明在一个简单的聊天应用程序中为 onConnect 方法指定替换函数的过程。

该函数根据是否成功建立了连接，控制为用户显示哪一屏幕。如果连接成功建立，则为用户显示标记为 startChat 的帧上的主聊天屏幕。如果连接不成功，则为用户显示标记为 connectionFailed 的帧上的带到疑难解答信息的屏幕。

function myOnConnect(success) {
  if (success) {
    gotoAndPlay("startChat")
  } else {
    gotoAndStop("connectionFailed")
  }
}

在使用构造函数方法创建了 XMLSocket 对象后，脚本使用赋值运算符设置 onConnect 方法：

socket = new XMLSocket();
socket.onConnect = myOnConnect;

最后，启动连接。如果 connect() 返回 false，则 SWF 文件将直接跳转到标记为 connectionFailed 的帧，且永远不会调用 onConnect。如果 connect() 返回 true，则 SWF 文件将跳转到标记为 waitForConnection 的帧，即“请稍候”屏幕。SWF 文件将停留在 waitForConnection 帧，直到调用 onConnect 处理函数。该函数将在以后某个时刻执行，具体取决于网络的滞后时间。

if (!socket.connect(null, 2000)) {
  gotoAndStop("connectionFailed")
} else {
  gotoAndStop("waitForConnection")
}

另请参见

function, XMLSocket.connect()


XMLSocket.onData()

可用性

Flash Player 5。

用法

XMLSocket.onData = function(src) {
  // 此处是您的语句
}

参数

src 一个字符串，包含服务器发送的数据。

返回

无。

说明

事件处理函数；当从服务器上下载完消息时调用，以零字节结束。您可以覆盖 XMLSocket.onData 以截获服务器发送的数据，而不将其分析为 XML。如果您传输的是任意格式的数据包，而且希望在数据到达时直接操纵这些数据，而不让 Flash Player 将数据分析为 XML，则上述方法会非常有用。

默认情况下，XMLSocket.onData 方法调用 XMLSocket.onXML 方法。如果用您自己的行为覆盖了 XMLSocket.onData，则将不再调用 XMLSocket.onXML，除非在您的 XMLSocket.onData 实现中又调用了该方法。

XMLSocket.prototype.onData = function (src) {
  this.onXML(new XML(src));
}

在上面的示例中，src 参数是一个包含从服务器上下载的 XML 文本的字符串。零字节终止符不包含在该字符串中。


XMLSocket.onXML()

可用性

Flash Player 5。

用法

myXMLSocket.onXML(object) = function() {
  // 此处是您的语句
}

参数

object 一个 XML 对象，它包含从服务器上接收到的已经过分析的 XML 文档。

返回

无。

说明

事件处理函数；在包含 XML 文档的指定 XML 对象通过打开的 XMLSocket 连接到达时，Flash Player 将调用此函数。XMLSocket 连接可用于在客户端与服务器之间传输数量无限的 XML 文档。每个文档都以 0（零）字节终止。当 Flash Player 收到 0 字节时，它分析自从前一个 0 字节以来收到的所有 XML，如果这是收到的第一条消息，则分析建立连接以来收到的所有 XML。每一批经过分析的 XML 都被视作单个 XML 文档，并被传递给 onXML 方法。

此方法的默认实现不执行任何动作。若要覆盖默认实现，必须指定一个包含您定义的动作的函数。

示例

下面的函数在一个简单的聊天应用程序中覆盖 onXML 方法的默认实现。函数 myOnXML 指示该聊天应用程序识别一个 XML 元素 (MESSAGE)，该元素的格式如下所示。

<MESSAGE USER="John" TEXT="Hello, my name is John!" />.

必须首先在该 XMLSocket 对象中设置 onXML 处理函数，如下所示：

socket.onXML = myOnXML;

假定函数 displayMessage() 是一个用户定义的函数，该函数显示用户收到的消息。

function myOnXML(doc) {
  var e = doc.firstChild;
  if (e != null && e.nodeName == "MESSAGE") {
    displayMessage(e.attributes.user, e.attributes.text);
  }
}

另请参见

function


XMLSocket.send()

可用性

Flash Player 5。

用法

myXMLSocket.send(object)

参数

object 要传输到服务器的 XML 对象或其它数据。

返回

无。

说明

方法；将在 object 参数中指定的 XML 对象或数据转换成一个字符串，并将其传输到服务器，后面跟有一个零字节。如果 object 是一个 XML 对象，则该字符串是这个 XML 对象的 XML 文本表示形式。发送操作是异步的；它将立即返回，但数据可能会以后传输。XMLSocket.send() 方法不返回指示数据是否成功传输的值。

如果 myXMLSocket 对象未连接到服务器（使用 XMLSocket.connect()），则 XMLSocket.send() 操作将失败。

示例

下面的示例说明如何指定用户名和密码，并将 XML 对象 my_xml 发送到服务器：

loginReplyXML = new XML();
var myLogin = my_xml.createElement("login");
myLogin.attributes.username = usernameTextField;
myLogin.attributes.password = passwordTextField;
my_xml.appendChild(myLogin);
myXMLSocket.send(my_xml);

另请参见

XMLSocket.connect()

上一页


动作脚本入门概述

Macromedia Flash MX 2004 和 Flash MX Professional 2004 是具有专业水准的标准创作工具，使您的产品可以给用户带来更美好、印象更深刻的 Web 体验。动作脚本是您要在 Flash 内开发应用程序时所使用的语言。您不必使用动作脚本就可以使用 Flash，但是，如果您要提供与用户的交互性、使用除内置于 Flash 中的对象之外的其它对象（例如按钮和影片剪辑）或者令您的 SWF 文件更适合于用户使用，可能还是要使用动作脚本。


面向用户

本手册假定您已安装了 Flash MX 2004 或 Flash MX Professional 2004 并了解其用法。您应该知道如果将对象放置于舞台上以及如何在 Flash 创作环境中处理对象。如果您在以前曾编写过程序，将会感到动作脚本对您并不陌生。但即使您以前没有编写过程序，动作脚本也不难学。您可以很容易地从一些非常简单的命令入手，并逐步掌握更复杂的功能。


系统要求

动作脚本没有除 Flash MX 2004 或 Flash MX Professional 2004 之外的任何额外系统要求。不过，本文档假设您使用默认的发布设置来用于 Flash 文件：Flash Player 7 和动作脚本 2.0。如果您更改了这些设置中的任何一个，则本文档中所示的说明和代码示例可能无法正确使用。


使用本文档

本文档提供动作脚本语法的概述、有关在使用不同类型的对象时如何使用动作脚本的信息以及有关每一语言元素的语法和用法的详细信息。您可以从学习本文档的其余部分中使用的术语和基本概念开始（请参见动作脚本基础）。接下来，学习编写和调试 Flash 脚本的机制（请参见编写和调试脚本）。

在编写您自己的脚本前，应该首先完成“使用动作脚本编写脚本”和“使用条件逻辑和发送数据创建表单”课程，这两课将教授您如何亲手编写动作脚本。若要找到这些课程，请选择“帮助”>“如何”>“快速任务”。

在您理解了这些基础知识后，就可以利用本文档其余部分中提供的信息，应用于您要获得的特定效果。例如，如果您要学习如何编写在用户单击鼠标时执行某一操作的脚本，请参见处理事件。

当您查找与要使用的具体命令有关的信息时，可以在动作脚本字典概述中查找其条目；在该部分中按字母顺序列出了每一语言元素。


排版印刷约定

在本手册中采用以下排版印刷约定：

  • 代码字体指示动作脚本代码。
  • 斜体代码字体 指示元素，例如动作脚本参数或对象名称，您在编写脚本时可以用自己的文本来代替这一字体的内容。


在本文档中使用的术语

在本手册中使用以下术语：

  • 您 指的是编写脚本或应用程序的开发人员。
  • 用户 指的是将运行您的脚本和应用程序的人士。
  • 编译时 是您发布、导出、测试或调试您的文档的时间。
  • 运行时 是在 Flash Player 中运行您的脚本的时间。

动作脚本术语（例如方法 和对象）在动作脚本基础中定义。


附加资源

与 Flash 和相关产品有关的特定文档分别提供。

  • 有关在 Flash 创作环境中工作的信息，请参见“使用 Flash 帮助”。有关使用组件的信息，请参见“使用组件帮助”。
  • 有关使用 Flash Communication Server 创建通讯应用程序的信息，请参见开发通讯应用程序 和管理 Flash Communication Server。
  • 有关使用 Flash 应用程序访问 Web 服务的信息，请参见使用 Flash Remoting。

Macromedia DevNet Web 站点 (www.macromedia.com/go/developer_cn) 定期用有关 Flash 的最新信息进行更新，同时还提供来自专家用户的建议、高级主题、示例、提示和其它更新。请经常查看这一 Web 站点，了解有关 Flash 以及如何充分利用这一程序的最新消息。

Macromedia Flash 支持中心 (www.macromedia.com/go/flash_support_cn) 提供技术说明、文档更新以及指向 Flash 社区中的其它资源的链接。


新增功能

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了几项改进，使您能够更方便地使用动作脚本语言编写更为坚实的脚本。本章将讨论这些新功能，这些功能包括新的语言元素、改进的编辑和调试工具（请参见动作脚本编辑器更改和调试方面的更改）和更为面向对象的编程模型（请参见新的面向对象编程模型）。

如果您计划将任何现有的 Flash MX 或更早版本的文件发布到 Flash Player 7，则还应仔细阅读本章中包含的增补部分（请参见将现有脚本移植到 Flash Player 7）。


新增的和经改进的动作脚本语言元素

本节介绍 Flash MX 2004 中新增的或经改进的动作脚本语言元素。若要在脚本中使用这些元素中的任何一种，都必须在发布文档时指定以 Flash Player 7（默认设置）为目标播放器。

  • Array.sort() 和 Array.sortOn() 方法可用来添加参数以指定附加的排序选项，例如升序和降序排序，排序时是否区分大小写，等等。
  • Button.menu、MovieClip.menu 和 TextField.menu 属性与新增的 ContextMenu 和 ContextMenuItem 类一起用于将上下文菜单项与 Button、MovieClip 或 TextField 对象相关联。
  • ContextMenu 类和 ContextMenuItem 类用于自定义上下文菜单，当用户在 Flash Player 中右键单击 (Microsoft Windows) 或按住 Control 键并单击 (Macintosh) 时，将显示此菜单。
  • Error 类以及 throw 与 try..catch..finally 命令可用于实现更可靠的异常处理。
  • LoadVars.addRequestHeader() 和 XML.addRequestHeader() 方法用于添加或更改用 POST 动作发送的 HTTP 请求标头（例如，Content-Type 或 SOAPAction）。
  • MMExecute() 函数可用于从动作脚本中发出 Flash JavaScript API 命令。
  • （仅限于 Windows）当用户使用鼠标滚轮滚动时，将生成 Mouse.onMouseWheel 事件侦听器。
  • MovieClip.getNextHighestDepth() 方法用于在运行时创建 MovieClip 实例，并且确保它们的对象在父影片剪辑的 z 顺序空间中呈现在其它对象的前面。MovieClip.getInstanceAtDepth() 方法用于以深度作为搜索索引来访问动态创建的 MovieClip 实例。
  • MovieClip.getSWFVersion() 方法用于确定加载的 SWF 文件支持哪个版本的 Flash Player。
  • MovieClip.getTextSnapshot() 方法和 TextSnapshot 对象用于处理影片剪辑中静态文本字段内的文本。
  • MovieClip._lockroot 属性用于指定影片剪辑将作为加载到其中的任何影片剪辑的 _root，或者指定影片剪辑中 _root 的含义在该影片剪辑加载到另一个影片剪辑中时将保持不变。
  • MovieClipLoader 类用于在将文件加载到影片剪辑的过程中监视文件的进度。
  • NetConnection 类和 NetStream 类用于对本地视频文件（FLV 文件）进行流式处理。
  • PrintJob 类使您（和用户）能够更多地控制 Flash Player 中的打印。
  • Sound.onID3 事件处理函数可用于访问与包含 MP3 文件的 Sound 对象关联的 ID3 数据。
  • Sound.ID3 属性可用于访问 MP3 文件中的元数据。
  • System 类有了新的对象和方法，而且 System.capabilities 对象有了几个新属性。
  • TextField.condenseWhite 属性可用于从浏览器中呈现的 HTML 文本字段中删除多余的空白。
  • TextField.mouseWheelEnabled 属性用于指定当鼠标指针位于文本字段上并且用户滚动鼠标滚轮时，文本字段的内容是否应滚动。
  • TextField.StyleSheet 类可用于创建包含文本格式设置规则（例如，字体大小、颜色和其它格式样式）的样式表对象。
  • TextField.styleSheet 属性可用于将样式表对象附加到文本字段上。
  • TextFormat.getTextExtent() 方法接受一个新参数，它所返回的对象包含一个新成员。
  • XML.addRequestHeader() 方法可用于添加或更改用 POST 动作发送的 HTTP 请求标头（例如，Content-Type 或 SOAPAction）。


新安全模型和旧 SWF 文件

Flash Player 用于确定两个域是否相同的规则在 Flash Player 7 中有所变化。此外，用于确定 HTTP 域提供的 SWF 文件能否以及如何访问 HTTPS 域提供的 SWF 文件或加载 HTTPS 域提供的数据的规则也有所变化。在大多数情况下，这些改动不会对您造成影响，除非要将现有的 SWF 文件移植到 Flash Player 7。

但是，如果 SWF 文件是以 Flash Player 6 或更低版本为目标播放器发布的，而且这些 SWF 文件从存储在服务器上的文件加载数据，则当调用 SWF 在 Flash Player 7 中播放时，用户可能会看到一个以前从未出现过的对话框，询问是否允许访问。通过在存储数据的站点上实施一个策略文件，可以让该对话框不出现。有关此对话框的更多信息，请参见关于与以前的 Flash Player 安全模型的兼容性。

如果您使用的是运行时共享库，可能还需要实现一个策略文件。如果正加载或已加载的 SWF 文件是以 Flash Player 7 为目标播放器发布的，而且这些正加载和已加载的 SWF 文件不是从完全相同的域提供的，则使用一个策略文件来允许访问。有关策略文件的更多信息，请参见关于允许跨域数据加载。


移植脚本

与所有新发布的版本相同，Flash Player 7 比该播放器以前的版本支持更多的动作脚本命令；您可以使用这些命令实现更坚实的脚本。（请参见新增的和经改进的动作脚本语言元素。）但是，如果您在现有脚本中使用这些命令中的任何一个，并且该脚本是以 Flash Player 7 为目标播放器发布的，则该脚本不会正常工作。

例如，如果您的脚本具有名为 Error 的函数，该脚本的编译可能好像是正确的，但在 Flash Player 7 中可能不按照预期的方式运行，因为 Error 现在在动作脚本中是内置类（因此是保留字）。您可以通过将该 Error 函数重命名为其它名称（例如 ErrorCondition），纠正脚本中的这一错误。

此外，在 Flash Player 7 中还进行了若干更改，这些更改会影响一个 SWF 文件访问其它 SWF 文件的方式、加载外部数据的方式以及访问本地设置和数据（例如隐私设置和本地永久共享对象）的方式。最后，一些现有功能的行为也有所变化。

如果现有脚本是针对 Flash Player 6 或更低版本编写的，而您希望以 Flash Player 7 为目标播放器发布这些脚本，则需要对这些脚本进行修改，使其符合 Flash Player 7 的实现方式，并按照设计工作。本节将讨论这些修改。


ECMA-262 版本 4 符合性

为了更加严格地遵从 ECMA-262 版本 4 建议，在 Flash Player 7 中进行了几项更改（请参见 www.mozilla.org/js/language/es4/index.html）。除了动作脚本 2.0 中提供的基于类的编程技术（请参见新的面向对象编程模型）之外，还增加了其它一些功能并更改了某些行为。此外，在以 Flash Player 7 为目标播放器进行发布和使用动作脚本 2.0 时，您可以将一种对象类型转换为另一种对象类型。有关更多信息，请参见转换对象。这些功能不要求更新现有脚本；但是，如果要将脚本发布到 Flash Player 7，然后继续对脚本进行修改和改进，则可能会需要使用这些功能。

与上文中提到的更改不同，下表中列出的更改（某些更改也可以提高 ECMA 符合性）可能会导致现有脚本表现出与以前不同的行为。如果在要发布到 Flash Player 7 的现有脚本中使用了这些功能，请检查这些更改，以确保代码仍会按照预期的方式工作，或者确定是否需要改写代码。需要特别注意的是，因为在某些情况下对 undefined 的计算结果是不同的，所以您应该初始化脚本中移植到 Flash Player 7 的所有变量。

以 Flash Player 7 为目标播放器发布的 SWF 文件 | 以早期 Flash Player 版本为目标播放器发布的 SWF 文件
支持区分大小写（仅大小写不同的变量名被解释为不同的变量）。这一更改还会影响使用 #include 加载的文件和使用 LoadVars.load() 加载的外部变量。有关更多信息，请参见区分大小写。 | 不支持区分大小写（仅大小写不同的变量名被解释为相同的变量）。
在数值上下文中求 undefined 的值，将返回 NaN。 myCount +=1; trace(myCount); // NaN | 在数值上下文中求 undefined 的值，将返回 0。 myCount +=1; trace(myCount); // 1
把 undefined 转换为字符串时，结果为 undefined。 firstname = "Joan "; lastname = "Flender"; trace(firstname + middlename + lastname); // Joan undefinedFlender | 把 undefined 转换为字符串时，结果为 ""（一个空字符串）。 firstname = "Joan "; lastname = "Flender"; trace(firstname + middlename + lastname); // Joan Flender
将字符串转换为布尔值时，如果字符串的长度大于零，结果为 true；如果是空字符串，则结果为 false。 | 将字符串转换为布尔值时，首先会将字符串转换为数字；如果数字为非零，结果为 true，否则结果为 false。
在设置数组的长度时，只有有效的数字字符串才设置该长度。例如，"6" 正确，而 " 6" 或 "6xyz" 不正确。 my_array=new Array(); my_array["6"] ="x"; trace(my_array.length); // 0 my_array["6xyz"] ="x"; trace(my_array.length); // 0 my_array["6"] ="x"; trace(my_array.length); // 7 | 在设置数组的长度时，即使是格式错误的数字字符串也能设置长度： my_array=new Array(); my_array["6"] ="x"; trace(my_array.length); // 7 my_array["6xyz"] ="x"; trace(my_array.length); // 7 my_array["6"] ="x"; trace(my_array.length); // 7


设置和本地数据的域名规则

在 Flash Player 6 中，在访问本地设置（例如摄像头或麦克风访问权限）或本地永久数据（共享对象）时默认采用超域匹配规则。即，用于在 here.xyz.com、there.xyz.com 和 xyz.com 承载的 SWF 文件的设置和数据都是共享的，并且都存储在 xyz.com 中。

在 Flash Player 7 中，默认采用完全域匹配规则。即，用于在 here.xyz.com 承载的文件的设置和数据存储在 here.xyz.com 中，用于在 there.xyz.com 承载的文件的设置和数据存储在 there.xyz.com 中，依此类推。

新属性 System.exactSettings 用于指定要使用的规则。以 Flash Player 6 或更高版本为目标播放器发布的文件支持此属性。对于以 Flash Player 6 为目标播放器发布的文件，默认值是 false，意味着采用超域匹配规则。对于以 Flash Player 7 为目标播放器发布的文件，默认值是 true，意味着采用完全域匹配规则。

如果您使用设置或永久本地数据并想要以 Flash Player 7 为目标播放器发布 Flash Player 6 SWF 文件，则最好在移植文件中将该值设置为 false。

有关更多信息，请参见System.exactSettings。


SWF 文件之间的跨域和子域访问

在开发彼此通讯的一系列 SWF 文件时（例如，在使用 loadMovie()、MovieClip.loadMovie()、MovieClipLoader.LoadClip() 或本地连接对象时），可以在不同的域中承载影片，或者在一个超域的不同子域中承载影片。

在以 Flash Player 5 或更低版本为目标播放器发布的文件中，对跨域或子域访问没有限制。

在以 Flash Player 6 为目标播放器发布的文件中，可以使用 LocalConnection.allowDomain 处理函数或 System.security.allowDomain() 方法指定允许的跨域访问（例如，让 someOtherSite.com 上的文件可以访问 someSite.com 上的文件），并且不需要执行任何命令就允许子域访问（例如，store.someSite.com 上的文件可以访问 www.someSite.com 上的文件）。

对于以 Flash Player 7 为目标播放器发布的文件，其实现 SWF 文件间访问的方式有两点与早期版本不同。首先，Flash Player 7 实现完全域匹配规则，而不是超域匹配规则。因此，所访问的文件（即使该文件是以早于 Flash Player 7 的 Player 版本为目标播放器发布的）必须显式允许跨域或子域访问；在下文将讨论这一主题。其次，在某一使用安全协议 (HTTPS) 的站点承载的文件必须显式允许从使用不安全协议（HTTP 或 FTP）的站点承载的文件的访问；在下一节中将讨论这一主题（请参见SWF 文件之间的 HTTP 到 HTTPS 协议访问）。

因为 Flash Player 7 实现完全域匹配规则，而不是超域匹配规则，所以，如果您希望从以 Flash Player 7 为目标播放器发布的文件访问现有脚本，则可能需要修改这些脚本。（您仍可以 Flash Player 6 为目标播放器发布这些修改后的文件）。如果您在文件中使用了任何 LocalConnection.allowDomain() 或 System.security.allowDomain() 语句并且指定了允许的超域站点，则必须更改参数以改为指定完全域匹配。以下代码显示您可能要进行更改的类型的示例：

// 位于 www.anyOldSite.com 的 SWF 文件中的 Flash Player 6 命令
// 要允许由在 www.someSite.com
// 或在 store.someSite.com 承载的 SWF 文件访问
System.security.allowDomain("someSite.com");
my_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="someSite.com");
}
// 允许运行于 Flash Player 7 或更高版本中的 SWF 文件
// 访问的相应命令
System.security.allowDomain("www.someSite.com", "store.someSite.com");
my_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="www.someSite.com" ||
    sendingDomain=="store.someSite.com");
}

如果您当前没有使用如下语句，可能还需要将这些语句添加到您的文件中。例如，如果您的 SWF 文件承载在 www.someSite.com 中并且想要允许由 store.someSite.com 上以 Flash Player 7 为目标播放器发布的 SWF 文件访问该文件，则必须将如下语句添加到 www.someSite.com 上的文件（您仍可以 Flash Player 6 为目标播放器发布 www.someSite.com 上的文件）。

System.security.allowDomain("store.someSite.com");
my_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="store.someSite.com");
}

总之，如果您以 Flash Player 7 为目标播放器发布满足以下条件的文件，则可能需要修改文件以添加或更改 allowDomain 语句：

  • 您实现了跨 SWF 脚本撰写（使用 loadMovie()、MovieClip.loadMovie()、MovieClipLoader.LoadClip() 或本地连接对象）。
  • 被调用的任何版本的 SWF 文件不是承载在使用安全协议 (HTTPS) 的站点中，或者调用和被调用的 SWF 文件都承载在 HTTPS 站点中。（如果只有被调用的 SWF 文件承载在 HTTPS 站点中，请参见SWF 文件之间的 HTTP 到 HTTPS 协议访问。）
  • 这些 SWF 文件不位于同一域中（例如，一个文件位于 www.domain.com 中，另一个文件位于 store.domain.com 中）。

您需要进行以下更改：

  • 如果被调用的 SWF 文件是以 Flash Player 7 为目标播放器发布的，则在被调用的 SWF 文件中包括 System.security.allowDomain 或 LocalConnection.allowDomain，并且使用完全域名匹配。
  • 如果被调用的 SWF 文件是以 Flash Player 6 为目标播放器发布的，则修改该被调用的文件以添加或更改 System.security.allowDomain 或 LocalConnection.allowDomain 语句，并且使用完全域名匹配，如本节前面部分的代码示例所示。您可以以 Flash Player 6 或 Flash Player 7 为目标播放器发布该修改后的文件。
  • 如果被调用的 SWF 文件是以 Flash Player 5 或更低版本为目标播放器发布的，则将该被调用的文件移植到 Flash Player 6 或 Flash Player 7 中并添加 System.security.allowDomain 语句，并且使用完全域名匹配，如本节前面部分的代码示例所示。（在 Flash Player 5 或更低版本中不支持 LocalConnection 对象）。


SWF 文件之间的 HTTP 到 HTTPS 协议访问

如前面一节中所述（请参见SWF 文件之间的跨域和子域访问），在 Flash Player 7 中已更改了跨域访问规则。除了现在正实现的完全域匹配规则外，您必须显示允许在使用不安全协议的站点上承载的文件可以访问在使用安全协议 (HTTPS) 的站点上承载的文件。根据被调用的文件是以 Flash Player 7 还是 Flash Player 6 为目标播放器发布的，您必须或者实现 allowDomain 语句之一（请参见SWF 文件之间的跨域和子域访问），或者使用新的 LocalConnection.allowInsecure Domain 或 System.security.allowInsecureDomain() 语句。

警告：实现 allowInsecureDomain() 语句将会损及 HTTPS 协议提供的安全性。只有在您无法重新组织您的站点的情况下才应进行这些更改，以便从 HTTPS 协议提供所有 SWF 文件。

以下代码显示您可能要进行更改的类型的示例：

// 位于 https://www.someSite.com 的 Flash Player 6 SWF 文件中的命令
// 允许由在
// http://www.someSite.com 或 http://www.someOtherSite.com 承载的 Flash Player 7 SWF 文件访问
System.security.allowDomain("someOtherSite.com");
my_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="someOtherSite.com");
}
// Flash Player 7 SWF 文件中的相应命令
// 允许由在
// http://www.someSite.com 或 http://www.someOtherSite.com 承载的 Flash Player 7 SWF 文件访问
System.security.allowInsecureDomain("www.someSite.com", "www.someOtherSite.com");
my_lc.allowInsecureDomain = function(sendingDomain) {
  return(sendingDomain=="www.someSite.com" ||
    sendingDomain=="www.someOtherSite.com");
}

如果您当前没有使用如下语句，可能还需要将这些语句添加到您的文件中。即使两个文件位于同一域中（例如，http://www.domain.com 中的文件正调用 https://www.domain.com 中的文件），也可能需要进行修改。

总之，如果您以 Flash Player 7 为目标播放器发布满足以下条件的文件，则可能需要修改您的文件以添加或更改语句：

  • 您实现了跨 SWF 脚本撰写（使用 loadMovie()、MovieClip.loadMovie()、MovieClipLoader.LoadClip() 或本地连接对象）。
  • 调用文件不是使用 HTTPS 协议承载的，被调用文件是使用 HTTPS 承载的。

您必须进行以下更改：

  • 如果被调用文件是以 Flash Player 7 为目标播放器发布的，则在该被调用文件中包括 System.security.allowInsecureDomain 或 LocalConnection.allowInsecureDomain，并且使用完全域名匹配，如本节前面部分的代码示例所示。即使调用和被调用的 SWF 文件都位于同一域中，也要求此语句。
  • 如果被调用文件是以 Flash Player 6 或更低版本为目标播放器发布的，并且调用和被调用文件都位于同一域中（例如，http://www.domain.com 中的文件调用
    https://www.domain.com 中的文件），则不需要进行任何修改。
  • 如果被调用文件是以 Flash Player 6 为目标播放器发布的，这些文件不位于同一域中，并且您不想将该被调用文件移植到 Flash Player 7 中，则修改该被调用文件以添加或更改 System.security.allowDomain 或 LocalConnection.allowDomain，并且使用完全域名匹配，如本节前面部分的代码示例所示。
  • 如果被调用的文件是以 Flash Player 6 为目标播放器发布的并且您要将该被调用的文件移植到 Flash Player 7 中，则在该被调用的文件中包括 System.security.allowInsecureDomain 或 LocalConnection.allowInsecureDomain，并且使用完全域名匹配，如本节前面部分的代码示例所示。即使两个文件都位于同一域中，也要求此语句。
  • 如果被调用文件是以 Flash Player 5 或更低版本为目标播放器发布的，并且两个文件不位于同一域中，您可以执行以下两个事项之一。您或者可以将该被调用文件移植到 Flash Player 6 中，添加或更改 System.security.allowDomain 语句，并且使用完全域名匹配，如本节前面部分的代码示例所示；或者可以将该被调用文件移植到 Flash Player 7 中，在该被调用文件中包括 System.security.allowInsecureDomain 语句，并且使用完全域名匹配，如本节前面部分的代码示例所示。


允许数据访问的服务器端策略文件

Flash 文档可以使用以下数据加载调用之一从外部源加载数据：XML.load()、XML.
sendAndLoad()、LoadVars.load()、LoadVars.sendAndLoad()、loadVariables()、loadVariablesNum()、MovieClip.loadVariables()、XMLSocket.connect() 和 Macromedia Flash Remoting (NetServices.createGatewayConnection)。另外，SWF 文件可以在运行时导入运行时共享库 (RSL) 或另一个 SWF 文件中定义的资源。默认情况下，数据或 RSL 必须与加载该外部数据或媒体的 SWF 文件驻留在同一个域中。

若要使运行时共享库中的数据和资源可用于其它域中的 SWF 文件，应使用跨域策略文件。跨域策略文件是一个 XML 文件，该文件提供的方法可以使服务器指示其数据和文档可用于从某些域或所有域提供的 SWF 文件。服务器的策略文件指定的域所提供的所有 SWF 文件都将被允许访问该服务器中的数据或 RSL。

如果您加载外部数据，即使不想将任何文件移植到 Flash Player 7 中，也应创建策略文件。如果您使用 RSL，并且调用或被调用文件是以 Flash Player 7 为目标播放器发布的，则应创建策略文件。

有关更多信息，请参见关于允许跨域数据加载。


动作脚本编辑器更改

动作脚本编辑器在许多方面做了更新，从而使得它更加坚实，更便于使用。本节将总结这些更改。

自动换行 现在可以使用“脚本”窗格、“调试器”面板和“输出”面板中的“选项”弹出菜单来启用或禁用自动换行。还可以使用“动作”面板中的弹出菜单来切换自动换行。快捷键为 Control+Shift+W (Windows) 或 Command+Shift+W (Macintosh)。

查看上下文关联的帮助 当指针位于“动作”工具箱或“脚本”窗格中的某个动作脚本语言元素之上时，可以使用上下文菜单中的“查看帮助”项来显示关于该元素的帮助页。

导入脚本 从“动作”面板上的弹出菜单中选择“导入脚本”时，导入的脚本将被复制到代码文件中插入点所在的位置。在 Flash 的早期版本中，导入脚本将覆盖现有脚本的内容。

单击断点 若要在“调试器”面板中或“动作”面板的“脚本”窗格中在一行代码之前添加调试断点，可以在左边距处单击。在 Flash 的早期版本中，在左边距处单击会选择一行代码。选择一行代码的新方法是按住 Control 键并单击 (Windows) 或按住 Command 键并单击 (Macintosh)。

“动作”面板中不再有常规和专家模式 在 Flash 的早期版本中，可以在“动作”面板中以常规模式（即通过填写选项和参数来创建代码）工作或以专家模式（即直接在“脚本”窗格中添加命令）工作。在 Flash MX 2004 和 Flash MX Professional 2004，只能通过将命令直接添加到“脚本”窗格来使用“动作”面板。您仍可以从“动作”工具箱将命令拖到“脚本”窗格上，或者使用“脚本”窗格上方的“添加”(+) 按钮向脚本中添加命令。

固定多个脚本 可将一个 FLA 文件中的多个脚本固定在“动作”面板中“脚本”窗格的底部。在以前的 Flash 版本中，一次只能固定一个脚本。

脚本导航器 “动作”面板的左侧现在包含两个窗格：“动作”工具箱和一个新的脚本导航器。脚本导航器是 FLA 文件结构的可视化表示形式；您可以在这里浏览 FLA 文件以查找动作脚本代码。

用于编辑外部文件的集成“脚本”窗口（仅限 Flash Professional） 可以在“脚本”窗口中使用“动作脚本”编辑器（独立于“动作”面板）来编写和编辑外部脚本文件。“脚本”窗口中支持语法颜色、代码提示和其它首选参数，此外还有“动作”工具箱。若要显示“脚本”窗口，请使用“文件”>“新建”，然后选择要编辑的外部文件的类型。可以同时打开多个外部文件；文件名显示在沿“脚本”窗口顶部排列的选项卡上。（这些选项卡仅在 Windows 中出现。）


调试方面的更改

本节介绍可以提高脚本调试能力的一些更改。

“输出”窗口更改为“输出”面板 您现在可以像移动和停放 Flash 中的任何其它面板中一样移动和停放“输出”面板。

改进的编译时错误报告 除了提供更为坚实的异常处理功能外，动作脚本 2.0 还提供了大量新的编译时错误。有关更多信息，请参见错误消息。

改进的异常处理 Error 类和 throw 与 try..catch..finally 命令可用于实现更坚实的异常处理。


新的面向对象编程模型

自从在几年前引入以来，动作脚本语言已经得到了改进和发展。每一次发布 Flash 新版本时，该语言中都会再添加一些关键字、对象、方法和其它语言元素。但是，与 Flash 的早期版本不同，Flash MX 2004 和 Flash MX Professional 2004 引入了几个新的语言元素，这些元素采用比以前更为标准的方式来实现面向对象的编程。由于这些语言元素代表了对核心动作脚本语言的重大改进，因此它们代表了动作脚本的一个新版本：动作脚本 2.0。

动作脚本 2.0 并不是一种新语言，只是它包含的一组核心语言元素简化了面向对象程序的开发。由于引入了 class、interface、extends 和 implements 等关键字，因此现在的动作脚本语法对于熟悉其它语言的程序员来说更易于学习。新的程序员可以学习更为标准的术语，这些术语可以应用于他们将来学习的其它面向对象语言。

动作脚本 2.0 支持动作脚本语言的所有标准元素；它使您能够更加严格地遵守其它面向对象语言（如 Java）所采用的标准来编写脚本。动作脚本 2.0 主要用于满足中级或高级 Flash 程序员的需要，供他们用来创建需要实现类和子类的应用程序。动作脚本 2.0 还使您能够在创建变量时声明变量的对象类型（请参见严格数据类型指定），并且提供已大大改进了的编译器错误（请参见错误消息）。

下面列出了动作脚本 2.0 中新增的语言元素。

  • class
  • extends
  • implements
  • interface
  • dynamic
  • static
  • public
  • private
  • get
  • set
  • import

动作脚本 2.0 的主要特点包括：

  • 使用动作脚本 2.0 定义类或接口的脚本必须存储为外部脚本文件，并且在每个脚本中定义一个类；即，不能在“动作”面板中定义类和接口。
  • 您可以隐式导入单个类文件（通过将这些文件存储在全局搜索路径或文档专用搜索路径指定的位置，然后在脚本中使用它们）或显式导入单个类文件（通过使用 import 命令）；也可以使用通配符导入包（一个目录中的一组类文件）。
  • Flash Player 6 和更高版本支持用动作脚本 2.0 开发的应用程序。

小心：在 Flash MX 2004 中创建的新文件的默认发布设置是动作脚本 2.0。如果您计划修改现有 FLA 文件以使用动作脚本 2.0 语法，请确保该 FLA 文件在其发布设置中指定动作脚本 2.0。如果没有指定，则您的文件将不会正确编译，虽然 Flash 将不生成编译器错误。

有关在 Flash 中使用动作脚本 2.0 编写面向对象程序的更多信息，请参见使用动作脚本 2.0 创建类。


动作脚本基础概述

动作脚本具有语法和标点规则，这些规则确定哪些字符和单词可以用于产生含义，并确定它们的撰写顺序。例如，在英语中，句点会结束一个句子。而在动作脚本中，分号会结束一个语句。

下面的一般规则适用于所有动作脚本。大多数动作脚本术语还具有其各自的要求；有关特定术语的规则，请参见动作脚本字典概述中的相应条目。


动作脚本和 JavaScript 之间的差异

动作脚本与核心 JavaScript 编程语言类似。虽然您不需要了解 JavaScript 也可以使用和学习动作脚本，但是，如果您了解 JavaScript，会感到动作脚本并不陌生。

本手册并不是一本讲解一般编程的教材。有很多资源提供了有关一般编程概念和 JavaScript 语言的更多信息。

  • 欧洲计算机制造商联合会 (European Computers Manufacturers Association, ECMA) 制订的 ECMA-262 规范源自 JavaScript，并作为 JavaScript 语言的国际标准。动作脚本基于 ECMA-262 规范。
  • Netscape DevEdge Online 有一个 JavaScript 开发人员中心站点
    (http://developer.netscape.com/tech/javascript/index.html)，该站点提供了有助于您了解动作脚本的文档和文章。最有价值的资源是核心 JavaScript 指南 (Core JavaScript Guide)。

下面列出了动作脚本和 JavaScript 的一些差异：

  • 动作脚本不支持特定于浏览器的对象，例如，Document、Window 和 Anchor。
  • 动作脚本不完全支持所有 JavaScript 内置对象。
  • 动作脚本不支持某些 JavaScript 语法构造，例语句标签。
  • 在动作脚本中，eval() 动作只能执行变量引用。


动作脚本的 Unicode 支持

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 支持动作脚本的 Unicode 文本编码。这意味着您可以在动作脚本文件中包含不同语言的文本。例如，您可以在相同的文件中包含英语、日语和法语的文本。

您可以设置动作脚本首选参数，以指定在导入或导出动作脚本文件时使用的编码类型。您可以选择 UTF-8 编码或默认编码。UTF-8 是一种 8 位 Unicode 格式；默认编码是系统当前使用的语言所支持的编码形式，也称作传统代码页。

通常，如果您导入或导出 UTF-8 格式的动作脚本文件，请使用“UTF-8”首选参数。如果您导入或导出系统上使用的传统代码页中的文件，请使用“默认编码”首选参数。

如果在打开或导入文件时脚本中文本的外观与预期不符，请更改导入编码首选参数。如果在导出动作脚本文件时出现警告消息，可以更改导出编码首选参数或在动作脚本首选参数中关闭此警告。

为导入或导出动作脚本文件选择文本编码选项：

  1. 在“首选参数”对话框（“编辑”>“首选参数”）中，单击“动作脚本”选项卡。
  2. 在“编辑选项”下，执行下面的一项或两项操作：
    • 对于“打开/导入”，选择“UTF-8”以使用 Unicode 编码进行打开或导入，或者选择“默认编码”以使用系统当前所用语言的编码形式进行打开或导入。
    • 对于“保存/导出”，选择“UTF-8”以使用 Unicode 编码进行保存或导出，或者选择“默认编码”以使用系统当前所用语言的编码形式进行保存或导出。

关闭或打开导出编码警告：

  1. 在“首选参数”对话框（“编辑”>“首选参数”）中，单击“警告”选项卡。
  2. 选择或取消选择“导出 .as 文件过程中编码发生冲突时发出警告”。

小心：如果 SWF 文件路径的任何部分包含不能用 MBCS 编码方案表示的字符，“测试影片”命令（请参见调试脚本）将失败。例如，日语路径在英语系统上就不能正常工作。应用程序中所有使用该外部播放器的区域都受此限制。


术语

和任何脚本撰写语言一样，动作脚本使用自己的术语。以下列表提供了对重要动作脚本术语的介绍。

动作是在播放 SWF 文件时指示 SWF 文件执行某些任务的语句。例如，gotoAndStop() 将播放头放置到特定的帧或标签。在本手册中，术语动作 和语句 是可以互换的。

布尔值是 true 或 false 值。

类是可以创建以定义新对象类型的数据类型。若要定义类，请在外部脚本文件中（而不是您在“动作”面板上编写的脚本中）使用 class 关键字。

常数是不变的元素。例如，常数 Key.TAB 的含义始终不变：它代表键盘上的 Tab 键。常数对于比较值很有用。

构造函数是用于定义类的属性和方法的函数。根据定义，构造函数是类定义中与类同名的函数。例如，以下代码定义一个 Circle 类并实现一个构造函数：

// 文件 Circle.as
class Circle {
  private var radius:Number
  private var circumference:Number
// 构造函数
  function Circle(radius:Number) {
    circumference = 2 * Math.PI * radius;
  }
}

在基于特定的类创建（实例化）对象时，也会使用术语构造函数。以下语句是内置 Array 类和自定义 Circle 类的构造函数：

my_array:Array = new Array();
my_circle:Circle = new Circle();

数据类型描述变量或动作脚本元素可以包含的信息的种类。动作脚本数据类型包括字符串、数字、布尔值、对象、影片剪辑、函数、空值和未定义。有关更多信息，请参见关于数据类型。

事件是 SWF 文件播放时发生的动作。例如，在加载影片剪辑，播放头进入帧，用户单击按钮或影片剪辑，或者用户按下键盘键时，会产生不同的事件。

事件处理函数是管理诸如 mouseDown 或 load 等事件的特殊动作。动作脚本事件处理函数共有两类：事件处理函数方法和事件侦听器。（还有两种事件处理函数 on() 和 onClipEvent()，您可以将它们直接分配给按钮和影片剪辑。）在“动作”工具箱中，每个具有事件处理函数方法或事件侦听器的动作脚本对象都有一个名为“Events”或“Listeners”的子类别。某些命令既可以用于事件处理函数，也可以用于事件侦听器，并且包括在上述两个子类别中。

表达式是代表值的动作脚本元件的任意合法组合。表达式由运算符和操作数组成。例如，在表达式 x + 2 中，x 和 2 是操作数，而 + 是运算符。

函数是可以向其传递参数并能够返回值的可重复使用的代码块。有关更多信息，请参见创建函数。

标识符是用于表示变量、属性、对象、函数或方法的名称。它的第一个字符必须是字母、下划线 (_) 或美元记号 ($)。其后的字符必须是字母、数字、下划线或美元记号。例如，firstName 是一个变量的名称。

实例是属于某个类的对象。类的每个实例均包含该类的所有属性和方法。例如，所有影片剪辑都是 MovieClip 类的实例，因此您可以将 MovieClip 类的任何方法或属性用于任何影片剪辑实例。

实例名称是脚本中用来表示影片剪辑实例和按钮实例的唯一名称。您可以使用属性检查器为舞台上的实例指定实例名称。例如，库中的主元件可以名为 counter，而 SWF 文件中该元件的两个实例可以使用实例名称 scorePlayer1_mc 和 scorePlayer2_mc。下面的代码用实例名称设置每个影片剪辑实例中名为 score 的变量：

_root.scorePlayer1_mc.score += 1;
_root.scorePlayer2_mc.score -= 1;

可以在命名实例时使用特殊的后缀，以便在键入代码时显示代码提示（请参见使用代码提示）。有关更多信息，请参见使用后缀触发代码提示。

关键字是有特殊含义的保留字。例如，var 是用于声明本地变量的关键字。不能使用关键字作为标识符。例如，var 不是合法的变量名。要查看关键字的列表，请参见关键字。

方法是与类关联的函数。例如，getBytesLoaded() 是与 MovieClip 类关联的内置方法。您也可以为基于内置类的对象或为基于您创建的类的对象，创建充当方法的函数。例如，在以下代码中，clear() 成为您先前定义的 controller 对象的方法：

function reset(){
  this.x_pos = 0;
  this.x_pos = 0;
}
controller.clear = reset;
controller.clear();

对象是属性和方法的集合；每个对象都有其各自的名称，并且都是特定类的实例。内置对象是在动作脚本语言中预先定义的。例如，内置的 Date 对象可以提供系统时钟的信息。

运算符是通过一个或多个值计算新值的术语。例如，加法 (+) 运算符可以将两个或更多个值相加到一起，从而产生一个新值。运算符处理的值称为操作数。

参数（也称作参量）是用于向函数传递值的占位符。例如，下面的 welcome() 函数使用它在参数 firstName 和 hobby 中接收到的两个值：

function welcome(firstName, hobby) {
  welcomeText = "Hello, " + firstName + "I see you enjoy " + hobby;
}

包是位于指定的类路径目录下，包含一个或多个类文件的目录（请参见理解类路径）。

属性是定义对象的特性。例如，_visible 是定义影片剪辑是否可见的属性，所有影片剪辑都有此属性。

目标路径是 SWF 文件中影片剪辑实例名称、变量和对象的分层结构地址。您可以在影片剪辑属性检查器中对影片剪辑实例进行命名。（主时间轴的名称始终为 _root。）您可以使用目标路径引导影片剪辑中的动作，或者获取或设置变量的值。例如，下面的语句是指向影片剪辑 stereoControl 内的变量 volume 的目标路径：

_root.stereoControl.volume

有关目标路径的更多信息，请参见使用绝对和相对目标路径。

变量是包含任何数据类型的值的标识符。可以创建、更改和更新变量。可以检索它们存储的值以在脚本中使用。在下面的示例中，等号左侧的标识符是变量：

var x = 5;
var name = "Lolo";
var c_color = new Color(mcinstanceName);

有关变量的更多信息，请参见关于变量。


关于语法

与任何语言一样，动作脚本具有一定的语法规则，您必须遵守这些语法规则才能创建可正确编译和运行的脚本。本节介绍组成动作脚本语法的元素。


区分大小写

在区分大小写的编程语言中，仅大小写不同的变量名（book 和 Book）被视为互不相同。因此，最好遵循一致的大小写约定（如本手册中采用的约定），以便于识别动作脚本代码中函数和变量的名称。

为 Flash Player 7 或更高版本发布文件时，无论您使用的是动作脚本 1 还是动作脚本 2.0，Flash 都会实现区分大小写。这意味着关键字、类名、变量、方法名等均区分大小写。例如：

// 在面向 Flash Player 7
// 以及动作脚本 1 或动作脚本 2.0 的文件中
//
// 设置两个不同对象的属性
cat.hilite = true;
CAT.hilite = true;

// 创建三个不同的变量
var myVar=10;
var myvar=10;
var mYvAr=10;
// 不生成错误
var array = new Array();
var date = new Date();

此更改还会影响使用 LoadVars.load() 加载的外部变量。

此外，还将为外部脚本（例如，用 #include 命令导入的动作脚本 2.0 类文件或脚本）实现区分大小写。如果要为 Flash Player 7 发布文件，并且使用 #include 语句在脚本中添加了以前创建的外部文件，则应检查每个文件，确保始终采用了一致的大小写。执行这一任务的方法之一是在“脚本”窗口中打开该文件（仅限 Flash Professional），或者在新的 FLA 文件中将发布设置设为 Flash Player 7，并将该文件的内容复制到“动作”面板。然后使用“检查语法”按钮（请参见检查语法和标点）或发布该文件；由于命名冲突导致的错误将出现在“输出”面板上。

在启用语法颜色后，大小写正确的语言元素在默认情况下为蓝色。有关更多信息，请参见关键字和语法突出显示。


点语法

在动作脚本中，点 (.) 用于指示与对象或影片剪辑相关的属性或方法。它还用于标识影片剪辑、变量、函数或对象的目标路径。点语法表达式以对象或影片剪辑的名称开头，后面跟着一个点，最后以要指定的元素结尾。

例如，_x 影片剪辑属性指示影片剪辑在舞台上的 x 轴位置。表达式 ballMC._x 引用影片剪辑实例 ballMC 的 _x 属性。

又例如，submit 是 form 影片剪辑中设置的变量，此影片剪辑嵌在影片剪辑 shoppingCart 之中。表达式 shoppingCart.form.submit = true 将实例 form 的 submit 变量设置为 true。

无论是表达对象的方法还是影片剪辑的方法，均遵循同样的模式。例如，ball_mc 影片剪辑实例的 play() 方法在 ball_mc 的时间轴中移动播放头，如下面的语句所示：

ball_mc.play();

点语法还使用两个特殊别名：_root 和 _parent。别名 _root 是指主时间轴。您可以使用 _root 别名创建一个绝对目标路径。例如，下面的语句调用主时间轴上影片剪辑 functions 中的函数 buildGameBoard()：

_root.functions.buildGameBoard();

您可以使用别名 _parent 引用当前对象嵌入到的影片剪辑。也可使用 _parent 创建相对目标路径。例如，如果影片剪辑 dog_mc 嵌入影片剪辑 animal_mc 的内部，则实例 dog_mc 的如下语句会指示 animal_mc 停止：

_parent.stop();


斜杠语法

斜杠语法在 Flash 3 和 4 中表示影片剪辑或变量的目标路径。虽然 Flash Player 7 仍支持此语法，但不建议使用此语法，而且动作脚本 2.0 中不支持斜杠语法。但是，如果要专门为 Flash Player 4 创建内容，则必须使用斜杠语法。有关更多信息，请参见使用斜杠语法。


大括号

动作脚本事件处理函数、类定义和函数用大括号 ({}) 组合在一起形成块。您可以在与声明同一行或下一行上放置一个左大括号，如下面的示例中所示。为使您的代码更具可读性，最好选择一种格式并始终如一地使用它。

// 事件处理函数
on (release) {
  myDate = new Date();
  currentMonth = myDate.getMonth();
}

on(release)
{
  myDate = new Date();
  currentMonth = myDate.getMonth();
}

// 类
class Circle(radius) {
}

class Square(side)
{
}

// 函数
circleArea = function(radius) {
  return radius * radius * MATH.PI;
}
squareArea = function(side)
{
  return side * side;
}

您可以检查脚本中的大括号是否匹配；请参见检查语法和标点。


分号

动作脚本语句以分号 (;) 结束，如以下示例所示：

var column = passedDate.getDay();
var row    = 0;

如果省略了结束分号，Flash 仍然能够成功地编译脚本。但是，使用分号是一个很好的脚本撰写习惯。


小括号

在定义函数时，要将所有参数都放在括号中：

function myFunction (name, age, reader){
  // 此处是您的代码
}

调用函数时，要将传递给该函数的所有参数都包含在括号中，如下所示：

myFunction ("Steve", 10, true);

您也可使用括号改写动作脚本的优先顺序或增强动作脚本语句的易读性。（请参见运算符的优先级和结合律。）

也可使用括号评估点语法中点左侧的表达式。例如，在下面的语句中，括号会使 new Color(this) 计算并创建一个 Color 对象：

onClipEvent (enterFrame) {
  (new Color(this)).setRGB(0xffffff);
}

如果不使用括号，则必须添加一个语句来计算该表达式：

onClipEvent (enterFrame) {
  myColor = new Color(this);
  myColor.setRGB(0xffffff);
}

您可以检查脚本中的括号是否匹配；请参见检查语法和标点。


注释

极力建议使用注释将备注添加到脚本。注释有助于理解您关注的内容，如果您工作在一个合作的环境中或者要提供范例，注释还有助于向其他开发人员提供信息。如果在创建脚本时进行注释，即使简单的脚本也会更易于理解。

若要指示某一行或一行的某一部分是注释，请在该注释前加两个斜杠 (//)：

on (release) {
  // 创建新的 Date 对象
  myDate = new Date();
  currentMonth = myDate.getMonth();
  // 将月份数转换为月份名称
  monthName = calcMonth(currentMonth);
  year = myDate.getFullYear();
  currentDate = myDate.getDate();
}

如果启用了语法颜色（请参见语法突出显示），注释在默认情况下为灰色。注释可以具有任意长度，这不会影响导出文件的大小，并且它们不必遵循动作脚本语法或关键字的规则。

如果要“注释掉”脚本的整个部分，请将其放在注释块中，而不是在每行开头添加 //。这种方法更为简单，当您要注释掉脚本的大块代码以仅测试脚本的某些部分时，它非常有用。

若要创建注释块，请在命令行开头添加 /*，在末尾添加 */。例如，当以下脚本运行时，将不执行注释块中的任何代码：

// 运行以下代码
var x:Number = 15;
var y:Number = 20;
// 不运行以下代码
/*
on (release) {
  // 创建新的 Date 对象
  myDate = new Date();
  currentMonth = myDate.getMonth();
  // 将月份数转换为月份名称
  monthName = calcMonth(currentMonth);
  year = myDate.getFullYear();
  currentDate = myDate.getDate();
}
*/
// 运行以下代码
var name:String = "My name is";
var age:Number = 20;


关键字

动作脚本保留一些单词用于该语言中的特定用途，因此不能将它们用作标识符，例如变量、函数或标签名称。下表列出了所有动作脚本关键字：

break | case | class | continue
default | delete | dynamic | else
extends | for | function | get
if | implements | import | in
instanceof | interface | intrinsic | new
private | public | return | set
static | switch | this | typeof
var | void | while | with


常数

常数是其值始终不变的属性。

例如，常数 BACKSPACE、ENTER、QUOTE、RETURN、SPACE 和 TAB 是 Key 对象的属性，指代键盘的按键。若要测试用户是否按下了 Enter 键，可以使用下面的语句：

if(Key.getCode() == Key.ENTER) {
  alert = "Are you ready to play?";
  controlMC.gotoAndStop(5);
}


数据类型

数据类型描述变量或动作脚本元素可以包含的信息的种类。Flash 中内置了两种数据类型：原始数据类型和引用数据类型。原始数据类型是指字符串、数字和布尔值，它们都有一个常数值，因此可以包含它们所代表的元素的实际值。引用数据类型是指影片剪辑和对象，它们的值可能发生更改，因此它们包含对该元素的实际值的引用。包含原始数据类型的变量与包含引用类型的变量在某些情况下的行为是不同的。（请参见在程序中使用变量。）还有两类特殊的数据类型：空值和未定义。

在 Flash 中，任何不属于原始数据类型或影片剪辑数据类型的内置对象（如 Array 或 Math）均属于对象数据类型。

每种数据类型都有其各自的规则，下面的主题中将对其进行介绍：

  • 字符串
  • 数字
  • 布尔值
  • Object
  • MovieClip
  • Null
  • Undefined

当调试脚本时，可能需要确定表达式或变量的数据类型，以理解其特定行为的原理。可以用 typeof 运算符实现这一目的（请参见确定项目的数据类型）。

您可以使用以下转换函数之一将一种数据类型转换为另一种数据类型： Array(), Boolean(), Number(), Object(), String().


字符串

字符串是诸如字母、数字和标点符号等字符的序列。在动作脚本语句中输入字符串的方式是将其放在单引号或双引号之间。字符串被当做字符，而不是变量进行处理。例如，在下面的语句中，"L7" 是一个字符串：

favoriteBand = "L7";

可以使用加法 (+) 运算符连接 或合并两个字符串。动作脚本将字符串前面或后面的空格作为该字符串的文本部分。在下面的表达式中，逗号后有一个空格：

greeting = "Welcome," + firstName;

若要在字符串中包含引号，请在它前面放置一个反斜杠字符 (\)。这就是所谓的将字符转义。在动作脚本中，还有一些只能用特殊的转义序列才能表示的字符。下表提供了所有动作脚本转义符：

转义序列 | 字符
\b | 退格符 (ASCII 8)
\f | 换页符 (ASCII 12)
\n | 换行符 (ASCII 10)
\r | 回车符 (ASCII 13)
\t | 制表符 (ASCII 9)
\" | 双引号
\' | 单引号
\\ | 反斜杠
\000 - \377 | 以八进制指定的字节
\x00 - \xFF | 以十六进制指定的字节
\u0000 - \uFFFF | 以十六进制指定的 16 位 Unicode 字符


数字

数字数据类型是双精度浮点数。您可以使用加 (+)、减 (-)、乘 (*)、除 (/)、求模 (%)、递增 (++) 和递减 (--) 等算术运算符来处理数字。也可使用内置的 Math 和 Number 类的方法来处理数字。下面的示例使用 sqrt()（平方根）方法返回数字 100 的平方根：

Math.sqrt(100);

有关更多信息，请参见数值运算符。


布尔值

布尔值是 true 或 false 中的一个。动作脚本也会在适当时将值 true 和 false 转换为 1 和 0。布尔值经常与动作脚本语句中通过比较控制脚本流的逻辑运算符一起使用。例如，在下面的脚本中，如果变量 password 为 true，则会播放该 SWF 文件：

onClipEvent (enterFrame) {
  if (userName == true && password == true){
    play();
  }
}

请参见使用内置函数和逻辑运算符。


Object

对象是属性的集合。每个属性都有名称和值。属性的值可以是任何的 Flash 数据类型，甚至可以是对象数据类型。这样就可以使对象相互包含（即将其嵌套）。若要指定对象及其属性，可以使用点 (.) 运算符。例如，在下面的代码中，hoursWorked 是 weeklyStats 的属性，而后者是 employee 的属性：

employee.weeklyStats.hoursWorked

您可以使用内置动作脚本对象来访问和处理特定种类的信息。例如，Math 对象具有一些方法，这些方法可以对传递给它们的数字执行数学运算。此示例使用 sqrt() 方法：

squareRoot = Math.sqrt(100);

动作脚本 MovieClip 对象具有一些方法，您可以使用这些方法控制舞台上的影片剪辑元件实例。此示例使用 play() 和 nextFrame() 方法：

mcInstanceName.play();
mc2InstanceName.nextFrame();

您也可以创建自定义对象来组织 Flash 应用程序中的信息。若要使用动作脚本向应用程序添加交互操作，将需要许多不同的信息：例如，可能需要用户的姓名、球的速度、购物车中货物的名称、已加载的帧数、用户的邮编或上次所按键。通过创建自定义对象，可以将信息分组，简化您的脚本撰写过程，并且能重新使用您的脚本。


MovieClip

影片剪辑是 Flash 应用程序中可以播放动画的元件。它们是唯一引用图形元素的数据类型。MovieClip 数据类型允许您使用 MovieClip 类的方法控制影片剪辑元件。可以使用点 (.) 运算符调用这些方法，如下所示：

my_mc.startDrag(true);
parent_mc.getURL("http://www.macromedia.com/support/" + product);


Null

空值数据类型只有一个值，即 null。此值意味着“没有值”，即缺少数据。null 值可以用在各种情况中。下面是一些示例：

  • 指示变量尚未接收到值
  • 指示变量不再包含值
  • 作为函数的返回值，指示函数没有可以返回的值
  • 作为函数的参数，指示省略了一个参数


Undefined

未定义的数据类型有一个值，即 undefined，它用于尚未分配值的变量。


确定项目的数据类型

当测试和调试程序时，您可能会发现看来与不同项目的数据类型相关的问题。这种情况下，您可能需要确定项目的数据类型。为此，使用 typeof 运算符，如以下示例所示：

trace(typeof(variableName));

有关测试和调试的更多信息，请参见编写和调试脚本。


指定数据类型

Flash 自动为以下类型的语言元素指定数据类型，如下一节自动数据类型指定中所述：

  • 变量
  • 传递给函数、方法或类的参数
  • 函数或方法返回的值
  • 创建为现有类的子类的对象

不过，您也可以显式地为项目指定数据类型，这有助于防止或诊断脚本中的某些错误。有关更多信息，请参见严格数据类型指定。

自动数据类型指定

在 Flash 中，不必将项目明确地定义为包含数字、字符串或其它数据类型。Flash 将在指定项目时确定其数据类型：

var x = 3;

在表达式 var x = 3 中，Flash 会评估运算符右侧的元素，然后确定它的数据类型为数字。后面的赋值运算可以更改 x 的类型；例如语句 x = "hello" 会将 x 的类型更改为字符串。尚未赋值的变量的类型为 undefined。

动作脚本会在表达式需要时自动转换数据类型。例如，当向 trace() 动作传递值时，trace() 会自动将该值转换为字符串，并将其发送到“输出”面板。在带有运算符的表达式中，动作脚本会根据需要转换数据类型；例如，当用于字符串时，+ 运算符需要另一个操作数也是字符串：

"Next in line, number " + 7

动作脚本会将数字 7 转换为字符串 "7"，并将它添加到第一个字符串的结尾，从而产生下面的字符串：

"Next in line, number 7"


严格数据类型指定

动作脚本 2.0 允许在创建变量时显式声明其对象类型；这称作严格数据类型指定。因为数据类型不匹配会触发编译器错误，所以严格数据类型指定有助于避免为现有变量指定错误的数据类型。若要为某个项目指定特定的数据类型，请使用 var 关键字和后冒号语法指定其类型：

//严格指定变量或对象的类型
var x:Number = 7;
var birthday:Date = new Date();

// 参数的严格类型指定
function welcome(firstName:String, age:Number){
}

// 参数和返回值的严格类型指定
function square(x:Number):Number {
  var squared = x*x;
  return squared;
}

由于在严格指定变量的数据类型时必须使用 var 关键字，因此不能严格指定全局变量的类型（请参见确定变量的范围和声明变量）。

您可以根据内置类（Button、Date、MovieClip 等）以及您创建的类和接口来声明对象的数据类型。例如，如果您在一个名为 Student.as 的文件中定义了 Student 类，则可以指定您创建的对象属于类型 Student：

var student:Student = new Student();

您也可以指定对象属于类型 Function 或 Void。

使用严格类型指定有助于确保您不会因为疏忽而为对象指定错误的值类型。Flash 将在编译时检查类型指定不匹配错误。例如，假设您键入以下代码：

// 在 Student.as 类文件中
class Student {
  var status:Boolean; // Student 对象的属性
}

// 在脚本中
var studentMaryLago:Student = new Student();
studentMaryLago.status = "enrolled";

当 Flash 编译此脚本时，将生成“类型不匹配”错误。

严格数据类型指定的另一个优点是，对于严格指定类型的内置对象，Flash MX 2004 会自动显示代码提示。有关更多信息，请参见严格指定对象类型以触发代码提示。

使用动作脚本 1 发布的文件在编译时不遵守严格数据类型指定。因此，对于严格指定了类型的变量，即使赋给它的值类型不正确，也不会生成编译器错误。

var x:String = "abc"
x = 12 ; // 在动作脚本 1 中不会出现任何错误，但在动作脚本 2 中会出现类型不匹配错误

其原因是，为动作脚本 1 发布文件时，Flash 以斜杠语法（而不是严格数据类型指定）解释像 var x:String = "abc" 这样的语句。（动作脚本 2.0 不支持斜杠语法。）这可能会造成将对象分配给类型错误的变量，导致编译器允许非法的方法调用和未定义的属性引用直接通过，而不报告错误。

因此，如果要实现严格数据类型指定，应确保为动作脚本 2.0 发布文件。


转换对象

动作脚本 2.0 允许将一种数据类型转换为另一种数据类型。Flash 使用的转换运算符采用函数调用的形式，并且符合 ECMA-262 版本 4 建议中指定的显式强制。转换允许您声明一个对象属于某一类型，这样，在执行类型检查时，编译器会将该对象视作具有一组其原始类型不包含的属性。例如，在迭代一组类型可能不同的对象时，这将很有用。

在为 Flash Player 7 或更高版本发布的文件中，在运行时失败的转换语句返回 null。在为 Flash Player 6 发布的文件中，未实现对失败转换的任何运行时支持。

转换的语法为 type(item)，表示您希望编译器将 item 视作数据类型为 type 的项目。转换实质上是一个函数调用，如果转换失败，该函数调用将返回 null。如果转换成功，该函数调用将返回原对象。但是，将项目转换为在外部类文件中创建的数据类型时，即使转换在运行时失败，编译器也不会生成类型不匹配错误。

// 在 Animal.as 中
class Animal {}

// 在 Dog.as 中
class Dog extends Animal { function bark (){} }

// 在 Cat.as 中
class Cat extends Animal { function meow (){} }

// 在 FLA 文件中
var spot:Dog = new Dog();
var temp:Cat = Cat (spot);  // 声明一个 Dog 对象的类型为 Cat
temp.meow(); // 不执行任何动作，但也不生成任何编译器错误

在此示例中，您向编译器声明了 temp 是一个 Cat 对象，因此，编译器认为 temp.meow() 是一条合法语句。但是，编译器不知道该转换将失败（即，您尝试将一个 Dog 对象转换为 Cat 类型），因此不会发生任何编译时错误。如果在脚本中加入一条检查语句，检查转换是否成功，在运行时您会发现类型不匹配错误。

var spot:Dog = new Dog();
var temp:Cat = Cat (spot);
trace(temp);  // 在运行时显示 null

可以将表达式的类型转换为接口。如果该表达式是一个实现该接口的对象，或具有实现该接口的基类，则返回该对象。否则，将返回 null。

下面的示例显示转换内置对象类型的结果。如 with(results) 代码块中的第一行所示，非法转换（在此示例中为将字符串转换为影片剪辑）将返回 null。如最后两行所示，转换为 null 或 undefined 将返回 undefined。

var mc:MovieClip;
var arr:Array;
var bool:Boolean;
vvar num3:Number;
var obj:Object;
var str:String;
_root.createTextField("results",2,100,100,300,300);
with(results){
text = "type MovieClip :"+(typeof MovieClip(str));     // 返回 null
text += "\ntype object :"+(typeof Object(str));        // 返回 object
text += "\ntype Array :"+(typeof Array(num3));         // 返回 object
text += "\ntype Boolean :"+(typeof Boolean(mc));       // 返回 boolean
text += "\ntype String :"+(typeof String(mc));         // 返回 string
text += "\ntype Number :"+(typeof Number(obj));        // 返回 number
text += "\ntype Function :"+(typeof Function(mc));     // 返回 object
text += "\ntype null :"+(typeof null(arr));            // 返回 undefined
text += "\ntype undefined :"+(typeof undefined(obj));  // 返回 undefined
}
//“输出”面板中的结果
type MovieClip :null
type object :object
type Array :object
type Boolean :boolean
type String :string
type Number :number
type Function :object
type null :undefined
type undefined :undefined

原始数据类型（例如，Boolean、Date 和 Number）不能用名称相同的转换运算符覆盖。


变量

变量 是包含信息的容器。容器本身始终不变，但内容可以更改。通过在 SWF 文件播放时更改变量的值，可以记录和保存用户操作的信息，记录 SWF 文件播放时更改的值，或者计算某个条件是 true 还是 false。

当首次定义变量时，最好为该变量指定一个已知值。这就是所谓的初始化变量，而且通常在 SWF 文件的第一帧中完成。初始化变量有助于在播放 SWF 文件时跟踪和比较变量的值。

变量可以包含任何类型的数据（请参见关于数据类型）。变量包含的数据类型影响在脚本中为变量赋值时变量值的变化方式。

变量中可以存储的常见信息类型包括 URL、用户名、数学运算的结果、事件发生的次数，以及是否单击了某个按钮，等等。每个 SWF 文件和影片剪辑实例都有一组变量，每个变量都有其各自的值，与其它 SWF 文件或影片剪辑中的变量无关。

若要测试变量的值，可以使用 trace() 动作向“输出”面板发送值。例如，trace(hoursWorked) 会在测试模式下将变量 hoursWorked 的值发送给“输出”面板。也可在测试模式下，在调试器中检查和设置变量值。有关更多信息，请参见使用 trace 语句和显示和修改变量。


命名变量

变量名称必须遵守下面的规则：

  • 它必须是标识符（请参见术语）。
  • 它不能是关键字或动作脚本文本，例如 true、false、null 或 undefined。
  • 它在其范围内必须是唯一的（请参见确定变量的范围和声明变量）。

此外，您不应将动作脚本语言中的任何元素用作变量名称；这样做可能会导致语法错误或意外的结果。例如，如果您将一个变量命名为 String，然后尝试使用 new String() 创建一个 String 对象，则这一新对象是未定义的。

hello_str = new String();
trace(hello_str.length); // 返回 0

String = "hello"; // 为变量提供与内置类相同的名称
hello_str = new String();
trace(hello_str.length); // 返回未定义

动作脚本编辑器支持内置类和基于这些类的变量的代码提示。如果您需要 Flash 为指定给变量的特定对象类型提供代码提示，则可以精确键入变量或使用特定的后缀给该变量命名。

例如，假设您键入以下代码：

var members:Array = new Array();
members.

只要您一键入句点 (.)，Flash 就会显示可用于 Array 对象的方法和属性的列表。有关更多信息，请参见编写触发代码提示的代码。


确定变量的范围和声明变量

变量的范围 是指变量在其中已知并且可以引用的区域。在动作脚本中有三种类型的变量范围：

  • 本地变量在声明它们的函数体（由大括号界定）内可用。
  • 时间轴变量可用于该时间轴上的任何脚本。
  • 全局变量和函数对于文档中的每个时间轴和范围均可见。

注意：您创建的动作脚本 2.0 类支持公共、私有和静态变量范围。有关更多信息，请参见控制成员访问和创建类成员。

本地变量

若要声明本地变量，请在函数体内部使用 var 语句。本地变量的使用范围只限于它的代码块，它会在该代码块结束时到期。没有在代码块中声明的本地变量会在它的脚本结束时到期。

例如，变量 i 和 j 经常用作循环计数器。在下面的示例中，i 用作本地变量；它只存在于函数 makeDays() 的内部：

function makeDays() {
  var i;
  for( i = 0; i < monthArray[month]; i++ ) {

    _root.Days.attachMovie( "DayDisplay", i, i + 2000 );

    _root.Days[i].num = i + 1;
    _root.Days[i]._x = column * _root.Days[i]._width;
    _root.Days[i]._y = row * _root.Days[i]._height;

    column = column + 1;

    if (column == 7 ) {

      column = 0;
      row = row + 1;
    }
  }
}

本地变量也可防止出现名称冲突，名称冲突可能会导致应用程序出现错误。例如，如果使用 name 作为本地变量，则可以用它在一个上下文中存储用户名，而在另一个上下文中存储影片剪辑实例名称；因为这些变量是在不同的范围中运行的，所以它们不会有冲突。

在函数体中使用本地变量是一个很好的习惯，这样该函数可以充当独立的代码。本地变量只有在它自己的代码块中才是可更改的。如果函数中的表达式使用全局变量，则在该函数以外也可以更改它的值，这样也更改了该函数。

可以在定义本地变量时为其指定数据类型，这有助于防止将类型错误的数据赋给现有变量。有关更多信息，请参见严格数据类型指定。

时间轴变量

时间轴变量可用于该时间轴上的任何脚本。要声明时间轴变量，应在该时间轴中的所有帧上都初始化这些变量。应确保首先初始化变量，然后尝试在脚本中访问它。例如，如果将代码 var x = 10; 放置在第 20 帧上，则附加到第 20 帧之前的任何帧上的脚本都无法访问该变量。

全局变量

全局变量和函数对于您的文档中的每一时间轴和范围而言都是可见的。若要创建具有全局范围的变量，请在变量名称前使用 _global 标识符，并且不使用 var = 语法。例如，以下代码创建全局变量 myName：

var _global.myName = "George"; // 语法错误
_global.myName = "George";

但是，如果您使用与全局变量相同的名称初始化一个本地变量，则在处于该本地变量的范围内时对该全局变量不具有访问权限：

_global.counter = 100;
counter++;
trace(counter); // 显示 101
function count(){
  for( var counter = 0; counter <= 10 ; counter++ ) {
  trace(counter); // 显示 0 到 10
  }
}
count();
counter++;
trace(counter); // 显示 102


在程序中使用变量

您必须在脚本中声明变量，然后才能在表达式中使用它。如果使用未声明的变量（如以下示例所示），该变量的值将是 NaN 或 undefined，并且您的脚本可能产生意外的结果：

var squared = x*x;
trace(squared); // NaN
var x = 6;

在下面的示例中，声明变量 x 的语句必须排在第一，这样 squared 就可以替换为一个值：

var x = 6;
var squared = x*x;
trace(squared); // 36

当您将未定义的变量传递给方法或函数时，将出现类似的行为：

getURL(myWebSite); // 无动作
var myWebSite = "http://www.macromedia.com";

var myWebSite = "http://www.macromedia.com";
getURL(myWebSite); // 浏览器显示 www.macromedia.com

在一个脚本中，可以多次更改变量的值。变量包含的数据类型会影响如何以及何时更改变量。原始数据类型（例如字符串和数字）是按值进行传递的。这意味着变量的实际内容会传递给变量。

在下面的示例中，x 设置为 15，该值会复制到 y 中。在第 3 行中将 x 的值更改为 30 后，y 的值仍然为 15，这是因为 y 并不会参照 x 来改变它的值；它的值为在第 2 行中接收到的 x 的值。

var x = 15;
var y = x;
var x = 30;

又例如，变量 inValue 包含一个原始值 3，因此实际的值会传递给 sqrt() 函数，而返回值为 9：

function sqrt(x){
  return x * x;
}

var inValue = 3;
var out = sqrt(inValue);

变量 inValue 的值不会更改。

对象数据类型可以包含大量和复杂的信息，所以属于此类型的变量并不包含实际的值；它包含的是对值的引用。这种引用类似于指向变量内容的别名。当变量需要知道它的值时，该引用会查询内容，然后返回答案，而无需将该值传递给变量。

下面是按引用进行传递的示例：

var myArray = ["tom", "josie"];
var newArray = myArray;
myArray[1] = "jack";
trace(newArray);

上面的代码创建了一个名为 myArray 的数组对象，它包含两个元素。然后创建了变量 newArray，并向它传递了对 myArray 的引用。当 myArray 的第二个元素变化时，它将影响引用它的每个变量。trace() 动作会向“输出”面板发送 tom, jack。

在下面的示例中，myArray 包含一个数组对象，因此它会按引用传递给函数 zeroArray()。zeroArray() 函数会更改 myArray 中的数组的内容。

function zeroArray (theArray){
  var i;
  for (i=0; i < theArray.length; i++) {
    theArray[i] = 0;
  }
}

var myArray = new Array();
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
zeroArray(myArray);

函数 zeroArray() 会将数组对象作为参数来接受，并将该数组的所有元素设置为 0。因为该数组是按引用进行传递的，所以该函数可以修改它。


使用运算符处理表达式中的值

表达式是 Flash 可以计算并返回值的任何语句。可以通过组合运算符和值或者调用函数来创建表达式。

运算符是指定如何组合、比较或修改表达式值的字符。运算符对其执行运算的元素称为操作数。例如，在下面的语句中，+ 运算符会将数值文本的值添加到变量 foo 的值中；foo 和 3 就是操作数：

foo + 3

本节介绍关于常见类型的运算符、运算符优先级和运算符结合律的一般规则。有关此处提到的每个运算符的详细信息以及这些类别中未包含的特殊运算符，请参见动作脚本字典概述中的相应条目。


运算符的优先级和结合律

当在同一语句中使用两个或多个运算符时，一些运算符会优先于其它的运算符。动作脚本按照一个精确的层次来确定首先执行哪些运算符。例如，乘法总是先于加法执行；但是，括号中的项目会优先于乘法。因此，如果没有括号，动作脚本会在下面的示例中首先执行乘法：

total = 2 + 4 * 3;

结果为 14。

但是当加法运算在括号内时，动作脚本会首先执行加法：

total = (2 + 4) * 3;

结果为 18。

当两个或更多个运算符优先级相同时，它们的结律会确定它们的执行顺序。结合律可以是从左到右或者从右到左。例如，乘法运算符具有从左到右的结合律；因此，下面两个语句是等效的：

total = 2 * 3 * 4;
total = (2 * 3) * 4;

要查看包含所有运算符及其优先级和结合律的表，请参见运算符的优先级和结合律。


数值运算符

数值运算符可以执行加法、减法、乘法、除法运算，也可以执行其它算术运算。

增量运算符最常见的用法是 i++，而不是比较繁琐的 i = i+1。可以在操作数前面或后面使用增量运算符。在下面的示例中，age 首先递增，然后再与数字 30 进行比较：

if (++age >= 30)

在下面的示例中，age 在执行比较之后递增：

if (age++ >= 30)

下表列出了动作脚本数值运算符：

运算符 | 执行的运算
+ | 加法
* | 乘法
/ | 除法
% | 求模（除后的余数）
- | 减法
++ | 递增
-- | 递减


比较运算符

比较运算符用于比较表达式的值，然后返回一个布尔值（true 或 false）。这些运算符最常用于循环语句和条件语句中。在下面的示例中，如果变量 score 为 100，则加载特定的 SWF 文件；否则将加载另外一个 SWF 文件：

if (score > 100){
  loadMovieNum("winner.swf", 5);
} else {
  loadMovieNum("loser.swf", 5);
}

下表列出了动作脚本比较运算符：

运算符 | 执行的运算
< | 小于
> | 大于
<= | 小于或等于
>= | 大于或等于


字符串运算符

+ 运算符在处理字符串时会有特殊效果：它会将两个字符串操作数连接起来。例如，下面的语句会将 "Congratulations," 连接到 "Donna!"：

"Congratulations, " + "Donna!"

结果是 "Congratulations, Donna!"。如果 + 运算符的操作数中只有一个是字符串，则 Flash 会将另一个操作数转换为字符串。

比较运算符 >、>=、< 和 <= 在处理字符串时也有特殊的效果。这些运算符会比较两个字符串，以确定哪一个字符串按字母数字顺序排在前面。只有在两个操作数都是字符串时，比较运算符才会执行字符串比较。如果只有一个操作数是字符串，动作脚本会将两个操作数都转换为数字，然后执行数值比较。


逻辑运算符

逻辑运算符对布尔值（true 和 false）进行比较，然后返回第三个布尔值。例如，如果两个操作数都评估为 true，则逻辑“与”运算符 (&&) 将返回 true。如果其中一个或两个操作数评估为 true，则逻辑“或”运算符 (||) 将返回 true。逻辑运算符通常与比较运算符结合使用，以确定 if 动作的条件。例如，在下面的脚本中，如果两个表达式都为 true，则将执行 if 动作：

if (i > 10 && _framesloaded > 50){
  play();
}

下表列出了动作脚本逻辑运算符：

运算符 | 执行的运算
&& | 逻辑“与”
|| | 逻辑“或”
! | 逻辑“非”


按位运算符

按位运算符在内部处理浮点数，将它们转换为 32 位整型。执行的确切运算取决于运算符，但是所有的按位运算都会分别评估 32 位整型的每个二进制位，从而计算新的值。

下表列出了动作脚本按位运算符：

运算符 | 执行的运算
& | 按位“与”
| | 按位“或”
^ | 按位“异或”
~ | 按位“非”
<< | 左移位
>> | 右移位
>>> | 右移位填零


等于运算符

可以使用等于 (==) 运算符确定两个操作数的值或标识是否相等。这一比较运算会返回一个布尔值（true 或 false）。如果操作数为字符串、数字或布尔值，它们会按照值进行比较。如果操作数为对象或数组，它们将按照引用进行比较。

用赋值运算符检查等式是常见的错误。例如，下面的代码会将 x 与 2 进行比较：

if (x == 2)

在同一示例中，表达式 x = 2 是错误的，因为它不会比较操作数，而是将值 2 赋予变量 x。

严格等于 (===) 运算符与等于运算符相似，但是有一个很重要的差异：严格等于运算符不执行类型转换。如果两个操作数属于不同的类型，严格等于运算符会返回 false。严格不等于 (!==) 运算符会返回严格等于运算符的反值。

下表列出了动作脚本等于运算符：

运算符 | 执行的运算
== | 等于
=== | 严格等于
!= | 不等于
!== | 严格不等于


赋值运算符

可以使用赋值 (=) 运算符为变量赋值，如下例所示：

var password = "Sk8tEr";

还可以使用赋值运算符给同一表达式中的多个变量赋值。在下面的语句中，a 的值会被赋予变量 b、c和 d：

a = b = c = d;

也可以使用复合赋值运算符联合多个运算：复合运算符可以对两个操作数都进行运算，然后将新值赋予第一个操作数。例如，下面两个语句是等效的：

x += 15;
x = x + 15;

赋值运算符也可以用在表达式的中间，如下例所示：

// 如果口味不是香草味，则输出消息。
if ((flavor = getIceCreamFlavor()) != "vanilla") {
  trace ("Flavor was " + flavor + ", not vanilla.");
}

此代码与下面的稍显繁琐的代码是等效的：

flavor = getIceCreamFlavor();
if (flavor != "vanilla") {
  trace ("Flavor was " + flavor + ", not vanilla.");
}

下表列出了动作脚本赋值运算符：

运算符 | 执行的运算
= | 赋值
+= | 相加并赋值
-= | 相减并赋值
*= | 相乘并赋值
%= | 求模并赋值
/= | 相除并赋值
<<= | 按位左移位并赋值
>>= | 按位右移位并赋值
>>>= | 右移位填零并赋值
^= | 按位“异或”并赋值
|= | 按位“或”并赋值
&= | 按位“与”并赋值


点运算符和数组访问运算符

可以使用点运算符 (.) 和数组访问运算符 ([]) 来访问内置或自定义的动作脚本对象属性，包括影片剪辑的属性。

点运算符在左侧使用对象名称，而在右侧使用属性或变量的名称。属性或变量名称不能是字符串或评估为字符串的变量；它必须是一个标识符。以下示例使用点运算符：

year.month = "June";
year.month.day = 9;

点运算符和数组访问运算符执行相同的功能，但是点运算符将标识符作为其属性，而数组访问运算符则会将其内容评估为名称，然后访问该已命名属性的值。例如，以下表达式会访问影片剪辑 rocket 中的同一个变量 velocity：

rocket.velocity;
rocket["velocity"];

可以使用数组访问运算符动态设置和检索实例名称和变量。例如，在下面的代码中，将计算 [] 运算符中的表达式，计算结果将用作从影片剪辑 name 中获取的变量的名称：

name["mc" + i]

还可以使用 eval() 函数，如下所示：

eval("mc" + i)

数组访问运算符也可以用在赋值语句的左侧。这使您可以动态设置实例、变量和对象的名称，如下例所示：

name[index] = "Gary";

通过构建一个其中的元素也是数组的数组，可以在动作脚本中创建多维数组。若要访问多维数组的元素，可以将数组访问运算符进行自我嵌套，如下例所示：

var chessboard = new Array();
for (var i=0; i<8; i++) {
  chessboard.push(new Array(8));
}
function getContentsOfSquare(row, column){
  chessboard[row][column];
}

您可以检查脚本中的 [] 运算符是否匹配；请参见检查语法和标点。


指定对象的路径

若要使用动作控制影片剪辑或加载的 SWF 文件，则必须指定其名称和地址，这个名称和地址就称作目标路径。

在动作脚本中，可以通过其实例名称标识影片剪辑。例如，在下面的语句中，名为 star 的影片剪辑的 _alpha 属性设置为 50% 的可见性：

star._alpha = 50;

为影片剪辑指定实例名称：

  1. 在舞台上选择影片剪辑。
  2. 在属性检查器中输入实例名称。

标识加载的 SWF 文件：

  • 使用 _levelX，其中 X 是在加载 SWF 文件的 loadMovie() 动作中所指定的级别号。

    例如，加载到第 5 级的 SWF 文件的目标路径为 _level5。下面的示例将一个 SWF 文件加载到第 5 级中，并将其可见性设置为 false：

    onClipEvent (load) {
  loadMovieNum("myMovie.swf", 5);
}
onClipEvent (enterFrame) {
  _level5._visible = false;
}

输入 SWF 文件的目标路径：

  • 在“动作”面板（“窗口”>“开发”>“动作”）中，单击“插入目标路径”按钮，然后从出现的列表中选择影片剪辑。

有关目标路径的更多信息，请参见使用绝对和相对目标路径。


使用内置函数

函数是可以在 SWF 文件中的任意位置重用的动作脚本代码块。如果您将值当作参数传递给函数，该函数将对这些值执行运算。函数也可以返回值。

Flash 具有一些内置函数，可用于访问特定的信息，执行特定的任务，例如，获取承载 SWF 文件的 Flash Player 的版本号 (getVersion())。属于对象的函数称作方法。不属于对象的函数称作顶级函数，可以在“动作”面板的“Functions”类别中找到这些函数。

每个函数都有其各自的特性，而某些函数需要您传递特定的值。如果传递的参数多于函数的需要，多余的值将被忽略。如果您没有传递必需的参数，则将为空的参数指定 undefined 数据类型，这可能会在导出脚本时导致错误。若要调用函数，该函数必须位于播放头到达的帧中。

若要调用函数，只需使用函数名称并传递所有必需的参数：

isNaN(someVar);
getTimer();
eval("someVar");

有关各个函数的更多信息，请参见动作脚本字典概述中的相应条目。


函数

您可以定义函数，对传递的值执行一系列语句。函数也可以返回值。一旦定义了函数，就可以从任意一个时间轴中调用它，包括加载的 SWF 文件的时间轴。

可以将编写完善的函数看作一个“黑匣子”。如果它的输入、输出和目的都有详细的注释，则该函数的用户就不需要确切地了解该函数的内部工作原理。


定义函数

函数和变量一样，都附加在定义它们的影片剪辑的时间轴上，必须使用目标路径才能调用它们。与处理变量一样，您可以使用 _global 标识符声明一个全局函数，该函数无需使用目标路径即可从所有时间轴中进行调用。若要定义全局函数，请在函数名称前面加上标识符 _global，如下例所示：

_global.myFunction = function (x) {
   return (x*2)+3;
}

若要定义时间轴函数，请使用 function 动作，后面要带有函数名称、要传递给该函数的所有参数以及指明该函数动作的动作脚本语句。

下面的示例是一个名为 areaOfCircle 的函数，它带有参数 radius：

function areaOfCircle(radius) {
  return Math.PI * radius * radius;
}

也可以通过创建函数文本 来定义函数。函数文本是一种未命名的函数，它是在表达式中而不是在语句中声明的。可以使用函数文本定义函数，返回它的值，以及将该值赋予一个表达式中的变量，如下例所示：

area = (function() {return Math.PI * radius *radius;})(5);

当函数被重新定义时，新的定义将替换旧的定义。


将参数传递给函数

参数是函数对其执行代码的元素。（在本手册中，术语参数和参量是可以互换的。）例如，下面的函数接受参数 initials 和 finalScore：

function fillOutScorecard(initials, finalScore) {
  scorecard.display = initials;
  scorecard.score = finalScore;
}

在调用函数时，必须将必需的参数传递给函数。函数会用传递的值替换函数定义中的参数。在本示例中，scorecard 是影片剪辑的实例名称；display 和 score 是实例中的输入文本字段。下面的函数调用会将值 "JEB" 赋予变量 display，并将值 45000 赋予变量 score：

fillOutScorecard("JEB", 45000);

函数 fillOutScorecard() 中的参数 initials 与本地变量类似，当调用该函数时，该参数会存在，而当该函数退出时，该参数即会中止退出。如果在函数调用时省略了参数，则省略的参数会以 undefined 类型传递。如果在调用函数时提供了函数声明所不需要的多余参数，多余的参数会被忽略。


在函数中使用变量

本地变量是组织代码并使代码易于理解的重要工具。如果函数使用本地变量，则可以在 SWF 文件的其它所有脚本中隐藏其变量；本地变量的范围限定为函数体，在该函数退出后，本地变量也将不再存在。传递给函数的任何参数也作为本地变量来处理。

您还可以在函数中使用全局变量和常规变量。但是，如果要修改全局变量或常规变量，最好使用脚本注释记录这些修改。


从函数中返回值

使用 return 语句可以从函数中返回值。return 语句会使函数停止运行，然后将其替换为 return 动作的值。在函数中使用 return 语句时应遵守以下规则：

  • 如果为函数指定除 void 之外的其它返回类型，则必须在函数中加入一条 return 语句。
  • 如果指定返回类型为 void，则不应加入 return 语句。
  • 如果不指定返回类型，则可以选择是否加入 return 语句。如果不加入该语句，将返回一个空字符串。

例如，下面的函数返回参数 x 的平方，并且指定了返回值的类型必须为 Number：

function sqr(x):Number {
  return x * x;
}

某些函数会执行一系列的任务，但不返回值。例如，下面的函数会初始化一系列全局变量：

function initialize() {
  boat_x = _global.boat._x;
  boat_y = _global.boat._y;
  car_x = _global.car._x;
  car_y = _global.car._y;
}


调用用户定义的函数

可以使用目标路径从任何时间轴调用任何时间轴中的函数，包括从加载的 SWF 文件的时间轴中进行调用。如果函数是使用 _global 标识符声明的，则无需使用目标路径即可调用它。

若要调用函数，请输入函数名称的目标路径，如有必要，在括号内传递所有必需的参数。例如，下面的语句将在主时间轴上调用影片剪辑 MathLib 中的函数 sqr()，向其传递参数 3，然后将结果存储在变量 temp 中：

var temp = _root.MathLib.sqr(3);

下面的示例使用绝对路径调用 initialize() 函数，该函数是在主时间轴上定义的，而且不需要参数：

_root.initialize();

下面的示例使用相对路径调用 list() 函数，该函数是在 functionsClip 影片剪辑中定义的：

_parent.functionsClip.list(6);


编写和调试脚本概述

在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中，您可以将编写的脚本嵌入到 FLA 文件中，也可以在计算机上存储为外部文件。（如果您正在编写动作脚本 2.0 的类文件，则必须将每一个类存储成与该类同名的外部文件。）要编写嵌入的脚本，请使用“动作”面板并将该动作附加到某一按钮或影片剪辑，或者附加到时间轴中的一个帧（请参见运行动作脚本时进行控制）。要编写外部脚本文件，可以使用任何文本编辑器或代码编辑器。在 Flash Professional 中，您还可以使用内置的“脚本”窗口。有关更多信息，请参见使用“动作”面板和“脚本”窗口。

在使用动作脚本编辑器时，还可以检查语法错误、自动设置代码格式并用代码提示来帮助您完成语法。此外，标点符号平衡功能可帮助您匹配小括号、大括号或中括号。有关更多信息，请参见使用动作脚本编辑器。

当处理文档时，要经常测试它，从而确保它能够尽可能流畅地正常播放。您可以使用“带宽设置”模拟文档在不同连接速度下的情况（请参见测试文档的下载性能）。要测试脚本，您可以使用 Flash Player 的专用调试版本来帮助您排查故障。如果在动作脚本中使用合适的创作技术，当出现异常情况时，就会更容易地排除脚本的故障。有关更多信息，请参见调试脚本。


控制动作脚本的执行

当您撰写脚本时，可以使用“动作”面板将脚本附加到时间轴上的一个帧，或附加到舞台上的一个按钮或影片剪辑。当播放头进入该帧时，附加到该帧的脚本会运行或执行。但是，附加到 SWF 文件的第一帧的脚本的行为可能与附加到后续帧的脚本的行为不同，这是因为 SWF 文件中的第一帧是增量播放的，即对象一边下载到 Flash Player 一边在舞台上绘制，这可能会在动作执行时造成影响。第一帧之后的所有帧都是在帧的每个对象都可以使用之后立即播放的。

附加到影片剪辑或按钮上的脚本在事件发生时执行。事件 是 SWF 文件中发生的事情，例如移动鼠标、按下键盘键或加载影片剪辑。您可以使用动作脚本确定事件何时发生并根据事件执行特定的脚本。有关更多信息，请参见处理事件。

若要根据条件是否成立来执行动作或重复动作，可以使用 if、else、else if、for、while、do while、for..in 或 switch 语句，在本节的后面将简要介绍这些语句。


检查条件

用于检查一个条件是 true 还是 false 的语句以术语 if 开头。如果条件成立，动作脚本将执行随后的语句。如果条件不成立，动作脚本将跳到此代码块外的下一条语句。

要优化代码的性能，应首先检查最有可能的条件。

下列语句将测试三个条件。术语 else if 指定在前面的条件为 false 时要执行的替代测试。

if (password == null || email == null) {
  gotoAndStop("reject");
}  else if (password == userID){
  gotoAndPlay("startMovie");
}

如果要检查是否满足若干条件中的一个条件，则可以使用 switch 语句，而不必使用多个 else if 语句。


重复动作

动作脚本可以将一个动作重复指定的次数，或是在特定的条件成立时重复动作。使用 while、do..while、for 和 for..in 动作可以创建循环。

在条件成立时重复动作：

  • 使用 while 语句。

While 循环计算一个表达式的值，如果表达式为 true，则会执行循环体中的代码。当循环体中的每个语句都执行完毕后，会再次评估该表达式。在下面的示例中，循环将执行四次：

i = 4;
while (var i > 0) {
  my_mc.duplicateMovieClip("newMC" +i, i );
  i--;
}

可以使用 do..while 语句创建与 while 循环同类的循环。Do..while 循环中是在代码块结束时计算表达式的值，因此该循环总是至少执行一次，如下例所示：

i = 4;
do {
  my_mc.duplicateMovieClip("newMC" +i, i );
  i--;
} while (var i > 0);

使用内置计数器重复动作：

  • 使用 for 语句。

多数循环都会使用某种计数器，以控制循环执行的次数。每执行一次循环就称为一次迭代。可以声明一个变量并编写一条语句，每执行一次循环，该语句都会增加或减小该变量。在 for 动作中，计数器和递增计数器的语句都是该动作的一部分。在下面的示例中，第一个表达式 (var i = 4) 是在第一次迭代之前计算的初始表达式。第二个表达式 (i > 0) 是每次运行循环之前检查的条件。第三个表达式 (i--) 称为后表达式，每次运行循环之后会计算该表达式。

for (var i = 4; i > 0; i--){
  myMC.duplicateMovieClip("newMC" + i, i + 10);
}

遍历影片剪辑或对象的子级：

  • 使用 for..in 语句。

子级包括其它影片剪辑、函数、对象和变量。下面的示例使用 trace 语句在“输出”面板中显示其结果：

myObject = { name:'Joe', age:25, city:'San Francisco' };
for (propertyName in myObject) {
  trace("myObject has the property:" + propertyName + ", with the value:" + myObject[propertyName]);
}

本示例将在“输出”面板中生成如下结果：

myObject has the property:name, with the value:Joe
myObject has the property:age, with the value: 25
myObject has the property:city, with the value:San Francisco

您可能想让脚本重复特定的子级类型，例如只重复影片剪辑子级。将 for..in 与 typeof 运算符配合使用即可实现此目的。

for (name in myMovieClip) {
  if (typeof (myMovieClip[name]) == "movieclip") {
    trace("I have a movie clip child named " + name);
  }
}

有关各个动作的更多信息，请参见动作脚本字典概述中相应的各个条目。


关于“动作”面板和“脚本”窗口

您可以将 Flash 脚本嵌入到 FLA 文件中，也可以将它们存储为外部文件。最好尽量将动作脚本代码存储在外部文件中。这样便于在多个 FLA 文件中重用代码。然后，在 FLA 文件中，创建一个脚本，使用 #include 语句来访问存储在外部的代码。使用 .as 后缀将您的脚本标识为动作脚本 (AS) 文件。（如果要编写自定义类文件，则必须将这些类文件存储为外部 AS 文件。）

注意：发布、导出、测试或调试 FLA 文件时，外部文件中的动作脚本代码将被编译成 SWF 文件。因此，如果对外部文件进行了任何更改，则必须保存该文件，并重新编译使用它的任何 FLA 文件。

在您将动作脚本代码嵌入到 FLA 文件中时，可以将代码附加到帧和对象。尽可能尝试将嵌入的动作脚本附加到时间轴的第一帧。这样，您就不必搜索 FLA 文件来找到所有代码，代码将集中放置于一个位置上。创建一个名为“动作”的层并将代码放置于该层上。这样，即使您确实将代码放置于其它帧上或将代码附加到对象，也只需在一层上进行查找就可以找到所有代码。

要创建作为您的文档的一部分的脚本，请将动作脚本直接输入到“动作”面板中。要创建外部脚本，请使用您喜爱的文本编辑器；或者，在 Flash Professional 中，可以使用“脚本”窗口。在使用“动作”面板或“脚本”窗口时，您使用相同的动作脚本编辑器，在面板或窗口右侧的“脚本”窗格中键入代码。为了减少不得不做的键入工作量，您还可以从“动作”工具箱中将动作选到或拖到“脚本”窗格中。

要显示“动作”面板，请执行以下操作之一：

  • 选择“窗口”>“开发面板”>“动作”。
  • 按下 F9 键。

（仅限 Flash Professional）要显示“脚本”窗口，请执行以下操作之一：

  • 要开始撰写新脚本，请选择“文件”>“新建”>“动作脚本文件”。
  • 要打开现有脚本，请选择“文件”>“打开”，然后打开现有 AS 文件。
  • 要编辑已打开的脚本，请单击显示该脚本的名称的文档选项卡。（只有在 Microsoft Windows 中才支持文档选项卡。）


关于动作脚本编辑器环境

动作脚本编辑器环境由两部分组成。右侧部分是“脚本”窗格，这是键入代码的区域。左侧部分是一个“动作”工具箱，每个动作脚本语言元素在该工具箱中都有一个对应的条目。

在“动作”面板中，“动作”工具箱还包含一个脚本导航器，脚本导航器是 FLA 文件中具有关联动作脚本的位置的可视化表示形式；您可以在这里浏览 FLA 文件以查找动作脚本代码。如果您单击脚本导航器中的某一项目，则与该项目关联的脚本将出现在“脚本”窗格中，并且播放头将移到时间轴上的该位置。如果您双击脚本导航器中的某一项，则该脚本会被固定（请参见管理 FLA 文件中的脚本）。

“脚本”窗格的上方还有若干按钮：

您可以直接在“脚本”窗格中编辑动作、输入动作参数或删除动作。您还可以双击“动作”工具箱中的某一项或“脚本”窗格上方的“添加”(+) 按钮，向“脚本”窗格添加动作。


管理 FLA 文件中的脚本

如果您没有将所有代码集中放置于 FLA 文件中的一个位置内，则可以在“动作”面板中固定（就地锁定）多个脚本，以更易于在脚本之中移动。在下图中，与时间轴上当前位置关联的脚本位于名为“Cleanup”层的第 1 帧上。（最左侧的标签始终在时间轴上您的位置后。）该脚本也被固定（作为最右侧的标签显示）。其它两个脚本被固定；一个脚本位于名为“Intro”的层的第 1 帧上，另一个脚本则位于第 15 帧上。您可以通过单击这些标签或通过使用快捷键，在多个固定的脚本之中移动。在固定的脚本之中移动并不更改您在时间轴上的当前位置。

提示：如果“脚本”窗格中显示的内容没有进行相应更改，以反映您在时间轴上选择的位置，则“脚本”窗格可能正显示固定的脚本。单击“脚本”窗格左下角上最左侧的标签可以显示与时间轴上的位置相关联的动作脚本。

固定脚本：

  1. 确定您的指针在时间轴上的位置，以使脚本出现在“动作”面板中“脚本”窗格左下角的标签内。
  2. 执行以下其中一项操作：
    • 单击该标签右侧的图钉图标。（如果图钉图标的外观与最左侧上的图标相似，则该脚本已被固定；单击该图标可以取消对该脚本的固定。）
    • 右键单击 (Windows) 或按住 Control 键并单击 (Macintosh) 该标签，然后选择“固定脚本”。
    • 从“选项”弹出菜单（位于面板的右上角）中选择“固定脚本”。

取消固定一个或多个脚本：

  • 执行以下其中一项操作：
    • 如果被固定的脚本出现在“动作”面板中“脚本”窗格左下角的标签内，则单击该标签右侧的图钉图标。（如果该图钉图标在外观上与最左侧的图标类似，则该脚本已被取消固定；单击该图标会固定该脚本。）
    • 右键单击 (Windows) 或者按住 Control 键并单击 (Macintosh) 一个标签，然后选择“关闭脚本”或“关闭所有脚本”。
    • 从“选项”弹出菜单（位于面板的右上角）中选择“关闭脚本”或“关闭所有脚本”。

将快捷键用于固定的脚本：

  • 您可以将以下快捷键用于固定的脚本：

    动作

    Windows 快捷键

    Macintosh 快捷键

    固定脚本

    Control-= （等号）

    Command-=

    取消固定脚本

    Control--（减号）

    Command-=

    将焦点移到右侧的标签

    Control-Shift-.（句点）

    Command-Shift-.

    将焦点移到左侧的标签

    Control-Shift-,（逗号）

    Command-Shift-,

    取消对所有脚本的固定

    Control-Shift--（减号）

    Command-Shift--


动作脚本编辑器

Flash MX 2004 和 Flash MX Professional 2004 提供若干工具来帮助您编写语法正确的代码，并且允许您为代码格式和其它选项设置首选参数。本部分将讨论这些功能。


语法突出显示

在动作脚本中，就像在任何语言中一样，语法 是将元素组合在一起产生意义的方式。如果使用了错误的动作脚本语法，脚本将不会运行。

当您在 Flash MX 2004 和 Flash MX Professional 2004 中撰写脚本时，“动作”工具箱中将以黄色显示您的目标播放器版本不支持的命令。例如，如果 Flash Player SWF 版本设置为 Flash 6，仅受 Flash Player 7 支持的动作脚本就在“动作”工具箱中显示为黄色。（有关设置 Flash Player SWF 版本的信息，请参见为 Flash SWF 文件格式设置发布选项。）

您还可以在编写脚本时设置首选参数，使 Flash 能够在您编写脚本时对您的一部分脚本进行“颜色编码”，让您注意到键入错误。例如，假设您设置语法颜色首选参数，以深绿色显示关键字。在您键入代码时，如果键入 var，则单词 var 以绿色显示。但是，如果您错误地键入了 vae，则单词 vae 将保持为黑色，使您立即就能注意到键入的单词有误。

要设置键入时的语法颜色首选参数，请执行以下操作之一：

  • 选择“编辑”>“首选参数”，并在“动作脚本”选项卡上指定语法颜色设置。
  • 在“动作”面板中，从“选项”弹出菜单（位于面板的右上角）中选择“首选参数”，然后在“动作脚本”选项卡上指定语法颜色设置。


编写触发代码提示的代码

使用动作脚本编辑器（在“动作”面板或“脚本”窗口中）时，Flash 可以检测到正在输入的动作并显示代码提示，即包含该动作完整语法的工具提示，或列出可能的方法或属性名称的弹出菜单。当您精确键入或命名对象时，会出现参数、属性和事件的代码提示，这样，动作脚本编辑器就会知道要显示哪些代码提示，此问题将在本部分下文中讨论。有关在代码提示出现时如何使用它们的信息，请参见使用代码提示。

注意：代码提示将为那些不要求您为其创建和命名一个对象的本地类（例如 Math、Key、Mouse 等）自动启用。

严格指定对象类型以触发代码提示

在您使用动作脚本 2.0 时，可以精确键入基于内置类（例如 Button、Array 等）的变量。如果您这样做，动作脚本编辑器将显示该变量的代码提示。例如，假设您键入以下代码：

var names:Array = new Array();
names.

只要您键入句点 (.)，Flash 就会显示可用于 Array 对象的方法和属性的列表，因为您已经将该变量的类型指定为数组。有关数据类型指定的更多信息，请参见严格数据类型指定。有关在代码提示出现时如何使用它们的信息，请参见使用代码提示。

使用后缀触发代码提示

如果您使用的是动作脚本 1，或者在创建对象时未严格指定类型（请参见严格指定对象类型以触发代码提示），而又想显示这些对象的代码提示，则必须在创建每个对象时在其名称后添加特殊后缀。例如，触发 Array 类和 Camera 类的代码提示的后缀分别是 _array 和 _cam。如果您键入以下代码：

var my_array = new Array();
var my_cam = Camera.get();

然后，键入以下两项中的任何一项（变量名称后面跟有句点），就会分别显示 Array 和 Camera 对象的代码提示。

my_array.
my_cam.

对于在舞台上出现的对象，请使用属性检查器的“实例名称”文本框中的后缀。例如，要显示 MovieClip 对象的代码提示，请使用属性检查器为所有 MovieClip 对象指定带有 _mc 后缀的实例名称。然后，只要您键入实例名称和紧随的句点，就会显示代码提示。

尽管在精确键入对象时不需要后缀来触发代码提示，但一贯地使用它们可以帮助您和其他人理解您的脚本。

下表列出了支持自动代码提示所需的后缀：

对象类型 | 变量后缀
Array | _array
按钮 | _btn
摄像头 | _cam
Color | _color
ContextMenu | _cm
ContextMenuItem | _cmi
日期 | _date
Error | _err
LoadVars | _lv
LocalConnection | _lc
麦克风 | _mic
MovieClip | _mc
MovieClipLoader | _mcl
PrintJob | _pj
NetConnection | _nc
NetStream | _ns
SharedObject | _so
Sound | _sound
字符串 | _str
TextField | _txt
TextFormat | _fmt
Video | _video
XML | _xml
XMLNode | _xmlnode
XMLSocket | _xmlsocket

有关在代码提示出现时如何使用它们的信息，请参见使用代码提示。

使用注释触发代码提示

您也可以使用动作脚本注释来指定对象的类，以用于代码提示。下面的示例将告诉动作脚本，实例 theObject 的类是 Object，依此类推。如果在这些注释后输入 mc，然后再输入一个句点，代码提示将显示 MovieClip 的方法和属性列表；如果输入 theArray，然后再输入一个句点，代码提示将显示 Array 的方法和属性列表，依此类推。

// 对象 theObject;
// 数组 theArray;
// 影片剪辑 mc;

不过，Macromedia 建议使用严格数据类型指定（请参见严格指定对象类型以触发代码提示）或使用后缀（请参见使用后缀触发代码提示），而不建议使用此技术，因为前面的两种技术自动启用代码提示，并使代码更易懂。有关在代码提示出现时如何使用它们的信息，请参见使用代码提示。


使用代码提示

默认情况下，启用代码提示。通过设置首选参数，可以禁用代码提示或确定它们出现的速度。如果在首选参数中禁用了代码提示，则仍可为特定命令显示代码提示。

要为自动代码提示指定设置，请执行以下操作之一：

  • 选择“编辑”>“首选参数”，然后在“动作脚本”选项卡中启用或禁用“代码提示”。
  • 在“动作”面板中，从“选项”弹出菜单（位于面板的右上角）中选择“首选参数”，然后在“动作脚本”选项卡上启用或禁用“代码提示”。

如果您启用代码提示，则还可以以秒为单位指定代码提示显示前的延迟。例如，如果您不熟悉动作脚本，则最好选择无延迟，这样，代码提示将始终立即显示。不过，如果您通常知道要键入的内容，只在使用不熟悉的语言元素时才需要代码提示，则可以指定一个延迟，这样，在您不想使用代码提示时这些代码提示不会出现。

使用工具提示样式的代码提示：

  1. 在需要括号的元素（例如方法名称，if 或 do while 之类的命令等）后键入一个左括号 [(] 以显示代码提示。

    代码提示就出现了。

    注意：如果代码提示不出现，请检查您是否在“动作脚本”选项卡上禁用了代码提示。如果您希望为已创建的变量或对象显示代码提示，请确保您正确命名了变量或对象（请参见使用后缀触发代码提示），或者精确键入了变量或对象（请参见严格指定对象类型以触发代码提示）。

  2. 输入参数的值。如果有多个参数，则用逗号分隔这些值。

    像 gotoAndPlay() 或 for 之类的重载命令（即，可以用不同参数集调用的函数或方法）会显示一个指示器，让您选择要设置的参数。单击小箭头按钮或者按下 Control+左箭头组合键和 Control+右箭头组合键，可以选择参数。

  3. 要使代码提示消失，请执行以下操作之一：
    • 键入右括号 [)]。
    • 单击该语句之外的地方。
    • 按下 Escape 键。

使用菜单样式的代码提示：

  1. 通过在变量或者对象名称后键入句点来显示代码提示。

    代码提示菜单就出现了。

    注意：如果代码提示不出现，请检查您是否在“动作脚本”选项卡上禁用了代码提示。如果您希望为已创建的变量或对象显示代码提示，请确保您正确命名了变量或对象（请参见使用后缀触发代码提示），或者精确键入了变量或对象（请参见严格指定对象类型以触发代码提示）。

  2. 要导航代码提示，可用向上和向下箭头键。
  3. 要选择菜单中的某项，请按下 Return 键或 Tab 键，或者双击该项。
  4. 要使代码提示消失，请执行以下操作之一：
    • 选择一个菜单项。
    • 单击该语句之外的地方。
    • 如果已经键入了一个左括号，请键入一个右括号 [)]。
    • 按下 Escape 键。

手动显示代码提示：

  1. 在可以显示代码提示的代码位置单击。下面是一些示例：
    • 在语句或命令之后的点的后面（必须在这里输入属性或方法）
    • 在方法名称中的括号之间
  2. 执行以下其中一项操作：
    • 单击“脚本”窗格上方的“显示代码提示”按钮。
    • 按下 Control+空格键 (Windows) 或者 Command+空格键 (Macintosh)。
    • 如果您正使用“动作”面板，则打开弹出菜单（在标题栏的右侧），然后选择“显示代码提示”。


使用 Escape 快捷键

您可以通过使用快捷键（按下 Escape 键，再按下两个别的键），向脚本添加许多元素。（这些快捷方式不同于启动某些菜单命令的快捷键。）例如，如果您正在使用“脚本”窗格并键入 Escape+d+o，则以下代码将出现在脚本中，插入点就位于单词 while 之后，您可以在此处开始键入条件：

do {
} while ();

同样，如果您键入 Escape+c+h，则会将以下代码放置在脚本中，插入点就放置在括号之间，您可以在此处开始键入条件：

catch () {
}

如果您要了解哪些命令具有 Escape 快捷键或想得到相关提示，则可以在“动作”面板中的元素旁显示它们。

显示或隐藏 Escape 快捷键：

  • 在“视图选项”弹出菜单中，启用或禁用“查看 Escape 快捷键”。


检查语法和标点

要彻底弄清您编写的代码是否能像预期的那样运行，需要发布或测试文件。不过，您可以不必退出 FLA 文件就迅速检查动作脚本代码。语法错误列在“输出”面板中。（在检查语法时，只检查当前的脚本；不检查可能位于 FLA 文件中的其它脚本。）您还可以检查代码块两边的小括号、大括号或中括号（数组访问运算符）是否齐全。

要进行语法检查，请执行以下操作之一：

  • 单击“脚本”窗格上方的“检查语法”按钮。
  • 在“动作”面板中，显示弹出菜单（位于面板的右上角）并选择“检查语法”。
  • 按下 Control+T 组合键 (Windows) 或 Command+T 组合键 (Macintosh)。

检查标点平衡：

  1. 在脚本中的大括号 ({})、数组访问运算符 ([]) 或小括号 (()) 之间单击。
  2. 按下 Control+' 组合键 (Windows) 或 Command+' 组合键 (Macintosh) 来突出显示大括号、中括号或小括号之间的文本。

    突出显示有助于检查开始标点符号是否有正确与之对应的结束标点符号。


设置代码格式

您可以指定设置以确定是自动还是手动设置代码格式以及代码的缩进。您还可以选择是否查看行号以及是否让长代码行换行。此外，您还可以选择是否使用动态字体映射。

设置格式选项：

  1. 执行以下操作之一：
    • 在“动作”面板中，从“选项”弹出菜单（位于面板的右上角）中选择“自动套用格式选项”。
    • （仅限 Flash Professional），在外部脚本文件中，选择“编辑”>“自动套用格式选项”。

    此时出现“自动套用格式选项”对话框。

  2. 选择任意复选框。要查看每个选择的效果，请看“预览”窗格。

在设置“自动套用格式选项”后，所作设置将自动应用于您编写的代码，但不应用于现有代码。要将所作设置应用于现有代码，您必须手动操作。对于以前已使用不同设置设置了其格式的代码和以前从其它编辑器导入的代码等，您可以使用此过程设置其格式。

要根据“自动套用格式选项”设置来设置代码格式，请执行以下操作之一：

  • 单击“脚本”窗格上方的“自动套用格式”按钮。
  • 从“动作”面板弹出菜单中选择“自动套用格式”。
  • 按下 Control+Shift+F 组合键 (Windows) 或 Command+Shift+F 组合键 (Macintosh)。

使用动态字体映射：

  • 由于动态字体映射会在进行脚本撰写时增加运行时间，默认情况下它是关闭的。要打开它，请选择动作脚本首选参数中的“使用动态字体映射”。

    例如，如果您正在处理多语言文本，则应打开动态字体映射。

使用自动缩进：

  • 在默认情况下自动缩进功能是打开的。要关闭自动缩进，在动作脚本首选参数中取消选择“自动缩进”。

    如果打开了自动缩进，在 ( 或 { 之后键入的文本将按照动作脚本首选参数中的“制表符大小”设置自动缩进。要缩进其它行，请选择该行，然后按 Tab 键。要取消缩进，请按 Shift+Tab 组合键。

启用或禁用行号和自动换行：

  • 在“视图选项”弹出菜单中，启用或禁用“查看行号”和“自动换行”。


调试

Flash 提供了几个用于测试 SWF 文件中的动作脚本的工具。本部分下文中介绍的调试器可让您在 SWF 文件在 Flash Player 中运行时查找该 SWF 文件中出现的错误。Flash 还提供以下这些调试工具：

  • “输出”面板，可显示错误消息以及变量和对象列表（请参见使用“输出”面板）
  • trace 语句，可将编程注释和表达式的值发送到“输出”面板（请参见使用 trace 语句）
  • throw 和 try..catch..finally 语句，可用于从脚本内测试和响应运行时错误
  • 提供全面的编译器错误消息，帮助您更快捷地诊断和解决问题（请参见错误消息）

您必须在 Flash Player 的称作 Flash 调试播放器的特殊版本中查看 SWF 文件。在您安装创作工具时，将自动安装 Flash 调试播放器。因此，如果您安装 Flash 并浏览具有 Flash 内容的 Web 站点，或者执行“测试影片”，则您使用的正是 Flash 调试播放器。您还可以运行 <app_dir>\Players\Debug\ 目录中的安装程序，或者从同一目录中启动独立的 Flash 调试播放器。

在您使用“测试影片”命令测试实现键盘控制（Tab 键切换或使用 Key.addListener() 创建的快捷键等）的影片时，选择“控制”>“禁用快捷键”。选择此选项可以避免创作环境“抢占”键击动作，使这些动作可以传到播放器。例如，在创作环境中，Control+U 组合键将打开“首选参数”对话框。如果您的脚本将 Control+U 组合键分配给为屏幕上的文本加下划线的动作，则在您使用“测试影片”时，按下 Control+U 组合键将打开“首选参数”对话框，而不是运行给文本加下划线的动作。若要令 Control+U 命令传到播放器，您必须选择“控制”>“禁用快捷键”。

小心：如果 SWF 文件路径的任何部分具有不能使用 MBCS 编码方案表示的字符，则“测试影片”命令将失败。例如，在英文系统上使用日文路径将不起作用。使用外部播放器的应用程序的所有方面都受到此限制的约束。

调试器显示了一个当前加载到 Flash Player 中的影片剪辑的分层显示列表。使用调试器，您可在 SWF 文件播放时显示和修改变量和属性的值，并且可以使用断点停止 SWF 文件并逐行跟踪动作脚本代码。

您可以在测试模式下对本地文件使用调试器，或使用调试器测试远程位置的 Web 服务器上的文件。调试器用于在动作脚本中设置断点，断点会在运行时停止 Flash Player，并跟踪代码。然后可以回到脚本中，对它们进行编辑，以便它们产生正确的结果。

在文件被激活后，调试器的状态栏就会显示文件的 URL 或本地路径，表明文件是运行在测试模式下还是从远程位置运行，并且显示影片剪辑显示列表的动态视图。向文件添加影片剪辑或从文件删除影片剪辑时，显示列表会立即反映出这些更改。通过移动水平拆分器，可以调整显示列表的大小。

在测试模式下激活调试器：

  • 选择“控制”>“调试影片”。

    这样会打开调试器。同时也在测试模式下打开 SWF 文件。


从远程位置调试 SWF 文件

通过使用 Flash Player 的独立版本、ActiveX 版本或者插件版本，可以调试远程 SWF 文件。在导出 SWF 文件时，您可以在文件中启用调试，并且创建调试密码。如果您不启用调试，调试器将不会激活。

要确保只有可信的用户才能在 Flash 调试播放器中运行 SWF 文件，在发布文件时可以使用调试密码。与在 JavaScript 或者 HTML 中一样，用户也可以查看动作脚本中的客户端变量。要安全地存储变量，您必须把它们发送到服务器端应用程序，而不要把它们存储在文件中。然而，作为 Flash 开发人员，您可能有其它的一些不想泄漏出去的商业机密，比如影片剪辑结构。您可以使用调试密码来保护您的工作。

当您导出、发布或者测试影片的时候，Flash 会创建一个包含调试信息的 SWD 文件。要进行远程调试，您必须把 SWD 文件放到服务器上 SWF 文件所在的目录中。

启用 Flash 影片的远程调试：

  1. 选择“文件”>“发布设置”。
  2. 在“发布设置”对话框的“Flash”选项卡上，选择“允许调试”。

  3. 要设置密码，在“密码”框中输入密码。

    设置了此密码后，任何人都必须使用该密码才能将信息下载到调试器中。不过，如果将“密码”框留空，则不需要密码。

  4. 关闭“发布设置”对话框，然后选择以下命令之一：
    • “控制”>“调试影片”
    • “文件”>“导出影片”
    • “文件”>“发布设置”>“发布”

    Flash 创建以 .swd 为扩展名的调试文件，并把它与 SWF 文件一起保存。SWD 文件包含了允许您使用断点和跟踪代码的信息。

  5. 把 SWD 文件放到服务器上与 SWF 文件相同的目录中。

    如果 SWD 文件和 SWF 文件不在同一个目录中，您仍然可以进行远程调试，但是调试器将忽略断点，这样您就不能跟踪代码。

  6. 在 Flash 中，选择“窗口”>“开发面板”>“调试器”。
    • 在调试器中，从“选项”弹出菜单（位于面板的右上角）选择“启用远程调试”。

从远程位置激活调试器：

  1. 打开 Flash 创作应用程序。
  2. 在浏览器中或在独立播放器中，从远程位置打开已发布的 SWF 文件。

    此时出现“远程调试”对话框。

    如果没有出现该对话框，Flash 就不能查找到该 SWD 文件。在这种情况下，在 SWF 文件中以右键单击 (Windows) 或者按住 Control 键并单击 (Macintosh)，以显示上下文菜单，然后选择“调试器”。

  3. 在“远程调试”对话框中选择“本地主机”或“其它机器”：
    • 如果 Flash 调试播放器和 Flash 创作应用程序在同一台计算机上，请选择“本地主机”。
    • 如果调试播放器和 Flash 创作应用程序不在同一台计算机上，请选择“其它机器”。输入运行 Flash 创作应用程序的计算机的 IP 地址。
  4. 当连接建立时，就出现一个密码提示。如果设置了调试密码，请输入它。

    在调试器中会出现 SWF 文件的显示列表。


显示和修改变量

调试器中的“变量”选项卡显示 SWF 文件中的所有全局变量和时间轴变量的名称和值。如果改变了“变量”选项卡上的变量值，当 SWF 文件运行时，您就能看到在 SWF 文件中反映的变化。例如，要测试游戏中的冲突检测，可以输入变量值以便把球定位到墙旁边的正确位置。

调试器的“本地变量”选项卡会显示 SWF 文件在断点处或在用户定义函数内任何位置停止时可用的所有本地变量的名称和值。

显示变量：

  1. 从显示列表中选择包含该变量的影片剪辑。

    若要显示全局变量，请选择显示列表中的 _global 剪辑。

  2. 单击“变量”选项卡。

在 SWF 文件播放时，显示列表会自动更新。如果在特定的帧从 SWF 文件中删除一段影片剪辑，该影片剪辑以及它的变量、变量名也会从调试器的显示列表中删除。但是，如果将某个变量标记为加入“监视点”列表（请参见使用“监视点”列表），则该变量就不会被删除。

修改变量值：

  • 双击该值，然后输入新的值。

该值不能是表达式。例如，可以使用 "Hello"、3523 或 "http://www.macromedia.com"，但是不能使用 x + 2 或 eval("name:"+i)。该值可以是字符串（任何用引号括起的值）、数字或布尔值（true 或 false）。

注意：若要在测试模式下将表达式的值显示到“输出”面板上，请使用 trace 语句。请参见 使用 trace 语句。


使用“监视点”列表

要以可管理的方式监视一组关键变量，可以标记这些变量，使之在“监视点”列表中出现。“监视点”列表显示了变量和它的值的绝对路径。和在“变量”选项卡中的方式一样，您也可以在“监视点”列表中输入新的变量值。

如果您向“监视点”列表中加入了某个本地变量，只有当 Flash Player 停止在该变量所在范围的动作脚本的某一行时，才会显示该变量的值。所有其它变量会在 SWF 文件播放时显示。如果调试器查找不到该变量的值，则该变量的值将按“未定义”列出。

“监视点”列表只能显示变量，不能显示属性和函数。

为“监视点”列表标记的变量和在“监视点”列表中的变量

要向“监视点”列表中添加变量，请执行以下操作之一：

  • 在“变量“或“本地变量”选项卡上以右键单击 (Windows) 或按住 Control 键并单击 (Macintosh) 一个选定的变量，然后从上下文菜单中选择“监视点”。该变量旁边会出现一个蓝点。
  • 在“监视点”选项卡上以右键单击 (Windows) 或按住 Control 键并单击 (Macintosh)，然后从上下文菜单中选择“增加”。在字段中输入变量名的目标路径和变量值。

从“监视点”列表中删除变量：

  • 在“监视点”选项卡上以右键单击 (Windows) 或者按住 Control 键并单击 (Macintosh)，然后从上下文菜单中选择“删除”。


显示影片剪辑属性和更改可编辑属性

调试器的“属性”选项卡显示舞台中任何影片剪辑的所有属性值。在 SWF 文件运行时，您可以改变一个值，然后查看它对 SWF 文件的影响。某些影片剪辑属性是只读的，不能更改。

在调试器中显示影片剪辑属性：

  1. 从显示列表中选择影片剪辑。
  2. 在调试器中单击“属性”选项卡。

修改属性值：

  • 双击该值，然后输入新的值。

该值不能是表达式。例如，可以输入 50 或 "clearwater"，但是不能输入 x + 50。该值可以是字符串（任何用引号括起的值）、数字或布尔值（true 或 false）。不能在调试器中输入对象或数组值（例如 {id:"rogue"} 或 [1, 2, 3]）。

有关更多信息，请参见字符串运算符和使用运算符处理表达式中的值。

注意：若要在测试模式下将表达式的值显示到“输出”面板上，请使用 trace 语句。请参见 使用 trace 语句。


设置和删除断点

通过使用断点，可以使正在 Flash Player 中运行的 SWF 文件在动作脚本的指定行上停止。您可以使用断点来测试代码中可能的错误点。例如，如果您编写了一组 if..else if 语句，但不能确定哪一个正在执行，则可以在语句前面添加断点，然后在调试器中逐个跟踪这些语句。

您可以在“动作”面板或者调试器中设置断点。（要在外部脚本中设置断点，必须使用调试器。）在“动作”面板中设置的断点会保存在 Flash 文档（FLA 文件）中。在调试器中设置的断点不会保存在 FLA 文件中，并且只在当前的调试会话中有效。

若要在“动作”面板中设置或删除断点，请执行以下操作之一：

  • 在左边距中单击。红点指示断点。
  • 单击“脚本”窗格上方的“调试选项”按钮。
  • 右键单击 (Windows) 或按住 Control 键并单击 (Macintosh)，以显示上下文菜单，然后选择“断点”、“删除断点”或者“删除所有断点”。
  • 按下 Control+Shift+B 组合键 (Windows) 或者 Command+Shift+B 组合键 (Macintosh)。

注意：在 Flash 的早期版本中，在“脚本”窗格的左边距处单击会选择该代码行；现在，执行这一操作将添加或删除断点。要选择某一代码行，请按住 Control 键并单击 (Windows) 或按住 Command 键并单击 (Macintosh)。

要在调试器中设置和删除断点，请执行以下操作之一：

  • 在左边距中单击。红点指示断点。
  • 单击代码视图上方的“切换断点”或者“删除所有断点”按钮。
  • 右键单击 (Windows) 或按住 Control 键并单击 (Macintosh)，以显示上下文菜单，然后选择“断点”、“删除断点”或者“删除所有断点”。
  • 按下 Control+Shift+B 组合键 (Windows) 或者 Command+Shift+B 组合键 (Macintosh)。

一旦 Flash Player 停留在某个断点上，您可以跳入、跳过或者跳出那行代码。（请参见跟踪代码行。）如果在“动作”面板中在注释行或者空行上设置断点，该断点就会被忽略。


跟踪代码行

当开始调试会话时，Flash Player 会暂停。如果在“动作”面板中设置断点，只需单击“继续”按钮即可播放 SWF 文件，直到到达断点。例如，在下面的代码中，假定在一个按钮内的 myFunction() 一行上设置了断点：

on (press) {
  myFunction();
}

当单击按钮时，到达断点 Flash Player 就暂停。无论 myFunction() 函数被定义在文档中的什么位置，您都可以跳入并将调试器移到该函数的第一行。您也可以跟踪或者跳出函数。

如果没有在“动作”面板中设置断点，可以使用调试器中的跳转菜单来选择影片中的任意脚本。一旦选择了一个脚本，就可以向它添加断点。添加断点之后，必须单击“继续”按钮来播放影片。到达断点时，调试器会停止。

当您跟踪代码行时，在“监视点”列表中和“变量”、“本地变量”以及“属性”选项卡中的变量和属性值也跟着改变。沿着调试器代码视图左侧的黄色箭头表明调试器在该行停止。使用代码视图顶部的下列按钮：

跳入使调试器（由黄色箭头指示）进入函数。“跳入”只用于用户定义的函数。

在下面的例子中，如果在第 7 行放置一个断点，然后单击“跳入”，调试器将前进到第 2 行，再单击“跳入”会进入第 3 行。对那些其中没有用户定义函数的行单击“跳入”，调试器会跳过一个代码行。例如，如果在第 2 行上停止，然后选择“跳入”，调试器将前进到第 3 行，如下面的例子中所示：

1 function myFunction() {
2 x = 0;
3 y = 0;
4 }
5
6 mover = 1;
7 myFunction();
8 mover = 0;

跳出使调试器跳出函数。只有当前在用户定义函数中停止时，此按钮才能起作用，它把黄色箭头移到调用该函数的那行后面的那一行。在上面的例子中，如果在第 3 行放置一个断点，然后单击“跳出”，调试器就会移动到第 8 行。在不属于用户定义函数的行上单击“跳出”与单击“继续”的作用一样。例如，如果在第 6 行停止，然后单击“跳出”，播放器会继续执行脚本，直到遇到一个断点。

跳过使调试器跳过一行代码。此按钮将黄色箭头移动到脚本的下一行，并且忽略任何用户定义函数。在上面的例子中，如果在第 7 行停止，然后单击“跳过”，将会直接进入到第 8 行，函数 myFunction() 将被忽略。

继续离开播放器停止处的行并继续播放，直至到达一个断点。

停止调试使调试器处于非活动状态，但是继续在 Flash Player 中播放 SWF 文件。


“输出”面板

在测试模式下，“输出”面板可显示相应的信息来帮助您排查 SWF 文件中的故障。一些信息（例如语法错误）可以自动显示出来。通过使用“对象列表”和“变量列表”命令，可以显示其它信息。（请参见列出 SWF 文件的对象和列出 SWF 文件的变量。）

如果在脚本中使用 trace 语句，SWF 文件运行时，可以向“输出”面板发送特定的信息。这些信息可以包括 SWF 文件的状态说明或者表达式的值。（请参见使用 trace 语句。）

要显示“输出”面板，请选择“窗口”>“开发面板”>“输出”，或者按 F2 键。

注意：如果在脚本中有语法错误，则“输出”面板在您检查语法或测试 SWF 文件时自动出现。

若要处理“输出”面板上的内容，请使用右上角的“选项”弹出菜单。


列出 SWF 文件的对象

在测试模式下，“对象列表”命令会在分层结构列表中显示以下一些信息：级别、帧、对象类型（形状、影片剪辑或者按钮）、目标路径和影片剪辑、按钮以及文本字段的实例名称。这对查找正确的目标路径和实例名称特别有用。与调试器不同，该列表不会在 SWF 文件播放时自动更新；每次要向“输出”面板发送这些信息时，必须选择“对象列表”命令。

“对象列表”命令不会列出所有的动作脚本数据对象。在此上下文中，对象被看成舞台中的形状或者元件。

显示影片中的对象列表：

  1. 如果影片不是在测试模式下运行，请选择“控制”>“测试影片”。
  2. 选择“调试”>“对象列表”。

在“输出”面板中会显示舞台上当前所有对象的列表，如下面的例子中所示：

Level #0:Frame=1 Label="Scene_1"
  Button:Target="_level0.myButton"
    Shape:
  Movie Clip:Frame=1 Target="_level0.myMovieClip"
    Shape:
  Edit Text:Target="_level0.myTextField" Text="This is sample text."


列出 SWF 文件的变量

在测试模式下，“变量列表”命令会显示 SWF 文件中当前所有变量的列表。这对查找正确的变量目标路径和变量名称特别有用。与调试器不同，该列表不会在 SWF 文件播放时自动更新；每次要向“输出”面板发送这些信息时，必须选择“变量列表”命令。

“变量列表”命令还显示用 _global 标识符声明的全局变量。全局变量会显示在“变量列表”命令输出的最上部，列在标题为“全局变量”的部分中，而且每个全局变量都带有 _global 前缀。

此外，“变量列表”命令显示 getter/setter 属性（这是用 Object.addProperty() 方法创建并调用 get 或 set 方法的属性）。getter/setter 属性与其所属的对象中的任何其它属性一起显示。为使这些属性与普通变量相比更易于区别，getter/setter 属性的值以 [getter/setter] 字符串为前缀。为 getter/setter 属性显示的值通过计算该属性的 get 函数确定。

显示 SWF 文件中的变量列表：

  1. 如果 SWF 文件不是在测试模式下运行，请选择“控制”>“测试影片”。
  2. 选择“调试”>“变量列表”。

    在“输出”面板中会显示 SWF 文件中当前所有变量的列表，如下面的例子中所示：

    Global Variables:
  Variable _global.MyGlobalArray = [object #1] [
    0:1,
    1:2,
    2:3
  ]
Level #0:
  Variable _level0.$version = "WIN 6,0,0,101"
  Variable _level0.RegularVariable = "Gary"
  Variable _level0.AnObject = [object #1] {
    MyProperty:[getter/setter] 3.14159
  }


显示文本字段属性以进行调试

若要获取有关 TextField 对象的调试信息，您可以在测试影片模式中使用“调试”>“列出变量”命令。“输出”面板使用以下惯例显示 TextField 对象：

  • 如果对象上未找到属性，则不显示。
  • 一行上显示的属性不超过 4 个。
  • 具有字符串值的属性显示在单独的行上。
  • 如果处理内置属性后又为对象定义了任何其它属性，则将它们按照上面第二项和第三项中的规则添加到显示中。
  • 颜色属性显示为十六进制数字 (0x00FF00)。
  • 属性按以下顺序显示：variable、text、htmlText、html、textWidth、textHeight、maxChars、borderColor、backgroundColor、textColor、border、background、wordWrap、password、multiline、selectable、scroll、hscroll、maxscroll、maxhscroll、bottomScroll、type、embedFonts、restrict、length、tabIndex、autoSize。

测试模式中的“调试”>“对象列表”命令列出 TextField 对象。如果为文本字段指定了一个实例名称，则将以如下形式在“输出”面板中显示包括该实例名称的完整目标路径：

Target = "target path"

有关“变量列表”或“对象列表”命令的更多信息，请参见使用“输出”面板。


使用 trace 语句

在脚本中使用 trace 语句时，可以将信息发送到“输出”面板。例如，在测试影片或场景时，可以向面板发送具体的编程注释，或者在按下按钮或播放帧时使特定的结果得以显示。trace 语句与 JavaScript 的 alert 语句类似。

在脚本中使用 trace 语句时，可以使用表达式作为参数。在测试模式下，表达式的值会显示在“输出”面板中，如下所示：

trace 语句返回的值将显示在“输出”面板上。

onClipEvent (enterFrame) {
  trace("onClipEvent enterFrame " + enterFrame++)
}


为测试影片更新 Flash Player

您可以从 Macromedia 支持中心 www.macromedia.com/go/flash_support_cn 下载最新的 Flash Player 版本，然后使用这一最新版本的 Flash Player 测试您的 SWF 文件。


处理事件概述

事件是指软件或硬件发生的事情，它要求 Macromedia Flash 应用程序的响应。例如，鼠标单击或按下键盘键之类的事件称作用户事件，因为它是由于直接用户交互操作而发生的。Flash Player 自动生成的事件（例如影片剪辑在舞台上第一次出现）称作系统事件，因为它不是由用户直接生成的。

为使应用程序能够对事件做出反应，必须使用事件处理函数。事件处理函数是与特定对象和事件关联的动作脚本代码。例如，当用户单击舞台上的一个按钮时，可以将播放头前进到下一帧。或者，在 XML 文件通过网络加载完毕后，可以在文本字段中显示该文件的内容。

动作脚本提供了以下几种不同的方法来处理事件：事件处理函数方法、事件侦听器以及按钮和影片剪辑事件处理函数。


使用事件处理函数方法

事件处理函数方法是一种类方法，它在事件在该类的实例上发生时调用。例如，Button 类定义 onPress 事件处理函数，只要按下鼠标就对 Button 对象调用该处理函数。但是，与一个类的其它方法不同，您没有直接调用事件处理函数；Flash Player 在相应事件发生时自动调用事件处理函数。

默认情况下，事件处理函数方法是未定义的：在发生特定事件时，将调用其相应的事件处理函数，但应用程序不会进一步响应该事件。要让应用程序响应该事件，需要使用 function 语句定义一个函数，然后将该函数分配给相应的事件处理函数。然后，只要发生该事件，就自动调用分配给该事件处理函数的函数。

事件处理函数由以下三部分组成：事件所应用的对象、对象的事件处理函数方法的名称和分配给事件处理函数的函数。下例显示事件处理函数的基本结构。

object.eventMethod = function () {
  // 您的代码，对事件作出反应
}

例如，假定您在舞台上具有名为 next_btn 的按钮。以下代码将一个函数分配给按钮的 onPress 事件处理函数；该函数将播放头向前移动到时间轴上的下一帧。

next_btn.onPress = function ()
  nextFrame();
}

在以上代码中，nextFrame() 函数被直接分配给 onPress。您也可以将一个函数引用（名称）分配给某一事件处理函数方法，然后在以后定义该函数。

// 将一个函数引用分配给按钮的 onPress 事件处理函数方法
next_btn.onPress = goNextFrame;

// 定义 doSubmit() 函数
function goNextFrame() {
  nextFrame();
}

请注意，您将函数引用（而不是函数的返回值）分配给 onPress 事件处理函数。

// 错误！
next_btn.onPress = goNextFrame();
// 正确。
next_btn.onPress = goNextFrame;

某些事件处理函数接收提供与发生的事件有关的信息的传递参数。例如，在文本字段实例获取键盘焦点时调用 TextField.onSetFocus 事件处理函数。此事件处理函数接收对以前具有键盘焦点的文本字段对象的引用。

例如，以下代码将某些文本插入刚失去键盘焦点的文本字段。

userName_txt.onSetFocus = function(oldFocus_txt) {
  oldFocus_txt.text = "I just lost keyboard focus";
}

以下动作脚本类定义事件处理函数：Button、ContextMenu、ContextMenuItem、Key、LoadVars、LocalConnection、Mouse、MovieClip、MovieClipLoader、Selection、SharedObject、Sound、Stage、TextField、XML 和 XMLSocket。有关它们提供的事件处理函数的更多信息，请参见动作脚本字典概述中这些类的相应条目。

还可以将函数分配给在运行时创建的对象的事件处理函数。例如，以下代码创建一个新的影片剪辑实例 (newclip_mc)，然后将一个函数分配给该剪辑的 onPress 事件处理函数。

_root.attachMovie("symbolID", "newclip_mc", 10);
newclip_mc.onPress = function () {
  trace("You pressed me");
}

有关更多信息，请参见在运行时创建影片剪辑。


使用事件侦听器

事件侦听器让一个对象（称作侦听器对象）接收由其它对象（称作广播器对象）生成的事件。广播器对象注册侦听器对象以接收由该广播器生成的事件。例如，您可以注册影片剪辑对象以从舞台接收 onResize 通知，或者按钮实例可以从文本字段对象接收 onChanged 通知。您可以注册多个侦听器对象以从一个广播器接收事件，也可以注册一个侦听器对象以从多个广播器接收事件。

事件侦听器的事件模型类似于事件处理函数的事件模型（请参见使用事件处理函数方法），但有两个主要差别：

  • 您向其分配事件处理函数的对象不是发出该事件的对象。
  • 您调用广播器对象的特殊方法 addListener()，该方法将注册侦听器对象以接收其事件。

要使用事件侦听器，您用具有该广播器对象生成的事件名称的属性创建侦听器对象。然后，将一个函数分配给该事件侦听器（以某种方式响应该事件）。最后，您在正广播该事件的对象上调用 addListener()，向它传递侦听器对象的名称。以下代码概要介绍了事件侦听器模型。

listenerObject.eventName = function(){
  // 此处是您的代码
};
broadcastObject.addListener(listenerObject);

指定的侦听器对象可以是任何对象，例如舞台上的影片剪辑或按钮实例，或者可以是任何动作脚本类的实例。事件名称是在 broadCastObject 上发生的事件，然后将该事件广播到 listenerObject。可以向一个事件广播器注册多个侦听器。

以下示例显示如何使用 Selection.onSetFocus 事件侦听器为输入文本字段组创建简单焦点管理器。在这个例子中，启用（显示）获得键盘焦点的文本字段的边框，并禁用失去焦点的文本字段的边框。

使用事件侦听器创建简单焦点管理器：

  1. 使用文本工具在舞台上创建一个文本字段。
  2. 选择该文本字段，接着在属性检查器的“文本类型”弹出菜单中选择“输入”，然后选择“在文本周围显示边框”选项。
  3. 在第一个文本字段下创建另一个输入文本字段。

    确保为该文本字段未选择“在文本周围显示边框”选项。根据需要继续创建输入文本字段。

  4. 在“时间轴”中选择“第 1 帧”，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  5. 要从 Selection 类创建侦听焦点通知的对象，请在“动作”面板中输入以下代码：
    var focusListener = new Object();
focusListener.onSetFocus = function(oldFocus_txt, newFocus_txt) {
  oldFocus_txt.border = false;
  newFocus_txt.border = true;
}

    此代码创建名为 focusListener 的新的（通用）动作脚本对象。该对象为其本身定义 onSetFocus 属性，并为该属性分配一个函数。该函数采用两个参数：对失去焦点的文本字段的引用和对获得焦点的文本字段的引用。该函数将失去焦点的文本字段的 border 属性设置为 false，将获得焦点的文本字段的 border 属性设置为 true。

  6. 要注册 focusListener 对象以从 Selection 对象接收事件，请向“动作”面板添加以下代码：
    Selection.addListener(focusListener);
  7. 测试影片（“控制”>“测试影片”），在第一个文本字段中单击，然后按下 Tab 键在各字段之间切换焦点。

若要注销侦听器对象以使其不再接收事件，可调用广播器对象的 removeListener() 方法，向它传递侦听器对象的名称。

broadcastObject.removeListener(listenerObject);

事件侦听器可用于以下动作脚本类的对象：Key、Mouse、MovieClipLoader、Selection、TextField 和 Stage。有关可用于各个类的事件侦听器的列表，请参见动作脚本字典概述中这些类的相应条目。


使用按钮和影片剪辑事件处理函数

可以使用 onClipEvent() 和 on() 处理函数直接将事件处理函数附加到按钮或影片剪辑实例。onClipEvent() 处理函数处理影片剪辑事件，而 on() 处理函数处理按钮事件。也可以将 on() 用于影片剪辑，创建接收按钮事件的影片剪辑。有关更多信息，请参见创建具有按钮状态的影片剪辑。

要使用 on() 或 onClipEvent() 处理函数，将它直接附加到舞台上按钮或影片剪辑的实例，并且指定您要为该实例处理的事件。例如，只要用户单击处理函数附加到的按钮，就执行以下 on() 事件处理函数。

on (press) {
  trace("Thanks for pressing me.");
}

您可以为每个 on() 处理函数指定两个或多个事件（用逗号分隔）。当该处理函数指定的任何事件之一发生时执行处理函数中的动作脚本。例如，只要鼠标滚过一个按钮，就执行附加到该按钮的以下 on() 处理函数。

on(rollOver, rollOut) {
  trace("You rolled over, or rolled out");
}

如果您想要在发生不同事件时运行不同的脚本，也可以向一个对象附加多个处理函数。例如，可以将以下 onClipEvent() 处理函数附加到同一影片剪辑实例。当影片剪辑第一次加载时（或者在舞台上出现时）第一个函数执行；在从舞台卸载该影片剪辑时第二个函数执行。

onClipEvent (load) {
  trace("I've loaded");
}
onClipEvent (unload) {
  trace("I've unloaded");
}

要查看 on() 和 onClipEvent() 事件处理函数所支持的事件的完整列表，请参见on() 和onClipEvent()。

通过 on() 和 onClipEvent() 处理事件与通过您定义的事件处理函数方法处理事件并不冲突。例如，假定 SWF 文件中有一个按钮；该按钮可以具有一个通知影片播放的 on(press) 处理函数，并且这个按钮还可以具有一个 onPress 方法，用于定义通知舞台上某个对象旋转的函数。单击该按钮后，该 SWF 文件将播放，并且该对象将旋转。根据您的首选参数，可以使用 on() 和 onClipEvent()、事件处理函数方法或这两种类型的事件处理。但是，on() 和 onClipEvent() 处理函数中变量和对象的范围不同于事件处理函数和事件侦听器中的范围。（请参见事件处理函数的范围。）

只能将 onClipEvent() 和 on() 附加到创作期间已放置于舞台上的影片剪辑实例。不能将 onClipEvent() 或 on() 附加到在运行时（例如，使用 attachMovie() 方法）创建的影片剪辑实例上。要将事件处理函数附加到运行时创建的对象，请使用事件处理函数方法或事件侦听器。（请参见使用事件处理函数方法和使用事件侦听器。）


创建具有按钮状态的影片剪辑

在您将 on() 处理函数附加到一个影片剪辑时，或者将某一函数附加到用于影片剪辑实例的某一 MovieClip 鼠标事件处理函数时，该影片剪辑通过与按钮相同的方式响应鼠标事件。您还可以通过向影片剪辑的时间轴添加帧标签 _up、_over 和 _down，在影片剪辑中创建自动按钮状态（弹起、指针经过和按下）。

在用户将鼠标移到该影片剪辑之上或者单击它时，将播放头发送到具有适当的帧标签的帧。要指定影片剪辑使用的点击区域，可以使用 MovieClip 类的 hitArea 属性。

创建影片剪辑中的按钮状态：

  1. 在影片剪辑的时间轴中选择一个帧，作为一个按钮状态（弹起、指针经过或按下）。
  2. 在属性检查器中输入帧标签（_up、_over 或 _down）。
  3. 要添加其它按钮状态，可重复执行步骤 1 和步骤 2。
  4. 要令影片剪辑响应鼠标事件，请执行以下操作之一：
    • 如使用按钮和影片剪辑事件处理函数中所述，将一个 on() 事件处理函数附加到影片剪辑实例。
    • 如使用事件处理函数方法中所述，将一个函数分配给影片剪辑对象的某一鼠标事件处理函数（onPress、onRelease 等）。


事件处理函数的范围

在事件处理函数内声明和执行的变量和命令的范围（即上下文）取决于所使用的事件处理函数的类型：事件处理函数或事件侦听器，或者 on() 和 onClipEvent() 处理函数。

分配给事件处理函数方法和事件侦听器的函数（类似您编写的所有动作脚本函数）定义本地变量范围，但 on() 和 onClipEvent() 处理函数却不是这样。

例如，以下面两个事件处理函数为例。第一个处理函数是与名为 clip_mc 的影片剪辑关联的 onPress 事件处理函数。第二个处理函数是附加到同一影片剪辑实例的 on() 处理函数。

// 附加到 clip_mc 的父级剪辑时间轴：
clip_mc.onPress = function () {
  var color; // 局部函数变量
  color = "blue";
}
// 附加到 clip_mc 的 on() 处理函数：
on (press) {
  var color; // 无局部变量范围
  color = "blue";
}

尽管这两个事件处理函数包含相同的代码，但它们具有不同的结果。在第一个例子中，color 变量对于为 onPress 定义的函数而言是本地的。在第二个例子中，因为 on() 处理函数没有定义本地变量范围，所以变量的范围为影片剪辑 clip_mc 的时间轴。

对于附加到按钮（而不是影片剪辑）的 on() 事件处理函数，变量（以及函数和方法调用）的范围是包含该按钮实例的时间轴。

例如，以下 on() 事件处理函数将产生不同的结果，这取决于它附加到影片剪辑，还是附加到按钮对象。在第一个示例中，play() 函数调用启动包含该按钮的时间轴的播放头；而在第二个示例中，play() 函数调用启动该处理函数所附加到的那个影片剪辑的时间轴。

// 附加到按钮
on (press) {
  play(); // 播放父时间轴
}
// 附加到影片剪辑
on (press) {
  play(); // 播放影片剪辑的时间轴
}

也就是说，如果附加到按钮对象，play() 方法调用将应用于包含该按钮的时间轴，即该按钮的父时间轴。但如果将同一处理函数附加到影片剪辑对象，play() 将应用于包含该处理函数的影片剪辑。

在事件处理函数或事件侦听器函数定义内，相同的 play() 函数将应用于包含该函数定义的时间轴。例如，假定以下 MovieClip.onPress 事件处理函数是在包含影片剪辑实例 myMovieClip 的时间轴上定义的。

// 影片剪辑时间轴上定义的函数：
myMovieClip.onPress = function () {
  play(); // 播放包含该函数定义的时间轴
}

如果要播放定义 onPress 事件处理函数的影片剪辑，则必须使用 this 关键字显式引用该剪辑，如下所示：

myMovieClip.onPress = function () {
  this,play(); // 播放定义 onPress 处理函数的剪辑的时间轴
}

有关 this 关键字在事件处理函数中的范围的更多信息，请参见“this”关键字的范围。


“this”关键字的范围

this 关键字引用当前正在执行的范围中的对象。this 可能会引用不同的对象，这取决于使用的是哪一种事件处理函数机制。

在事件处理函数或事件侦听器函数内，this 引用定义该事件处理函数或事件侦听器方法的对象。例如，在下面的代码中，this 引用 myClip 本身。

// 附加到 _level0.myClip 的 onPress() 事件处理函数：
myClip.onPress = function () {
  trace(this); // 显示“_level0.myClip”
}

在附加到影片剪辑的 on() 处理函数内，this 引用 on() 处理函数所附加到的那个影片剪辑。

// 附加到名为“myClip”的影片剪辑
on (press) {
  trace(this); // 显示“_level0.myClip”
}

在附加到按钮的 on() 处理函数内，this 引用包含该按钮的时间轴。

// 附加到主时间轴上的按钮
on (press) {
  trace(this); // 显示“_level0”
}


用动作脚本创建交互操作概述

在简单的动画中，Macromedia Flash Player 按顺序播放 SWF 文件中的场景和帧。在交互式 SWF 文件中，观众可以用键盘和鼠标跳到 SWF 文件中的不同部分、移动对象、在表单中输入信息，还可以执行许多其它交互操作。

使用动作脚本可以创建脚本来通知 Flash Player 在发生某个事件时应该执行什么动作。当播放头到达某一帧，或当影片剪辑加载或卸载，或用户单击按钮或按下某个键时，就会发生一些能够触发脚本的事件。

脚本可以由单一命令组成，如指示 SWF 文件停止播放的命令；也可以由一系列命令和语句组成，如先计算条件，再执行动作。许多动作脚本命令都很简单，可用于为 SWF 文件创建一些基本控件。其它一些动作要求创作人员熟悉编程语言，主要用于高级开发。


关于事件和交互

只要用户单击鼠标或按下某个按键，就生成一个事件。这些类型的事件通常称作用户事件，因为这些事件是为响应最终用户的某一操作而生成的。您可以编写动作脚本以响应或处理 这些事件。例如，在用户单击按钮时，您可能想要将播放头发送到 SWF 文件中的其它帧，或者将新网页加载到浏览器。

在 SWF 文件中，按钮、影片剪辑和文本字段都生成可以响应的事件。动作脚本提供三种方法来处理事件：事件处理函数方法、事件侦听器以及 on() 和 onClipEvent() 处理函数。有关事件和处理事件的更多信息，请参见处理事件。


SWF 文件回放

下面是一些动作脚本函数，用于控制时间轴上的播放头，以及将新的网页加载到浏览器窗口中：

  • gotoAndPlay() 和 gotoAndStop() 函数将播放头发送到帧或场景。这两个函数是您可以从任何脚本调用的全局函数。您还可以使用 MovieClip.gotoAndPlay() 和 MovieClip.gotoAndStop() 两个方法来导航特定影片剪辑对象的时间轴。请参见跳到某一帧或场景。
  • play() 和 stop() 动作用于播放和停止影片。请参见播放和停止影片剪辑。
  • getURL() 动作用于跳到不同的 URL。请参见跳到不同的 URL。


跳到某一帧或场景

要跳到 SWF 文件中的具体帧或场景，您可以使用 gotoAndPlay() 和 gotoAndStop() 全局函数，或者 MovieClip 类的、与这两个函数等效的 gotoAndPlay() 和 gotoAndStop() 方法。每个函数或方法都可用于在当前场景中指定一个要跳到的帧。如果您的文档中包含多个场景，则可以指定要跳到的场景和帧。

以下示例在按钮对象的 onRelease 事件处理函数内使用全局 gotoAndPlay() 函数来将包含该按钮的时间轴的播放头发送到第 10 帧。

jump_btn.onRelease = function () {
  gotoAndPlay(10);
}

在下一个示例中，MovieClip.gotoAndStop() 方法将名为 categories_mc 的影片剪辑的时间轴发送到第 10 帧，然后停止。当使用 MovieClip 方法 gotoAndPlay() 和 gotoAndStop() 时，您必须指定要应用该方法的实例。

jump_btn.onPress = function () {
  categories_mc.gotoAndStop(10);
}


播放和停止影片剪辑

除非另有命令指示，否则在 SWF 文件开始播放后，它将把时间轴上的每一帧从头播放到尾。您可以通过使用 play() 和 stop() 全局函数或者等效的 MovieClip 方法停止或开始播放 SWF 文件。例如，可以使用 stop() 在某一场景结束时，在继续播放下一场景之前停止播放 SWF 文件。SWF 文件停止播放后，必须通过调用 play() 来明确指示要重新开始播放。

可以使用 play() 和 stop() 函数或 MovieClip 的方法来控制主时间轴，或任何影片剪辑或已加载 SWF 文件的时间轴。您要控制的影片剪辑必须有一个实例名称，而且必须显示在时间轴上。

以下附加到一个按钮的 on(press) 处理函数将在包含该按钮对象的 SWF 文件或影片剪辑中启动播放头移动。

// 附加到按钮实例
on (press) {
  // 播放包含该按钮的时间轴
  play();
}

这个相同的 on() 事件处理函数代码在被附加到影片剪辑对象（而不是按钮）时将产生不同的结果。在附加到按钮对象时，默认情况下，在 on() 处理函数内生成的语句将应用于包含该按钮的时间轴。不过，在附加到影片剪辑对象时，在 on() 处理函数内生成的语句将应用于附加了 on() 处理函数的影片剪辑。

例如，以下 on() 处理函数代码将停止附加了处理函数的影片剪辑的时间轴，而不是包含该影片剪辑的时间轴。

on (press) {
  stop();
}

相同的情况适用于附加到影片剪辑对象的 onClipEvent() 处理函数。例如，以下代码在影片剪辑第一次加载时或在舞台上出现时，停止那个包含 onClipEvent() 处理函数的影片剪辑的时间轴。

onClipEvent (load) {
  stop();
}


跳到不同的 URL

要在浏览器窗口中打开网页，或将数据传递到所定义 URL 处的另一个应用程序，可以使用 getURL() 全局函数或 MovieClip.getURL() 方法。例如，可以有一个链接到新 Web 站点的按钮，也可以将时间轴变量发送到 CGI 脚本，以便像处理 HTML 表单一样处理数据。您还可以指定目标窗口，就像用 HTML 锚记 (<a></a>) 标签确定目标窗口一样。

例如，以下代码在用户单击名为 homepage_btn 的按钮实例时在空浏览器窗口中打开 macromedia.com 主页。

homepage_btn.onRelease = function () {
  getURL("http://www.macromedia.com", _blank);
}

您还可以使用 GET 或 POST 将变量与 URL 一起发送。如果正从应用程序服务器加载的页面（例如一个 ColdFusion Server (CFM) 页面）预计接收表单变量，则可以使用上述功能。例如，假定您要加载名为 addUser.cfm 的、预计接收 name 和 age 两个表单变量的 CFM 页面。为此，您可以创建一个名为 variables_mc 的影片剪辑，它定义如下所示的两个变量。

variables_mc.name = "Francois";
variables_mc.age = 32;

随后，以下代码将 addUser.cfm 加载到空浏览器窗口中，并传递到 POST 标头中的 CFM 页面 variables_mc.name 和 variables_mc.age。

variables_mc.getURL("addUser.cfm", "_blank", "POST");

有关更多信息，请参见getURL()。


交互性和视觉效果

要创造交互性和其它视觉效果，您需要了解以下技术：

  • 创建自定义鼠标指针
  • 获取鼠标位置
  • 捕获按键
  • 设置颜色值
  • 创建声音控件
  • 检测冲突
  • 创建简单的线条绘画工具


创建自定义鼠标指针

标准鼠标指针就是用户的鼠标位置在操作系统屏幕上的表示。通过使用在 Flash 中设计的鼠标指针来代替标准鼠标指针，可以将用户的鼠标移动更紧密地集成到 SWF 文件中。本部分的范例使用的是一个看起来如同大箭头的自定义指针。不过，此功能的强大与否取决于您制作各种形态的自定义指针的能力，例如即将射门的足球，或盖在沙发上用于改变其颜色的织物布样。

要创建自定义指针，可在舞台上设计该指针的影片剪辑。然后在动作脚本中隐藏标准指针，并跟踪自定义指针的移动。要隐藏标准指针，可使用内置 Mouse 类的 Mouse.hide() 方法。要使用影片剪辑作为自定义指针，可使用 startDrag() 动作。要查看自定义指针的动画演示，可将鼠标指针滑过下面的 SWF 文件。

创建自定义指针：

  1. 创建影片剪辑，将其用作自定义指针并将该剪辑的实例放置在舞台上。
  2. 在舞台上选择该影片剪辑实例。
  3. 如果看不到“动作”面板，则选择“窗口”>“开发面板”>“动作”将其打开。
  4. 在“动作”面板中键入以下内容：
    onClipEvent (load) {
  Mouse.hide();
  startDrag(this, true);
}
onClipEvent(mouseMove) {
  updateAfterEvent();
}

    第一个 onClipEvent() 处理函数在影片剪辑第一次在舞台上出现时隐藏鼠标；第二个处理函数在用户移动鼠标时调用 updateAfterEvent。

    updateAfterEvent 函数在发生指定的事件后立即刷新屏幕，而不是在绘制下一帧时刷新，后者是默认行为。（请参见updateAfterEvent()。）

  5. 选择“控制”>“测试影片”来测试您的自定义指针。

当使用自定义指针时，按钮仍然起作用。将自定义指针放在时间轴的顶层是一个很好的方法，这样当您在 SWF 文件中移动鼠标时，它就可以在按钮和其它对象的前面移动。此外，自定义鼠标指针的“尖端”是您用作自定义指针的影片剪辑的注册点。因此，如果您希望影片剪辑的某一部分作为鼠标尖端，则应将剪辑的注册点坐标设置为该点的坐标。

有关 Mouse 类的方法的更多信息，请参见 Mouse 类。


获取鼠标位置

可以使用 _xmouse 和 _ymouse 属性找到 SWF 文件中鼠标指针（光标）的位置。每个时间轴都有一个 _xmouse 和 _ymouse 属性，这两个属性返回鼠标在其坐标系统内的位置。该位置始终是相对于注册点而言的。对于主时间轴 (_level0)，注册点是左上角。

要查看主时间轴内的 _xmouse 和 _ymouse 属性以及影片剪辑时间轴，可运行下面的 SWF 文件并移动您的鼠标指针。右侧已更新的坐标反映出在这个小的影片剪辑中鼠标相对于注册点的位置。左侧的坐标反映出在较大的 SWF 文件中该鼠标的位置。

下面的步骤说明了获取鼠标位置的两种方式。

获取主时间轴内的当前鼠标位置：

  1. 创建两个动态文本框，然后将它们命名为 x_pos 和 y_pos。
  2. 如果看不到“动作”面板，则选择“窗口”>“开发面板”>“动作”将其打开。
  3. 若要返回主时间轴内的鼠标位置，请在 _level0 SWF 文件的任意帧中添加以下代码：
    x_pos = _root._xmouse;
y_pos = _root._ymouse;

变量 x_pos 和 y_pos 被用作容器，用于放置鼠标位置值。可以在您的文档的任何脚本中使用这些变量。在下面的 onClipEvent() 处理函数中，用户每次移动鼠标时都会更新 x_pos 和 y_pos 的值。

onClipEvent(mouseMove) {
  x_pos = _root._xmouse;
  y_pos = _root._ymouse;
}

获取影片剪辑内的当前鼠标位置：

  1. 创建影片剪辑。
  2. 在舞台上选择该影片剪辑实例。使用属性检查器将它命名为 myMovieClip。
  3. 如果看不到“动作”面板，则选择“窗口”>“开发面板”>“动作”将其打开。
  4. 使用影片剪辑的实例名称来返回主时间轴内的鼠标位置。

    例如，可将下面的语句放置在 _level0 SWF 文件中的任意时间轴上，以返回 myMovieClip 实例中的 _ymouse 位置：

    x_pos = _root.myMovieClip._xmouse
y_pos = _root.myMovieClip._ymouse

    该代码返回鼠标相对于注册点的 _xpos 和 _ypos 值。

  5. 选择“控制”>“测试影片”对影片进行测试。

您也可以通过在剪辑事件中使用 _xmouse 和 _ymouse 属性来确定鼠标在影片剪辑内的位置，如下面的代码所示：

onClipEvent (enterFrame) {
  xmousePosition = this._xmouse;
  ymousePosition = this._ymouse;
}

有关 _xmouse 和 _ymouse 属性的更多信息，请参见MovieClip._xmouse 和MovieClip._ymouse。


捕获按键

您可以使用内置的 Key 类的方法来检测用户上次按下的键。Key 类不需要构造函数；要使用它的方法，您只需调用该类自身上的方法即可，如下面的示例所示：

Key.getCode();

您可以获得按键的虚拟键控代码或 ASCII（美国信息交换标准码）值：

  • 要获得上次所按键的虚拟键控代码，可使用 getCode() 方法。
  • 要获得上次所按键的 ASCII 值，可使用 getAscii() 方法。

键盘上的每一个实际的键都有一个虚拟键控代码。例如，左箭头键的虚拟键控代码为 37。通过使用虚拟键控代码，可以确保 SWF 文件的控制在每个键盘上都相同，而不用考虑语言或平台。

ASCII 值分配给每个字符集的前 127 个字符。ASCII 值提供了有关屏幕上字符的信息。例如，字母“A”和字母“a”有不同的 ASCII 值。

要确定使用哪些键并确定它们的虚拟键控代码，可使用下面其中一种方式：

  • 查看键盘键和键控代码值中的键控代码列表。
  • 使用 Key 类常数。（在“动作”工具箱中单击“内置类”类别，然后单击“Movie”，之后单击“Key”，最后单击“Constants”。）
  • 将以下 onClipEvent() 处理函数分配给影片剪辑，然后选择“控制”>“测试影片”并按所需键。
    onClipEvent(keyDown) {
  trace(Key.getCode());
}

所需键的键控代码将出现在“输出”面板中。

通常是在事件处理函数内使用 Key 类方法。在下面的 SWF 文件中，您使用箭头键移动汽车。Key.isDown() 方法表明当前按住的键是左箭头键、右箭头键、上箭头键、还是下箭头键。事件处理函数 onEnterFrame 通过 if 语句确定 Key.isDown(keyCode) 的值。根据该值，处理函数会指示 Flash Player 更新汽车的位置并显示方向。

以下步骤介绍如何捕获按键动作来根据当前按下的箭头键（向上、向下、向左或向右）在舞台上向上、向下、向左或向右移动影片剪辑。影片剪辑被限定在一个 400 像素宽、300 像素高的任意区域内。此外，文本字段显示所按下的键的名称。

创建一个能被键盘激活的影片剪辑：

  1. 在舞台上创建一个影片剪辑，该影片剪辑将会随键盘箭头的活动而移动。

    在此示例中，影片剪辑实例名称为 car。

  2. 在舞台上创建一个随汽车方向更新的动态文本框。使用属性检查器，给它指定以下实例名：display_txt。

    注意：不要把变量名和实例名混淆。有关更多信息，请参见关于文本字段实例和变量名称。

  3. 在时间轴上选择第 1 帧；如果看不到“动作”面板，则选择“窗口”>“开发面板”>“动作”将其打开。
  4. 要设置每次按键时汽车沿屏幕移动的距离，请定义 distance 变量并将它的初始值设置为 10。
    var distance = 10;
  5. 要为汽车影片剪辑创建事件处理函数，以检查当前按下的是哪一个箭头键（向左、向右、向上或向下），请向“动作”面板添加以下代码：
    car.onEnterFrame = function() {

}
  6. 将一个 with 语句添加到 onEnterFrame 处理函数的主体中，并将 car 指定为 with 语句的对象。

    您的代码应该如下所示：

    var distance = 10;
car.onEnterFrame = function() {
    with (car) {
    }
}
  7. 若要检查是否已按下右箭头键，并相应地移动汽车影片剪辑，请将以下代码添加到 with 语句的主体中。您的代码应该如下所示：
    distance = 10;
car.onEnterFrame = function() {
  with (car) {
    if (Key.isDown(Key.RIGHT)) {
      _x += distance;
      if (_x >= 400) {
        _x = 400;
      }
      _root.display_txt.text = "Right";
    }
  }
}

    如果按下了右箭头键，则汽车的 _x 属性将按 distance 变量指定的量增加值。下一个 if 语句测试剪辑的 _x 属性的值是否大于或等于 400 (if(_x >=400))；如果是，则其位置将固定在 400。另外，Right 一词应显示在 SWF 文件中。

  8. 使用类似的代码检查是否按下了左箭头键、上箭头键或下箭头键。您的代码应该如下所示：
    var distance = 10;
car.onEnterFrame = function() {
  with (car) {
    if (Key.isDown(Key.RIGHT)) {
      _x += distance;
      if (_x >= 400) {
        _x = 400;
      }
      _root.display_txt.text = "Right";
    } else if (Key.isDown(Key.LEFT)) {
        _x -= distance;
        if (_x < 0) {
          _x = 0;
        }
        _root.display_txt.text = "Left";
    } else if (Key.isDown(Key.UP)) {
    _y -= distance;
      if (_y < 0) {
        _y =   0 ;
      }
    _root.display_txt.text = "Up";
    } else if (Key.isDown(Key.DOWN)) {
      _y += distance;
      if (_y > 300) {
        _y = 300;
      }
    _root.display_txt.text = "Down";
    }
  }
}
  9. 选择“控制”>“测试影片”对文件进行测试。

有关 Key 类的方法的更多信息，请参见 Key 类。


设置颜色值

可以使用内置 Color 类的方法来调节影片剪辑的颜色。setRGB() 方法会为影片剪辑指定十六进制 RGB（红、绿、蓝）值。下面的示例就使用 setRGB() 来根据用户输入来更改对象的颜色。

设置影片剪辑的颜色值：

  1. 选择舞台上的一个影片剪辑。
  2. 在属性检查器中，输入 carColor 作为实例名称。
  3. 创建一个名为 color chip 的按钮，接着在舞台上放置该按钮的四个实例，并将它们分别命名为 red、green、blue 和 black。
  4. 在主时间轴上选择第 1 帧，然后选择“窗口”>“开发面板”>“动作”。
  5. 若要为 carColor 影片剪辑创建一个 Color 对象，请在“动作”面板中添加以下代码：
    myColor = new Color(_root.carColor);
  6. 要使蓝色按钮将 carColor 影片剪辑的颜色更改为蓝色，请向“动作”面板添加以下代码：
    _root.blue.onRelease = function(){
  myColor.setRGB(0x0000ff)
}

    十六进制值 0x0000ff 为蓝色。下表显示您将使用的其它颜色及其十六进制值：

  7. 为其它按钮（红色、绿色和黑色）重复执行第 6 步，以便将影片剪辑的颜色更改为相应的颜色。您的代码现在应该如下所示：
    myColor = new Color(_root.carColor)
_root.blue.onRelease = function(){
  myColor.setRGB(0x0000ff)
}
_root.red.onRelease = function(){
  myColor.setRGB(0xff0000)
}
_root.green.onRelease = function(){
  myColor.setRGB(0x00ff00)
}
_root.black.onRelease = function(){
  myColor.setRGB(0x000000)
}
  8. 选择“控制”>“测试影片”来改变影片剪辑的颜色。

有关 Color 类的方法的更多信息，请参见 Color 类。


创建声音控件

可以使用内置 Sound 类控制 SWF 文件中的声音。若要使用 Sound 类的方法，必须先创建一个 Sound 对象。然后可以使用 attachSound() 方法在 SWF 文件运行时将库中的声音插入该 SWF 文件。

要查看声音控件的动画演示，可单击“播放”按钮，然后调节音量和左右平衡。

Sound 类的 setVolume() 方法控制着音量，而 setPan() 方法则调节声音的左右平衡。

下面的步骤介绍如何创建如上所示的声音控件。

将声音附加到时间轴上：

  1. 选择“文件”>“导入”来导入一种声音。
  2. 在库中选择声音，右键单击 (Windows) 或按住 Control 键单击 (Macintosh)，然后选择“链接”。
  3. 选择“为动作脚本导出”和“在第一帧导出”，然后为其指定标识符 a_thousand_ways。
  4. 在舞台上添加一个按钮，然后将它命名为 playButton。
  5. 在舞台上添加一个按钮，然后将它命名为 stopButton。
  6. 在舞台上添加一个影片剪辑，然后将它命名为 speaker。
  7. 在主时间轴上选择第 1 帧，然后选择“窗口”>“开发面板”>“动作”。将以下代码添加到“动作”面板中：
    speaker.stop();
song = new Sound();
song.onSoundComplete = function() {
  speaker.stop();
};
song.attachSound("a_thousand_ways");
playButton.onRelease = function() {
  song.start();
  speaker.play();

};
stopButton.onRelease = function () {
  song.stop();
  speaker.stop();
}

    该代码首先停止扬声器影片剪辑。然后创建一个新的 Sound 对象 (song)，并向该对象附加链接标识符为 a_thousand_ways 的声音。接下来，它为 song 对象定义 onSoundComplete 处理函数，该函数将在声音结束后停止 speaker 影片剪辑。最后，与 playButton 和 stopButton 对象关联的 onRelease 处理函数使用 Sound.start() 和 Sound.stop() 方法开始和停止该声音，并且还播放和停止 speaker 影片剪辑。

  8. 选择“控制”>“测试影片”来试听声音。

创建滑动的音量控件：

  1. 将某个按钮拖到舞台上。
  2. 选择该按钮，然后选择“修改”>“转换为符号”。选择影片剪辑行为时要小心。

    这创建了一个在第一帧中带有按钮的影片剪辑。

  3. 选择该影片剪辑，然后选择“编辑”>“编辑所选项目”。
  4. 选择该按钮，然后选择“窗口”>“开发面板”>“动作”。
  5. 输入下列动作：
    on (press) {
    startDrag(this, false, left, top, right, bottom);
}
on (release) {
    stopDrag();
}

    startDrag() 参数 left、top、right 和 bottom 是在剪辑动作中设置的变量。

  6. 选择“编辑”>“编辑文档”返回到主时间轴。
  7. 在舞台上选择影片剪辑。
  8. 输入下列动作：
    onClipEvent (load) {
    top = _y;
    bottom = _y;
    left = _x;
    right = _x+100;
    _x += 100;
}
onClipEvent (enterFrame) {
    _parent.song.setVolume(_x-left);
}
  9. 选择“控制”>“测试影片”来使用音量滑块。

创建滑动的平衡控件：

  1. 将某个按钮拖到舞台上。
  2. 选择该按钮，然后选择“插入”>“转换为符号”。选择该影片剪辑属性。
  3. 选择该影片剪辑，然后选择“编辑”>“编辑符号”。
  4. 选择该按钮，然后选择“窗口”>“开发面板”>“动作”。
  5. 输入下列动作：
    on (press) {
  startDrag ("", false, left, top, right, bottom);
  dragging = true;
}
on (release, releaseOutside) {
  stopDrag();
  dragging = false;
}

    startDrag() 参数 left、top、right 和 bottom 是在剪辑动作中设置的变量。

  6. 选择“编辑”>“编辑文档”返回到主时间轴。
  7. 在舞台上选择影片剪辑。
  8. 输入下列动作：
    onClipEvent (load) {
  top=_y;
  bottom=_y;
  left=_x-50;
  right=_x+50;
  center=_x;
}

onClipEvent (enterFrame) {
  if (dragging==true){
    _parent.setPan((_x-center)*2);
  }
}
  9. 选择“控制”>“测试影片”来使用平衡滑块。

有关 Sound 类的方法的更多信息，请参见 Sound 类。


检测冲突

MovieClip 类的 hitTest() 方法可以检测 SWF 文件中的冲突。它检查某个对象是否与影片剪辑有冲突，然后返回一个布尔值（true 或 false）。

在两种情况下，您想知道是否已经发生了冲突：一种情况是测试用户是否已经到达舞台上的某个特定静态区域，另一种情况是确定影片剪辑何时接触到另一个影片剪辑。利用 hitTest() 方法，可以判定这些结果。

可以使用 hitTest() 的参数来指定舞台上某个点击区域的 x 和 y 坐标，或者使用另一个影片剪辑的目标路径作为点击区域。在指定 x 和 y 时，如果由 (x, y) 标识的点是非透明点，那么 hitTest() 返回 true。当目标传递给 hitTest() 时，会对两个影片剪辑的边框进行比较。如果它们重叠，则 hitTest() 返回 true。如果两个边框没有相交，则 hitTest() 返回 false。

让鼠标指针滑过 SWF 文件中的形状来测试冲突。hitTest() 方法的结果会返回到文本字段中。

您也可以使用 hitTest() 来测试两个影片剪辑之间的冲突。

要测试冲突，则拖动汽车影片剪辑，使它接触停车区域影片剪辑。hitTest() 方法的结果会返回到文本字段中。

下面的步骤通过使用汽车示例介绍如何检测冲突。

在一个影片剪辑和舞台上的某一点之间执行冲突检测：

  1. 在舞台上创建一个新的影片剪辑，然后在属性检查器中输入 box 作为实例名称。
  2. 在舞台上创建一个动态文本框，然后在属性检查器中输入 status 作为实例名称。
  3. 在时间轴的图层 1 上选择第一个帧。
  4. 如果看不到“动作”面板，选择“窗口”>“开发面板”>“动作”将其打开。
  5. 在“动作”面板中添加以下代码：
    box.onEnterFrame = function () {
  status.text = this.hitTest(_xmouse, _ymouse, true);
}
  6. 选择“控制”>“测试影片”，然后让鼠标滑过影片剪辑来测试冲突。

    只要鼠标位于不透明的像素上方，就会显示值 true。

执行两个影片剪辑之间的冲突检测：

  1. 把两个影片剪辑拖到舞台上，然后分别为它们指定实例名 car 和 area。
  2. 在舞台上创建一个动态文本框，然后在属性检查器中输入 status 作为实例名称。
  3. 在时间轴的图层 1 上选择第一个帧。
  4. 如果看不到“动作”面板，选择“窗口”>“开发面板”>“动作”将其打开。
  5. 在“动作”面板中输入下面的代码：
    area.onEnterFrame = function () {
  status.text=this.hitTest(car);
}
car.onPress = function (){
  this.startDrag(false);
  updateAfterEvent();
}
car.onRelease = function () {
  this.stopDrag();
}
  6. 选择“控制”>“测试影片”，然后拖动影片剪辑以测试冲突检测。

    只要汽车边框与停车区域的边框发生相交，该状态就会变为 true。

有关更多信息，请参见MovieClip.hitTest()。


创建简单的线条绘画工具

您可以使用 MovieClip 类的方法在 SWF 文件播放时在舞台上绘制线条和填充。这样您就可以为用户创建绘画工具，并且可以通过响应事件在 SWF 文件中绘制形状。绘画方法包括 beginFill()、beginGradientFill()、clear()、curveTo()、endFill()、lineTo()、lineStyle() 和 moveTo()。可以将这些方法应用于任何影片剪辑实例（例如 myClip.lineTo()），也可应用于某一级别 (_root.curveTo())。

lineTo() 和 curveTo() 方法分别用于绘制线条和曲线。您可以使用 lineStyle() 方法指定线条或曲线的线条颜色、粗细和 alpha 设置。moveTo() 绘画方法将当前绘画位置设置为您指定的 x 和 y 舞台坐标。

beginFill() 和 beginGradientFill() 方法分别用纯色填充或渐变填充来填充闭合路径，endFill() 将在最后的调用中指定的填充应用于 beginFill() 或 beginGradientFill()。clear() 方法擦除已在指定的影片剪辑对象中绘制的内容。

有关更多信息，请参见MovieClip.beginFill()、MovieClip.beginGradientFill()、MovieClip.clear()、MovieClip.curveTo()、MovieClip.endFill()、MovieClip.lineTo()、MovieClip.lineStyle() 和MovieClip.moveTo()。

创建简单线条绘画工具：

  1. 在一个新文档中，在舞台上创建一个按钮，然后在属性检查器中输入 clear_btn 作为其实例名称。
  2. 在时间轴中选择第 1 帧，如果没有看到“动作”面板，则选择“窗口”>“开发面板”>“动作”将其打开。
  3. 在“动作”面板中输入以下代码：
    _root.onMouseDown = function() {
    _root.lineStyle(5, 0xFF0000, 100);
    _root.moveTo(_root._xmouse, _root._ymouse);
    isDrawing = true;
};
_root.onMouseMove = function() {
    if (isDrawing == true) {
        _root.lineTo(_root._xmouse, _root._ymouse);
        updateAfterEvent();
    }
};
_root.onMouseUp = function() {
    isDrawing = false;
};
clear_btn.onRelease = function() {
    _root.clear();
};
  4. 选择“控制”>“测试影片”对影片进行测试。单击并拖动鼠标来在舞台上绘制线条。单击该按钮可以擦除所绘制的内容。


分析范例脚本

在范例 SWF 文件 zapper.swf 中，当用户将瓢虫拖到电源插座时，瓢虫会下落，并且插座会抖动。主时间轴只有一个帧，包含三个对象：瓢虫、插座和重置按钮。这些对象中的每一个都是一个影片剪辑实例。

SWF 文件中有一个脚本；它被附加到 bug 实例，如下面的“动作”面板中所示：

带有附加到 bug 实例的脚本的“动作”面板

瓢虫的实例名称为 bug，插座的实例名称为 zapper。在脚本中，this 即指瓢虫，因为脚本就附加到瓢虫上，而保留字 this 引用包含脚本的对象。

有两个 onClipEvent() 处理函数，它们各有一个不同的事件：load 和 enterFrame。onClipEvent(load) 语句中的动作仅在 SWF 文件加载时执行一次。onClipEvent(enterFrame) 语句中的动作在每次播放头进入帧时都执行。即使在只有一个帧的 SWF 文件中，播放头仍然会反复进入该帧，而且脚本会重复执行。下面的动作会在每个 onClipEvent() 处理函数中发生：

onClipEvent(load) initx 和 inity 这两个变量被指定用于存储 bug 影片剪辑实例的初始 x 和 y 位置。为 Reset 实例的 onRelease 事件定义并分配了一个函数。每次用鼠标按钮按下和松开“重置”按钮时都会调用此函数。该函数将瓢虫重放回到它在舞台上的开始位置，重置它的旋转和 alpha 值，并且将 zapped 变量重置为 false。

onClipEvent(enterFrame) if 条件语句使用 hitTest() 方法检查瓢虫实例是否触到了插座实例 (_root.zapper)。该计算具有两种可能的输出结果，即 true 或 false：

onClipEvent (load) {
  initx = _x;
  inity = _y;
  _root.Reset.onRelease = function() {
    zapped = false;
    _x = initx;
    _y = inity;
    _alpha = 100
    _rotation = 0;
  };
}

如果 hitTest() 方法返回 true，则调用 stopDrag() 方法，zapper 变量设置为 true，alpha 和旋转属性会被更改，并会通知 zapped 实例进行播放。

如果 hitTest() 方法返回 false，则不会运行紧跟在 if 语句后面大括号 ({}) 内的任何代码。

有两个 on() 处理函数附加到 bug 实例，它们具有两个不同的事件：press 和 release。在 bug 实例上按下鼠标按钮时，会执行 on(press) 语句中的动作。在 bug 实例上松开鼠标按钮时，则会执行 on(release) 语句中的动作。下面的动作会在每个 onClipEvent() 处理函数中发生：

on(press) 一个 startDrag() 动作，使瓢虫可以拖动。因为脚本被附加到 bug 实例，所以关键字 this 表明可拖动的是 bug 实例：

on (press) {
  this.startDrag();
}

on(release) 一个 stopDrag() 动作，可以停止拖动动作：

on (release) {
  stopDrag();
}


使用内置类概述

除了动作脚本的核心语言元素和构造（例如 for 和 while 循环）以及上文中所述的原始数据类型（数字、字符串和数组，请参见动作脚本基础）之外，动作脚本还提供了大量内置类，或称作复杂数据类型。这些类为您提供了多种脚本撰写功能。

这些类中有一些基于 ECMAScript 规范，称为核心动作脚本类。这些类包括 Array、Boolean、Date 和 Math 类。有关更多信息，请参见核心类。

其余的内置动作脚本类是 Macromedia Flash 和 Flash Player 对象模型专用的。要理解核心动作脚本类与 Flash 专用类之间的区别，可以从核心 JavaScript 与客户端 JavaScript 之间的区别入手：与客户端 JavaScript 类提供对客户端环境（Web 浏览器和 Web 页内容）的控制相似，Flash 专用类提供对 Flash 应用程序外观和行为的运行时控制。

本章介绍内置动作脚本类，以及可以用这些类执行的常见任务，并提供代码示例。有关这些类的概述，请参见内置类概述。有关在面向对象的编程中使用类和对象的概述，请参见关于类和实例。


类和实例

在面向对象编程中，类 定义对象的类别。类描述对象的属性（数据）和行为（方法），这与描述建筑物特性的建筑蓝图非常相似。若要使用类所定义的属性和方法，必须先创建该类的实例。实例与它的类之间的关系类似于房子与它的建筑蓝图之间的关系。


创建新对象

若要创建动作脚本类的实例，请使用 new 运算符调用该类的构造函数。构造函数与类始终具有相同的名称，并返回该类的实例，而您通常会将该实例分配给一个变量。

例如，下面的代码创建一个新的 Sound 对象。

var song:Sound= new Sound();

某些情况下，您不需要创建类的实例即可使用它。有关更多信息，请参见关于类（静态）成员。


访问对象属性

使用点 (.) 运算符可以访问对象中的属性的值。对象名称在点的左边，而属性名称在点的右边。例如，在下面的语句中，myObject 是对象，而 name 是属性：

myObject.name

下面的代码创建一个新的 TextField 对象，然后将它的 autoSize 属性设置为 true。

var my_text = new TextField();
my_text.autoSize = true;

也可以使用数组访问运算符 ([]) 来访问对象的属性。请参见 点运算符和数组访问运算符。


调用对象方法

可以通过在点 (.) 运算符后面加上方法来调用对象的方法。例如，下面的代码将创建一个新的声音对象，并调用其 setVolume() 方法：

mySound = new Sound(this);
mySound.setVolume(50);


关于类（静态）成员

有些内置动作脚本类具有称作类成员（或静态成员）的成员。类成员（属性和方法）是通过类名本身来访问或调用的，而不是通过类的实例。也就是说，不用创建类的实例即可使用这些属性和方法。

例如，Math 类的所有属性都是静态的。以下代码调用 Math 类的 max() 方法来确定两个数字中较大的数字。

var largerNumber = Math.max(10, 20);


核心类

核心动作脚本类是从 ECMAScript 直接借用的类。在“动作”工具箱中，这些类位于“内置类”>“核心”子文件夹下。

类 | 说明
Arguments | 包含作为参数传递给任何函数的值的数组。请参见 Arguments 类。
Array | Array 类提供用于处理数组对象的方法和属性。请参见 Array 类。
布尔值 | Boolean 类是布尔值（true 或 false）的包装。请参见 Boolean 类。
按钮 | Button 类提供用于处理按钮对象的方法和属性。请参见 Button 类。
日期 | 使用 Date 类可以访问相对于通用时间（格林尼治标准时间），或相对于运行 Flash Player 的操作系统的日期和时间值。请参见 Date 类。
Error | Error 类包含关于脚本中出现的错误的信息。通常使用 throw 语句来生成错误条件，然后可以使用 try..catch..finally 语句来处理该错误条件。请参见 try..catch..finally 和 Error 类。
函数 | Function 类是所有动作脚本函数（包括动作脚本的固有函数和您定义的函数）的类表示形式。请参见 Function 类。
Math | Math 类用于访问和处理数学常量和函数。Math 类的所有属性和方法都是静态的，必须使用以下语法来调用：Math.method(parameter) 或 Math.constant。请参见 Math 类。
数字 | Number 类是原始数字数据类型的包装。请参见 Number 类。
对象 | Object 类位于动作脚本类层次结构的根部；其它所有类均继承其方法和属性。请参见 Object 类。
字符串 | String 类是字符串原始数据类型的包装，它使您能够使用 String 对象的方法和属性处理原始字符串值类型。请参见 String 类。


内置类

本节列出了所有动作脚本类，其中包括对各个类的简单说明，以及对本文档中其它相关章节的交叉引用。


Flash Player 专用类

下表列出了 Flash Player 和 Flash 运行时模型的专用类。这些类通常分为四个类别：影片类（提供对 SWF 文件和 Flash Player 的总体控制）、媒体类（用于处理声音和视频）、客户端/服务器类（用于处理 XML 和其它外部数据源）和创作类（提供对 Flash 创作环境的控制）。

注意：这样分类只影响这些类在“动作”工具箱中的位置，而不影响其使用方式。

影片类

影片类提供对 SWF 文件中大多数可视元素的控制，包括影片剪辑、文本字段和按钮。影片类位于“动作”工具箱中的“内置类”>“影片”子文件夹下。

类 | 说明
Accessibility | Accessibility 类管理 SWF 文件与屏幕读取应用程序之间的通讯。将此类的方法与全局 _accProps 属性结合使用，可以在运行时控制影片剪辑、按钮和文本字段的可访问属性。请参见 _accProps 和 Accessibility 类。
按钮 | SWF 文件中的所有按钮都是 Button 类的实例。Button 类提供用于处理按钮的方法、属性和事件处理函数。请参见 Button 类。
Color | Color 类可用于获取和设置影片剪辑对象的 RGB 颜色值。有关更多信息，请参见 Color 类。有关使用 Color 类更改影片剪辑颜色的示例，请参见设置颜色值。
ContextMenu | ContextMenu 类可用于控制 Flash Player 上下文菜单的内容。可以将单独的 ContextMenu 对象与 MovieClip、Button 或 TextField 对象相关联（使用这些类的 menu 属性）。还可以通过使用 ContextMenuItem 类向 ContextMenu 对象中添加自定义菜单项。请参见 ContextMenu 类和 ContextMenuItem 类。
ContextMenuItem | ContextMenuItem 类可用于创建出现在 Flash Player 上下文菜单中的新菜单项。通过 ContextMenu 类可将使用此类创建的新菜单项添加到 Flash Player 上下文菜单中。请参见 ContextMenu 类和 ContextMenuItem 类。
Key | Key 类提供用于获取有关键盘和按键的信息的方法和属性。有关更多信息，请参见 Key 类。有关通过捕获按键来创建交互式 SWF 文件的示例，请参见捕获按键。
LocalConnection | LocalConnection 类可用于在同一台计算机上运行的两个 SWF 文件之间进行通讯。请参见 LocalConnection 类。
Mouse | Mouse 类在 SWF 文件中提供对鼠标的控制（例如，此类可用于隐藏或显示鼠标指针）。有关更多信息，请参见 Mouse 类。有关使用 Mouse 类的示例，请参见创建自定义鼠标指针。
MovieClip | Flash 影片中的每个影片剪辑均是 MovieClip 类的实例。您可以使用此类的方法和属性控制影片剪辑对象。请参见 MovieClip 类条目和使用影片剪辑。
MovieClipLoader | MovieClipLoader 类可用于通过事件侦听器机制跟踪 SWF 和 JPEG 文件的下载进度。请参见 MovieClipLoader 类条目和预加载 SWF 和 JPEG 文件。
PrintJob | PrintJob 类可用于打印动态呈现的内容和多页文档。请参见 PrintJob 类和使用动作脚本 PrintJob 类。
Selection | Selection 类可用于获取和设置文本字段焦点、文本字段选择范围和文本字段插入点。请参见 Selection 类。
SharedObject | SharedObject 类在客户端计算机上提供本地数据存储。请参见 SharedObject 类。
Stage | Stage 类提供有关 SWF 文件的尺寸、对齐方式和缩放模式的信息，并报告舞台大小调整事件。请参见 Stage 类。
System | System 类提供有关 Flash Player 和运行 Flash Player 的系统的信息（例如，屏幕分辨率和当前系统语言）。它还可用于显示或隐藏 Flash Player 设置面板和修改 SWF 文件的安全设置。请参见 System 类。
TextField | TextField 类提供对动态文本字段和输入文本字段的控制。请参见 TextField 类和使用文本。
TextField.StyleSheet | TextField.StyleSheet 类（TextField 类的“内部类”）可用于创建 CSS 文本样式并将其应用到 HTML 或 XML 格式的文本。请参见 TextField.StyleSheet 类和使用层叠样式表对文本进行格式设置。
TextFormat | TextFormat 类可用于将格式样式应用于 TextField 对象中的字符或段落。请参见 TextFormat 类和使用 TextFormat 类。

媒体类

媒体类提供对 SWF 文件中的声音和视频的回放控制，并且可用于访问用户的麦克风和摄像机（如果安装了这些设备）。这些类位于“动作”工具箱中的“内置类”>“媒体”子文件夹下。

类 | 说明
摄像头 | Camera 类用于访问用户的摄像机（如果安装了此设备）。与 Flash Communication Server MX 一起使用时，SWF 文件可以捕获、广播和录制来自用户摄像机的图像和视频。请参见 Camera 类。
麦克风 | Microphone 类用于访问用户的麦克风（如果安装了此设备）。与 Flash Communication Server MX 一起使用时，SWF 文件可以广播和录制来自用户麦克风的音频。请参见 Microphone 类。
NetConnection | NetConnection 类用于建立本地流连接，以便从 HTTP 地址或本地文件系统播放 Flash 视频 (FLV) 文件。有关更多信息，请参见 NetConnection 类。有关通过 Internet 播放 FLV 文件的更多信息，请参见动态回放外部 FLV 文件。
NetStream | NetStream 类用于控制 FLV 文件的回放。有关更多信息，请参见 NetStream 类。有关通过 Internet 播放 FLV 文件的更多信息，请参见动态回放外部 FLV 文件。
Sound | Sound 类提供对 SWF 文件中的声音的控制。有关更多信息，请参见 Sound 类。有关使用 Sound 类创建音量和均衡控制器的示例，请参见创建声音控件。
Video | Video 类用于播放 SWF 文件中的视频对象。请参见 Video 类。

客户端/服务器类

下表列出的类可用于发送和接收来自外部数据源的数据，或者通过 FTP、HTTP 或 HTTPS 与应用程序服务器进行通讯。

注意：在 Flash Player 7 中，SWF 文件只能加载提供该 SWF 文件的域中的数据。有关更多信息，请参见Flash Player 安全功能和关于允许跨域数据加载。

这些类位于“动作”面板中的“内置类”>“客户端/服务器”子文件夹下。

类 | 说明
LoadVars | LoadVars 类是 loadVariables() 动作的另一种形式，用于在 SWF 文件和服务器之间以名称/值对的形式传输变量。请参见 LoadVars 类条目和使用 LoadVars 类。
XML | XML 类扩展 XMLNode 类并提供用于处理 XML 格式数据（包括加载和分析外部 XML、新建 XML 文档和导航 XML 文档树）的方法、属性和事件处理函数。请参见 XML 类和使用 XML 类。
XMLNode | XMLNode 类表示 XML 文档树中的单个节点。它是 XML 类的超类。请参见 XMLNode 类。
XMLSocket | XMLSocket 类可用于创建与其它计算机的永久套接字连接，以实现等待时间较短的数据传输，例如，实时聊天应用程序所需要的快速数据传输。请参见 XMLSocket 类和使用 XMLSocket 类。

创作类

创作类只能在 Flash 创作环境中使用。这些类位于“动作”工具箱中的“内置类”>“创作”子文件夹下。

类 | 说明
CustomActionsg | CustomActions 类可用于管理任何用该创作工具注册的自定义动作。请参见 CustomActions 类。
实时预览 | 实时预览功能（虽然不是类，但列在“动作”工具箱的“内置类”下）提供一个名为 onUpdate 的函数，供组件开发人员使用。请参见 onUpdate。


使用影片剪辑概述

影片剪辑是自成一体的小型 SWF 文件，这些 SWF 文件互相独立运行且与包含它们的时间轴无关。例如，假设主时间轴只有一个帧，而该帧中的影片剪辑有十个帧，则播放主 SWF 文件时，将播放影片剪辑中的每个帧。影片剪辑还可以包含其它影片剪辑，即嵌套剪辑。以这种方式嵌套的影片剪辑具有层次结构关系，其中父级剪辑 包含一个或多个子级剪辑。

每个影片剪辑实例都具有一个名称，即实例名称，实例名称将实例唯一地标识为可由动作脚本控制的对象。具体而言，实例名称将其标识为 MovieClip 类类型的一个对象。您可以使用 MovieClip 类的属性和方法控制影片剪辑运行时的外观和行为。

您可以将影片剪辑看作自治对象，它可以响应事件、向其它影片剪辑对象发送消息、保持自身状态并管理子级剪辑。通过这种方式，影片剪辑提供了 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中基于组件的体系结构 的基础。事实上，“组件”面板（“窗口”>“开发面板”>“组件”）中提供的组件都是一些复杂的影片剪辑，这些剪辑经过设计和编程从而具有了某种特定外观和行为。有关创建组件的信息，请参见使用组件。


关于通过动作脚本控制影片剪辑

您可以使用全局动作脚本函数或 MovieClip 类的方法对影片剪辑执行任务。某些 MovieClip 方法执行与同名函数相同的任务；而有些 MovieClip 方法，例如 hitTest() 和 swapDepths()，则没有相应的函数名称。

下面的示例说明了使用方法和使用函数之间的差异。这两条语句都重制实例 my_mc，将新剪辑命名为 newClip，然后将它放在第 5 层。

my_mc.duplicateMovieClip("newClip", 5);
duplicateMovieClip("my_mc", "newClip", 5);

当函数和方法提供相似的行为时，您可以选择其中任意一个来控制影片剪辑。这种选择取决于您的喜好以及对在动作脚本中撰写脚本的熟悉程度。无论使用函数还是方法，调用函数或方法时，必须将目标时间轴加载到 Flash Player 中。

要使用方法，可通过使用实例名称的目标路径、点和紧跟其后的方法名称和参数来调用它，如下面的语句所示：

myMovieClip.play();
parentClip.childClip.gotoAndPlay(3);

在第一条语句中，play() 移动 myMovieClip 实例中的播放头。在第二条语句中，gotoAndPlay() 将 childClip（它是实例 parentClip 的子级实例）中的播放头发送到第 3 帧，然后继续移动播放头。

控制时间轴的全局函数有一个 target 参数，可用于指定到所要控制实例的目标路径。例如，在下面的脚本中，startDrag() 将 customCursor 实例作为目标并使该实例可拖动：

on (press) {
  startDrag("customCursor");
}

以下函数以影片剪辑为操作对象：loadMovie()、unloadMovie()、loadVariables()、setProperty()、startDrag()、duplicateMovieClip() 和 removeMovieClip()。要使用这些函数，必须为函数的 target 参数输入一个目标路径以指示函数的目标。

下列 MovieClip 方法可以控制影片剪辑或加载的级别，它们没有等同的函数： MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), MovieClip.createTextField(), MovieClip.getBounds(), MovieClip.getBytesLoaded(), MovieClip.getBytesTotal(), MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth(), MovieClip.globalToLocal(), MovieClip.localToGlobal(), MovieClip.hitTest(), MovieClip.setMask(), MovieClip.swapDepths().


在单个影片剪辑上调用多个方法

可以使用 with 语句只指定一次影片剪辑的地址，然后对该剪辑执行一系列方法。with 语句可以用于所有动作脚本对象（如 Array、Color 和 Sound），而不仅仅是影片剪辑。

with 语句使用对象作为参数。您指定的对象会添加到当前目标路径的末尾。嵌套在 with 语句内的所有动作都将在新目标路径（即范围）内执行。例如，在下面的脚本中，为 with 语句传递对象 donut.hole 以更改 hole 的属性：

with (donut.hole){
  _alpha = 20;
  _xscale = 150;
  _yscale = 150;
}

此脚本的行为方式好像 with 语句中的语句是从 hole 实例的时间轴调用的。上面的代码等同于如下代码：

donut.hole._alpha = 20;
donut.hole._xscale = 150;
donut.hole._yscale = 150;

上面的代码也等同于如下代码：

with (donut){
  hole._alpha = 20;
  hole._xscale = 150;
  hole._yscale = 150;
}


加载和卸载其它 SWF 文件

若要在不关闭 Flash Player 的情况下播放其它 SWF 文件或在不加载另一 HTML 页的情况下切换 SWF 文件，您可以使用全局 loadMovie() 函数或 MovieClip 类的 loadMovie() 方法。也可以使用 loadMovie() 将变量发送到 CGI 脚本，该脚本会生成一个 SWF 文件作为它的 CGI 输出。当加载 SWF 文件时，可以指定向其中加载 SWF 文件的级别或影片剪辑目标。如果将 SWF 文件加载入目标，加载的 SWF 文件会继承目标影片剪辑的属性。一旦影片加载完毕，就可以更改这些属性。

unloadMovie() 方法删除以前由 loadMovie() 加载的 SWF 文件。用 unloadMovie() 方法明确卸载 SWF 文件可以确保 SWF 文件之间的平滑过渡，并可以减少 Flash Player 所需的内存。

使用 loadMovie() 可以执行以下的任何任务：

  • 播放一系列格式为 SWF 文件的条幅广告，方法是将 loadMovie() 函数放置在每个 SWF 文件的末尾来加载下一个 SWF 文件。
  • 开发一个分支界面，使用户可以在多个不同的 SWF 文件中作出选择。
  • 构建一个导航界面，其导航控件位于级别 0，用于加载其它级别。加载级别所产生的过渡比在浏览器中加载新 HTML 页面更为平滑。

有关加载影片的更多信息，请参见加载外部 SWF 和 JPEG 文件。


指定加载的 SWF 文件的根时间轴

_root 动作脚本属性指定或返回对 SWF 文件根时间轴的引用。如果 SWF 文件有多个级别，则根时间轴位于包含当前正在执行的脚本的级别上。例如，如果级别 1 中的脚本计算 _root，则返回 _level1。但是，_root 所指定的时间轴可能有所变化，具体取决于 SWF 文件是独立运行（在它自己的级别中）还是已由 loadMovie() 调用加载到影片剪辑实例中。

例如，假设名为 container.swf 的文件在其主时间轴上有一个名为 target_mc 的影片剪辑实例。container.swf 文件在其主时间轴上声明了一个名为 userName 的变量；然后相同的脚本将名为 contents.swf 的另一个文件加载到影片剪辑 target_mc 中。

// 在 container.swf 中：
_root.userName = "Tim";
target_mc.loadMovie("contents.swf");

加载的 SWF 文件 contents.swf 还会在其根时间轴上声明一个名为 userName 的变量。

// 在 content.swf 中：
_root.userName = "Mary";

当 contents.swf 加载到 container.swf 中的影片剪辑中时，附加到宿主 SWF 文件 (container.swf) 的根时间轴上的 userName 的值将设置为 "Mary"。这将导致 container.swf（以及 contents.swf）中的代码出现问题。

若要强制 _root 始终指定所加载的 SWF 文件的时间轴，而不是实际的根时间轴，请使用 _lockroot 属性。正在实施加载的 SWF 文件或正被加载的 SWF 文件都可以设置此属性。当 _lockroot 在影片剪辑实例上设置为 true 时，该影片剪辑将充当加载到其中的任何 SWF 文件的 _root。当 _lockroot 在 SWF 文件中设置为 true 时，该 SWF 文件将充当它自己的根，而不管加载它的其它 SWF 文件。任何影片剪辑以及任意数目的影片剪辑都可以将 _lockroot 设置为 true。默认情况下，此属性为 false。

例如，container.swf 的创作者可以将以下代码附加到 target_mc 影片剪辑：

// 附加到 target_mc 影片剪辑：
onClipEvent (load) {
  this._lockroot = true;
}

这可以确保在 contents.swf（或加载到 target_mc 的任何 SWF 文件）中对 _root 的引用将引用自己的时间轴，而不是 container.swf 的实际根时间轴。

同样，contents.swf 的创作者可以将以下代码添加到主时间轴中。

// 在 contents.swf 中：
this._lockroot = true;

这可以确保无论将 contents.swf 加载到什么位置，它对 _root 的任何引用都将引用它自己的主时间轴，而不是宿主 SWF 文件的时间轴。

有关更多信息，请参见MovieClip._lockroot。


将 JPEG 文件加载到影片剪辑中

您可以使用 loadMovie() 函数或同名的 MovieClip 方法将 JPEG 图像文件加载到影片剪辑实例中。还可以使用 loadMovieNum() 函数将 JPEG 文件加载到某个级别。

当您将图像加载到影片剪辑中时，图像的左上角将放置在影片剪辑的注册点上。因为此注册点通常位于影片剪辑的中心，所以加载的图像可能不会出现在中心。同时，当将图像加载到根时间轴上时，图像的左上角会被放置在舞台的左上角上。加载的图像会继承影片剪辑的旋转和缩放特性，但会删除影片剪辑的原始内容。

有关更多信息，请参见加载外部 SWF 和 JPEG 文件、loadMovie()、MovieClip.loadMovie()和loadMovieNum()。


更改影片剪辑的位置和外观

若要在影片剪辑播放时更改它的属性，可编写一条为属性赋值的语句或使用 setProperty() 函数。例如，下面的代码将实例 mc 的旋转设置为 45 度：

mc._rotation = 45;

上面的语句等同于下面使用 setProperty() 函数的代码：

setProperty("mc", _rotation, 45);

有些属性是只读属性，只可以读取但不能设置它们的值。（这些属性在它们的动作脚本字典条目中被指定为只读。）下面是一些只读属性：_currentframe、_droptarget、_framesloaded、_parent、_target、_totalframes、_url、_xmouse 和 _ymouse。

可以编写语句来设置任何非只读的属性。下面的语句设置影片剪辑实例 wheel 的 _alpha 属性，该实例是 car 实例的子级：

car.wheel._alpha = 50;

此外，可以编写获取影片剪辑的属性值的语句。例如，下面的语句获取当前级别的时间轴上的 _xmouse 属性的值，并将 customCursor 实例的 _x 属性设置为该值：

onClipEvent (enterFrame) {
  customCursor._x = _root._xmouse;
}

上面的语句等同于下面使用 getProperty() 函数的代码：

onClipEvent (enterFrame) {
  customCursor._x = getProperty(_root, _xmouse);
}

_x、_y、_rotation、_xscale、_yscale、_height、_width、_alpha 和 _visible 属性都受影片剪辑的父级变形的影响，并对影片剪辑和该剪辑的所有子级加以变形。_focusrect、_highquality、_quality 和 _soundbuftime 属性是全局属性；它们只属于级别 0 主时间轴。所有其它属性都属于每个影片剪辑或加载的级别。

有关影片剪辑属性的列表，请参见MovieClip 类的属性概要。


拖动影片剪辑

可以使用全局 startDrag() 函数或 MovieClip.startDrag() 方法使影片剪辑可拖动。例如，可以为游戏、拖放功能、自定义界面、滚动条和滑块制作可拖动影片剪辑。

除非用 stopDrag() 明确停止或用 startDrag() 将另一个影片剪辑作为目标，否则影片剪辑一直是可拖动的。一次只能拖动一个影片剪辑。

若要创建更复杂的拖放行为，可以评估正被拖动的影片剪辑的 _droptarget 属性。例如，可以检查 _droptarget 属性以查看影片剪辑是否被拖到一个特定的影片剪辑（如“trash can”影片剪辑），然后触发另一个动作。有关详细信息，请参见startDrag()或MovieClip.startDrag()。


创建运行时影片剪辑

您不仅可以在 Flash 创作环境中创建影片剪辑实例，还可以在运行时创建它们。动作脚本提供了三种在运行时创建新影片剪辑的方法：

  • 通过创建新的空白影片剪辑实例
  • 通过重制现有的影片剪辑实例
  • 通过将影片剪辑库中元件的实例附加到舞台

运行时创建的每个影片剪辑实例必须具有实例名称和深度（堆叠或 z 顺序）值。您指定的深度将决定新剪辑与同一时间轴上的其它剪辑重叠的方式。（请参见管理影片剪辑的深度。）


创建空白影片剪辑

若要在舞台上创建一个空白影片剪辑，可使用 MovieClip 类的 createEmptyMovieClip() 方法。该方法将创建一个影片剪辑，作为调用该方法的剪辑的子级。新创建的空影片剪辑的注册点为左上角。

例如，下面的代码在名为 parent_mc 的影片剪辑中创建一个名为 new_mc 的新的子级影片剪辑，新剪辑的深度为 10。

parent_mc.createEmptyMovieClip("new_mc", 10);

下面的代码在运行脚本的 SWF 文件的根时间轴上创建一个名为 canvas_mc 的新影片剪辑，然后调用 loadMovie() 将一个外部 JPEG 文件加载到自身中。

_root.createEmptyMovieClip("canvas_mc", 10);
canvas_mc.loadMovie("flowers.jpg");

有关更多信息，请参见MovieClip.createEmptyMovieClip()。


重制或删除影片剪辑

若要重制或删除影片剪辑实例，可使用 duplicateMovieClip() 或 removeMovieClip() 全局函数或同名的 MovieClip 类方法。duplicateMovieClip() 方法创建现有影片剪辑实例的新实例，为其指定一个新实例名称并指定一个深度（即 z 顺序）。重制的影片剪辑始终从第 1 帧开始，即使原始影片剪辑在重制时位于其它帧也如此，并且，重制的影片剪辑始终位于时间轴上所有以前定义的影片剪辑的前面。

若要删除使用 duplicateMovieClip() 创建的影片剪辑，可使用 removeMovieClip()。如果删除了父级影片剪辑，那么重制的影片剪辑也会被删除。

有关更多信息，请参见duplicateMovieClip()和removeMovieClip()。


将影片剪辑元件附加到舞台

在运行时创建影片剪辑实例的最后一种方法是使用 attachMovie()。attachMovie() 方法将 SWF 文件库中影片剪辑元件的实例附加到舞台上。新剪辑将成为附加它的剪辑的子级剪辑。

若要使用动作脚本从库中附加一个影片剪辑元件，必须为动作脚本导出该元件并为其指定一个唯一的链接标识符。为此，可以使用“链接属性”对话框。

默认情况下，为用于动作脚本而导出的所有影片剪辑都将在包含它们的 SWF 文件的第一帧之前加载。这可能会造成在第一帧播放之前出现延迟。当为某个元素指定链接标识符时，也可以指定是否在第一帧之前加载该内容。如果没有将该元素加载到第一帧中，则必须将它的实例包含在 SWF 文件的其它某个帧中；如果不包含它，则无法将该元素导出到 SWF 文件中。

将链接标识符分配给影片剪辑：

  1. 选择“窗口”>“库”以打开“库”面板。
  2. 在“库”面板中选择一个影片剪辑。
  3. 在“库”面板中，从“库”面板选项菜单中选择“链接”。

    即可出现“链接属性”对话框。

  4. 对于“链接”，选择“为动作脚本导出”。
  5. 对于“标识符”，输入影片剪辑的 ID。

    默认情况下，标识符与元件名称相同。

  6. 您还可以将动作脚本 2.0 的类分配给影片剪辑元件。（请参见将类分配给影片剪辑元件。）
  7. 如果不想在第一帧之前加载影片剪辑，则取消选择“在第一帧导出”选项。

    如果取消选择此选项，则将影片剪辑的实例放置在时间轴帧上的所需位置。例如，如果您编写的脚本直到第 10 帧才引用该影片剪辑，则将该元件的实例放置在时间轴的该帧上或该帧之前。

  8. 单击“确定”。

将链接标识符分配给影片剪辑后，可以使用 attachMovie() 在运行时将元件的实例附加到舞台上。

将影片剪辑附加到另一个影片剪辑：

  1. 如上所述将链接标识符分配给影片剪辑库元件。
  2. 在“动作”面板（“窗口”>“开发面板”>“动作”）打开时，在时间轴中选择一个帧。
  3. 在“动作”面板的“脚本”窗格中，键入影片剪辑的名称或要向其附加新影片剪辑的级别。例如，若要将影片剪辑附加到根时间轴，则键入 _root。
  4. 在“动作”工具箱（在“动作”面板的左侧）中，依次单击“内置类”类别、“影片”类别和“影片剪辑”类别，然后双击 attachMovie()。
  5. 参照出现的代码提示，输入以下参数的值：
    • 对于 idName，指定在“链接属性”对话框中输入的标识符。
    • 对于 newName，输入附加剪辑的实例名称，以便您能够将它作为目标。
    • 对于 depth，输入重制的影片剪辑附加到影片剪辑的级别。每个附加的影片剪辑都有它自己的堆叠顺序，其中级别 0 是起源影片剪辑所在的级别。附加的影片剪辑始终位于原始影片剪辑的上面。下面是一个示例：
        myMovieClip.attachMovie("calif", "california", 10);

有关更多信息，请参见MovieClip.attachMovie()。


将参数添加到动态创建的影片剪辑

使用 MovieClip.attachMovie() 和 MovieClip.duplicateMovie() 动态创建或重制影片剪辑时，您可以用另一对象中的参数填充影片剪辑。attachMovie() 和 duplicateMovie() 的 initObject 参数允许动态创建的影片剪辑接收剪辑参数。initObject 参数是可选的。

有关更多信息，请参见MovieClip.attachMovie()和MovieClip.duplicateMovieClip()。

若要用指定对象中的参数填充动态创建的影片剪辑，请执行以下操作之一：

  • 使用以下包含 attachMovie() 的语法：
    myMovieClip.attachMovie(idName, newName, depth [, initObject])
  • 使用以下包含 duplicateMovie() 的语法：
    myMovieClip.duplicateMovie(idName, newName, depth [, initObject])

initObject 参数指定您要其参数填充动态创建的影片剪辑的对象的名称。

使用 attachMovie() 用参数填充影片剪辑：

  1. 在新的 Flash 文档中，通过选择“插入”>“新建元件”创建一个影片剪辑元件。在“元件名称”文本框中键入 dynamic，然后选择影片剪辑行为。
  2. 在该元件内部，在舞台上创建一个实例名称为 name_txt 的动态文本字段。
  3. 选择影片剪辑的时间轴的第一帧，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  4. 创建一个名为 name 的新变量，然后将其值分配给 name_txt 的 text 属性，如下所示：
    var name:String;
name_txt.text = name;
  5. 选择“编辑”>“编辑文档”返回到主时间轴。
  6. 在库中选择影片剪辑元件，然后从“库”面板选项菜单中选择“链接属性”。

    即可出现“链接属性”对话框。

  7. 选择“为动作脚本导出”选项，然后单击“确定”。
  8. 选择主时间轴的第一帧并将以下代码添加到“动作”面板的“脚本”窗格中：
    _root.attachMovie("dynamic", "newClipName", 10, {name:"Erick"});
  9. 测试影片（“控制”>“测试影片”）。您在 attachMovie() 调用中指定的名称将出现在新影片剪辑的文本字段中。


影片剪辑深度

每个影片剪辑都具有自身的 z 顺序空间，z 顺序空间确定各对象在其父级 SWF 文件或影片剪辑中的重叠方式。每个影片剪辑都有一个关联的深度值，该值用来确定它是显示在同一个影片剪辑时间轴中其它影片剪辑的前面还是后面。当使用 MovieClip.attachMovie()、MovieClip.duplicateMovieClip() 或 MovieClip.createEmptyMovieClip() 在运行时创建影片剪辑时，总是要以方法参数的形式为新剪辑指定一个深度。例如，以下代码将一个新影片剪辑附加到名为 container_mc 的影片剪辑的时间轴，其深度值为 10。

container_mc.attachMovie("symbolID", "clip_1", 10);

这将在 container_mc 的 z 顺序空间中创建一个深度为 10 的新影片剪辑。

例如，以下代码将两个新影片剪辑附加到 container_mc。第一个剪辑（名为 clip_1）将显示在 clip_2 的后面，这是因为向第一个剪辑分配了一个较小的深度值。

container_mc.attachMovie("symbolID", "clip_1", 10);
container_mc.attachMovie("symbolID", "clip_2", 15);

影片剪辑的深度值的范围是从 -16384 到 1048575。

MovieClip 类提供了多种管理影片剪辑深度的方法：请参见MovieClip.getNextHighestDepth()、MovieClip.getInstanceAtDepth()、MovieClip.getDepth()和MovieClip.swapDepths()。


确定下一个最大的可用深度

若要确定影片剪辑中下一个最大的可用深度，请使用 MovieClip.getNextHighestDepth()。此方法返回一个整数值指示下一个可用的深度，该深度的对象将显示在影片剪辑中所有其它对象的前面。

以下代码在名为 menus_mc 的影片剪辑的时间轴上创建一个新影片剪辑，其深度值为 10。然后，它确定同一影片剪辑中下一个最大的可用深度，并在该深度创建一个新的影片剪辑。

menus_mc.attachMovie("menuClip","file_menu", 10);
var nextDepth = menus_mc.getNextHighestDepth();
menus_mc.attachMovie("menuClip", "edit_menu", nextDepth);

在本例中，名为 nextDepth 的变量包含值 11，因为这是影片剪辑 menus_mc 的下一个最大的可用深度。

若要获得当前占用的最大深度，从 getNextHighestDepth() 返回的值中减 1 即可得到，如下一节所示（请参见确定处于特定深度的实例）。


确定处于特定深度的实例

若要确定处于特定深度的实例，请使用 MovieClip.getInstanceAtDepth()。此方法返回对处于指定深度的 MovieClip 实例的引用。

以下代码结合使用 getNextHighestDepth() 和 getInstanceAtDepth()，确定处于根时间轴上已占用的最大（当前）深度的影片剪辑。

var highestOccupiedDepth = _root.getNextHighestDepth() - 1;
var instanceAtHighestDepth = _root.getInstanceAtDepth(highestOccupiedDepth);

有关更多信息，请参见MovieClip.getInstanceAtDepth()。


确定实例的深度

若要确定影片剪辑实例的深度，请使用 MovieClip.getDepth()。

以下代码对 SWF 文件主时间轴上的所有影片剪辑进行迭代处理，并在“输出”面板中显示每个剪辑的实例名称和深度值。

for(each in _root) {
  var obj = _root[each];
  if(obj instanceof MovieClip) {
    var objDepth = obj.getDepth();
    trace(obj._name + ":"+ objDepth)
  }
}

有关更多信息，请参见MovieClip.getDepth()。


交换影片剪辑的深度

若要交换同一个时间轴上两个影片剪辑的深度，请使用 MovieClip.swapDepths()。有关更多信息，请参见MovieClip.swapDepths()。


用动作脚本绘制形状

您可以使用 MovieClip 类的方法在舞台上绘制线条和填充。这样您就可以为用户创建绘画工具，并且可以在影片中绘制响应事件的形状。绘画方法包括 beginFill()、beginGradientFill()、clear()、curveTo()、endFill()、lineTo()、lineStyle() 和 moveTo()。

可以在任何一个影片剪辑中使用绘画方法。不过，如果对在创作模式下创建的影片剪辑使用绘画方法，则该绘画方法会在绘制该剪辑之前执行。换句话说，在创作模式下创建的内容会绘制在用绘画方法绘制的内容上面。

您可以将带有绘画方法的影片剪辑作为遮罩使用，不过，与所有影片剪辑遮罩一样，都会忽略笔触。

绘制形状：

  1. 使用 createEmptyMovieClip() 可以在舞台上创建一个空的影片剪辑。

    新影片剪辑是现有影片剪辑或主时间轴的子级，如下面的示例所示：

    _root.createEmptyMovieClip( "triangle", 1 );
  2. 使用空影片剪辑调用绘画方法。

    下面的示例将绘制一个轮廓为 5 磅粗细的洋红色线条但没有填充的三角形：

    with (_root.triangle) {
    lineStyle (5, 0xff00ff, 100);
    moveTo (200, 200);
    lineTo (300, 300);
    lineTo (100, 300);
    lineTo (200, 200);
}

有关这些方法的详细信息，请参见动作脚本字典概述中的相应条目。


创建影片剪辑遮罩

可以将影片剪辑用作遮罩，创建一个孔洞，透过它可以看到另一个影片剪辑的内容。遮罩影片剪辑和普通的影片剪辑一样，播放时间轴中的所有帧。您可以使遮罩影片剪辑成为可拖动的、让它沿着运动引导层运动、在单个遮罩内使用单独的形状，也可以动态调整遮罩的大小。您还可以使用动作脚本打开和关闭遮罩。

不能使用遮罩遮蔽另一个遮罩。不能设置遮罩影片剪辑的 _alpha 属性。只有填充可以用在作为遮罩的影片剪辑中；笔触都会被忽略。

创建遮罩：

  1. 在舞台上，选择一个要被遮蔽的影片剪辑。
  2. 在属性检查器中，输入该影片剪辑的实例名称，例如 image。
  3. 创建一个要用作遮罩的影片剪辑。在属性检查器中，为其指定一个实例名称，如 mask。

    在充当遮罩的影片剪辑的所有不透明区域下，被遮蔽的影片剪辑将会显示出来。

  4. 在时间轴中选择第 1 帧。
  5. 如果“动作”面板（“窗口”>“开发面板”>“动作”）尚未打开，请打开该面板。
  6. 在“动作”面板中输入以下代码：
    image.setMask(mask);

有关详细信息，请参见MovieClip.setMask()。


关于遮蔽设备字体

您可以使用影片剪辑遮蔽设置为设备字体的文本。为了使用于设备字体的影片剪辑遮罩正常工作，用户必须具有 Flash Player 6 版本 40 或更高版本。

当使用影片剪辑遮蔽设置为设备字体的文本时，遮罩的矩形边框将被用作遮罩形状。也就是说，如果您在 Flash 创作环境中为设备字体文本创建非矩形的影片剪辑遮罩，显示在 SWF 文件中的遮罩形状将是遮罩的矩形边框的形状，而不是遮罩本身的形状。

您只能通过将影片剪辑用作遮罩来遮蔽设备字体。不能通过在舞台上使用遮罩层来遮蔽设备字体。


处理影片剪辑事件

影片剪辑可以对用户事件（例如鼠标单击和按键）及系统级事件（例如在舞台上初次加载影片剪辑）进行响应。动作脚本提供两种处理影片剪辑事件的方法：一是通过事件处理函数方法，二是通过 onClipEvent() 和 on() 事件处理函数。有关更多信息，请参见处理事件。


将类分配给影片剪辑元件

使用动作脚本 2.0，您可以创建自己的类来扩展内置 MovieClip 类的行为，然后使用“链接属性”对话框将所创建的类分配给一个影片剪辑库元件。在您创建分配了类的影片剪辑的实例后，该剪辑实例将使用由分配给它的类所定义的属性和行为。（有关动作脚本 2.0 的更多信息，请参见使用动作脚本 2.0 创建类。）

在 MovieClip 类的子类中，您可以为内置的 MovieClip 方法和事件处理函数提供方法定义，如 onEnterFrame 和 onRelease。在下面的过程中，您将创建一个名为 MoveRight 的类，该类扩展 MovieClip 类并定义一个 onPress 处理函数（该函数在用户单击影片剪辑时将剪辑向右移动 20 个像素）。在第二个过程中，您将在新的 Flash (FLA) 文档中创建一个影片剪辑元件，并将 MoveRight 类分配给该元件。

创建影片剪辑子类：

  1. 创建一个名为 BallTest 的新目录。
  2. 执行下列操作之一，创建一个新的动作脚本文件：
    • （Flash MX Professional 2004）选择“文件”>“新建”，然后从文档类型列表中选择“动作脚本文件”。
    • （Flash MX 2004）使用自己常用的文本编辑器创建一个文本文件。
  3. 在脚本中输入以下代码：
    // MoveRight 类 -- 将剪辑的每个帧向右移动 5 个像素
class MoveRight extends MovieClip {
  function onPress() {
    this._x += 20;
  }
}
  4. 在 BallTest 目录中将该文档保存为 MoveRight.as。

将类分配给影片剪辑元件：

  1. 在 Flash 中，选择“文件”>“新建”，从文件类型列表中选择“Flash 文档”，然后单击“确定”。
  2. 使用椭圆工具在舞台上绘制一个圆形。
  3. 选择所绘圆形，然后选择“修改”>“转换为元件”。在“转换为元件”对话框中，选择“影片剪辑”作为元件的行为，并在“名称”文本框中输入 Ball。
  4. 打开“库”面板（“窗口”>“库”），然后选择 Ball 元件。
  5. 在“库”面板选项菜单中选择“链接”以打开“链接属性”对话框。
  6. 在“链接属性”对话框中，选择“为动作脚本导出”选项，然后在“AS 2.0 类”文本框中键入 MoveRight。单击“确定”。
  7. 在 BallTest 目录（包含 MoveRight.as 文件的同一个目录）中将该文件保存为 Ball.fla。
  8. 测试影片（“控制”>“测试影片”）。

    每次单击球形影片剪辑时，它都会向右移动 20 个像素。


初始化类属性

在前面介绍的示例中，您将 Ball 元件的实例手动添加到舞台上（即在创作过程中完成此操作）。正如以前所讨论的（请参见将参数添加到动态创建的影片剪辑），可以使用 attachMovie() 和 duplicateMovie() 的 initObject 参数在运行时为创建的剪辑指定参数。您可以使用此功能初始化分配到影片剪辑的类的属性。

例如，下面这个名为 MoveRightDistance 的类是以前讨论的 MoveRight 类（请参见将类分配给影片剪辑元件）的变体。两者的区别在于 MoveRightDistance 类有一个名为 distance 的新属性，该属性值确定每次单击影片剪辑时该影片剪辑移动多少像素。

// MoveRightDistance 类 -- 将剪辑的每个帧向右移动 5 个像素
class MoveRightDistance extends MovieClip {
  // distance 属性确定每次
  // 按下鼠标按钮时将剪辑移动多少像素
  var distance:Number;
  function onPress() {
    this._x += distance;
  }
}

假设将此类分配给具有链接标识符 Ball 的元件，以下代码将在 SWF 文件的根时间轴上创建该元件的两个新实例。第一个实例（名为 ball_50）每次单击时移动 50 个像素；第二个实例（名为 ball_125）每次单击时移动 125 个像素。

_root.attachMovie("Ball", "ball_50", 10, {distance:50});
_root.attachMovie("Ball", "ball_125", 20, {distance:125});


使用文本概述

动态或输入文本字段是一个 TextField 对象（TextField 类的实例）。当您创建文本字段时，可以在属性检查器中给它指定一个实例名称。您可以在动作脚本语句中使用该实例名称通过 TextField 和 TextFormat 类来设置、更改该文本字段及其内容并设置其格式。

TextField 类的方法允许您设置、选择并操控在创作过程中或运行时创建的动态或输入文本字段中的文本。有关更多信息，请参见使用 TextField 类。有关在运行时调试文本字段的信息，请参见显示文本字段属性以进行调试。

动作脚本还提供了多种在运行时对文本进行格式设置的方法。TextFormat 类允许您设置 TextField 对象的字符和段落格式（请参见使用 TextFormat 类）。Flash Player 还支持部分 HTML 标签，可以使用这些 HTML 标签对文本进行格式设置（请参见使用 HTML 格式的文本）。Flash Player 7 和更高版本支持 <img> HTML 标签，该标签不仅允许您嵌入外部图像，还可嵌入外部 SWF 文件以及驻留在库中的影片剪辑（请参见图像标签 (<img>)）。

在 Flash Player 7 和更高版本中，您可以使用 TextField.StyleSheet 类将层叠样式表 (CSS) 样式应用于文本字段。您可以使用 CSS 设置内置 HTML 标签的样式、定义新的格式设置标签或应用样式。有关使用 CSS 的更多信息，请参见使用层叠样式表对文本进行格式设置。

您还可以将 HTML 格式化文本（该文本可以选择使用 CSS 样式）直接分配给文本字段。在 Flash Player 7 和更高版本中，分配给文本字段的 HTML 文本可以包含嵌入的媒体（影片剪辑、SWF 文件和 JPEG 文件）。文本将在嵌入的媒体旁换行，就像 Web 浏览器让文本在 HTML 文档中嵌入的媒体旁换行一样。有关更多信息，请参见图像标签 (<img>)。


TextField 类

TextField 类表示您使用 Flash 中的“文本”工具创建的任何动态或可选择（可编辑）文本字段。使用此类的方法和属性在运行时控制文本字段。TextField 对象支持与 MovieClip 对象相同的属性，_currentframe、_droptarget、_framesloaded 和 _totalframes 属性除外。您可以动态地获取并设置属性及调用文本字段的方法。

若要使用动作脚本控制动态或输入文本字段，您必须在属性检查器中为其指定一个实例名称。然后，您可以用该实例名称引用文本字段，并使用 TextField 类的方法和属性控制文本字段的内容或基本外观。您还可以使用 MovieClip.createTextField() 方法在运行时创建 TextField 对象并为它们指定实例名称。有关更多信息，请参见在运行时创建文本字段。


在运行时将文本分配到文本字段

若要将文本分配到文本字段，请使用 TextField.text 属性。

在运行时将文本分配到文本字段：

  1. 使用文本工具在舞台上创建一个文本字段。
  2. 选中文本字段的同时，在属性检查器（“窗口”>“属性”）中，在检查器左侧“文本类型”弹出式菜单正下方的“实例名称”文本框中输入 headline_txt。

    实例名称只能包含字母、下划线 (_) 和美元符号 ($)。

  3. 在时间轴中，选择图层 1 中的第 1 帧并打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  4. 在“动作”面板中键入以下代码：
    headline_txt.text = "Brazil wins World Cup";
  5. 选择“控制”>“测试影片”对影片进行测试。


关于文本字段实例和变量名称

在属性检查器中，除实例名称外，您还可以为动态或输入文本字段指定一个变量名称。随后可以在动作脚本中引用文本字段的变量名称，其值确定文本字段的内容。但是，不能混淆文本字段的实例名称和变量名称。

使用为文本字段指定的实例名称调用方法、在该文本字段上获取并设置属性。文本字段的变量名称只是对该文本字段所包含文本的变量引用，它不是对对象的引用。

例如，如果您为某个文本字段指定变量名称 mytextVar，则随后可以使用以下代码设置该文本字段的内容：

var mytextVar = "This is what will appear in the text field";

但是，您不能使用 mytextVar 变量将同一个文本字段的文本属性设置为某文本。

//这将不起作用
myTextVar.text = "A text field variable is not an object reference";

通常情况下，使用 TextField.text 属性控制文本字段的内容，除非面向的是不支持 TextField 类的 Flash Player 版本。这将减小变量名称冲突的可能性，变量名称冲突可能导致运行时出现意外情况。


在运行时创建文本字段

可以使用 MovieClip 类的 createTextField() 方法于运行时在舞台上创建一个空文本字段。新文本字段会被附加到调用该方法的影片剪辑的时间轴上。createTextField() 方法使用以下语法：

movieClip.createTextField(instanceName, depth, x, y, width, height)

例如，以下代码在点 (0,0) 且深度（z 顺序）为 10 的位置创建一个名为 test_txt 的 300 x 100 像素的文本字段。

_root.createTextField("test_txt", 10, 0, 0, 300, 100);

您可以使用 createTextField() 调用中指定的实例名称访问 TextField 类的方法和属性。例如，以下代码创建一个名为 test_txt 的新文本字段，然后修改其属性使之成为一个多行、自动换行的文本字段，该文本字段在插入文本时可以进行扩展。最后，该代码将一些文本分配到文本字段的 text 属性。

_root.createTextField("test_txt", 10, 0, 0, 100, 50);
test_txt.multiline = true;
test_txt.wordWrap = true;
test_txt.autoSize = true;
test_txt.text = "Create new text fields with the MovieClip.createTextField method.";

您可以使用 TextField.removeTextField() 方法删除用 createTextField() 创建的文本字段。removeTextField() 方法对创作过程中由时间轴放置的文本字段不起作用。

有关更多信息，请参见MovieClip.createTextField()和TextField.removeTextField()。


TextFormat 类

您可以使用动作脚本的 TextFormat 类来设置文本字段的格式设置属性。TextFormat 类包含有关字符格式和段落格式的信息。字符格式信息描述单个字符的外观：字体名称、磅值、颜色和关联的 URL。段落格式信息描述段落的外观：左边距、右边距、首行缩进、左对齐、右对齐或居中对齐。

若要使用 TextFormat 类，首先创建一个 TextFormat 对象并设置其字符和段落格式样式。然后使用 TextField.setTextFormat() 或 TextField.setNewTextFormat() 方法将 TextFormat 对象应用于文本字段。

setTextFormat() 方法更改应用于文本字段中单个字符、字符组或整体文本的文本格式。但是，新插入的文本（例如用户输入的文本或通过动作脚本插入的文本）不采用 setTextFormat() 调用指定的格式设置。若要指定新插入文本的默认格式设置，请使用 TextField.setNewTextFormat()。有关更多信息，请参见TextField.setTextFormat()和TextField.setNewTextFormat()。

通过 TextFormat 类对文本字段进行格式设置：

  1. 在新的 Flash 文档中，使用“文本”工具在舞台上创建一个文本字段。在舞台上文本字段中键入一些文本，例如“Bold、italic、24 point text”。
  2. 在属性检查器中，在“实例名称”文本框中键入 myText_txt，从“文本类型”弹出式菜单中选择“动态”，然后从“线条类型”弹出式菜单中选择“多行”。
  3. 在时间轴中，选择图层 1 中的第 1 帧并打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  4. 在“动作”面板中输入以下代码创建一个 TextFormat 对象，然后将其 bold 和 italic 属性设置为 true，将其 size 属性设置为 24。
    // 创建 TextFormat 对象
var txtfmt_fmt = new TextFormat();
// 指定段落格式和字符格式
txtfmt_fmt.bold = "true";
txtfmt_fmt.italic = "true";
txtfmt_fmt.size = "24"
  5. 使用 TextField.setTextFormat() 将 TextFormat 对象应用于您在第 1 步中创建的文本字段。
    myText_txt.setTextFormat(txtfmt_fmt);

    此版本的 setTextFormat() 将指定的格式设置应用于整个文本字段。此方法还有另外两个版本，用于将格式设置应用于单个字符或字符组。例如，以下代码将粗体、斜体和 24 磅格式设置应用于您在文本字段中输入的前四个字符。

    myText_txt.setTextFormat(txtfmt_fmt, 0, 3);

    有关更多信息，请参见TextField.setTextFormat()。

  6. 选择“控制”>“测试影片”对影片进行测试。


新文本字段的默认属性

运行时使用 createTextField() 创建的文本字段接收具有以下属性的默认 TextFormat 对象：

font = "Times New Roman"
size = 12
textColor = 0x000000
bold = false
italic = false
underline = false
url = ""
target = ""
align = "left"
leftMargin = 0
rightMargin = 0
indent = 0
leading = 0
bullet = false
tabStops = [] (empty array)

有关 TextFormat 方法及其说明的完整列表，请参见 TextFormat 类。


获取文本测量信息

您可以使用 TextFormat.getTextExtent() 方法获得应用了特定格式设置的文本字符串的详细文本测量信息。例如，假设您需要在运行时创建一个包含任意数目文本的新 TextField 对象，所包含文本的格式设置为 24 磅、粗体、Arial 字体以及 5 个像素的缩进。您需要确定新 TextField 对象必须有多宽或多高才能显示所有文本。getTextExtent() 方法提供测量信息，例如上升、下降、宽度和高度。

有关更多信息，请参见TextFormat.getTextExtent()。


层叠样式表和文本

层叠样式表是创建可应用于 HTML 或 XML 文档的文本样式的机制。样式表是格式设置规则的集合，这些规则指定如何对 HTML 或 XML 元素进行格式设置。每个规则都将一个样式名称（即选择器）与一个或多个样式属性及其值关联起来。例如，以下样式定义名为 bodyText 的选择器。

bodyText { text-align:left}

您可以创建重新定义 Flash Player 所使用的内置 HTML 格式标签（例如 <p> 和 <li>）的样式、使用 <p> 或 <span> 标签的 class 属性创建可应用于特定 HTML 元素的样式“类”，或者定义新标签。

您可以使用 TextField.StyleSheet 类处理文本样式表。您可以从外部 CSS 文件加载样式或使用动作脚本直接创建样式。若要将样式表应用于包含 HTML 或 XML 格式文本的文本字段，可以使用 TextField.styleSheet 属性。在样式表中定义的样式将被自动映射到 HTML 或 XML 文档中定义的标签。

使用样式表涉及三个基本步骤：

  • 从 TextField.StyleSheet 类创建样式表对象。请参见 创建样式表对象。
  • 通过从外部 CSS 文件导入样式或使用动作脚本定义样式，将样式添加到样式表对象。请参见加载外部 CSS 文件和使用动作脚本创建新样式。
  • 将样式表对象分配到包含 XML 或 HTML 格式文本的文本字段。请参见将样式应用于 TextField 对象、将样式用于 HTML 的示例和将样式用于 XML 的示例。


支持的 CSS 属性

Flash Player 支持原 CSS1 规范 (www.w3.org/TR/REC-CSS1) 中的一部分属性。下表显示支持的 CSS 属性和值，以及它们对应的动作脚本属性名称。（每个动作脚本属性名称都是从对应的 CSS 属性名称产生的；省略连字符并将连字符后的字符变成大写。）

CSS 属性 | 动作脚本属性 | 用法和支持的值
text-align | textAlign | 可以识别的值包括 left、center 和 right。
font-size | fontSize | 只使用该值的数字部分；不分析单位（px、pt）；像素和磅是等价的。
text-decoration | textDecoration | 可以识别的值包括 none 和 underline。
margin-left | marginLeft | 只使用该值的数字部分。不分析单位（px、pt）；像素和磅是等价的。
margin-right | marginRight | 只使用该值的数字部分。不分析单位（px、pt）；像素和磅是等价的。
font-weight | fontWeight | 可以识别的值包括 normal 和 bold。
font-style | fontStyle | 可以识别的值包括 normal 和 italic。
text-indent | textIndent | 只使用该值的数字部分。不分析单位（px、pt）；像素和磅是等价的。
font-family | fontFamily | 用逗号分隔的供使用字体的列表，按需求降序排列。可以使用任何字体系列名称。如果您指定通用字体名称，则它将转换为相应的设备字体。支持以下字体转换：mono 转换为 _typewriter、sans-serif 转换为 _sans 以及 serif 转换为 _serif。
color | color | 只支持十六进制颜色值。不支持命名的颜色（例如 blue）。
display | display | 支持的值包括 inline、block 和 none。


创建样式表对象

在动作脚本中，CSS 样式表由 TextField.StyleSheet 类表示。此类只用于面向 Flash Player 7 或更高版本的 SWF 文件。若要创建样式表对象，可以调用 TextField.StyleSheet 类的构造函数。

var newStyle = new TextField.StyleSheet();

若要将样式添加到样式表对象中，您可以将外部 CSS 文件加载到对象中，也可以在动作脚本中定义样式。请参见加载外部 CSS 文件和使用动作脚本创建新样式。


加载外部 CSS 文件

您可以在外部 CSS 文件中定义样式，然后将该文件加载到样式表对象中。在 CSS 文件中定义的样式会被添加到样式表对象中。若要加载外部 CSS 文件，请使用 TextField.StyleSheet 类的 load() 方法。若要确定 CSS 文件何时完成加载，请使用样式表对象的 onLoad 事件处理函数。

在下面的示例中，您将创建并加载一个外部 CSS 文件并使用 TextField.StyleSheet.getStyleNames() 方法检索所加载样式的名称。

加载外部样式表：

  1. 在喜欢使用的文本或 XML 编辑器中，创建一个文件。
  2. 将以下样式定义添加到该文件中：
    // 文件名：styles.css
bodyText {
  font-family:Arial,Helvetica,sans-serif;
  font-size:12px;
}

headline {
  font-family:Arial,Helvetica,sans-serif;
  font-size:24px;
}
  3. 将该 CSS 文件另存为 styles.css。
  4. 在 Flash 中，创建一个 FLA 文档。
  5. 在时间轴（“窗口”>“时间轴”）中，选择“图层 1”。
  6. 打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  7. 将以下代码添加到“动作”面板中：
    var css_styles = new TextField.StyleSheet();
css_styles.load("styles.css");
css_styles.onLoad = function(ok) {
  if (ok) {
    // 显示样式名称
    trace(this.getStyleNames());
  } else {
    trace("Error loading CSS file.");
  }
}
  8. 将该文件保存到包含 styles.css 的同一个目录中。
  9. 测试影片（“控制”>“测试影片”）。

    您应该看到两个样式的名称显示在“输出”面板中：

    body
headLine

    如果看到“输出”面板中显示“加载 CSS 文件出错”，则确保 FLA 文件和 CSS 文件在同一个目录中并且您正确键入了 CSS 文件的名称。

对于通过网络加载数据的所有其它动作脚本方法，CSS 文件必须与加载文件的 SWF 文件驻留在同一个域中。（请参见关于允许跨域数据加载。）


使用动作脚本创建新样式

您可以通过动作脚本使用 TextField.StyleSheet 类的 setStyle() 方法创建新的文本样式。此方法采用两个参数：样式的名称以及定义该样式属性的对象。

例如，以下代码创建名为 styles 的样式表对象，该对象定义两个样式，这两个样式与您先前导入的样式相同（请参见加载外部 CSS 文件）。

var styles = new TextField.StyleSheet();
styles.setStyle("bodyText",
  {fontFamily:'Arial,Helvetica,sans-serif',
  fontSize:'12px'}
);
styles.setStyle("headline",
  {fontFamily:'Arial,Helvetica,sans-serif',
  fontSize:'24px'}
);


将样式应用于 TextField 对象

若要将样式表对象应用于文本字段，请将样式表对象分配到文本字段的 styleSheet 属性。

textObj_txt.styleSheet = styleSheetObj;

注意：请注意，不要混淆 TextField.styleSheet 属性 和 TextField.StyleSheet 类。大写字母指示了它们的区别。

当将样式表对象分配到 TextField 对象时，文本字段的正常行为将发生以下更改：

  • 文本字段的 text 和 htmlText 属性以及与文本字段关联的任何变量总是包含相同的值并具有相同的行为方式。
  • 文本字段变为只读，用户不能对其进行编辑。
  • TextField 类的 setTextFormat() 和 replaceSel() 方法对文本字段不再有效。更改字段的唯一方法是更改文本字段的 text 或 htmlText 属性，或者更改文本字段的关联变量。
  • 分配到文本字段的 text 属性、htmlText 属性或关联变量的任何文本都是逐字存储的；写入这些属性之一的任何内容都可以通过文本的原始格式进行检索。


合并样式

Flash Player 中的 CSS 样式是添加式的；也就是说，当样式嵌套时，每层嵌套都可以贡献附加样式信息，这些信息加在一起形成最终的格式设置。

例如，这里是一些分配给文本字段的 XML 数据：

<sectionHeading>This is a section</sectionHeading>
<mainBody>This is some main body text, with one
<emphasized>emphatic</emphasized> word.</mainBody>

对于上文中的 emphatic 一词，emphasized 样式嵌套在 mainBody 样式中。mainBody 样式提供 color、font-size 和 decoration 规则。emphasized 样式将 font-weight 规则添加到这些规则中。将使用 mainBody 和 emphasized 所指定规则的组合对 emphatic 一词进行格式设置。


使用样式类

您可以创建样式“类”，可以使用 <p> 或 <span> 标签的 class 属性将样式类应用于这两个标签。当应用于 <p> 标签时，该样式会影响整个段落。您还可以通过使用 <span> 标签的样式类设置文本范围的样式。

例如，以下样式表定义两个样式类：mainBody 和 emphasis。

.mainBody {
  font-family:Arial,Helvetica,sans-serif;
  font-size:24px;
}
.emphasis {
  color: #666666;
  font-style:italic;
}

在分配给文本字段的 HTML 文本中，您可以将这些样式应用于 <p> 和 <span> 标签，如下所示。

<p class="mainBody">This is <span class="emphasis">really exciting!</span></p>


设置内置 HTML 标签的样式

Flash Player 支持部分 HTML 标签。（有关更多信息，请参见使用 HTML 格式的文本。）您可以将 CSS 样式分配到文本字段中显示的内置 HTML 标签的每个实例。例如，以下内容定义内置 <p> HTML 标签的样式。将按照样式规则指定的方式对该标签的所有实例进行样式设置。

p {
  font-family:Arial,Helvetica,sans-serif;
  font-size:12px;
  display:inline;
}

下表显示可设置样式的内置 HTML 标签以及每种样式的应用方式。

样式名称 | 样式应用方式
p | 影响所有 <p> 标签。
body | 影响所有 <body> 标签。如果指定了 p 样式，则该样式优先于 body 样式。
li | 影响所有 <li> 项目符号标签。
a | 影响所有 <a> 锚标签。
a:link | 影响所有 <a> 锚标签。此样式在所有 a 样式之后应用。
a:hover | 当鼠标从链接上方划过时应用于 <a> 锚标签。此样式在所有 a 和 a:link 样式之后应用。 一旦鼠标从链接上方移开，a:hover 样式也会从该链接中删除。
a:active | 当用户单击链接时应用于 <a> 锚标签。此样式在所有 a 和 a:link 样式之后应用。 一旦鼠标按钮松开，a:active 样式也会从该链接中删除。

有关将样式应用于 HTML 文本的更多信息，请参见将样式用于 HTML 的示例。


将样式用于 HTML 的示例

本节介绍将样式用于 HTML 标签的示例。您将创建对某些内置标签进行样式设置并定义某些样式类的样式表。随后将该样式表应用于包含 HTML 格式文本的 TextField 对象。

若要使用样式表设置 HTML 的格式，请执行以下操作：

  1. 在您喜欢使用的文本编辑器中，创建一个文件。
  2. 将以下样式表定义添加到该文件中：
    p {
  color: #000000;
  font-family:Arial,Helvetica,sans-serif;
  font-size:12px;
  display:inline;
}

a:link {
  color:#FF0000;
}

a:hover{
  text-decoration:underline;
}

.headline {
  color: #000000;
  font-family:Arial,Helvetica,sans-serif;
  font-size:18px;
  font-weight:bold;
  display:block;
}

.byline {
  color: #666600;
  font-style:italic;
  font-weight:bold;
  display:inline;
}

    此样式表定义两个内置 HTML 标签（<p> 和 <a>）的样式，这些样式将应用于这些标签的所有实例。它还定义两个样式类（.headline 和 .byline），样式类将应用于特定段落和文本范围。

  3. 将该文件另存为 html_styles.css。
  4. 在 Flash 中，创建一个 FLA 文件。
  5. 使用“文本”工具，创建一个大约 400 像素宽、300 像素高的文本字段。
  6. 打开属性检查器（“窗口”>“属性”）并选择该文本字段。
  7. 在属性检查器中，从“文本类型”菜单中选择“动态文本”，从“线条类型”菜单中选择“多行”，选择“将文本呈现为 HTML”选项，然后在“实例名称”文本框中键入 news_txt。
  8. 在时间轴（“窗口”>“时间轴”）中选择图层 1 中的第 1 帧。
  9. 打开“动作”面板（“窗口”> “开发面板”>“动作”），将以下代码添加到“动作”面板中：
    // 创建新样式表对象
var style_sheet = new TextField.StyleSheet();
// 定义样式的 CSS 文件的位置
var css_url = "html_styles.css";
// 创建一些要显示的 HTML 文本
var storyText:String = "<p class='headline'>Flash Player 现在支持层叠样式表!</p><p><span class='byline'>San Francisco, CA</span>ó Macromedia Inc. 今天宣布 Flash Player 的新版本支持层叠样式表 (CSS) 文本样式。有关更多信息，请访问 <a href='http://www.macromedia.com'>Macromedia Flash Web 站点。</a></p>";
// 加载 CSS 文件并定义 onLoad 处理函数：
style_sheet.load(css_url);
style_sheet.onLoad = function(ok) {
  if (ok) {
    // 如果样式表加载没有错误，
    // 则将其分配到文本对象，
    // 然后将 HTML 文本分配到文本字段。
    news_txt.styleSheet = style_sheet;
    news_txt.text = storyText;
  }
};

    注意：为简便起见，设置了样式的 HTML 文本被“硬编码”到脚本中；在实际应用程序中，您可能要从外部文件加载文本。有关加载外部数据的信息，请参见使用外部数据。

  10. 将该文件（使用文件名 news_html.fla）保存到包含以前创建的 CSS 文件的同一个目录中。
  11. 运行影片（“控制”>“测试影片”）自动查看应用于 HTML 文本的样式。


使用样式定义新标签

如果在样式表中定义新样式，则该样式可用作标签，就像使用内置 HTML 标签一样。例如，如果样式表定义名为 sectionHeading 的 CSS 样式，则可以将 <sectionHeading> 用作与该样式表关联的任何文本字段中的元素。此功能允许您将任何 XML 格式文本直接分配到文本字段，以便使用样式表中的规则自动设置文本的格式。

例如，以下样式表创建新样式 sectionHeading、mainBody 和 emphasized。

sectionHeading {
  font-family:Verdana, Arial, Helvetica, sans-serif;
  font-size:18px; display:block
}
mainBody {
  color: #000099;
  text-decoration:underline;
  font-size:12px; display:block
}
emphasized {
  font-weight:bold; display:inline
}

您随后应该用以下 XML 格式文本填充与该样式表关联的文本字段：

<sectionHeading>This is a section</sectionHeading>
<mainBody>This is some main body text,
with one <emphasized>emphatic</emphasized> word.
</mainBody>


将样式用于 XML 的示例

在本节中，您将创建与先前创建的 FLA 文件（请参见将样式用于 HTML 的示例）相同的文件，但这次使用 XML 格式文本。在本例中，您将使用动作脚本创建样式表，而不是从 CSS 文件导入样式。

使用样式表设置 XML 的格式：

  1. 在 Flash 中，创建一个 FLA 文件。
  2. 使用“文本”工具，创建一个大约 400 像素宽、300 像素高的文本字段。
  3. 打开属性检查器（“窗口”>“属性”）并选择该文本字段。
  4. 在属性检查器中，从“文本类型”菜单中选择“动态文本”，从“线条类型”菜单中选择“多行”，选择“将文本呈现为 HTML”选项，然后在“实例名称”文本框中键入 news_txt。
  5. 在时间轴（“窗口”>“时间轴”）的图层 1 上，选择第 1 帧。
  6. 若要创建样式表对象，打开“动作”面板（“窗口”>“开发面板”>“动作”）并将以下代码添加到“动作”面板中：
    var xml_styles = new TextField.StyleSheet();
xml_styles.setStyle("mainBody", {
  color:'#000000',
  fontFamily:'Arial,Helvetica,sans-serif',
  fontSize:'12',
  display:'block'
});
xml_styles.setStyle("title", {
  color:'#000000',
  fontFamily:'Arial,Helvetica,sans-serif',
  fontSize:'18',
  display:'block',
  fontWeight:'bold'
});
xml_styles.setStyle("byline", {
  color:'#666666',
  fontWeight:'bold',
  fontStyle:'italic',
  display:'inline'
});
xml_styles.setStyle("a:link", {
  color:'#FF0000'
});
xml_styles.setStyle("a:hover", {
  textDecoration:'underline'
});

    此代码创建一个名为 xml_styles 的新样式表对象，该对象使用 setStyle() 方法定义样式。这些样式与本章前面部分中在外部 CSS 文件中创建的样式完全匹配。

  7. 若要创建将分配到文本字段的 XML 文本，请将以下代码添加到“操作”面板上：
    var storyText = "<title>Flash Player 现在支持 CSS</title><mainBody><byline>San Francisco, CA</byline>-- Macromedia Inc. 今天宣布 Flash Player 的新版本支持层叠样式表 (CSS) 文本样式。有关更多信息，请访问 <a href=\"http://www.macromedia.com\">Macromedia Flash Web 站点</a></mainBody>";
  8. 最后，添加以下代码将样式表对象应用于文本字段的 styleSheet 属性并将 XML 文本分配到该文本字段。
    news_txt.styleSheet = xml_styles;
news_txt.text = storyText;
  9. 将该文件另存为 news_xml.fla。
  10. 运行影片（“控制”>“测试影片”）自动查看应用于字段中文本的样式。


HTML 格式的文本

Flash Player 支持部分标准的 HTML 标签（例如 <p> 和 <li>），您可以使用这些标签对任何动态或输入文本字段中的文本进行样式设置。Flash Player 7 和更高版本中的文本字段还支持 <img> 标签，该标签允许您在文本字段中嵌入 JPEG 文件、SWF 文件和影片剪辑。Flash Player 让文本在文本字段中嵌入的图像旁自动换行，这非常类似于 Web 浏览器让 HTML 页中的文本在嵌入的图像旁自动换行。有关更多信息，请参见在文本字段中嵌入图像、SWF 文件和影片剪辑。

Flash Player 还支持 <textformat> 标签，该标签允许您将 TextFormat 类的段落格式样式应用于启用 HTML 的文本字段。有关更多信息，请参见使用 TextFormat 类。


使用 HTML 格式文本的概述

若要在文本字段中使用 HTML，您必须启用文本字段的 HTML 格式，方法是在属性检查器中选择“将文本呈现为 HTML”选项或将文本字段的 html 属性设置为 true。若要将 HTML 插入文本字段，请使用 TextField.htmlText 属性。

例如，以下代码为名为 headline_txt 的文本字段启用 HTML 格式，然后将一些 HTML 分配到该文本字段。

headline_txt.html = true;
headline_txt.htmlText = "<font face='Times New Roman' size='24'>This is how you assign HTML text to a text field.</font>";

HTML 标签的属性必须括在双引号或单引号中。不带引号的属性值可能产生无法预料的结果，例如不正确的文本呈现。例如，Flash Player 将无法正确呈现以下 HTML 代码片断，这是因为分配到 align 属性的值 (left) 未括在引号中：

textField.htmlText = "<p align=left>This is left-aligned text</p>";

如果将属性值括在双引号中，则必须对引号进行转义处理 (\")。例如，以下代码都是可接受的：

textField.htmlText = "<p align='left'>This uses single quotes</p>";
textField.htmlText = "<p align=\"left\">This uses escaped double quotes</p>";

如果从外部文件加载文本，则无需对双引号进行转义处理；只有在动作脚本中分配文本字符串才需执行此操作。


支持的 HTML 标签

本节列出 Flash Player 支持的内置 HTML 标签。您还可以使用层叠样式表创建新的样式和标签；请参见使用层叠样式表对文本进行格式设置。

锚标签 (<a>)

<a> 标签创建超级链接并支持以下属性：

  • href 指定浏览器中要加载页的 URL。该 URL 可以是绝对路径或相对路径（相对于加载页的 SWF 文件的位置）。
  • target 指定要将页加载到的目标窗口的名称。

例如，以下 HTML 代码片断创建链接“Go home”，该链接将在新浏览器窗口中打开 www.macromedia.com。

<a href="../home.htm" target="_blank">Go home</a>

您还可以使用样式表为锚标签定义 a:link、a:hover 和 a:active 样式。请参见 设置内置 HTML 标签的样式。

粗体标签 (<b>)

<b> 标签将文本呈现为粗体。粗体字体必须可用于显示文本的字体。

<b>This is bold text.</b>

换行标签 (<br>)

<br> 标签在文本字段中创建换行符，如以下示例所示：

One line of text<br>Another line of text<br>

字体标签 (<font>)

<font> 标签指定用于显示文本的字体或字体列表。

字体标签支持以下属性：

  • color 只支持十六进制颜色值 (#FFFFFF)。例如，以下 HTML 代码创建红色文本。
    <font color="#FF0000">This is red text</font>
  • face 指定要使用字体的名称。您还可以指定用逗号分隔的字体名称列表，在这种情况下，Flash Player 选择第一个可用的字体。如果指定的字体未安装在回放系统上或者未嵌入在 SWF 文件中，则 Flash Player 将选择替代字体。

    示例：

    <font face="Times, Times New Roman">This is either Times or Times New Roman..</font>

    有关在 Flash 应用程序中嵌入字体的更多信息，请参见 TextField.embedFonts 和 设置动态和输入文本选项。

  • size 指定字体的大小，以像素为单位。您还可以使用相对磅值（+2 或 -4）。
    <font size="24" color="#0000FF">This is green, 24-point text</font>

图像标签 (<img>)

<img> 标签允许您将外部 JPEG 文件、SWF 文件和影片剪辑嵌入文本字段中。在文本字段中，文本在嵌入的图像旁自动换行。只有多行并且文本换行的动态和输入文本字段中才支持此标签。

若要创建文本自动换行的多行文本字段，请执行以下操作之一：

  • 在 Flash 创作环境中，在舞台上选择文本字段，然后在属性检查器中，从“文本类型”弹出式菜单中选择“多行”。
  • 对于在运行时使用 MovieClip.createTextField() 创建的文本字段，将新文本字段实例的 TextField.multiline 和 TextField.wordWrap 属性设置为 true。

<img> 标签具有一个必需的属性 src，该属性指定到 JPEG 文件、SWF 文件的路径或影片剪辑元件的链接标识符。所有其它属性都是可选的。

<img> 标签支持以下属性：

  • src 指定到 JPEG 或 SWF 文件的 URL，或库中影片剪辑元件的链接标识符。此属性是必需的，所有其它属性都是可选的。外部文件（JPEG 和 SWF 文件）在完全下载完之后才显示。

    注意：Flash Player 不支持渐进 JPEG 文件。

  • id 指定包含嵌入 JPEG 文件、SWF 文件或影片剪辑的影片剪辑实例（由 Flash Player 创建）的名称。该属性可用于使用动作脚本控制嵌入的内容。
  • width 图像、SWF 文件或影片剪辑的宽度（以像素为单位）。
  • height 所插入的图像、SWF 文件或影片剪辑的高度（以像素为单位）。
  • align 指定文本字段中嵌入图像的水平对齐。有效值是 left 和 right。默认值是 left。
  • hspace 指定图像周围的水平空间量，此空间内将不显示任何文本。默认值为 8。
  • vspace 指定图像周围的垂直空间量，此空间内将不显示任何文本。默认值是 8。

有关使用 <img> 标签的更多信息和示例，请参见在文本字段中嵌入图像、SWF 文件和影片剪辑。

斜体标签 (<i>)

<i> 标签以斜体显示括在该标签中的文本。斜体字体必需可用于所使用的字体。

That is very <i>interesting</i>.

上面的代码将按如下方式呈现：

That is very interesting.

列表项标签 (<li>)

<li> 标签在括在该标签的文本前放置一个项目符号。

Grocery list:
<li>Apples</li>
<li>Oranges</li>
<li>Lemons</li>

上面的代码将按如下方式呈现：

Grocery list:

  • Apples
  • Oranges
  • Lemons

段落标签 (<p>)

<p> 标签创建一个新段落。它支持以下属性：

  • align 指定段落中的文本对齐方式；有效值为 left、right 和 center。
  • class 指定 TextField.StyleSheet 对象定义的 CSS 样式类。（有关更多信息，请参见使用样式类。）

    下面的示例使用 align 属性让文本在文本字段的右侧对齐。

    textField.htmlText = "<p align='right'>This text is aligned on the right side of the text field</p>";

    下面的示例使用 class 属性将文本样式类分配到 <p> 标签。

    var myStyleSheet = new TextField.StyleSheet();
myStyleSheet.secreateTextField("test", 10, 0,0, 300,100);
createTextField("test", 10, 0,0, 300,100);
test.styleSheet = myStyleSheet;
test.htmlText = "<p class='body'>This is some body-styled text.</p>.";

范围标签 (<span>)

<span> 标签只可用于 CSS 文本样式。（有关更多信息，请参见使用层叠样式表对文本进行格式设置。）它支持以下属性：

  • class 指定 TextField.StyleSheet 对象定义的 CSS 样式类。有关创建文本样式类的更多信息，请参见使用样式类。

文本样式标签 (<textformat>)

<textformat> 标签允许在 HTML 文本字段中使用 TextFormat 类的部分段落格式设置属性，其中包括行距、缩进、边距和 Tab 键停靠位。您可以将 <textformat> 标签与内置 HTML 标签结合起来。

<textformat> 标签具有以下属性：

  • blockindent 指定块缩进（以磅值为单位）；对应于 TextFormat.blockIndent。（请参见TextFormat.blockIndent。）
  • indent 指定从左边缘到段落中第一个字符的缩进；对应于 TextFormat.indent。（请参见TextFormat.indent。）
  • leading 指定行与行之间的前导垂直间距量；对应于 TextFormat.leading。（请参见TextFormat.leading。）
  • leftmargin 指定段落的左边距（以磅值为单位）；对应于 TextFormat.leftMargin。（请参见TextFormat.leftMargin。）
  • rightmargin 指定段落的右边距（以磅值为单位）；对应于 TextFormat.rightMargin。（请参见TextFormat.rightMargin。）
  • tabstops 将自定义 Tab 键停靠位指定为非负整数数组；对应于 TextFormat.tabStops。（请参见TextFormat.tabStops。）

下面的代码示例使用 <textformat> 标签的 tabstops 属性创建一个数据表，其行标题为粗体，如下所示：

Name | Age | Department
Tim | 32 | IMD
Edwin | 46 | Engineering

使用 Tab 键停靠位创建具有格式的数据表：

  1. 使用“文本”工具，创建一个大约 300 像素宽、100 像素高的动态文本字段。
  2. 在属性检查器中，在“实例名称”文本框中输入 table_txt，从“线条类型”菜单中选择“多行”，然后选择“将文本呈现为 HTML”选项。
  3. 在时间轴中，选择图层 1 上的第 1 帧。
  4. 打开“动作”面板（“窗口”>“开发面板”>“动作”），然后在“动作”面板中输入以下代码：
    var rowHeaders = "<b>Name\t</b><b>Age\t</b><b>Department";
var row_1 = "Tim\t31\tIMD";
var row_2 = "Edwin\t42\tQA";
table_txt.htmlText = "<textformat tabstops='[100, 200]'>";
table_txt.htmlText += rowHeaders;
table_txt.htmlText += row_1;
table_txt.htmlText += row_2 ;
table_txt.htmlText += "</textformat>";

    请注意，使用 Tab 字符转义序列 (\t) 在表中的每“列”间添加 Tab 字符。

  5. 选择“控制”>“测试影片”对影片进行测试。

下划线标签 (<u>)

<u> 标签为括在该标签中的文本添加下划线。

This text is <u>underlined</u>.

上面的代码将按如下方式呈现：

This text is underlined.


在文本字段中嵌入图像、SWF 文件和影片剪辑

在 Flash Player 7 和更高版本中，您可以使用 <img> 标签在动态和输入文本字段中嵌入 JPEG 文件、SWF 文件和影片剪辑。（有关 <img> 标签属性的完整列表，请参见图像标签 (<img>)。）

默认情况下，Flash 以完全大小显示文本字段中嵌入的媒体。若要指定嵌入媒体的尺寸，请使用 <img> 标签的 height 和 width 属性。（请参见指定高度和宽度值。）

通常情况下，文本字段中嵌入的图像显示在 <img> 标签后的行上。但是，如果 <img> 标签是文本字段中的第一个字符，则该图像显示在文本字段的第一行上。

嵌入 SWF 和 JPEG 文件

若要将 JPEG 或 SWF 文件嵌入文本字段中，请在 <img> 标签的 src 属性中指定到 JPEG 或 SWF 文件的绝对或相对路径。例如，以下代码插入一个 JPEG 文件，该文件与 SWF 文件位于同一个目录中。

textField_txt.htmlText = "<p>Here’s a picture from my last vacation:<img src='beach.jpg'>";

嵌入影片剪辑元件

若要在文本字段中嵌入影片剪辑元件，您必须为 <img> 标签的 src 属性指定元件的链接标识符。（有关定义链接标识符的信息，请参见将影片剪辑元件附加到舞台。）

例如，以下代码插入具有链接标识符 symbol_ID 的影片剪辑元件。

textField_txt.htmlText = "<p>Here’s a movie clip symbol:<img src='symbol_ID'>";

为了使嵌入的影片剪辑正确完整地显示，其元件的注册点应该位于点 (0,0)。

指定高度和宽度值

如果为 <img> 标签指定了 width 和 height 属性，则将在文本字段中为 JPEG 文件、SWF 文件或影片剪辑保留空间。JPEG 或 SWF 文件完全下载完之后，它将显示在该保留空间中。Flash 将根据 height 和 width 值按比例增大或缩小媒体。

如果未指定 height 和 width 值，则不为嵌入的媒体保留空间。JPEG 或 SWF 文件完全下载完之后，Flash 将其以完整大小插入文本字段中并重新排列周围的文本。

通过动作脚本控制嵌入的媒体

Flash Player 为每个 <img> 标签创建一个新影片剪辑并将该影片剪辑嵌入 TextField 对象中。<img> 标签的 id 属性允许您将实例名称分配到创建的影片剪辑。这允许您通过动作脚本控制该影片剪辑。

Flash Player 创建的影片剪辑作为子级影片剪辑添加到包含图像的文本字段中。

例如，以下代码在级别 0 上名为 textField_txt 的文本字段中嵌入名为 animation.swf 的 SWF 文件，然后将实例名称 animation_mc 分配给包含 SWF 文件的影片剪辑。

_level0.textField_txt.htmlText = "Here’s an interesting animation:<img src='animation.swf' id='animation_mc'>

在本例中，到新创建的影片剪辑的全限定路径是 _level0.textField_txt.animation_mc。例如，您可以将以下代码附加到一个按钮（与 textField_txt 在同一个时间轴上），该按钮可以停止嵌入 SWF 文件的播放头。

on (press) {
  textField_txt.animation_mc.stop();
}

通过嵌入的媒体创建超级链接

若要通过嵌入的 JPEG 文件、SWF 文件或影片剪辑创建超级链接，请将 <img> 标签括在 <a> 标签中：

textField.htmlText = "Click the image to return home<a href='home.htm'><img src='home.jpg'></a>";

当鼠标位于括在 <a> 标签中的图像、SWF 文件或影片剪辑上方时，鼠标指针将变为“手形”图标，就像标准的超级链接一样。互动操作（例如鼠标单击和按键）不在括在 <a> 标签中的 SWF 文件和影片剪辑中注册。


创建滚动文本

在 Flash 中创建滚动文本有多种方法。选择“文本”菜单或上下文菜单中的“可滚动模式”选项，或按住 Shift 键双击文本块手柄可以将动态和输入文本字段设置为可滚动模式。

可以使用 TextField 对象的 scroll 和 maxscroll 属性在文本块中控制垂直滚动，使用 hscroll 和 maxhscroll 属性在文本块中控制水平滚动。scroll 和 hscroll 属性分别指定当前垂直和水平滚动位置；您可以读写这些属性。maxscroll 和 maxhscroll 属性分别指定最大垂直和水平滚动位置；您只能读取这些属性。

Flash MX 2004 中的 TextArea 组件提供一种简单的方法通过最少的脚本撰写工作创建滚动文本字段。有关更多信息，请参见 TextArea 组件。

要创建可滚动动态文本块，请执行以下操作之一：

  • 按住 Shift 键双击动态文本块上的手柄。
  • 用箭头工具选择动态文本块，然后选择“文本”>“可滚动”。
  • 用箭头工具选择动态文本块。右击 (Windows) 或按住 Control 键单击 (Macintosh) 动态文本块，然后选择“文本”>“可滚动”。

使用滚动属性创建滚动文本：

  1. 执行以下其中一项操作：
    • 使用“文本”工具在舞台上拖出一个文本字段。在属性检查器中为文本字段指定一个实例名称 textField。
    • 使用动作脚本，通过 MovieClip.createTextField() 方法动态创建一个文本字段。为该文本字段指定一个实例名称 textField 作为该方法的参数。
  2. 创建一个向上按钮和一个向下按钮或选择“窗口”>“其它面板”>“公用库”>“按钮”，然后将按钮拖到舞台上。

    您将使用这些按钮来上下滚动文本。

  3. 从舞台中选择向下按钮。
  4. 在“动作”面板中（“窗口”>“开发面板”>“动作”），输入以下代码在文本字段中向下滚动文本：
    on (press) {
  textField.scroll += 1;
}
  5. 从舞台中选择向上按钮。
  6. 在“动作”面板中，输入以下代码向上滚动文本：
    on (press) {
  textField.scroll += 1;
}


使用动作脚本 2.0 创建类概述

动作脚本 2.0 在动作脚本语言的基础上进行了调整，新提供了一些其它编程语言（例如 Java）所具有的强大编程功能。动作脚本 2.0 提倡可复用、可伸缩、可维护的可靠程序结构。它还通过为用户提供全程的编码辅助和调试信息，从而缩短了开发时间。动作脚本 2.0 符合现有标准，且基于 ECMAScript 4 建议 (www.mozilla.org/js/language/es4/)。Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中提供动作脚本 2.0。

下面内容对动作脚本 2.0 的功能进行了介绍。

熟悉的面向对象编程 (OOP) 模型 动作脚本 2.0 的主要功能是一个大家熟悉的用于创建面向对象程序的模型。动作脚本 2.0 中引入了几个新的面向对象的概念和关键字，例如，类、接口 和 包。如果您使用过 Java 编程，那么您对这些概念一定很熟悉。

动作脚本 2.0 提供的 OOP 模型是以前的 Macromedia Flash 版本中用于创建对象和建立继承的原型链方法的“句法定式”。

严格数据类型指定 动作脚本 2.0 还允许您为变量、函数参数和函数返回类型明确指定数据类型。例如，以下代码声明一个名为 userName、类型为 String 的变量，String 是一种内置的活动脚本数据类型（即类）。

var userName:String = "";

编译器警告和错误 以上两个功能使创作工具和编译器能够提供编译器警告和错误消息，帮助您更快地找到应用程序中的错误，而以前在 Flash 中要慢得多。

小心：如果要使用动作脚本 2.0 语法，请确保 FLA 文件的“发布设置”指定为“动作脚本 2.0”。对于在 Flash MX 2004 中创建的文件，这是默认设置。但是，如果您打开以前的使用动作脚本 1 的文件并用动作脚本 2.0 对其进行改写，则请将 FLA 文件的“发布设置”更改为“动作脚本 2.0”。如果不执行此操作，则您的 FLA 文件将不能正确编译，但不生成任何错误。


面向对象的编程原则

本节简要介绍开发面向对象的程序需要遵循的原则。本章的其余部分将进一步深入讨论这些原则，并详细介绍如何在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中实现这些原则。


对象

考虑现实世界中的一个对象 － 例如，一只猫。我们可以说一只猫具有属性（或状态），例如猫名、猫龄和颜色；猫还具有各种行为，例如睡觉、吃食和发出呜呜声。在面向对象编程的世界里，对象也具有属性和行为。使用面向对象的技术，您可以为现实世界中的对象（例如一只猫）或更为抽象的对象（例如一个化学过程）建立模型。


类和类成员

我们继续探讨现实世界中猫的例子，猫的颜色、猫龄和猫名可能不同，它们吃食和发出呜呜声的方式也可能不同。但所有猫都属于某一个对象类，它们都是类型为“猫”的对象。每只猫（现实世界中）都是猫这个类中的一个实例。

与此类似，在面向对象的编程中，类 定义一类对象的蓝图。属于某个类的特性和行为称作类的成员。特性（在猫的例子中，特性包括猫名、猫龄和颜色）称作类的属性，用变量表示；行为（吃食、睡觉）称作类的方法，用函数表示。

例如，您可以创建一个 Person 类，然后创建该类的一个实例（一个人），也称为一个 Person 对象。该 Person 对象将包含 Person 类的所有属性和方法。

在动作脚本中，使用 class 语句来定义类（请参见创建和使用类）。动作脚本中有许多内置类，例如，MovieClip、TextField 和 String 类。有关更多信息，请参见使用内置类。


继承

面向对象编程的主要优点之一就是可以创建类的子类；子类可以继承超类 的所有属性和方法。子类通常会定义额外的方法和属性；这也称作扩展 超类。子类还可以重写（提供自己的定义）从超类继承的方法。

例如，您可以创建一个 Mammal 类，定义所有哺乳动物共有的某些属性和行为。然后，您可以创建一个扩展 Mammal 类的 Cat 类。通过这种方式，继承可以提高代码的可复用性：您不必重新创建两个类共有的任何代码，而只对现有类加以扩展即可。同样，另一个子类也可以再次扩展 Cat 类，依此类推。在复杂的应用程序中，确定类的层次结构是设计过程中的大部头工作。

在活动脚本中，可以使用 extends 关键字在一个类和它的超类之间建立继承关系。有关更多信息，请参见创建子类。


接口

在面向对象的编程中，可将接口看作是未实现（定义）方法的类。另一个类可以实现该接口所声明的方法。

也可将接口看作是用于将两个不相关的类（如果没有接口，这两个类之间没有任何关系）关联起来的“编程约定”。例如，假设您和一个程序员小组一起工作，每个程序员开发同一个应用程序的不同部分（类）。设计这个应用程序时，大家约定不同的类将使用一组方法来进行通信。因此，您创建了一个接口，用以声明这些方法、方法的参数及其返回类型。任何实现该接口的类都必须提供这些方法的定义，否则将出现编译器错误。

您还可以使用接口来提供有限的“多重继承”。动作脚本 2.0 中不允许使用多重继承。所谓“多重继承”是指一个类扩展多个类。例如，在 C++ 中，Cat 类可以扩展 Mammal 类，也可以扩展具有 ChaseTail 和 EatCatNip 方法的 Playful 类。动作脚本 2.0 与 Java 类似，不允许一个类直接扩展多个类。但是，您可以创建一个 Playful 接口，在其中声明 ChaseTail 和 EatCatNip 方法。这样，Cat 类或任何其它类就可以实现该接口并提供这些方法的定义了。

有关更多信息，请参见创建接口。


使用类示例

本节向那些刚刚开始学习面向对象编程的读者概要介绍在 Flash 中创建和使用类的工作流程。这个工作流程至少包括以下步骤：

  1. 在外部动作脚本类文件中定义一个类。
  2. 将类文件保存到一个指定的类路径目录（Flash 在此位置查找类）中。
  3. 在另一个脚本中创建类的一个实例（既可以是在一个 Flash (FLA) 文档中，也可以是在一个外部脚本文件中），或基于原始类创建一个子类。

本节还将讨论动作脚本 2.0 中一个称为严格数据类型指定 的新功能。该功能允许您为变量、函数参数或函数返回类型指定数据类型。

虽然本节只讨论类，但使用接口的工作流程与此基本相同。有关更多信息，请参见创建和使用接口。


创建类文件

若要创建类，首先必须创建一个外部动作脚本 (AS) 文件。类（和接口）只能在外部脚本文件中定义。例如，您不能在附加到 Flash 文档 (FLA) 中的帧或按钮的脚本中定义类。若要创建一个外部 AS 文件，请使用 Flash 附带的动作脚本编辑器，或您常用的代码或文本编辑器。

注意：发布、导出、测试或调试 FLA 文件时，外部文件中的动作脚本代码将被编译成 SWF 文件。因此，如果对外部文件进行了任何更改，则必须保存该文件，并重新编译使用它的任何 FLA 文件。

在下面的步骤中，您将创建一个名为 Person 的类。这个类包含两个属性（age 和 name）和一个方法 (showInfo())，调用该方法将在“输出”面板中显示这两个属性的值。

创建类文件：

  1. 在您的硬盘上新建一个目录，并将其命名为“PersonFiles”。该目录将包含此项目的所有文件。
  2. 执行以下其中一项操作：
    • 使用您常用的文本或代码编辑器新建一个文件。
    • （仅限 Flash Professional）选择“文件”>“新建”，打开“新建文档”对话框；从文件类型列表中选择“动作脚本文件”，然后单击“确定”。“脚本”窗口将打开并显示一个空文件。
  3. 将该文件保存到 PersonFiles 目录中，文件名为 Person.as。
  4. 在脚本窗口中，输入以下代码：
    class Person {
}

    这称作类声明。最基本的类声明应包括：一个 class 关键字，后面跟有类名（本例中为 Person），然后跟有一对大括号 ({})。大括号内的所有内容都称作类体，类的属性和方法都在其中定义。

    注意：类的名称 (Person) 应与包含该类的 AS 文件 (Person.as) 相匹配。这非常重要；如果这两个名称不匹配，将无法编译类。

  5. 若要创建 Person 类的属性，请使用 var 关键字定义两个名称分别为 age 和 name 的变量，如下所示。
    class Person {

  var age:Number;
  var name:String;

}

    提示：按照约定，应在类体的最前面定义类属性（这可以使代码更易让人理解），但不是非要这样做。

    请注意变量声明中使用的冒语法号（var age:Number 和 var name:String）。这就是严格数据类型指定的一个示例。按这种方式键入变量时 (var variableName:variableType)，动作脚本 2.0 编译器将确保赋给该变量的任何值都与指定的类型匹配。虽然不是非要按照此语法定义变量，但这是一个好习惯，并且可以使脚本调试更容易。（有关更多信息，请参见严格数据类型指定。）

  6. 下一步将创建 showInfo() 方法。该方法返回一个预先设置好格式的字符串，其中包含 age 和 name 属性的值。在类体中添加 showInfo() 函数定义，如下所示。
    class Person {

  var age:Number;
  var name:String;

  // 用于返回属性值的方法
  function showInfo():String {
    return("Hello, my name is " + name + " and I'm " + age + " years old.");
  }
}

    请注意函数定义中数据类型指定的使用（可选，但建议使用）。

    function showInfo():String {...}

    在本例中，我们指定了 showInfo() 函数的返回值的数据类型（字符串）。

  7. 本节中您将添加的最后一段代码是一个称作构造函数 的特殊函数。在面向对象的编程中，构造函数初始化类的每个新实例。

    构造函数的名称必须类的名称相同。若要创建该类的构造函数，请添加以下代码：

    class Person {

  var age:Number;
  var name:String;

  // 用于返回属性值的方法
  function showInfo():String {
    return("Hello, my name is " + name + " and I’m " + age + " years old.");
  }

  // 构造函数
  function Person (myName:String, myAge:Number) {
    name = myName;
    age = myAge;
  }
}

    Person() 构造函数有两个参数 myName 和 myAge，并将这两个参数的值赋给 name 和 age 属性。这两个参数的数据类型分别被严格指定为 String 和 Number。有关构造函数的更多信息，请参见构造函数。

    注意：如果不创建构造函数，编译过程中将自动创建一个空构造函数。

  8. 将该文件保存到您在第 1 步中创建的 PersonFiles 目录中，文件名为 Person.as。

    如果您正在使用 Flash MX 2004（而不是 Flash Professional），请参见创建 Person 类的实例。

  9. （仅限 Flash Professional）选择“工具”>“语法检查”，或按下 Control+T 组合键 (Windows) 或 Command+T 组合键 (Macintosh)，对该类文件进行语法检查。

    如果“输出”面板中报告有错误，请对您脚本中的代码与上面第 7 步中的最终代码进行比较。如果您无法修复代码中的错误，请复制第 7 步中的完整代码。


创建 Person 类的实例

下一步是在另一个脚本（例如，Flash (FLA) 文档中的一个帧脚本或另一个 AS 脚本）中创建 Person 类的一个实例，并将其赋给一个变量。若要创建自定义类的实例，应使用 new 运算符，就像创建内置动作脚本类（例如，XML 或 TextField 类）的实例一样。

例如，以下代码创建 Person 类的一个实例，并将其赋给变量 newPerson。

var newPerson:Person = new Person("Nate", 32);

此代码调用 Person 类的构造函数，并将参数值 "Nate" 和 32 传递给该函数。

newPerson 变量被指定为一个 Person 类型的对象。以这种方式指定对象类型使编译器能够确保您不会尝试访问该类中未定义的属性或方法。（但如果您用 dynamic 关键字将类声明为动态类，则是个例外。请参见创建动态类。）

在 Flash 文档中创建 Person 类的实例：

  1. 在 Flash 中，选择“文件”>“新建”，从文档类型列表中选择“Flash 文档”，然后单击“确定”。
  2. 将该文件保存到您以前创建的 PersonFiles 目录中，文件名为 createPerson.fla。
  3. 在“时间轴”中选择“图层 1”，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  4. 在“动作”面板中输入以下代码：
    var person_1:Person = new Person("Nate", 32);
var person_2:Person = new Person("Jane", 28);
trace(person_1.showInfo());
trace(person_2.showInfo());

    以上代码创建 Person 类的两个实例 person_1 和 person_2，然后对每个实例调用 showInfo() 方法。

  5. 保存您的工作，然后选择“控制”>“测试影片”。您应在“输出”面板中看到以下内容：
    Hello, my name is Nate and I'm 32 years old.
Hello, my name is Jane and I'm 28 years old.

通过调用类的构造函数来创建该类的实例时，Flash 将在一组预定的目录位置中查找与该构造函数同名的动作脚本文件。这组目录位置统称为类路径（请参见理解类路径）。

您现在对如何在 Flash 文档中创建和使用类应该已经有了一个总体概念。本章后面的部分将更详细地研究类和接口。


关于创建和使用类

如上文所述，类由两部分组成：类声明 和类体。类声明至少应包含一条 class 语句，后面跟有一个类名标识符，然后跟有一对大括号。大括号内的所有内容都是类体。

class className {
  // 类体
}

只能在动作脚本 (AS) 文件中定义类。例如，不能在 FLA 文件中的帧脚本中定义类。此外，指定的类名必须与包含该类的 AS 文件的文件名相匹配。例如，如果创建一个名为 Shape 的类，那么包含类定义的 AS 文件必须名为 Shape.as。

// 在 Shape.as 文件中
class Shape {
  // Shape 类体
}

您创建的所有动作脚本类文件都必须保存在指定的类路径目录（Flash 在编译脚本时将在这些目录中查找类定义）中。（请参见理解类路径。）

类名必须是标识符；也就是说，第一个字符必须是字母、下划线 (_) 或美元符号 ($)，后面的每个字符都必须是字母、数字、下划线或美元符号。另外，在声明类名的文件中，该类名必须是全限定的；也就是说，它必须反映存储的目录。例如，要创建存储在 myClasses/education/curriculum 目录中的名为 RequiredClass 的类，您必须按如下所示在 RequiredClass.as 文件中声明该类：

class myClasses.education.curriculum.RequiredClass {
}

因此，最好在开始创建类之前就计划好您的目录结构。否则，如果您在创建类文件之后决定移动它们，就将不得不修改类声明语句以反映其新位置。


创建属性和方法

类的成员包括属性（变量声明）和方法（函数声明）。所有属性和方法都必须在类体（大括号）内声明；否则，编译时将出现错误。

在类内（但在函数外）声明的任何函数都是该类的属性。例如，上文中讨论的 Person 类有两个属性 age 和 name，其类型分别为 Number 和 String。

class Person {
  var age:Number;
  var name:String;
}

同样，在类内声明的任何函数都将被视为该类的方法。在 Person 类的示例中，您创建了一个名为 showInfo() 的方法。

class Person {
  var age:Number;
  var name:String;
  function showInfo() {
    // showInfo() 方法定义
  }
}


以内联方式初始化属性

您可以使用默认值以内联方式（即，在声明属性时）初始化属性，如下所示：

class Person {
  var age:Number = 50;
  var name:String = "John Doe";
}

以内联方式初始化属性时，赋值语句右侧的表达式必须为编译时常量。即，该表达式不能引用任何在运行时设置或定义的变量。编译时常量包括文本字符串、数字、布尔值、null 和 undefined，以及以下内置类的构造函数：Array、Boolean、Number、Object 和 String。

例如，以下类定义以内联方式初始化几个属性：

class CompileTimeTest {
  var foo:String = "my foo"; // 没问题
  var bar:Number = 5; // 没问题
  var bool:Boolean = true; // 没问题
  var name:String = new String("Jane"); // 没问题
  var who:String = foo; // 没问题，因为“foo”是常量

  var whee:String = myFunc(); // 错误！不是编译时常量表达式
  var lala:Number = whee; // 错误！不是编译时常量表达式
  var star:Number = bar + 25; // 没问题，“bar”和“25”都是常量

  function myFunc() {
    return "Hello world";
  }
}

此规则仅适用于实例变量（被复制到类的各个实例中的变量），而不适用于类变量（属于类本身的变量）。有关这些变量类型的更多信息，请参见实例成员和类成员。


创建子类

在面向对象的编程中，子类可以继承另一个类（称作超类）的属性和方法。若要在两个类中创建这种关系，应使用 class 语句的 extends 子句。若要指定超类，请使用以下语法：

class SubClass extends SuperClass {}

在 SubClass 中指定的类将继承超类定义的所有属性和方法。例如，可以创建一个 Mammal 类，定义所有哺乳动物所共有的属性和方法。若要创建 Mammal 类的一个变体，例如一个 Marsupial 类，则应扩展 Mammal 类（即，创建 Mammal 类的一个子类）。

class Marsupial extends Mammal {}

子类将继承超类的所有属性和方法，包括使用 private 关键字声明的任何私有属性或方法。（有关私有变量的更多信息，请参见控制成员访问。）

您可以扩展您自己的自定义类，也可以扩展任何内置动作脚本类，例如，XML、Sound 或 MovieClip 类。扩展内置动作脚本类时，您的自定义类将继承该内置类的所有方法和属性。

例如，以下代码定义 JukeBox 类，它扩展内置的 Sound 类。它定义一个名为 songList 的数组和一个名为 playSong() 的方法。此方法播放歌曲并调用 loadSound() 方法（继承自 Sound 类）。

class JukeBox extends Sound {
  var songList:Array = new Array("beethoven.mp3", "bach.mp3", "mozart.mp3");
  function playSong(songID:Number) {
    this.loadSound(songList[songID]);
  }
}

如果您没有将对 super() 的调用放入子类的构造函数中，则编译器将自动生成对其不含参数的直接超类的构造函数的调用作为该函数的第一个语句。如果超类没有构造函数，则编译器将创建一个空构造函数，然后生成从子类对该构造函数的调用。但是，如果超类采用其定义中的参数，则必须在子类中创建构造函数，并用必需的参数调用超类。

多重继承（即，从多个类继承）是不允许的。但是，如果使用单个 extends 语句，则类便可以有效地从多个类继承：

// 不允许
class C extends A, B {}
// 允许
class B extends A {}
class C extends B {}

您还可以使用 extends 关键字创建接口的子类：

interface iA extends interface iB {}


构造函数

类的构造函数 是一个特殊的函数。使用 new 运算符创建类的实例时将自动调用该函数。构造函数的名称与包含它的类的名称相同。例如，您在上文中创建的 Person 类包含以下构造函数：

// Person 类构造函数
function Person (myName:String, myAge:Number) {
  name = myName;
  age = myAge;
}

如果未明确声明任何构造函数（也就是说，如果未创建名称与类名相同的函数），编译器将自动创建一个空构造函数。

一个类只能包含一个构造函数；动作脚本 2.0 中不支持重载构造函数。


控制成员访问

默认情况下，类的所有属性和方法都可被任何其它类访问：类的所有成员默认都是公共 成员。但在某些情况下，您可能需要保护类的数据和方法，不让其它类访问。您需要将这些成员指定为私有 成员 - 只有声明或定义这些成员的类才能访问它们。

可以使用 public 或 private 成员属性来指定公共或私有成员。例如，以下代码声明一个私有变量（一个属性）和一个私有方法（一个函数）。

例如，下面的类 (LoginClass) 定义一个名为 userName 的私有属性，和一个名为 getUserName() 的私有方法。

class LoginClass {
  private var userName:String;
  private function getUserName() {
    return this.userName;
  }
  //构造函数
  function LoginClass(user:String) {
    this.userName = user;
  }
}

私有成员（属性和方法）只能由定义这些成员的类和该原始类的子类访问。原始类的实例，或该类的子类的实例，不能访问声明为私有成员的属性和方法；也就是说，私有成员只能在类定义中访问，而不能在实例级别上访问。

例如，可以创建 LoginClass 的一个子类（名为 NewLoginClass）。这个子类可以访问 LoginClass 定义的私有属性 (userName) 和私有方法 (getUserName())。

class NewLoginClass extends LoginClass {
  // 可以访问 userName 和 getUserName()
}

但是，LoginClass 或 NewLoginClass 的实例不能访问这些私有成员。例如，如果将以下代码添加到某个 FLA 文件内的帧脚本中，将出现一个编译器错误，提示您 getUserName() 是私有成员，不能访问。

var loginObject:LoginClass = new LoginClass("Maxwell");
var user = loginObject.getUserName();

还应注意成员访问控制是一个仅限于编译时的功能；在运行时，Flash Player 不区分私有或公共成员。


关于实例成员和类成员

在面向对象的编程中，类的成员（属性或方法）可以是实例成员，也可以是类成员。对于类的各个实例，都要分别创建实例成员，并将其复制到各个实例中；相反，对于每个类，仅创建一次类成员。（类成员也称作静态成员。）

若要调用实例方法或访问实例属性，应引用该类的一个实例。例如，以下代码调用 MovieClip 类的一个名为 clip_mc 的实例的 showInfo() 方法：

clip_mc.showInfo();

但是，类（静态）成员分配给类本身，而不分配给该类的任何实例。若要调用类方法或访问类属性，应引用类名本身，而不是该类的某个特定实例：

ClassName.classMember;

例如，活动脚本的 Math 类只包含静态方法和属性。若要调用它的任何一个方法，不需要创建 Math 类的实例，而只需通过 Math 类本身调用这些方法。以下代码调用 Math 类的 sqrt() 方法：

var square_root:Number = Math.sqrt(4);

实例成员可以读取静态成员，但不能对它们进行写入操作。实例成员在 for 或 for..in 循环中不是可枚举的。


创建类成员

若要将类的属性指定为静态属性，应使用 static 限定符，如下所示。

static var variableName;

也可以将类的方法声明为静态方法。

static function functionName() {
  // 函数体
}

类（静态）方法只能访问类（静态）属性，而不能访问实例属性。例如，以下代码将导致出现编辑器错误，因为类方法 getName() 引用了实例变量 name。

class StaticTest {
  var name="Ted";

  static function getName() {
    var local_name = name;
    // 错误！不能在静态函数中访问实例变量。
  }
}

若要解决此问题，可将该方法声明为实例方法，或将该变量声明为类变量。


使用类成员：一个简单的示例

类（静态）成员的一种用途是保留有关类及其实例的状态信息。例如，假设您要跟踪从某个类创建的实例的数目。简单的实现方法就是使用一个类属性，每当创建一个新实例时这个属性的值递增。

在以下示例中，您将创建一个名为 Widget 的类，在其中定义一个名为 widgetCount 的静态实例计数器。每次创建该类的一个新实例时，widgetCount 的值都递增 1，并在“输出”面板中显示 widgetCount 的当前值。

使用类变量创建实例计数器：

  1. 新建一个动作脚本 (AS) 文件。
  2. 在文件中添加以下代码：
    class Widget {
  static var widgetCount:Number = 0; // 初始化类变量
  function Widget() {
    trace("Creating widget #" + widgetCount);
    widgetCount++;
  }
}

    由于 widgetCount 变量声明为静态变量，因此仅初始化为 0 一次。每次调用 Widget 类的构造函数时，它都将 widgetCount 的值加 1，然后显示当前创建的实例的编号。

  3. 将文件保存为 Widget.as。
  4. 新建一个 Flash (FLA) 文档，并将其保存到与 Widget.as 相同的目录中，文件名称为 createWidget.fla。

    在这个文件中，您将创建 Widget 类的新实例。

  5. 在 createWidget.fla 文件中，在“时间轴”中选择“图层 1”，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  6. 在“动作”面板中添加以下代码。
    //在创建类的任何实例之前，
//widgetCount 为零 (0)
trace("Widget count at start:" + Widget.widgetCount);
var widget_1 = new Widget();
var widget_2 = new Widget();
var widget_3 = new Widget();
  7. 保存文件，然后进行测试（“控制”>“测试影片”）。

    您应在“输出”面板中看到以下内容：

    Widget count at start: 0
Creating widget # 0
Creating widget # 1
Creating widget # 2


类成员和子类

类成员将传播到定义这些成员的超类的子类。在上例中（请参见使用类成员：一个简单的示例），您使用了一个类属性来跟踪所创建的该类的实例数。您可以创建 Widget 类的一个子类，如下所示。

class SubWidget extends Widget {
  function SubWidget() {
    trace("Creating subwidget # "+Widget.widgetCount);
  }
}


关于创建和使用接口

在面向对象的编程中，接口类似于只声明了方法、除此之外不起任何作用的类。也就是说，接口由“空”方法组成。

接口的一个用途是在两个不相关的类（如果没有接口，这两个类没有任何关系）之间实现一个协议。例如，假设您是一个程序员团队中的一员，团队中的每个程序员分别负责一个大型应用程序中不同的部分（也就是说，不同的类）。在这些类中，大多数都是不相关的，但您仍需要一种机制，使不同的类之间能够相互通信。也就是说，您需要定义一个接口，或者称作通信协议，所有的类都必须遵守这个协议。

一种实现方式是创建一个 Communication 类，定义所有这些方法，然后让每个类都扩展（或继承自）这个超类。但是，由于应用程序由不相关的类组成，因此，将这些类都硬生生地放置到一个公共的类层次结构中是没有意义的。一个更好的解决方法是创建一个接口，声明这些类将用于通信的方法，然后让每个类都实现这些方法（为这些方法提供其自己的定义）。

通常，不使用接口也可以成功编写程序。但是，如果恰当地使用接口，可以使应用程序设计更完美、更具可伸缩性和可维护性。


创建接口

创建接口的过程与创建类相同。与类相同，只能在外部动作脚本 (AS) 文件中定义接口。接口的声明使用 interface 关键字，后面跟有接口名，然后跟有一对大括号，在括号中定义接口体。

interface interfaceName {
  // 接口方法声明
}

接口只能包含方法（函数）声明，包括参数、参数类型和函数返回类型。

例如，以下代码声明一个名为 MyInterface 的接口，其中包含两个方法 method_1() 和 method_2()。第一个方法没有任何参数，而且没有返回类型（指定为 Void）。第二个方法声明具有一个类型为 String 的参数，其返回类型指定为 Boolean。

interface MyInterface {
  function method_1():Void;
  function method_2(param:String):Boolean;
}

接口不能包含任何变量声明或赋值。在接口中声明的函数不能包含大括号。例如，以下接口无法编译。

interface BadInterface{
  // 编译器错误。不允许在接口中声明变量。
  var illegalVar;

// 编译器错误。接口中不允许有函数体。
  function illegalMethod(){
  }
}

接口的命名和将它们存储在包中的规则与类的相应规则相同；请参见创建和使用类和使用包。


接口作为数据类型

与类相似，接口也定义一种新的数据类型。任何实现某个接口的类都可被看作属于该接口所定义的类型。这有助于确定给定的对象是否实现了给定的接口。例如，考虑一下以下接口。

interface Movable {
  function moveUp();
  function moveDown();
}

现在，考虑一下实现 Movable 接口的 Box 类。

class Box implements Movable {
  var x_pos, y_pos;

  function moveUp() {
    // 方法定义
  }
  function moveDown() {
    // 方法定义
  }
}

然后，在另一个创建了 Box 类的实例的脚本中，您可以声明一个 Movable 类型的变量。

var newBox:Movable = new Box();

在 Flash Player 7 和更高版本中，可在运行时为表达式指定接口类型。如果该表达式是一个实现该接口的对象，或具有实现该接口的超类，则返回该对象。否则，将返回 null。这可用于判断特定对象是否实现了某个接口。

例如，以下代码首先检查对象名 someObject 是否实现了 Movable 接口，然后对该对象调用 moveUp() 方法。

if(Movable(someObject) != null) {
  someObject.moveUp();
}


类路径

要使用您定义的类或接口，Flash 必须能够找到包含类或接口定义的外部 AS 文件。Flash 在其中搜索类和接口定义的那一组目录称为类路径。

创建动作脚本类文件时，需要将该文件保存到类路径中指定的目录之一，或其子目录中。（您可以修改类路径，加入所需的目录路径；请参见修改类路径。）否则，Flash 将无法解析 或找到脚本中指定的类或接口。您在类路径目录中创建的子目录称作包，使用包可以对类进行分类整理。（有关更多信息，请参见使用包。）


全局类路径和文档级类路径

Flash 有两个类路径设置：全局类路径和文档级类路径。全局类路径应用于外部 AS 和 FLA 文件，在“首选参数”对话框（“编辑”>“首选参数”）中设置。文档级类路径仅应用于 FLA 文件，在特定 FLA 文件的“发布设置”对话框（“文件”>“发布设置”）中设置。

全局类路径默认包含两个目录路径：一个指向包含当前文档的目录的相对路径，和位于随 Flash 安装的用户配置目录中的 Classes 目录。该目录的位置如下所示：

  • Windows 2000 或 Windows XP：C:\Documents and Settings\<user>\Local Settings\ Application Data\Macromedia\Flash MX2004\<language>\Configuration\
  • Windows 98：C:\Windows\Application Data\Macromedia\Flash MX 2004\ <language>\Configuration\
  • Macintosh OS X：Hard Drive/Users/Library/Application Support/Macromedia/Flash MX 2004/<language>/Configuration/

文档级类路径默认为空。


编辑器如何解析类引用

Flash 在尝试解析 FLA 脚本中的类引用时，首先会在为该 FLA 指定的文档级类路径中进行搜索。如果在该类路径中未找到该类，或如果该类路径为空，Flash 将在全局类路径中进行搜索。如果在全局类路径中也未找到该类，将出现一个编译器错误。

Flash 在尝试解析 AS 脚本中的类引用时，只在全局类路径目录中进行搜索，因为 AS 文件没有相关联的文档类路径。


修改类路径

您可以使用“首选参数”对话框来修改全局类路径。若要修改文档级类路径设置，应使用该 FLA 文档的“发布设置”对话框。您可以添加绝对目录路径（例如，C:/my_classes）和相对目录路径（例如，../my_classes 或“.”）。

全局类路径默认包含一个绝对路径（用户配置目录中的 Classes 目录）和一个相对类路径。这个相对类路径用一个圆点 (.) 表示，指向当前文档目录。请注意相对类路径可能指向不同的目录，这取决于正在编译或发布的文档的位置。有关更多信息，请参见全局类路径和文档级类路径。

修改全局类路径：

  1. 选择“编辑”>“首选参数”打开“首选参数”对话框。
  2. 单击“动作脚本”选项卡，然后单击“动作脚本 2.0 设置”按钮。
  3. 执行以下任意一个操作：
    • 若要将某个目录添加到类路径中，单击“浏览到路径”按钮，浏览到要添加的目录，然后单击“确定”。

      您也可以单击“添加新路径”(+) 按钮，在“类路径”列表中添加新的一行。双击新添加的行，键入一个相对路径或绝对路径，然后单击“确定”。

    • 若要编辑现有的类路径目录，在“类路径”列表中选中该路径，单击“浏览到路径”按钮，浏览到要添加的目录，然后单击“确定”。

      您也可以在“类路径”列表中双击该路径，键入所需的路径，然后单击“确定”。

    • 若要从类路径中删除某个目录，在“类路径”列表中选中该路径，然后单击“从路径删除”按钮。

修改文档级类路径：

  1. 选择“文件”>“发布设置”，打开“发布设置”对话框。
  2. 单击“Flash”选项卡。
  3. 单击“动作脚本版本”弹出菜单旁边的“设置”按钮。
  4. 执行以下任意一个操作：
    • 若要将某个目录添加到类路径中，单击“浏览到路径”按钮，浏览到要添加的目录，然后单击“确定”。

      您也可以单击“添加新路径”(+) 按钮，在“类路径”列表中添加新的一行。双击新添加的行，键入一个相对路径或绝对路径，然后单击“确定”。

    • 若要编辑现有的类路径目录，在“类路径”列表中选中该路径，单击“浏览到路径”按钮，浏览到要添加的目录，然后单击“确定”。

      您也可以在“类路径”列表中双击该路径，键入所需的路径，然后单击“确定”。

    • 若要从类路径中删除某个目录，在“类路径”列表中选中该路径，然后单击“从路径删除”按钮。


使用包

您可以使用包 对动作脚本类文件进行分类整理。包是一个位于指定的类路径目录下、包含一个或多个类文件的目录。（请参见理解类路径。）包也可以包含其它的包，这些包称作子包，每个都可以具有其自己的类文件。

包名必须是标识符；也就是说，第一个字符必须是字母、下划线 (_) 或美元符号 ($)，后面的每个字符都必须是字母、数字、下划线或美元符号。

包通常用于将相关的类整理在一起。例如，您可能有三个相关的类 Square、Circle 和 Triangle。这三个类在 Square.as、Circle.as 和 Triangle.as 文件中定义。假设您已经将这些 AS 文件保存到了类路径中指定的某个目录下。

// 在 Square.as 中：
class Square {}

// 在 Circle.as 中：
class Circle {}

// 在 Triangle.as 中：
class Triangle {}

由于这三个类文件是相关的，因此您可能会决定将它们放入一个名为 Shapes 的包（目录）中。如果是这样，全限定类名将包括包路径和简单类名。包路径用点语法表示，其中每个点表示一个子目录。

例如，如果将各个定义形状的 AS 文件放在了 Shapes 目录下，则需要更改各个类文件中的类名，以反映其新位置，如下所示：

// 在 Shapes/Square.as 中：
class Shapes.Square {}

// 在 Shapes/Circle.as 中：
class Shapes.Circle {}

// 在 Shapes/Triangle.as 中：
class Shapes.Triangle {}

若要引用位于包目录中的类，您可以指定其全限定类名，或使用 import 语句导入该包。有关更多信息，请参见导入类。


导入类

若要在另一个脚本中引用类，必须在类名的前面加上该类的包路径。类的名称与其包路径的组合称作类的全限定类名。如果类位于顶级类路径目录中（而不是在该类路径目录的子目录中），则其全限定类名就是其类名。

若要指定包路径，请使用圆点分隔包目录名称。包路径采用分层结构，其中每个圆点代表一个嵌套的目录。例如，假设您创建了一个名为 Data 的类，它位于您的类路径下的 com/network/ 包中。若要创建该类的一个实例，您可以指定全限定类名，如下所示：

var dataInstance = new com.network.Data();

您也可以使用全限定类名来指定变量的数据类型：

var dataInstance:com.network.Data = new Data();

可以使用 import 语句将包导入到脚本中，这样就可以使用类的缩写名，而不必使用其全限定名。您还可以使用通配符 (*) 导入包中的所有类。

例如，假设您创建了一个名为 UserClass 的类，该类位于 macr/util/users 包目录路径下：

// 在 macr/util/users/UserClass.as 文件中
class macr.util.users.UserClass { ... }

假设在另一个脚本中，您使用 import 语句导入了该类，如下所示：

import macr.util.users.UserClass;

之后，您可以在同一脚本中使用该类的缩写名称引用该类：

var myUser:UserClass = new UserClass();

您可以使用通配符 (*) 导入某个给定包中的所有类。例如，假设您有一个名为 macr.util 的包，其中包含两个动作脚本类文件 foo.as 和 bar.as。在另一个脚本中，您可以使用通配符同时导入该包中的两个类，如下所示：

import macr.util.*;

然后，在同一脚本中您就可以直接引用 foo 和 bar 类了。

var myFoo:foo = new foo();
var myBar:bar = new bar();

import 语句仅应用于调用该语句的当前脚本（帧或对象）。如果脚本中未使用某个导入的类，则生成的 SWF 文件字节码中将不包含该类，并且该类对包含 import 语句的 FLA 文件可能调用的任何 SWF 文件都不可用。有关更多信息，请参见import。


隐式获取/设置方法

面向对象的编程惯例不提倡直接访问类内的属性。类通常会定义“获取”方法和“设置”方法来分别提供对给定属性的读访问和写访问。例如，假设某个类包含一个名为 userName 的属性：

var userName:String;

该类不允许其实例直接访问这个属性（例如 obj.userName = "Jody"），而改为提供两个方法 getUserName 和 setUserName。这两个方法的实现代码如下所示：

function getUserName:String() {
  return userName;
}

function setUserName(name:String): {
  userName = name;
}

您可以看到，getUserName 返回 userName 的当前值，而 setUserName 将 userName 的值设置为传递给该方法的字符串参数。这样，该类的实例将使用以下语法来获取或设置 userName 属性。

// 调用“获取”方法
var name = obj.getUserName();
// 调用“设置”方法
obj.setUserName("Jody");

但是，如果您想使用更简明的语法，可以使用隐式 获取/设置方法。利用隐式获取/设置方法能够以直接访问的方式访问类属性，同时还可以保持良好的面向对象编程惯例。

若要定义这些方法，应使用 get 和 set 方法属性。首先应创建用于获取或设置属性值的方法，然后在方法名前面加上 get 或 set 关键字。

function get user():String {
  return userName;
}

function set user(name:String):Void {
  userName = name;
}

获取方法不能有任何参数。而设置方法必须有一个必要参数。设置方法与同一范围内的获取方法可以具有相同的名称。但获取/设置方法的名称不能与其它属性的名称相同。例如，在上面的示例代码中，因为定义了名为 user 的获取/设置方法，所以在同一个类中就不能再有名称也为 user 的属性了。

与普通方法不同，调用获取/设置方法时，方法名后面不带任何括号或参量。例如，现在可以按照以下语法使用上面定义的获取/设置方法来访问或修改 userName 的值。

var name = obj.user;
obj.user = "Jack";

注意：隐式获取/设置方法是对动作脚本 1 中 Object.addProperty() 方法的句法简化。


创建动态类

默认情况下，类的属性和方法是固定的。也就是说，类的实例不能创建或访问该类原来未声明或定义的属性或方法。例如，考虑一个 Person 类，该类定义了两个属性 name 和 age：

class Person {
  var name:String;
  var age:Number;
}

如果您在另一个脚本中创建了 Person 类的一个实例，并且尝试访问某个该类中不存在的属性，编辑器将生成一个错误。例如，以下代码创建 Person 类的一个新实例 (a_person)，然后尝试给名为 hairColor 的属性赋值，但该属性实际不存在。

var a_person:Person = new Person();
a_person.hairColor = "blue"; // 编译器错误

此代码将导致一个编译器错误，因为 Person 类未声明名为 hairColor 的属性。在大多数情况下，这与您的需要正好相符。

但在某些情况下，您可能需要在运行时添加和访问原类定义中未定义的属性或方法。这可以通过 dynamic 类限定符来实现。例如，以下代码在上面讨论的 Person 类中添加了 dynamic 限定符：

dynamic class Person {
  var name:String;
  var age:Number;
}

现在，Person 类的实例就可以添加和访问原类定义中未定义的属性和方法了。

var a_person:Person = new Person();
a_person.hairColor = "blue"; // 由于是动态类，因此不会出现编译器错误

动态类的子类也是动态的。


类的编译和导出方式

默认情况下，SWF 文件使用的类在该 SWF 的第一帧上打包并导出。您也可以指定在哪一帧上打包并导出类。例如，如果 SWF 文件使用了许多类，需要很长时间来下载，这将很有用。如果类在第一帧上导出，则用户必须等到所有类代码都下载完毕后，才能看到那一帧。如果指定在时间轴上后面的某一帧打包并导出类，下载该帧中的类代码时，可在时间轴的前几帧中显示一段简短的加载动画。

为 Flash 文档指定类的导出帧：

  1. 打开 FLA 文件后，选择“文件”>“发布设置”。
  2. 在“发布设置”对话框中，单击“Flash”选项卡。
  3. 单击“动作脚本版本”弹出菜单旁边的“设置”按钮，打开“动作脚本设置”对话框。
  4. 在“导出用于类的帧”文本框中，输入要在第几帧上导出类代码。

    如果时间轴上没有指定的帧，发布 SWF 时将出现一条错误消息。

  5. 单击“确定”关闭“动作脚本设置”对话框，然后单击“确定”关闭“发布设置”对话框。


使用外部数据概述

在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中，您可以使用动作脚本将外部源中的数据加载到 SWF 文件中。您还可以发送 SWF 文件中的数据让应用程序服务器（例如 Macromedia ColdFusion MX 或 Macromedia JRun）或另一种类型的服务器端脚本（例如 PHP 或 Perl）来处理这些数据。Flash Player 可以通过 HTTP 或 HTTPS 发送和加载数据，也可以发送和加载本地文本文件中的数据。您还可以为需要较少反应时间的应用程序（例如聊天应用程序或股票报价服务）创建永久性的 TCP/IP 套接字连接。

加载到 SWF 文件或从 SWF 文件发送的数据可格式化为 XML（可扩展标记语言）或名称/值对。

Flash Player 还可以与其主机环境（例如，Web 浏览器）或同一台计算机上 Flash Player 的另一个实例互相收发数据。

默认情况下，SWF 文件只能访问驻留在产生 Flash 影片的同一个域（例如，www.macromedia.com）中的数据。（有关更多信息，请参见Flash Player 安全功能。）


变量和远程源

与 HTML 页面类似，SWF 文件是用于捕获和显示信息的窗口。然而，SWF 文件可以在浏览器中保持加载状态，同时用新信息持续更新而不必重新加载整个页面。使用动作脚本函数和方法，可以向服务器端脚本、文本文件以及 XML 文件发送信息，也可从它们那里接收信息。

此外，服务器端脚本可从数据库中请求特定信息，然后将其转发给 SWF 文件。可用多种不同的语言撰写服务器端脚本：其中最常用的是 CFML、Perl、ASP (Microsoft Active Server Pages) 和 PHP。通过在数据库中存储信息和从其中检索信息，您可为 SWF 文件创建动态的和个性化的内容。例如，您可创建消息板、用户的个人配置或者购物车，购物车能够跟踪记录用户购物信息从而确定用户偏好。

许多动作脚本函数和方法可用于将信息传入 SWF 文件和从 SWF 文件传出信息。每个函数或方法使用一个协议来传输信息，并要求信息以一定的方式格式化。

  • 使用 HTTP 或 HTTPS 协议以 URL 编码格式发送信息的函数和 MovieClip 方法是 getURL()、loadVariables()、loadVariablesNum()、loadMovie() 和 loadMovieNum()。
  • 使用 HTTP 或 HTTPS 协议以 URL 编码格式发送和加载信息的 LoadVars 方法是 load()、send() 和 sendAndLoad()。
  • 使用 HTTP 或 HTTPS 协议以 XML 格式发送和加载信息的方法是 XML.send()、XML.load() 和 XML.sendAndLoad()。
  • 创建和使用 TCP/IP 套接字连接以 XML 格式发送和加载信息的方法是 XMLSocket.connect() 和 XMLSocket.send()。


检查已加载的数据

向 SWF 文件加载数据的每个函数或方法（除了 XMLSocket.send() 之外）都是异步的：动作结果返回的时间不确定。

在 SWF 文件中使用已加载数据之前，必须检查它是否已被加载。例如，您不能在同一脚本中加载变量并操作它们的值。在下面的脚本中，只有确保已从文件 myData.txt 加载了变量 lastFrameVisited，才能使用该变量：

loadVariables("myData.txt", 0);
gotoAndPlay(lastFrameVisited);

每个函数或方法都有一种特定的技术，您可以使用该技术检查数据是否已被加载。如果使用 loadVariables() 或 loadMovie()，则可以向影片剪辑目标中加载信息，并使用 onClipEvent() 处理函数的 data 事件来执行脚本。如果使用 loadVariables() 加载数据，则在最后一个变量加载后将执行 onClipEvent(data) 处理函数。如果使用 loadMovie() 加载数据，则每次 SWF 文件的片断进入 Flash Player 时都会执行 onClipEvent(data) 处理函数。

例如，下面的按钮动作从文件 myData.txt 中向影片剪辑 loadTargetMC 加载变量：

on (release) {
  loadVariables("myData.txt", _root.loadTargetMC);
}

为 loadTargetMC 实例指定的 onClipEvent() 处理函数使用变量 lastFrameVisited，它是从文件 myData.txt 中加载的。下面的处理函数只有在加载了所有变量（包括 lastFrameVisited）之后才执行：

onClipEvent(data) {
  goToAndPlay(lastFrameVisited);
}

如果使用 XML.load()、XML.sendAndLoad() 和 XMLSocket.connect() 方法，则应该定义一个在数据到达时对其进行处理的处理函数。这个处理函数是 XML 或 XMLSocket 对象的一个属性，您要为该对象指定一个已定义的函数。当接收到信息时自动调用这些处理函数。对于 XML 对象，使用 XML.onLoad() 或 XML.onData()。对于 XMLSocket 对象，使用 XMLSocket.onConnect()。

有关更多信息，请参见使用 XML 类和使用 XMLSocket 类。


使用 HTTP 连接到服务器端脚本

loadVariables()、loadVariablesNum()、getURL()、loadMovie() 和 loadMovieNum() 函数以及 MovieClip.loadVariables()、MovieClip.loadMovie() 和 MovieClip.getURL() 方法都可以通过 HTTP 或 HTTPS 协议与服务器端脚本进行通讯。这些函数发送函数附加到的时间轴中的所有变量。当用作 MovieClip 对象的方法时，loadVariables()、getURL() 和 loadMovie() 发送指定影片剪辑的所有变量；每个函数（或方法）按以下方式处理其响应：

  • getURL() 将所有信息返回到浏览器窗口，而不是 Flash Player。
  • loadVariables() 将变量加载到 Flash Player 的指定时间轴或级别中。
  • loadMovie() 将 SWF 文件加载到 Flash Player 的指定级别或影片剪辑中。

当使用 loadVariables()、getURL() 或 loadMovie() 时，您可以指定几个参数：

  • URL 是远程变量所在的文件。
  • Location 是 SWF 文件中接收变量的级别或目标。（getURL() 函数不采用此参数。）

    有关级别和目标的更多信息，请参见多个时间轴和层。

  • Variables 设置用来发送变量的 HTTP 方法，该方法为 GET 或 POST。当省略时，Flash Player 默认使用 GET，但不发送任何变量。

例如，如果要记录游戏的高分，可在服务器上存储这些得分，并且每次有人玩这个游戏时都用 loadVariables() 将它们加载到 SWF 文件中。该函数调用可以是：

loadVariables("http://www.mySite.com/scripts/high_score.php", _root.scoreClip, GET);

这样会将变量从名为 high_score.php 的 PHP 脚本加载到影片剪辑实例 scoreClip 中，使用的是 GET HTTP 方法。

使用 loadVariables() 函数加载的任何变量必须是标准的 MIME 格式 application/x-www-form-urlencoded（CGI 脚本使用的标准格式）。在 loadVariables() 的 URL 参数中指定的文件必须以这种格式写出变量和值对，这样 Flash 才可以读取它们。此文件可以指定任意数量的变量；变量和值对之间必须用“and”符 (&) 分隔，并且值中的词之间必须用加号 (+) 分隔。例如，此短语定义了几个变量：

highScore1=54000&playerName1=rockin+good&highScore2=53455&playerName2=
bonehelmet&highScore3=42885&playerName3=soda+pop

有关更多信息，请参见 loadVariables()、getURL()、loadMovie() 和 LoadVars 类。


使用 LoadVars 类

可以使用 LoadVars 类（而不是 loadVariables()）在 SWF 文件和服务器之间传输变量。LoadVars 类使您可以将对象中的所有变量发送到指定的 URL 中，并且可以将指定 URL 中的所有变量加载到某个对象中。来自服务器的响应会触发 LoadVars.onLoad() 方法并设置目标中的变量。可以使用 LoadVars 获取错误信息和进度指示信息，并且可用它在下载数据的过程中同时播放数据。

LoadVars 类与 XML 类类似；它使用方法 load()、send() 和 sendAndLoad() 启动与服务器的通讯。LoadVars 和 XML 类之间的主要差别是 LoadVars 数据是 LoadVars 对象的属性，而不是存储在 XML 对象中的 XML DOM（文档对象模型）树。

您必须创建一个 LoadVars 对象来调用其方法。这个对象是用来保存已加载数据的一个容器。

以下过程说明如何使用 LoadVars 对象加载文本文件中的变量并在文本字段中显示这些变量。

用 LoadVars 对象加载数据：

  1. 在“记事本”或 SimpleText 等文本编辑器中，创建一个文本文件，然后将以下文本添加到该文本文件中：
    day=11&month=July&year=2003
  2. 将该文件另存为 date.txt。
  3. 在 Flash 中，创建一个文档。
  4. 在舞台上创建一个动态文本字段，为其指定实例名称 date_txt。
  5. 在时间轴中选择第 1 帧，如果“动作”面板（“窗口”>“开发面板”>“动作”）尚未打开，则将其打开。
  6. 在“动作”面板中输入下面的代码：
    var dateVars = new LoadVars();
dateVars.onLoad = function(ok) {
  if (ok) {
    date_txt.text = dateVars.day+"/"+dateVars.month+"/"+dateVars.year;
  }
};
dateVars.load("date.txt");

    此代码加载 data.txt (day, month, year) 中的变量，然后对它们进行格式化并在文本字段 date_txt 中显示它们。

  7. 将该文档保存到包含 date.txt（您在第 3 步中保存的文本文件）的同一个目录，文件名为 dateReader.fla。
  8. 选择“控制”>“测试影片”对该文档进行测试。

有关更多信息，请参见 LoadVars 类。


关于 XML

XML（可扩展标记语言）正成为 Internet 应用程序中交换结构化数据的标准。您可把 Flash 中的数据与使用 XML 技术的服务器集成在一起，从而构建高级的应用程序，例如聊天系统或者代理系统。

在 XML 中，和 HTML 一样，使用标签来标记（或者说指定）文本正文。在 HTML 中，使用预定义标签指示文本在 Web 浏览器中的显示方式（例如 <b> 标签指示文本应该为粗体）。在 XML 中，您定义用来标识数据类型的标签（例如 <password>VerySecret</password>）。XML 把信息的结构与它的显示方式分离开，这样相同的 XML 文档可在不同的环境中使用和重用。

每个 XML 标签被称作一个节点 或一个元素。每个节点有一个类型（1，表明是一个 XML 元素；或 3，表明是一个文本节点），并且元素也可有多个属性。嵌套在节点中的节点称作子节点。这种节点的分层树结构被称为 XML 文档对象模型 (DOM)，与 JavaScript DOM 很类似，JavaScript DOM 是 Web 浏览器中元素的结构。

在下面的示例中，<PORTFOLIO> 是父节点；它没有属性并包含子节点 <HOLDING>，该子节点具有属性 SYMBOL、QTY、PRICE 和 VALUE：

<PORTFOLIO>
  <HOLDING SYMBOL="RICH"
    QTY="75"
    PRICE="245.50"
    VALUE="18412.50" />
</PORTFOLIO>


使用 XML 类

动作脚本 XML 类的方法（例如 appendChild()、removeNode() 和 insertBefore()）使您可以在 Flash 中组织要发送到服务器的 XML 数据，并且它们还可以操作和解释下载的 XML 数据。

下面的 XML 类方法使用 HTTP POST 方法将 XML 数据发送并加载到服务器。

  • load() 方法从某个 URL 下载 XML，并将其放在一个动作脚本 XML 对象中。
  • send() 方法向 URL 传递 XML 对象。返回的任何信息都被发送到另外一个浏览器窗口。
  • sendAndLoad() 方法向 URL 发送 XML 对象。返回的任何信息都放在一个动作脚本 XML 对象中。

例如，您可创建一个代理系统，它在数据库中存储它的所有信息（用户名、密码、会话 ID、公文包以及事务信息）。

在 Flash 和数据库之间传递信息的服务器端脚本以 XML 格式读出和写入数据。可用动作脚本将 SWF 文件中收集到的信息（例如，用户名和密码）转换成一个 XML 对象，然后将数据作为 XML 文档发送到服务器端脚本。您还可以使用动作脚本加载服务器返回到 XML 对象中的 XML 文档，该文档将在 SWF 文件中使用。

Flash 影片、服务器端脚本和数据库之间的数据流以及数据转换

代理系统的密码验证需要两个脚本：一个在第 1 帧中定义的函数，一个脚本，该脚本创建和发送附加到窗体中“Submit”按钮的 XML 对象。

当用户用变量 username 和 password 将他们的信息输入到 SWF 文件中的文本字段时，变量必须先转换成 XML 再发送到服务器。脚本的第一部分将变量加载到新创建的名为 loginXML 的 XML 对象中。当用户单击“Submit”按钮时，loginXML 对象先被转换成 XML 字符串，然后发送到服务器。

下面的脚本附加到“Submit”按钮。为了理解此脚本，请阅读注释行（用字符 // 表示）：

on (release) {
  // A. Construct an XML document with a LOGIN element
  loginXML = new XML();
  loginElement = loginXML.createElement("LOGIN");
  loginElement.attributes.username = username;
  loginElement.attributes.password = password;
  loginXML.appendChild(loginElement);

  // B. Construct an XML object to hold the server's reply
  loginReplyXML = new XML();
  loginReplyXML.onLoad = onLoginReply;

  // C. Send the LOGIN element to the server,
  //    place the reply in loginReplyXML
  loginXML.sendAndLoad("https://www.imexstocks.com/main.cgi",
              loginReplyXML);
}

当用户单击“Submit”按钮时，脚本的第一部分生成下面的 XML：

<LOGIN USERNAME="JeanSmith" PASSWORD="VerySecret" />

服务器接收到这个 XML，生成一个 XML 响应，然后将它回送给 SWF 文件。如果接受了该密码，服务器会通过下面的代码进行响应：

<LOGINREPLY STATUS="OK" SESSION="rnr6f7vkj2oe14m7jkkycilb" />

这个 XML 包括一个 SESSION 属性，该属性包含一个唯一的随机生成的会话 ID，它将被用在该会话其余部分客户端和服务器之间的所有通讯中。如果拒绝了该密码，服务器会通过下面的消息进行响应：

<LOGINREPLY STATUS="FAILED" />

LOGINREPLY XML 节点必须加载到 SWF 文件的空白 XML 对象中。下面的语句创建 XML 对象 loginreplyXML 来接收 XML 节点：

// B. Construct an XML object to hold the server's reply
loginReplyXML = new XML();
loginReplyXML.onLoad = onLoginReply;

第二个语句将 onLoginReply() 函数指定给 loginReplyXML.onLoad 处理函数。

LOGINREPLY XML 元素异步到达（与从 loadVariables() 函数得出的数据类似），然后加载到 loginReplyXML 对象中。当数据到达时，即会调用 loginReplyXML 对象的 onLoad 处理函数。您必须定义 onLoginReply() 函数，然后将其指定给 loginReplyXML.onLoad 处理函数，以便它可以处理 LOGINREPLY 元素。您还必须将 onLoginReply() 函数指定给包含“Submit”按钮的帧。

onLoginReply() 函数是在 SWF 文件的第 1 帧中定义的。（为了理解此脚本，请阅读注释行。）

function onLoginReply() {
  // Get the first XML element
  var e = this.firstChild;
  // If the first XML element is a LOGINREPLY element with
  // status OK, go to the portfolio screen.Otherwise,
  // go to the login failure screen and let the user try again.
  if (e.nodeName == "LOGINREPLY" && e.attributes.status == "OK") {
// Save the session ID for future communications with server
  sessionID = e.attributes.session;
// Go to the portfolio viewing screen
    gotoAndStop("portfolioView");
  } else {
    // Login failed!Go to the login failure screen.
    gotoAndStop("loginFailed");
  }
}

该函数的第一行 var e = this.firstChild 使用关键字 this 来引用刚刚从服务器通过 XML 加载的 XML 对象 loginReplyXML。您可以使用 this，原因是 onLoginReply() 已作为 loginReplyXML.onLoad 进行调用，所以尽管 onLoginReply() 看上去是一个标准函数，实际上它充当 loginReplyXML 的一个方法。

要以 XML 的形式将用户名和密码发送到服务器，然后将 XML 响应加载到 SWF 文件中，您可以使用 sendAndLoad() 方法，如下所示：

// C. Send the LOGIN element to the server,
//    place the reply in loginReplyXML
  loginXML.sendAndLoad("https://www.imexstocks.com/main.cgi", loginReplyXML);

注意：这个设计方案只是一个例子，Macromedia 不保证它的安全性级别。如果您正实施一个安全的密码保护系统，请确保对网络安全有很好的理解。

有关更多信息，请参见“在 Web 应用程序中集成 XML 和 Flash”和 XML 类。


使用 XMLSocket 类

动作脚本提供了一个内置的 XMLSocket 类，它允许您打开与服务器的持续连接。套接字连接允许服务器在信息可用时就向客户端发布（或“推送”）信息。如果没有持续连接，服务器必须等待一个 HTTP 请求。这种打开的连接消除了等待时间问题，它通常用于实时的应用程序，比如聊天。数据以字符串的形式在套接字连接上发送，它应该是 XML 格式的。可以使用 XML 类来组织数据。

要创建套接字连接，必须创建服务器端应用程序来等待套接字连接请求，然后向 SWF 文件发送响应。这种类型的服务器端应用程序可用编程语言（例如 Java）来编写。

您可以使用 XMLSocket 类的 connect() 和 send() 方法通过套接字连接与服务器互相收发 XML。connect() 方法建立与 Web 服务器端口的套接字连接。send() 方法将 XML 对象传递给套接字连接中指定的服务器。

当调用 connect() 方法时，Flash Player 打开与服务器的 TCP/IP 连接，并保持该连接处于打开状态，直到发生以下情况之一：

  • XMLSocket 类的 close() 方法被调用。
  • 对 XMLSocket 对象的引用不再存在。
  • Flash Player 退出。
  • 连接中断（例如，调制解调器断开连接）。

下面的示例创建一个 XML 套接字连接，并从 XML 对象 myXML 发送数据。为了理解此脚本，请阅读注释行（用字符 // 表示）：

// 创建新的 XMLSocket 对象
sock = new XMLSocket();
// 调用 connect() 方法来建立到 URL 定义的服务器
//端口 1024 的连接
sock.connect("http://www.myserver.com", 1024);
// 定义一个函数，分配给处理服务器相应的
// sock 对象如果连接成功，发送
// myXML 对象。如果失败，则在文本字段中提供一条错误
//消息。
function onSockConnect(success){
  if (success){
    sock.send(myXML);
  } else {
    msg="There has been an error connecting to "+serverName;
  }
}
// 将 onSockConnect() 函数分配给 onConnect 属性
sock.onConnect = onSockConnect;

有关更多信息，请参见 XMLSocket 类。


收发 Flash Player 消息

要将消息从 SWF 文件发送到其宿主环境（例如，Web 浏览器、Macromedia Director 影片或独立的 Flash Player），可以使用 fscommand() 函数。此函数允许通过使用宿主的功能来扩展您的 SWF 文件。例如，您可以将 fscommand() 函数传递到 HTML 页面中的 JavaScript 函数，该函数会打开一个具有特定属性的新浏览器窗口。

要从 Web 浏览器脚本撰写语言（例如 JavaScript、VBScript 和 Microsoft Jscript）控制 Flash Player 中的 SWF，可使用 Flash Player 的方法，即从宿主环境向 SWF 发送消息的函数。例如，您可在 HTML 页面中有一个链接，它将 SWF 文件发送到特定的帧。


使用 fscommand()

使用 fscommand() 函数将消息发送到承载 Flash Player 的那个程序。fscommand() 函数有两个参数：command 和 arguments。要把消息发送到独立的 Flash Player，必须使用预定义的命令和参量（参数）。例如，下面的动作设置独立播放器在按钮释放时将 SWF 文件缩放至整个显示器屏幕大小：

on (release) {
  fscommand("fullscreen", "true");
}

下表显示为了控制 SWF 文件在独立播放器（包括放映文件）中的播放，可为 fscommand() 的 command 和 arguments 参数指定的值：

命令 | Arguments | 目的
quit | 无 | 关闭播放器。
fullscreen | true 或 false | 指定 true 将 Flash Player 设置为全屏模式。指定 false 使播放器返回标准菜单视图。
allowscale | true 或 false | 指定 false 设置播放器始终按 SWF 文件的原始大小绘制 SWF 文件，从不进行缩放。指定 true 强制 SWF 文件缩放到播放器的 100% 大小。
showmenu | true 或 false | 指定 true 启用整个上下文菜单项集合。指定 false 使除“设置”和“关于 Flash Player”外的所有上下文菜单项变暗。
exec | 应用程序的路径 | 在播放器内执行应用程序。

若要使用 fscommand() 向 Web 浏览器中的脚本撰写语言（例如 JavaScript）发送消息，您可以在 command 和 arguments 参数中传递任意两个参数。这些参数可以是字符串或表达式，它们将在用来“捕获”或处理 fscommand() 函数的 JavaScript 函数中使用。

fscommand() 函数在嵌入 SWF 文件的 HTML 页面中调用 JavaScript 函数 moviename_DoFSCommand，其中 moviename 是由 EMBED 标签的 NAME 属性或由 OBJECT 标签的 ID 属性指定的 Flash Player 的名称。如果为 Flash Player 指定的名称为 myMovie，则调用的 JavaScript 函数就是 myMovie_DoFSCommand。

使用 fscommand() 从 HTML 页面的 SWF 文件中通过 JavaScript 打开消息框：

  1. 在嵌入 SWF 文件的 HTML 页面中，添加下面的 JavaScript 代码：
    function theMovie_DoFSCommand(command, args) {
  if (command == "messagebox") {
    alert(args);
  }
}

    如果在 HTML“发布设置”对话框中使用具有 FSCommand 模板的 Flash 发布 SWF 文件，则将自动插入此代码。该 SWF 文件的 NAME 和 ID 属性将是文件名。例如，对于文件 myMovie.fla，属性将设置为 myMovie。（有关发布的更多信息，请参见发布。）

    或者，对于 Microsoft Internet Explorer 应用程序，可直接在 <SCRIPT> 标签中附加事件处理函数，如此例中所示：

    <Script Language = "JavaScript" event="FSCommand (command, args)" for= "theMovie">
...
</Script>
  2. 在 Flash 文档中，向按钮添加 fscommand() 函数，如此例中所示：
    on (press) {
  fscommand("messagebox", "This is a message box invoked from within Flash.");
}

    您也可以对 fscommand() 和参数使用表达式，如此例中所示：

    fscommand("messagebox", "Hello, " + name + ", welcome to our website!")
  3. 选择“文件”>“发布预览”>“HTML”来测试文档。

fscommand() 函数可将消息发送给 Macromedia Director，Lingo 将消息解释为字符串、事件或可执行的 Lingo 代码。如果消息是字符串或事件，则必须撰写 Lingo 代码以便从 fscommand() 函数进行接收，然后在 Director 中执行动作。有关更多信息，请访问 Director 支持中心，网址为：www.macromedia.com/support/director。

在 Visual Basic、Visual C++ 和可承载 ActiveX 控件的其它程序中，fscommand() 利用可在环境的编程语言中处理的两个字符串发送 VB 事件。 有关更多信息，请使用关键字 Flash method 搜索 Flash 技术支持中心，网址为：www.macromedia.com/go/flash_support_cn。


关于 Flash Player 方法

您可以在 Web 浏览器脚本撰写语言（例如 JavaScript 和 VBScript）中使用 Flash Player 方法控制 Flash Player 中的 SWF 文件。和使用其它方法一样，您可用 Flash Player 方法从脚本撰写环境（而不是从动作脚本）中向 SWF 文件发送调用。每个方法都有一个名字，大多数方法都带参数。参数指定方法要操作的值。某些方法执行的计算返回的值可由脚本撰写环境使用。

有两种不同的技术可以启用浏览器和 Flash Player 之间的通讯：LiveConnect（Windows 95/98/2000/NT 或 Power Macintosh 上的 Netscape Navigator 3.0 或更高版本）和 ActiveX（Windows 95/98/2000/NT 上的 Internet Explorer 3.0 以及更高版本）。虽然所有浏览器和语言的脚本撰写技术都相似，但 ActiveX 控件还可以利用其它一些属性和事件。

有关更多信息，包括 Flash Player 脚本撰写方法的完整列表，请使用关键字 Flash method 搜索 Flash 技术支持中心，网址为：www.macromedia.com/go/flash_support_cn。


关于将 Flash JavaScript 方法用于 Flash Player

Flash Player 6 版本 40 和更高版本支持在 Netscape 6.2 和更高版本中使用 Flash JavaScript 方法和 FSCommand。Flash Player 6 版本 40 以前的版本不支持在 Netscape 6.2 或更高版本中使用 FlashJavaScript 方法和 FSCommand。

对于 Netscape 6.2 和更高版本，无需将 swLiveConnect 设置为 true。但是，将 swLiveConnect 设置为 true 没有负面影响。


关于 Flash Player 安全功能

默认情况下，Flash Player 7 和更高版本防止从一个域提供的 SWF 文件访问从另一个域提供的数据、对象或变量。从不同的域提供的 SWF 文件不能互相访问对方的对象和变量。另外，通过不安全的（非 HTTPS）协议加载的内容不能访问通过安全的 (HTTPS) 协议加载的内容，即使这些内容都在完全相同的域中。例如，如果未得到明确许可，位于
http://www.macromedia.com/main.swf 的 SWF 文件不能加载
https://www.macromedia.com/data.txt 中的数据。从一个域提供的 SWF 文件也不能从另一个域加载数据（例如使用 loadVariables()）。

相同的数字 IP 地址兼容。但是，域名与 IP 地址不兼容，即使该域名解析为相同的 IP 地址。

下表显示兼容域的示例：

www.macromedia.com | www.macromedia.com
data.macromedia.com | data.macromedia.com
65.57.83.12 | 65.57.83.12

下表显示不兼容域的示例：

www.macromedia.com | data.macromedia.com
macromedia.com | www.macromedia.com
www.macromedia.com | macromedia.com
65.57.83.12 | www.macromedia.com（即使此域可解析为 65.57.83.12）
www.macromedia.com | 65.57.83.12（即使 www.macromedia.com 可解析为此 IP）

有关如何允许从一个域提供的 SWF 文件访问从另一个域提供的 SWF 文件中数据、对象或变量的信息，请参见关于允许跨域 SWF 文件间的数据访问。有关如何允许通过安全的 (HTTPS) 协议提供的 SWF 文件访问通过不安全的协议提供的 SWF 文件中的数据、对象或变量的信息，请参见关于允许 SWF 文件间 HTTP 对 HTTPS 协议的访问。有关如何允许从一个域提供的 SWF 文件加载另一个域中数据（例如使用 loadVariables()）的信息，请参见关于允许跨域数据加载。

有关这些安全更改如何影响在 Flash MX 和更早版本中创作的内容的信息，请参见关于与以前的 Flash Player 安全模型的兼容性。


关于允许跨域 SWF 文件间的数据访问

一个 SWF 文件可以从 Internet 上的任何位置加载另一个 SWF 文件。但是，为了使两个 SWF 文件能够访问彼此的数据（变量和对象），这两个文件必须源于同一个域。默认情况下，在 Flash Player 7 和更高版本中，这两个域必须完全匹配才能实现两个文件共享数据。但是，SWF 文件可以通过调用 LocalConnection.allowDomain 或 System.security.allowDomain() 向从特定域提供的 SWF 文件授予访问权限。

例如，假设 main.swf 是从 www.macromedia.com 提供的，随后该 SWF 文件将来自 data.macromedia.com 的另一个 SWF 文件 (data.swf) 加载到影片剪辑实例 (target_mc) 中。

// 在 macromedia.swf 中
target_mc.loadMovie("http://data.macromedia.com/data.swf");

此外，假设 data.swf 在其主时间轴上定义名为 getData() 的方法。默认情况下，一旦 data.swf 进行了加载，main.swf 就不能调用该文件中定义的 getData() 方法。这是因为两个 SWF 文件不在相同的域中。例如，在 data.swf 完成加载之后，main.swf 中的以下方法调用将失败。

// 在 macromedia.swf 中，在加载了 data.swf 之后：
target_mc.getData(); // 此方法调用将失败

但是，data.swf 可以使用 LocalConnection.allowDomain 处理函数或 System.security.allowDomain() 方法向从 www.macromedia.com 提供的 SWF 文件授予访问权限，具体取决于所需的访问类型。以下代码在被添加到 data.swf 之后将允许从 www.macromedia.com 提供的 SWF 文件访问其变量和方法：

// 在 data.swf 中
System.security.allowDomain("www.macromedia.com");
my_lc.allowDomain = function(sendingDomain) {
  return(sendingDomain=="www.macromedia.com");
}

请注意，allowDomain 允许被授予权限的域中的任何 SWF 文件撰写允许该权限的域中的任何其它 SWF 文件的脚本，除非被访问的 SWF 文件位于使用安全 (HTTPS) 协议的站点。在此情况下，您必须使用 allowInsecureDomain，而不是 allowDomain；请参见关于允许 SWF 文件间 HTTP 对 HTTPS 协议的访问。

有关域名匹配的更多信息，请参见Flash Player 安全功能。


关于允许 SWF 文件间 HTTP 对 HTTPS 协议的访问

如上一节所述（请参见关于允许跨域 SWF 文件间的数据访问），您必须使用 allowDomain 处理函数或方法允许一个域中的 SWF 文件可以被另一个域中的 SWF 文件访问。但是，如果被访问的 SWF 文件位于使用安全协议 (HTTPS) 的站点上，则 allowDomain 处理函数或方法不允许位于使用不安全协议的站点上的 SWF 文件进行访问。若要允许这种访问，您必须使用 LocalConnection.allowInsecure Domain() 或 System.security.allowInsecureDomain() 语句。

例如，如果位于 https://www.someSite.com/data.swf 的 SWF 文件必须允许位于
http://www.someSite.com 的 SWF 文件的访问，则添加到 data.swf 中的以下代码将允许此访问：

// 在 data.swf 中
System.security.allowInsecureDomain("www.someSite.com");
my_lc.allowInsecureDomain = function(sendingDomain) {
  return(sendingDomain=="www.someSite.com");
}


关于允许跨域数据加载

Flash 文档可以使用以下数据加载调用之一从外部源加载数据：XML.load()、XML.sendAndLoad()、LoadVars.load()、LoadVars.sendAndLoad()、loadVariables()、loadVariablesNum()。另外，SWF 文件可以在运行时导入运行时共享库或另一个 SWF 文件中定义的资源。默认情况下，数据或 SWF 媒体（运行时共享库的情况）必须与加载该外部数据或媒体的 SWF 驻留在同一个域中。

若要使运行时共享库中的数据和资源可用于其它域中的 SWF 文件，请使用跨域策略文件。跨域策略文件是一个 XML 文件，该文件提供的方法可以使服务器指示其数据和文档可用于从某些域或所有域提供的 SWF 文件。服务器的策略文件指定的域所提供的所有 SWF 文件都将被允许访问该服务器中的数据或资源。

当 Flash 文档试图访问另一个域中的数据时，Flash Player 自动尝试从该域加载策略文件。如果尝试访问数据的 Flash 文档所在的域包括在该策略文件中，则数据将自动成为可访问数据。

策略文件必须具有名称 crossdomain.xml 并驻留在提供数据的服务器的根目录中。只有在通过 HTTP、HTTPS 或 FTP 进行通讯的服务器上，策略文件才起作用。策略文件特定于所在服务器的端口和协议。

例如，某个策略文件位于 https://www.macromedia.com:8080/crossdomain.xml，它只适用于在端口 8080 通过 HTTPS 对 www.macromedia.com 进行的数据加载调用。

当您使用 XMLSocket 对象连接到另一个域中的套接字服务器时，此规则有例外情况。如果是这种情况，运行于与套接字服务器所在的同一个域中端口 80 上的 HTTP 服务器必须提供该方法调用的策略文件。

XML 策略文件包含单个 <cross-domain-policy> 标签，该标签又包含零个或多个 <allow-access-from> 标签。每个 <allow-access-from> 标签包含一个属性 domain，该属性指定确切的 IP 地址、确切的域或通配符域（任何域）。通配符域由单个星号 (*)（匹配所有域和所有 IP 地址）或后接后缀的星号（只匹配那些以指定后缀结尾的域）表示。后缀必须以点开头。但是，带有后缀的通配符域可以匹配那些只包含后缀但不包含前导点的域。例如，foo.com 可以看作是 *.foo.com 的一部分。IP 域规范中不允许使用通配符。

如果您指定了一个 IP 地址，则将只向使用 IP 语法从该 IP 地址（例如 http://65.57.83.12/flashmovie.swf）加载的 SWF 文件授予访问权限，而不向使用域名语法加载的那些 SWF 文件授予访问权限。Flash Player 不执行 DNS 解析。

以下是一个策略文件的示例，该策略文件允许从 foo.com 上的 Flash 文档访问来自 foo.com、friendOfFoo.com、*.foo.com 和 105.216.0.40 的 Flash 文档：

<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
  <allow-access-from domain="www.friendOfFoo.com" />
  <allow-access-from domain="*.foo.com" />
  <allow-access-from domain="105.216.0.40" />
</cross-domain-policy>

不包含任何 <allow-access-from> 标签的策略文件等同于服务器上没有策略。


关于与以前的 Flash Player 安全模型的兼容性

作为 Flash Player 中安全功能更改的结果（请参见Flash Player 安全功能），在 Flash Player 6 或更早版本中可以正常运行的内容在 Flash Player 7 或更高版本中可能无法正常运行。

例如，在 Flash Player 6 中，驻留在 www.macromedia.com 中的 SWF 文件可以访问位于 data.macromedia.com 的服务器上的数据。也就是说，Flash Player 6 允许一个域中的 SWF 文件加载“类似的”域中的数据。

在 Flash Player 7 和更高版本中，如果版本 6（或更早版本）的 SWF 文件试图从驻留在另一个域中的服务器加载数据，并且该服务器未提供允许从该 SWF 文件的域进行访问的策略文件，则将出现 Macromedia Flash Player“设置”对话框。该对话框询问用户是允许还是拒绝跨域数据访问。

如果用户单击“允许”，则允许该 SWF 文件访问请求的数据；如果用户单击“拒绝”，则将不允许该 SWF 文件访问请求的数据。

若不想让该对话框出现，请在提供数据的服务器上创建一个安全策略文件。有关更多信息，请参见关于允许跨域数据加载。


使用外部媒体概述

如果在 Macromedia Flash MX 2004 或 Macromedia Flash MX Professional 2004 中创作文档时导入图像或声音，则当发布文档时该图像和声音将被打包并存储在 SWF 文件中。除了在创作时导入媒体之外，您还可以在运行时导入外部媒体。出于种种原因，您可能要将媒体保存在 Flash 文档之外。

缩小文件大小 通过将较大的媒体文件保存在 Flash 文档之外并在运行时加载它们，您可以缩短应用程序和演示文稿的初次下载时间，特别是在使用较慢的 Internet 连接进行下载时。

模块化较大的演示文稿 您可以将较大的演示文稿或应用程序分解为多个独立的 SWF 文件，随后在运行时按需要加载这些独立的文件。这不仅可以缩短初始下载时间，还使维护和更新演示文稿的内容变得更加简单。

将内容与演示文稿分开 这是应用程序（特别是数据驱动的应用程序）开发中的一个常见主题。例如，购物车应用程序将显示每个产品的 JPEG 图像。通过在运行时加载每个图像的 JPEG 文件，您可以方便地更新产品的图像而无需修改原始 FLA 文件。

利用仅限运行时功能 某些功能（例如流 FLV 和 MP3 回放）只有在运行时才能通过动作脚本使用。


加载外部媒体的概述

运行时，可以将四种类型的媒体文件加载到 Flash 应用程序中：SWF、MP3、JPEG 和 FLV 文件。Flash Player 可以从任何 HTTP 或 FTP 地址加载外部媒体，也可以使用相对路径从本地磁盘加载或使用 file:// 协议加载。

若要加载外部 SWF 和 JPEG 文件，您可以使用 loadMovie() 或 loadMovieNum() 函数，或 MovieClip.loadMovie() 方法。当加载 SWF 或 JPEG 文件时，指定影片剪辑或影片级别作为该媒体的目标。有关加载 SWF 和 JPEG 文件的更多信息，请参见加载外部 SWF 和 JPEG 文件。

若要回放外部 MP3 (MPEG Layer 3) 文件，请使用 Sound 类的 loadSound() 方法。此方法允许您指定在开始播放 MP3 文件前是进行流处理还是完全下载。您还可以阅读嵌入 MP3 文件的 ID3 信息（如果可用）。有关更多信息，请参见读取 MP3 文件中的 ID3 标签。

Flash Video (FLV) 是 Flash Player 使用的本机视频格式。您可以通过 HTTP 或在本地文件系统中回放 FLV 文件。与在 Flash 文档中嵌入视频相比，播放外部 FLV 文件有多个好处，例如更好的性能和内存管理以及独立的视频和 Flash 帧频。有关更多信息，请参见动态回放外部 FLV 文件。

您还可以预加载外部媒体或跟踪外部媒体的下载进度。Flash Player 7 引入了 MovieClipLoader 类，可以使用该类跟踪 SWF 或 JPEG 文件的下载进度。若要预加载 MP3 和 FLV 文件，您可以使用 Sound 类的 getBytesLoaded() 方法和 NetStream 类的 bytesLoaded 属性。有关更多信息，请参见预加载外部媒体。


关于加载外部 SWF 和 JPEG 文件

若要加载 SWF 或 JPEG 文件，请使用 loadMovie() 或 loadMovieNum() 全局函数，或 MovieClip 类的 loadMovie() 方法。若要在 Flash Player 中将 SWF 或 JPEG 文件加载到某个级别，请使用 loadMovieNum()。若要将 SWF 或 JPEG 文件加载到影片剪辑目标，请使用 loadMovie() 函数或方法。不管是哪种情况，所加载的内容都会替换指定级别或目标影片剪辑的内容。

当您将 SWF 或 JPEG 文件加载到影片剪辑目标中时，SWF 文件或 JPEG 图像的左上角被放置在影片剪辑的注册点上。因为此注册点通常位于影片剪辑的中心，所以加载的内容可能不会出现在中心。另外，当将 SWF 文件或 JPEG 图像加载到根时间轴上时，图像的左上角会位于舞台的左上角。加载的内容会继承影片剪辑的旋转和缩放，只是删除了影片剪辑的原始内容。

您可以选择通过 loadMovie() 或 loadMovieNum() 调用发送动作脚本变量。这十分有用，例如以下这种情况：您在方法调用中指定的 URL 是一个服务器端脚本，该脚本根据从 Flash 应用程序传递的数据返回 JPEG 或 SWF 文件。

对于图像文件，Flash 仅支持标准的 JPEG 图像文件类型，不支持渐进式 JPEG 文件。

当使用全局 loadMovie() 或 loadMovieNum() 函数时，指定目标级别或剪辑作为参数。例如，以下代码将 Flash 应用程序 contents.swf 加载到名为 target_mc 的影片剪辑实例中：

loadMovieNum("contents.swf", target_mc);

同样，您可以使用 MovieClip.loadMovie() 实现相同的结果：

target_mc.loadMovie("contents.swf");

以下代码将 JPEG 图像 flowers.jpg 加载到影片剪辑实例 image_clip 中：

image_clip.loadMovie("flowers.jpg");

有关这些方法的更多信息，请参见 loadMovie()、loadMovieNum() 和 MovieClip.loadMovie()。


关于加载的 SWF 文件和根时间轴

动作脚本属性 _root 指定或返回对 SWF 文件根时间轴的引用。如果将 SWF 文件加载到另一个 SWF 文件的影片剪辑中，则对加载的 SWF 文件中 _root 的任何引用都将解析到宿主 SWF 文件中的根时间轴，而不是加载的 SWF 文件的根时间轴。有时，这可能会导致运行时出现意外情况，例如，当宿主 SWF 文件和加载的 SWF 文件都使用 _root 指定变量时可能出现意外情况。

在 Flash Player 7 和更高版本中，您可以使用 MovieClip._lockroot 属性强制影片剪辑对 _root 的引用解析到它自己的时间轴，而不是包含该影片剪辑的 SWF 文件的时间轴。有关更多信息，请参见指定加载的 SWF 文件的根时间轴。


关于访问加载的 SWF 文件中的数据

一个 SWF 文件可以从 Internet 上的任何位置加载另一个 SWF 文件。但是，若要让一个 SWF 文件访问其它 SWF 文件中定义的数据（变量、方法等），这两个文件必须源于同一个域。在 Flash Player 7 和更高版本中，除非加载的 SWF 文件通过调用 System.security.allowDomain() 另行指定，否则禁用跨域脚本。

有关更多信息，请参见 System.security.allowDomain() 和 Flash Player 安全功能。


加载外部 MP3 文件

若要在运行时加载 MP3 文件，请使用 Sound 类的 loadSound() 方法。首先，创建一个 Sound 对象：

var song_1_sound = new Sound();

然后使用这个新对象调用 loadSound() 来加载事件或声音流。事件声音在完全加载之后播放；而声音流在它们下载的过程中播放。您可以设置 loadSound() 的 isStreaming 参数来指定声音是事件声音还是声音流。在加载了事件声音之后，必须调用 Sound 类的 start() 方法来播放声音。当足够的数据加载到 SWF 文件中之后，声音流就会开始播放；不必使用 start()。

例如，以下代码创建一个名为 classical 的 Sound 对象，然后加载一个名为 beethoven.mp3 的 MP3 文件：

var classical:Sound = new Sound();
classical.loadSound("http://server.com/mp3s/beethoven.mp3", true);

在大多数情况下，将 isStreaming 参数设置为 true，特别是当加载较大的需要及早开始播放的声音文件时（例如创建 MP3“自动唱片点唱机”应用程序时）。但是，如果要下载较短的声音剪辑并需要在特定时间（例如，当用户单击某个按钮时）播放它们，则将 isStreaming 设置为 false。

若要确定声音何时下载完毕，请使用 Sound.onLoad 事件处理函数。此事件处理函数自动接收一个布尔值（true 或 false），该值指示文件是否成功下载。

例如，假设您正在创建一个联机游戏，该游戏根据用户到达游戏中的不同级别使用不同的声音。以下代码将 MP3 文件 (blastoff.mp3) 加载到名为 gameSound 的 Sound 对象中，然后在完成下载时播放该声音：

var gameSound = new Sound();
gameSound.onLoad = function (loadedOK) {
  if(loadedOK) {
    gameSound.start();
  }
}
gameSound.loadSound("http://server.com/sounds/blastoff.mp3", false);

对于声音文件，Flash Player 仅支持 MP3 声音文件类型。

有关更多信息，请参见 Sound.loadSound()、Sound.start() 和 Sound.onLoad。


读取 MP3 文件中的 ID3 标签

ID3 标签是添加到 MP3 文件的数据字段，这些数据字段包含有关该文件的信息，例如歌曲名称、唱片名称和歌手姓名。

若要读取 MP3 文件中的 ID3 标签，请使用 Sound.ID3 属性，其属性对应于正在加载的 MP3 文件中包含的 ID3 标签的名称。若要确定正在下载的 MP3 文件的 ID3 标签何时可用，请使用 Sound.onID3 事件处理函数。Flash Player 7 支持版本 1.0、1.1、2.3 和 2.4 标签；不支持版本 2.2 标签。

例如，以下代码将名为 favoriteSong.mp3 的 MP3 文件加载到名为 song 的 Sound 对象中。当该文件的 ID3 标签可用时，名为 display_txt 的文本字段显示歌手姓名和歌曲名称。

var song = new Sound();
song.onID3 = function () {
  display_txt.text = "Artist:" + song.id3.TCOM + newline;
  display_txt.text += "Song:" + song.id3.TIT2);
}
song.loadSound("mp3s/favoriteSong.mp3, true");

因为 ID3 2.0 标签位于 MP3 文件的开始处（在声音数据之前），所以当文件刚开始下载时便可以得到这些标签。但是，ID3 1.0 标签位于文件的末尾（在声音数据之后），这些标签直到整个 MP3 文件完成下载后才可用。

每次有新的 ID3 数据可用时都会调用 onID3 事件处理函数。这意味着如果 MP3 文件包含 ID3 2.0 标签和 ID3 1.0 标签，onID3 处理函数将被调用两次，这是因为这些标签位于文件中的不同部分。

有关支持的 ID3 标签的列表，请参见 Sound.ID3。


动态回放外部 FLV 文件

作为将视频导入 Flash 创作环境的替代方法，您可以在 Flash Player 中使用动作脚本动态回放外部 FLV 文件。您可以通过 HTTP 地址或从本地文件系统回放 FLV 文件。若要回放 FLV 文件，您可以使用 NetConnection 和 NetStream 类以及 Video 类的 attachVideo() 方法。(有关完整的信息，请参见 NetConnection 类、NetStream 类 和 Video.attachVideo()。）

您可以通过将视频导入 Flash 创作工具然后将其以 FLV 文件的形式导出来创建 FLV 文件。（请参见 Macromedia Flash 视频 (FLV)。）如果您具有 Flash Professional，则可以使用 FLV Export 插件从支持的视频编辑应用程序导出 FLV 文件。（请参见从视频编辑应用程序中导出 FLV 文件（仅限 Flash Professional）。）

使用外部 FLV 文件可以提供使用导入的视频时不可用的某些功能：

  • 您可以在 Flash 文档中使用较长的视频剪辑而无需放慢回放速度。外部 FLV 文件是使用缓存的内存 播放的。这意味着将以较小的块存储并动态访问较大的文件，不需要嵌入视频文件那么多内存。
  • 外部 FLV 文件可以和它在其中播放的 Flash 文档具有不同的帧频。例如，可以将 Flash 文档帧频设置为 30 fps 并将视频帧频设置为 21 fps。这使您在确保平滑的视频回放方面具有更大的控制权。
  • 通过外部 FLV 文件，加载视频文件时不需要中断 Flash 文档回放。导入的视频文件有时可能需要中断文档回放来执行某些功能；例如访问 CD-ROM 驱动器。FLV 文件可以独立于 Flash 文档执行功能，因此不会中断回放。
  • 对于外部 FLV 文件，为视频内容加字幕更加简单，这是因为您可以使用事件处理函数访问视频的元数据。

以下步骤介绍如何回放名为 videoFile.flv 的文件，该文件与您的 SWF 文件存储在同一个位置。

在 Flash 文档中回放外部 FLV 文件：

  1. 当在 Flash 创作工具中打开文档时，在“库”面板（“窗口”>“库”）中选择“库选项”菜单中的“新建视频”以创建一个视频对象。
  2. 将视频对象从“库”面板拖放到舞台上。这将创建一个视频对象实例。
  3. 当在舞台上选中视频对象时，在属性检查器（“窗口”>“属性”）中的“实例名称”文本框中输入 my_video。
  4. 打开“组件”面板（“窗口”>“开发面板”>“组件”）并将 TextArea 组件拖到舞台上。
  5. 当在舞台上选中 TextArea 对象时，在属性检查器的“实例名称”文本框中输入 status。
  6. 在时间轴中选择第 1 帧，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  7. 将以下代码添加到“动作”面板中：
    // 创建一个 NetConnection 对象：
var netConn:NetConnection = new NetConnection();
// 创建一个本地流连接：
netConn.connect(null);
// 创建一个 NetStream 对象并定义一个 onStatus() 函数：
var netStream:NetStream = new NetStream(netConn);
netStream.onStatus = function(infoObject) {
  status.text += "Status (NetStream)" + newline;
  status.text += "Level:"+infoObject.level + newline;
  status.text += "Code:"+infoObject.code + newline;
};
// 将 NetStream 视频输入信号附加到 Video 对象：
my_video.attachVideo(netStream);
// 设置缓冲时间：
netStream.setBufferTime(5);
// 播放 FLV 文件：
netStream.play("videoFile.flv");


关于预加载外部媒体

动作脚本提供多种方式预加载外部媒体或跟踪外部媒体的下载进度。若要预加载 SWF 和 JPEG 文件，请使用 MovieClipLoader 类，该类提供事件侦听器机制用于检查下载进度。此类是 Flash Player 7 中新引入的。有关更多信息，请参见预加载 SWF 和 JPEG 文件。

若要跟踪 MP3 文件的下载进度，可以使用 Sound.getBytesLoaded() 和 Sound.getBytesTotal() 方法；若要跟踪 FLV 文件的下载进度，可以使用 NetStream.bytesLoaded 和 NetStream.bytesTotal 属性。有关更多信息，请参见预加载 MP3 和 FLV 文件。


预加载 SWF 和 JPEG 文件

若要将 SWF 和 JPEG 文件预加载到影片剪辑实例中，您可以使用 MovieClipLoader 类。此类提供事件侦听器机制，可以提供有关将文件下载到影片剪辑的状态的通知。使用 MovieClipLoader 对象预加载 SWF 和 JPEG 文件包含以下步骤：

创建新的 MovieClipLoader 对象 您可以使用单个 MovieClipLoader 对象跟踪多个文件的下载进度，或为每个文件的进度创建一个单独的对象。

var loader:MovieClipLoader = new MovieClipLoader();

创建侦听器对象和创建事件处理函数 侦听器对象可以是任何动作脚本对象，例如通用 Object 对象、影片剪辑或自定义组件。

例如，以下代码创建一个名为 loadListener 的通用侦听器对象，然后为自身定义 onLoadStart、onLoadProgress 和 onLoadComplete 函数。

// 创建侦听器对象：
var loadListener:Object = new Object();
loadListener.onLoadStart = function (loadTarget) {
  trace("Loading into " + loadTarget + " has started.");
}
loadListener.onLoadProgress = function(loadTarget, bytesLoaded, bytesTotal) {
  var percentLoaded = bytesLoaded/bytesTotal * 100;
  trace("%" + percentLoaded + " into target " + loadTarget);
}
loadListener.onLoadComplete = function(loadTarget) {
  trace("Load completed into:" + loadTarget);
}

向 MovieClipLoader 对象注册侦听器对象 为了让侦听器对象接收加载事件，您必须将其向 MovieClipLoader 对象进行注册。

loader.addListener(loadListener);

开始将文件（JPEG 或 SWF）加载到目标剪辑 若要开始 JPEG 或 SWF 文件的下载，可以使用 MovieClipLoader.loadClip() 方法。

loader.loadClip("scene_2.swf");

注意：您只能使用 MovieClipLoader 方法跟踪用 MovieClipLoader.loadClip() 方法加载的文件的下载进度。不能使用 loadMovie() 函数或 MovieClip.loadMovie() 方法。

以下示例使用 ProgressBar 组件的 setProgress() 方法显示 SWF 文件的下载进度。（请参见 ProgressBar 组件。）

使用 ProgressBar 组件显示下载进度：

  1. 在新的 Flash 文档中，在舞台上创建一个影片剪辑并将其命名为 target_mc。
  2. 打开“组件”面板（“窗口”>“开发面板”>“组件”）。
  3. 将 ProgressBar 组件从“组件”面板拖到舞台上。
  4. 在属性检查器中，将 ProgressBar 组件命名为 pBar，然后在“参数”选项卡上，从“模式”弹出式菜单中选择“手动”。
  5. 选择时间轴中的第 1 帧，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  6. 将以下代码添加到“动作”面板中：
    // 创建一个 MovieClipLoader 对象和一个侦听器对象
myLoader = new MovieClipLoader();
myListener = new Object();
// 将 MovieClipLoader 回调函数添加到您的侦听器对象中
myListener.onLoadStart = function(clip) {
  // 此事件会在加载开始时触发一次
  pBar.label = "Now loading:" + clip;
};
myListener.onLoadProgress = function(clip, bytesLoaded, bytesTotal) {
  var percentLoaded = int (100*(bytesLoaded/bytesTotal));
  pBar.setProgress(bytesLoaded, bytesTotal);
};myLoader.addListener(myListener);
myLoader.loadClip("veryLargeFile.swf", target_mc);
  7. 通过选择“控制”>“测试影片”对文档进行测试。

有关更多信息，请参见 MovieClipLoader 类。


预加载 MP3 和 FLV 文件

若要预加载 MP3 和 FLV 文件，可以使用 setInterval() 函数创建“轮询”机制，该机制以预先确定的时间间隔检查为 Sound 或 NetStream 对象加载的字节数。若要跟踪 MP3 文件的下载进度，可以使用 Sound.getBytesLoaded() 和 Sound.getBytesTotal() 方法；若要跟踪 FLV 文件的下载进度，可以使用 NetStream.bytesLoaded 和 NetStream.bytesTotal 属性。

以下代码使用 setInterval() 以预先确定的时间间隔检查为 Sound 或 NetStream 对象加载的字节数。

// 创建一个新的 Sound 对象来播放声音。
var songTrack = new Sound();
// 创建一个跟踪下载进度的轮询函数。
// 这是进行轮询的函数。它检查
// 作为引用传递的 Sound 对象的下载进度。
checkProgress = function (soundObj) {
  var bytesLoaded = soundObj.getBytesLoaded();
  var bytesTotal = soundObj.getBytesTotal();
  var percentLoaded = Math.floor(bytesLoaded/bytesTotal * 100);
  trace("%" + percentLoaded + " loaded.");
}
// 当文件完成加载之后，清除间隔轮询。
songTrack.onLoad = function () {
  clearInterval(poll);
}
// 加载 MP3 流文件并开始调用 checkProgress()
songTrack.loadSound("beethoven.mp3", true);
var poll = setInterval(checkProgress, 1000, songTrack);

您可以使用同类轮询方法预加载外部 FLV 文件。若要获取总字节数和当前为 FLV 文件加载的字节数，请使用 NetStream.bytesLoaded 和 NetStream.bytesTotal 属性。

预加载 FLV 文件的另一种途径是使用 NetStream.setBufferTime() 方法。此方法采用单个参数，该参数指示回放开始前 FLV 流进行下载的秒数。

有关更多信息，请参见 MovieClip.getBytesLoaded()、MovieClip.getBytesTotal()、NetStream.bytesLoaded、NetStream.bytesTotal、NetStream.setBufferTime()、setInterval()、Sound.getBytesLoaded() 和 Sound.getBytesTotal()。


错误消息概览

如果您在发布文件时指定动作脚本 2.0（默认设置），Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 将提供增强的编译时错误报告。下表列出了 Flash 编译器能够生成的错误消息。

错误编号 | 消息文本
1093 | 需要类名。
1094 | “extends”关键字后应该为基类名称。
1095 | 成员属性的使用有误。
1096 | 同一个成员名称不能重复多次。
1097 | 所有成员函数都需要有名称。
1099 | 类定义中不允许使用此语句。
1100 | 已经定义了一个具有此名称的类或接口。
1101 | 类型不匹配。
1102 | 没有名称为“<ClassName>”的类。
1103 | 没有名称为“<propertyName>”的属性。
1104 | 尝试在非函数上执行函数调用。
1105 | 赋值语句中类型不匹配。找到 [lhs-type]，但需要 [rhs-type]。
1106 | 该成员是私有成员，不能访问。
1107 | 不允许在接口中声明变量。
1108 | 不允许在接口中声明事件。
1109 | 不允许在接口中声明 getter/setter 函数。
1110 | 不允许在接口中定义私有成员。
1111 | 不允许在接口中定义函数体。
1112 | 类不能扩展其本身。
1113 | 接口不能扩展其本身。
1114 | 未定义具有此名称的接口。
1115 | 类不能扩展接口。
1116 | 接口不能扩展类。
1117 | “implements”关键字后应该为接口名。
1118 | 类不能实现类，而只能实现接口。
1119 | 该类必须从接口“interfaceName”实现方法“methodName”。
1120 | 接口方法的实现必须为方法，而不能为属性。
1121 | 类不能多次扩展同一接口。
1122 | 接口方法的实现不符合其定义。
1123 | 此构造仅可用于动作脚本 1.0。
1124 | 此构造仅在动作脚本 2.0 中可用。
1125 | 接口中不允许定义静态成员。
1126 | 返回的表达式必须与该函数的返回类型匹配。
1127 | 此函数中需要一个 return 语句。
1128 | 在类的外面使用了属性。
1129 | 返回类型为 Void 的函数不能返回值。
1130 | “extends”子句必须出现在“implements”子句的前面。
1131 | “:”后应该有类型标识符。
1132 | 接口必须使用“extends”关键字，而不能使用“implements”关键字。
1133 | 一个类不能扩展多个类。
1134 | 一个接口不能扩展多个接口。
1135 | 没有名称为“<methodName>”的方法。
1136 | 接口定义中不允许使用此语句。
1137 | 设置函数要求只带有一个参数。
1138 | 获取函数要求不带有任何参数。
1139 | 类只能在外部动作脚本 2.0 类脚本中定义。
1140 | 动作脚本 2.0 类脚本只能定义类或接口构造。
1141 | 此类的名称 (<A.B.C>) 与已加载的另一个类的名称 (<A.B>) 冲突。
1142 | 无法加载类“<ClassName>”。
1143 | 接口只能在外部动作脚本 2.0 类脚本中定义。
1144 | 不能在静态函数中访问实例变量。
1145 | 类和接口定义不能嵌套。
1146 | 所引用的属性没有 static 特性。
1147 | 对父项的调用与父构造函数不匹配。
1148 | 接口方法只允许有 public 特性。
1149 | Import 关键字不能用作指令。
1150 | 必须将您的影片导出为 Flash 7 格式才能使用此动作。
1151 | 必须将您的影片导出为 Flash 7 格式才能使用此表达式。
1152 | 此异常子句的位置不正确。
1153 | 类必须只有一个构造函数。
1154 | 构造函数不能返回值。
1155 | 构造函数不能指定返回类型。
1156 | 变量的类型不能为 Void。
1157 | 函数参数的类型不能为 Void。
1158 | 静态成员只能直接通过类访问。
1159 | 实现的多个接口包含相同的方法，但类型不同。
1160 | 已经有一个用此名称定义的类或接口。
1161 | 不能删除类、接口或内置类型。
1162 | 没有具有此名称的类。
1163 | 关键字“<keyword>”是动作脚本 2.0 的保留字，不能在此处使用。
1164 | 自定义属性定义没有结束。
1165 | 每个动作脚本 2.0 .as 文件中只能定义一个类或接口。
1166 | 正在编译的类 (<A.b>) 与导入的类 (<A.B>) 不匹配。
1167 | 必须输入类名。
1168 | 输入的类名中有语法错误。
1169 | 输入的接口名中有语法错误。
1170 | 输入的基类名称中有语法错误。
1171 | 输入的基接口名称中有语法错误。
1172 | 必须输入接口名。
1173 | 必须输入类名或接口名。
1174 | 输入的类名或接口名中有语法错误。
1175 | 不能从此范围访问“variable”。
1176 | “get/set/private/public/static”属性出现多次。
1177 | 类属性的使用有误。
1178 | 实例变量和函数不能用于初始化静态变量。
1179 | 在以下类之间发现运行时循环：%1
1180 | 当前的目标 Flash Player 不支持调试。
1181 | 当前的目标 Flash Player 不支持 releaseOutside 事件。
1182 | 当前的目标 Flash Player 不支持 dragOver 事件。
1183 | 当前的目标 Flash Player 不支持 dragOut 事件。
1184 | 当前的目标 Flash Player 不支持拖放动作。
1185 | 当前的目标 Flash Player 不支持 loadMovie 动作。
1186 | 当前的目标 Flash Player 不支持 getURL 动作。
1187 | 当前的目标 Flash Player 不支持 FSCommand 动作。
1188 | 类定义或接口定义中不允许使用 Import 语句。
1189 | 不能导入类“<A.B>”，因为其叶名称已经解析为正在定义的类“<C.B>”。
1190 | 不能导入类“<A.B>”，因为其叶名称已经解析为已导入的类“<C.B>”。
1191 | 类的实例变量只能初始化为编译时常量表达式。
1192 | 类成员函数的名称不能与超类的构造函数的名称相同。
1193 | 此类的名称 (<ClassName>) 与已加载的另一个类的名称冲突。
1194 | 必须在构造函数体内首先调用超构造函数。
1195 | 标识符“<className>”在运行时不会解析为内置对象“<ClassName>”。
1196 | 类“<A.B.ClassName>”必须在相对路径为“<A.B>”的文件中定义。
1197 | 通配符“*”在类名“<ClassName>”中的使用有误。
1198 | 成员函数“<classname>”的大小写与正在定义的类的名称 (<ClassName>) 不同，因此在运行时不会被视作该类的构造函数。
1199 | for-in 循环迭代变量的类型只能为 String。
1200 | 构造函数不能返回值。
1201 | 构造函数只能具有 public 和 private 属性。


运算符的优先级和结合律

下表列出了所有动作脚本运算符及其结合律，按优先级从高到低排列。

运算符 | 说明 | 结合律
最高优先级
+ | 一元加号 | 从右到左
- | 一元减号 | 从右到左
~ | 按位“非” | 从右到左
! | 逻辑“非” | 从右到左
not | 逻辑“非”（Flash 4 样式） | 从右到左
++ | 后递增 | 从左到右
-- | 后递减 | 从左到右
( ) | 函数调用 | 从左到右
[ ] | 数组元素 | 从左到右
. | 结构成员 | 从左到右
++ | 前递增 | 从右到左
-- | 前递减 | 从右到左
new | 分配对象 | 从右到左
delete | 取消分配对象 | 从右到左
typeof | 对象类型 | 从右到左
void | 返回未定义值 | 从右到左
* | 乘号 | 从左到右
/ | 除号 | 从左到右
% | 求模 | 从左到右
+ | 加号 | 从左到右
add | 字符串连接（原为 &） | 从左到右
- | 减号 | 从左到右
<< | 按位左移位 | 从左到右
>> | 按位右移位 | 从左到右
>>> | 按位右移位（无符号） | 从左到右
< | 小于 | 从左到右
<= | 小于或等于 | 从左到右
> | 大于 | 从左到右
>= | 大于或等于 | 从左到右
instanceof | 是否为其实例 | 从左到右
lt | 小于（字符串版本） | 从左到右
le | 小于或等于（字符串版本） | 从左到右
gt | 大于（字符串版本） | 从左到右
ge | 大于或等于（字符串版本） | 从左到右
== | 等于 | 从左到右
!= | 不等于 | 从左到右
eq | 等于（字符串版本） | 从左到右
ne | 不等于（字符串版本） | 从左到右
& | 按位“与” | 从左到右
^ | 按位“异或” | 从左到右
| | 按位“或” | 从左到右
&& | 逻辑“与” | 从左到右
and | 逻辑“与”(Flash 4) | 从左到右
|| | 逻辑“或” | 从左到右
or | 逻辑“或”(Flash 4) | 从左到右
?: | 条件 | 从右到左
= | 赋值 | 从右到左
*=, /=, %=, +=, -=, &=, |=, ^=, <<=, >>=, >>>= | 复合赋值 | 从右到左
, | 逗号 | 从左到右
最低优先级


键盘键和键控代码值概述

下面的表中列出了标准键盘上的所有键，及其相应的 ASCII 键控代码值，这些值用于在动作脚本中标识键。有关更多信息，请参见 Key 类。


字母 A 到 Z 和标准数字 0 到 9

下表列出了标准键盘上字母 A 到 Z 和数字 0 到 9 的键，及其相应的 ASCII 键控代码值，这些值用于在动作脚本中标识这些键。

字母或数字键 | 键控代码
A | 65
B | 66
C | 67
D | 68
E | 69
F | 70
G | 71
H | 72
I | 73
J | 74
K | 75
L | 76
M | 77
N | 78
O | 79
P | 80
Q | 81
R | 82
S | 83
T | 84
U | 85
V | 86
W | 87
X | 88
Y | 89
Z | 90
0 | 48
1 | 49
2 | 50
3 | 51
4 | 52
5 | 53
6 | 54
7 | 55
8 | 56
9 | 57


数字键盘上的键

下表列出了数字键盘上的键，及其相应的 ASCII 键控代码值，这些值用于在动作脚本中标识这些键。

数字键盘键 | 键控代码
数字键盘 0 | 96
数字键盘 1 | 97
数字键盘 2 | 98
数字键盘 3 | 99
数字键盘 4 | 100
数字键盘 5 | 101
数字键盘 6 | 102
数字键盘 7 | 103
数字键盘 8 | 104
数字键盘 9 | 105
乘号 | 106
加号 | 107
Enter | 108
减号 | 109
小数点 | 110
除号 | 111


功能键

下表列出了标准键盘上的功能键，及其相应的 ASCII 键控代码值，这些值用于在动作脚本中标识这些键。

功能键 | 键控代码
F1 | 112
F2 | 113
F3 | 114
F4 | 115
F5 | 116
F6 | 117
F7 | 118
F8 | 119
F9 | 120
F10 | 121
F11 | 122
F12 | 123
F13 | 124
F14 | 125
F15 | 126


其它键

下表列出了标准键盘上除了字母、数字、数字键盘键和功能键之外的其它键，及其相应的 ASCII 键控代码值，这些值用于在动作脚本中标识这些键。

Key | 键控代码
Backspace | 8
Tab | 9
Clear | 12
Enter | 13
Shift | 16
Control | 17
Alt | 18
Caps Lock | 20
Esc | 27
空格键 | 32
Page Up | 33
Page Down | 34
End | 35
Home | 36
左箭头 | 37
向上箭头 | 38
右箭头 | 39
向下箭头 | 40
Insert | 45
Delete | 46
Help | 47
Num Lock | 144
; : | 186
= + | 187
- _ | 189
/ ? | 191
` ~ | 192
[ { | 219
\ | | 220
] } | 221
" ' | 222


为早期的 Flash Player 版本编写脚本概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 发布后，动作脚本有了相当大的变化。为 Flash Player 7 创建内容时，您可以利用动作脚本的全部功能。虽然仍可以使用 Flash MX 2004 为早期的 Flash Player 版本创建内容，但您将无法使用动作脚本的所有元素。

本章为您提供指导，帮助您编写在句法上符合目标播放器版本的脚本。


关于以早期的 Flash Player 版本作为目标播放器

编写脚本时，可以使用动作脚本字典（请参见动作脚本字典概述）中各个元素的“可用性”信息来确定要作为目标播放器的 Flash Player 版本是否支持您要使用的元素。您也可以通过显示“动作”工具箱来确定哪些元素可以使用；目标版本所不支持的元素突出显示为黄色。

如果要为 Flash Player 6 或 Flash Player 7 创建内容，应使用动作脚本 2.0。它具有许多动作脚本 1 所没有的重要功能，例如，改进的编译器错误报告功能和更坚实的面向对象编程功能。

要了解某些功能在为 Flash Player 7 发布的文件中的实现方式与在为早期的播放器版本发布的文件中的实现方式有哪些不同之处，请参见将现有脚本移植到 Flash Player 7。

若要在发布文档时指定要使用的播放器和动作脚本版本，请选择“文件”>“发布设置”，然后在“Flash”选项卡上进行选择。如果需要以 Flash Player 4 作为目标播放器，请参见使用 Flash MX 2004 为 Flash Player 4 创建内容。


为 Flash Player 4 创建内容

若要使用 Flash MX 2004 为 Flash Player 4 创建内容，请在“发布设置”对话框（“文件”>“发布设置”）的“Flash”选项卡上指定“Flash Player 4”。

Flash Player 4 动作脚本只有一种基本的原始数据类型，用于处理数字和字符串。在为 Flash Player 4 创作应用程序时，必须使用已不鼓励使用的字符串运算符。这些运算符位于“动作”工具箱的“Deprecated”>“Operators”类别中。

发布适用于 Flash Player 4 的文档时，可以使用以下 Flash MX 2004 功能：

  • 数组和对象访问运算符 ([])
  • 点运算符 (.)
  • 逻辑运算符、赋值运算符，以及前递增和后递增/递减运算符
  • 求模运算符 (%)，以及 Math 类的所有方法和属性

Flash Player 4 本身不支持以下语言元素。Flash MX 2004 将它们导出为级数渐近值，使用这种方法创建的结果数字精确度较低。另外，由于 SWF 文件中包含级数渐进值，这些语言元素在 FlashPlayer 4 SWF 文件中占用的空间要比在 Flash Player 5 或更高版本的 SWF 文件中多。

  • for、while、do..while、break 和 continue 动作
  • print() 和 printAsBitmap() 动作
  • switch 动作

有关详细信息，请参见关于以早期的 Flash Player 版本作为目标播放器。


使用 Flash MX 2004 打开 Flash 4 文件

Flash 4 动作脚本只有一种真正的数据类型：字符串。它在表达式中使用不同类型的运算符，用于指示将值作为字符串还是数字来处理。在其后的 Flash 版本中，对所有数据类型都可以使用一组运算符。

在使用 Flash 5 或更高版本打开在 Flash 4 中创建的文件时，Flash 会自动转换动作脚本表达式，以使它们与新语法兼容。在动作脚本代码中可以看到如下的数据类型和运算符转换：

  • Flash 4 中的 = 运算符用于数字等式。在 Flash 5 和更高的版本中，== 是等于运算符，而 = 是赋值运算符。Flash 4 文件中的所有 = 运算符都将被自动转换为 ==。
  • Flash 会自动执行类型转换，以确保运算符按照预期方式运行。由于引入了多种数据类型，下列运算符有了新的意义：

    +, ==, !=, <>, <, >, >=, <=

    在 Flash 4 动作脚本中，这些运算符始终是数字运算符。在 Flash 5 和更高版本中，它们的行为根据操作数的数据类型而不同。为了防止在导入的文件中出现语义差异，在这些运算符的所有操作数两边都会插入一个 Number() 函数。（常数已经明显是数字，所以不会在常数两边插入 Number() 函数）。

  • 在 Flash 4 中，转义序列 \n 生成一个回车符 (ASCII 13)。在 Flash 5 和更高版本中，为了遵循 ECMA-262 标准，\n 会生成一个换行符 (ASCII 10)。Flash 4 FLA 文件中的 \n 序列将被自动转换为 \r。
  • Flash 4 中的 & 运算符用于连接字符串。在 Flash 5 和更高版本中，& 是按位“与”运算符。字符串连接运算符现在为 add。Flash 4 中的所有 & 运算符都将被自动转换为 add 运算符。
  • Flash 4 中许多函数的后面都不需要括号，例如 Get Timer、Set Variable、Stop 和 Play。为了保持语法一致，getTimer 函数和所有动作的后面现在都需要有括号。这些括号在转换时会自动添加。
  • 在 Flash 5 和更高版本中，对不存在的影片剪辑执行 getProperty 函数时，它所返回的值为 undefined，而不是 0。在 Flash 4 之后的动作脚本中，undefined == 0 为 false（在 Flash 4 中，undefined == 1）。在 Flash 5 和更高版本中，通过在等式比较中引入 Number() 函数，在转换 Flash 4 文件时解决了此问题。在下面的示例中，Number() 会强制将 undefined 转换为 0，因此比较将会成功：
    getProperty("clip", _width) == 0
Number(getProperty("clip", _width)) == Number(0)

注意：如果在 Flash 4 动作脚本中使用了任何 Flash 5 或更高版本的保留字作为变量名，在 Flash MX 2004 中进行编译时该语法将返回一个错误。若要解决此问题，请重命名这些变量（在所有出现的位置）。请参见关键字和命名变量。


使用斜杠语法

斜杠语法在 Flash 3 和 4 中表示影片剪辑或变量的目标路径。在斜杠语法中，使用的是斜杠，而不是点；此外，要表示一个变量，变量前面应为一个冒号：

myMovieClip/childMovieClip:myVariable

若要用 Flash Player 5 和更高版本支持的点语法（请参见点语法）编写同样的目标路径，应该使用下面的代码：

myMovieClip.childMovieClip.myVariable

斜杠语法通常与 tellTarget 动作配合使用，我们也不再建议使用该动作。现在，with 动作要比 tellTarget 更好，因为它与点语法的兼容性更好。有关更多信息，请参见 tellTarget 和 with.


使用动作脚本 1 进行面向对象的编程概述

本附录中的信息节选自 Macromedia Flash MX 文档，提供有关使用动作脚本 1 对象模型编写脚本的说明。之所以在此处提供这些信息是出于以下原因：

  • 如果要编写支持 Flash Player 5 的面向对象脚本，则必须使用动作脚本 1。
  • 如果您已使用动作脚本 1 编写过面向对象的脚本，而尚未准备好转换到动作脚本 2.0，则可以使用本附录来查找或浏览编写动作脚本 1 脚本时需要的信息。

如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本附录中的信息，因为我们不鼓励使用动作脚本 1 来编写面向对象的脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

注意：本附录中的某些示例使用了 Object.RegisterClass() 方法。只有 Flash Player 6 和更高版本中才支持该方法；如果您要以 Flash Player 5 作为目标播放器，请不要使用该方法。


动作脚本 1

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

动作脚本是一种面向对象的编程语言。面向对象的编程使用对象（或称作数据结构）将控制对象行为和外观的属性和方法组合在一起。使用对象可以组织并重用代码。定义了一个对象后，可以通过名称引用该对象，而无需在每次使用它时重新进行定义。

类 是对象的通用类别。类定义一系列具有公共属性，并且能够以相同的方式进行控制的对象。属性是定义对象的特性，例如，其大小、位置、颜色、透明度，等等。属性针对某个类进行定义，而属性的值则针对该类中各个单独的对象设置。方法是可以设置或检索对象的属性的函数。例如，您可以定义一个方法来计算某个对象的大小。与属性类似，方法针对某个对象类进行定义，然后针对该类中各个单独的对象调用。

动作脚本提供了几个内置类，包括 MovieClip 类和其它一些类。您也可以创建类，为您的应用程序定义各种对象类别。

动作脚本中的对象可以是纯数据容器，或者可以在舞台上以图形化方式表示为影片剪辑、按钮或文本字段。所有影片剪辑都是内置类 MovieClip 的实例，所有按钮都是内置类 Button 的实例。每个影片剪辑实例都包含 MovieClip 类的所有属性（例如，_height、_rotation、_totalframes）和所有方法（例如，gotoAndPlay()、loadMovie()、startDrag()）。

若要定义类，您需要创建一个称作构造函数 的特殊函数。（内置类具有内置的构造函数。）例如，如果需要应用程序中某个自行车骑手的相关信息，您可以创建一个构造函数 Biker()，它具有属性 time 和 distance，以及能够告诉您自行车行进速度的方法 getSpeed()：

function Biker(t, d) {
  this.time = t;
  this.distance = d;
  this.getSpeed = function() {return this.time / this.distance;};
}

在此示例中，要创建一个需要以下两条信息（或称作参数）才能完成工作的函数：t 和 d。当调用该函数创建对象的新实例时，会将这些参数传递给它。下面的代码创建 Biker 对象的两个实例，名称分别为 emma 和 hamish。

emma = new Biker(30, 5);
hamish = new Biker(40, 5);

在面向对象的脚本中，类可以按照特定的顺序相互接收属性和方法，这称为继承。您可以使用继承来扩展或重新定义类的属性和方法。从其它类继承属性和方法的类称为子类。向其它类传递属性和方法的类称为超类。类可以既是子类又是超类。

对象是一种复杂的数据类型，它包括零个或多个属性和方法。每个属性都有名称和值，就像变量一样。属性附加在对象上，并且包含可以更改和检索的值。这些值可以是任何数据类型：字符串、数字、布尔值、对象、影片剪辑或未定义。下列属性属于各种不同的数据类型：

customer.name = "Jane Doe";
customer.age = 30;
customer.member = true;
customer.account.currentRecord = 000609;
customer.mcInstanceName._visible = true;

对象的属性也可以是对象。在上面示例的第 4 行，account 是对象 customer 的属性，而 currentRecord 是对象 account 的属性。currentRecord 属性的数据类型是数字。


使用动作脚本 1 创建自定义对象

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

若要创建自定义对象，您需要定义构造函数。构造函数的名称总是与它创建的对象类型的名称相同。可以在构造函数体中使用关键字 this 来引用该构造函数创建的对象；在调用构造函数时，Flash 会将 this 作为隐藏参数传递给它。例如，下面就是一个构造函数，用于创建具有属性 radius 的圆：

function Circle(radius) {
  this.radius = radius;
}

定义了构造函数之后，必须创建该对象的一个实例。在构造函数名称的前面使用 new 运算符，并给新实例分配一个变量名。例如，下面的代码将使用 new 运算符创建一个 Circle 对象，其半径为 5，然后将其分配给变量 myCircle：

myCircle = new Circle(5);

注意：对象的范围与其被分配到的变量的范围相同。


使用动作脚本 1 将方法分配给自定义对象

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

您可以在对象的构造函数中定义对象的方法。但是，我们不建议采用这种方式，因为每次使用构造函数时都要定义方法，如下例所示。在此示例中，将创建方法 area() 和 diameter()：

function Circle(radius) {
  this.radius = radius;
  this.area = Math.PI * radius * radius;
  this.diameter = function() {return 2 * this.radius;}
}

每个构造函数都有一个 prototype 属性，此属性是在定义该函数时自动创建的。prototype 属性表示用该函数创建的对象的默认属性值。对象的每个新实例都有一个 __proto__ 属性，用于引用创建它的构造函数的 prototype 属性。因此，如果将方法分配给对象的 prototype 属性，则该对象的任何新创建的实例都可以使用这些方法。最好将方法分配给构造函数的 prototype 属性，因为它只存在于一个位置，并且由该对象（或类）的新实例引用。可以使用 prototype 和 __proto__ 属性扩展对象，这样能够以面向对象的方式重用代码。（有关更多信息，请参见使用动作脚本 1 创建继承。）

下面的过程将显示如何将 area() 方法分配给自定义的 Circle 对象。

将方法分配给自定义对象：

  1. 定义构造函数 Circle()，如下所示。
    function Circle(radius) {
  this.radius = radius;
}
  2. 定义 Circle 对象的 area() 方法。area() 方法用于计算圆的面积。可以使用函数文本定义 area() 方法，并将 area 属性分配给该圆的原型对象，如下所示：
    Circle.prototype.area = function () {
    return Math.PI * this.radius * this.radius;
};
  3. 创建 Circle 对象的一个实例，如下所示：
    var myCircle = new Circle(4);
  4. 调用新创建的 myCircle 对象的 area() 方法，如下所示：
    var myCircleArea = myCircle.area();

    动作脚本将在 myCircle 对象中搜索 area() 方法。由于该对象没有 area() 方法，因此会在它的原型对象 Circle.prototype 中搜索 area() 方法。动作脚本会在找到该方法后调用它。


使用动作脚本 1 定义事件处理函数方法

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

可以为影片剪辑创建一个动作脚本类，然后在新创建的类的原型对象中定义事件处理函数方法。在原型对象中定义方法可使该元件的所有实例都以同一种方式响应事件。

也可以将 onClipEvent() 或 on() 事件处理函数动作添加到一个单独的实例中，以提供只有当该实例的事件发生时才运行的独特指令。onClipEvent() 和 on() 动作不会重写事件处理函数方法；两种事件都会使它们的脚本运行。不过，如果在原型对象中定义了事件处理函数方法，同时也为某个特定实例定义了事件处理函数方法，那么该实例定义会重写原型定义。

在对象的原型对象中定义事件处理函数方法：

  1. 将一个链接 ID 为 theID 的影片剪辑元件放到库中。
  2. 在“动作”面板上（“窗口”>“开发面板”>“动作”），使用 function 动作定义一个新类，如下所示：
    // 定义类
function myClipClass(){}

    这个新类将被指定给由时间轴添加到应用程序中的影片剪辑的所有实例，或者是用 attachMovie() 或 duplicateMovieClip() 方法添加到应用程序中的影片剪辑的所有实例。如果想让这些影片剪辑能够访问内置 MovieClip 对象的方法和属性，则需要让新类继承 MovieClip 类的方法和属性。

  3. 输入如下代码：
    // 从 MovieClip 类继承方法和属性
myClipClass.prototype = new MovieClip();

    现在，myClipClass 类继承了 MovieClip 类的所有属性和方法。

  4. 输入如下代码，定义这个新类的事件处理函数方法：
    // 为 myClipClass 类定义事件处理函数方法
myClipClass.prototype.onLoad = function() {trace ("movie clip loaded");}
myClipClass.prototype.onEnterFrame = function() {trace ("movie clip entered frame");}
  5. 如果“库”面板没有打开，请选择“窗口”>“库”打开它。
  6. 选择想与新类关联的元件，然后从“库”面板右上角的弹出菜单中选择“链接”。
  7. 在“链接属性”对话框中，选择“为动作脚本导出”。
  8. 在“标识符”框中输入一个标识符。

    对于想与新类关联的所有元件，它们的标识符必须都相同。在 myClipClass 示例中，标识符是 theID。

  9. 在“脚本”窗格中输入如下代码：
    // 注册类
Object.registerClass("theID", myClipClass);
_root.attachMovie("theID","myName",1);

这样就向 myClipClass 类注册了链接标识符为 theID 的元件。myClipClass 的所有实例的事件处理函数方法的行为与第 4 步中定义的一样。同时它们的行为也类似于 MovieClip 类的所有实例，因为您在第 3 步中指示新类继承 MovieClip 类的属性和方法。

function myClipClass(){}

myClipClass.prototype = new MovieClip();
myClipClass.prototype.onLoad = function(){
  trace("movie clip loaded");
}
myClipClass.prototype.onPress = function(){
  trace("pressed");
}

myClipClass.prototype.onEnterFrame = function(){
  trace("movie clip entered frame");
}

myClipClass.prototype.myfunction = function(){
  trace("myfunction called");
}

Object.registerClass("myclipID",myClipClass);
_root.attachMovie("myclipID","ablue2",3);


使用动作脚本 1 创建继承

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

继承是一种组织、扩展和重用功能的方式。子类会从超类继承属性和方法，并添加自己的专用属性和方法。例如，就现实世界而言，自行车是一个超类，而山地车和三轮车则是该超类的子类。这两个子类都包含，或者说是继承 了超类的方法和属性（例如 wheels）。每个子类还具有它们自己的属性和方法，这些属性和方法扩展了超类（例如，MountainBike 子类具有 gears 属性）。在动作脚本中可以使用 prototype 和 __proto__ 元素来创建继承。

所有的构造函数都有 prototype 属性，该属性是在定义该函数时自动创建的。prototype 属性表示用该函数创建的对象的默认属性值。可以使用 prototype 属性将属性和方法分配给类。（有关更多信息，请参见使用动作脚本 1 将方法分配给自定义对象。）

类的所有实例都具有 __proto__ 属性，该属性会指出这些实例继承自哪个对象。在使用构造函数创建对象时，会将 __proto__ 属性设置为引用其构造函数的 prototype 属性。

继承会按照明确的层级向下延伸。在调用对象的属性或方法时，动作脚本会查看该对象，确定是否存在这样一个元素。如果不存在，动作脚本会查看该对象的 __proto__ 属性以获得信息 (myObject.__proto__)。如果该属性不是该对象的 __proto__ 对象的属性，动作脚本会查看 myObject.__proto__.__proto__，依此类推。

下面的示例将定义构造函数 Bike()：

function Bike (length, color) {
  this.length = length;
  this.color = color;
}

下面的代码会将 roll() 方法添加到 Bike 类：

Bike.prototype.roll = function() {this._x = _x + 20;};

可以创建一个将 Bike 作为超类的 MountainBike 类，这样就不用再向 MountainBike 类和 Tricycle 类中添加 roll() 方法了：

MountainBike.prototype = new Bike();

现在，可以调用 MountainBike 的 roll() 方法，如下所示：

MountainBike.roll();

影片剪辑不会相互继承。若要在影片剪辑间创建继承，可以使用 Object.registerClass() 方法给影片剪辑分配一个除 MovieClip 之外的类。请参见 Object.registerClass()。

有关继承的更多信息，请参见Object.__proto__、#initclip、#endinitclip 和 super。


使用动作脚本 1 向对象中添加 getter/setter 属性

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

您可以使用 Object.addProperty() 方法为对象创建 getter/setter 属性。

Getter 函数没有参数。它的返回值可以为任何类型。它的类型可以在两次调用之间改变。返回值视作该属性的当前值。Setter 函数只有一个参数，即该属性的新值。例如，如果属性 x 由语句 x = 1 进行赋值，则会将数字类型的参数 1 传递给 setter 函数。Setter 函数的返回值将被忽略。

当 Flash 读取 getter/setter 属性时，它调用 getter 函数，而该函数的返回值将成为 prop 的值。当 Flash 写入 getter/setter 属性时，它调用 setter 函数，并将新值作为参数传递给它。如果具有给定名称的属性已经存在，新属性将覆盖它。

可以向原型对象添加 getter/setter 属性。如果向一个原型对象添加 getter/setter 属性，则继承此原型对象的所有对象实例都将继承 getter/setter 属性。这样就能够在一个位置（即原型对象）添加 getter/setter 属性，然后使它传播到类的所有实例（与向原型对象添加方法非常相似）。如果为继承的原型对象中的 getter/setter 属性调用 getter/setter 函数，则传递给该 getter/setter 函数的引用将是最初引用的对象，而不是该原型对象。

有关更多信息，请参见 Object.addProperty()。

测试模式中的“调试”>“列出变量”命令支持使用 Object.addProperty() 方法添加到对象中的 getter/setter 属性。以这种方式添加到对象中的属性与该对象中的其它属性一起显示在“输出”面板中。在“输出”面板中，getter/setter 属性用前缀 [getter/setter] 标识。有关“列出变量”命令的更多信息，请参见使用“输出”面板。


在动作脚本 1 中使用 Function 对象属性

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

使用 Function 对象的 call() 和 apply() 方法可以指定要将函数应用于哪个对象，以及要传递给该函数的参数值。动作脚本中的每个函数都由一个 Function 对象表示，因此所有函数都支持 call() 和 apply() 方法。使用构造函数创建自定义类时，或使用函数为自定义类定义方法时，可以调用该函数的 call() 和 apply() 方法。

在动作脚本 1 中使用 Function.call() 方法调用函数

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

Function.call() 方法调用由 Function 对象表示的函数。

几乎在所有情况下，都可以使用函数调用运算符 (()) 代替 call() 方法。函数调用运算符使代码简明易读。call() 方法主要用于需要显式控制函数调用的 this 参数的情况。通常，如果将函数作为对象的方法来调用，则在函数体内，this 设置为 myObject，如下所示：

myObject.myMethod(1, 2, 3);

在某些情况下，您可能希望 this 指向其它地方，例如以下这种情况：函数必须作为对象的方法进行调用，但该函数实际上并不是作为该对象的方法存储的。

myObject.myMethod.call(myOtherObject, 1, 2, 3);

将值 null 传递给 thisObject 参数即可将函数作为常规函数（而不是作为对象的方法）进行调用。例如，下面的函数调用是等效的：

Math.sin(Math.PI / 4)
Math.sin.call(null, Math.PI / 4)

有关更多信息，请参见 Function.call()。

使用 Function.call 方法调用函数：

  • 应使用以下语法。
    myFunction.call(thisObject, parameter1, ..., parameterN)

    该方法具有以下参数：

  • 参数 thisObject 指定 this 在函数体内的值。
  • 参数 parameter1..., parameterN 指定要传递给 myFunction 的参数。可以指定零个或多个参数。

在动作脚本 1 中使用 Function.apply() 指定要将函数应用于哪个对象

注意：如果您从未使用动作脚本编写过面向对象的脚本，而且不需要以 Flash Player 5 作为目标播放器，则不应使用本节中的信息，因为我们不鼓励使用动作脚本 1 来编写脚本；而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

Function.apply() 方法指定将在动作脚本调用的任何函数内使用的 this 的值。此方法还指定要传递给任何被调用函数的参数。

参数被指定为 Array 对象。如果在脚本实际执行前，无法知道要传递的参数的数量，那么这种方法通常很有用。

有关更多信息，请参见 Function.apply()。

使用 Function.apply() 指定要将函数应用于哪个对象：

  • 应使用以下语法。
    myFunction.apply(thisObject, argumentsObject)

    该方法具有以下参数：

  • 参数 thisObject 指定要将 myFunction 应用于哪个对象。
  • 参数 argumentsObject 定义一个数组，该数组的元素将作为参数传递给 myFunction。

上一页


组件入门概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 是专业的标准创作工具，利用它们制作出的 Web 内容极富感染力。组件是提供此类感受的“丰富 Internet 应用程序”的构建块。一个组件就是一段影片剪辑，其中所带的参数由您在 Macromedia Flash 中创作时进行设置，其中所带的动作脚本 API 供您在运行时自定义组件。组件旨在让开发人员重用和共享代码，封装复杂功能，使设计人员在没有“动作脚本”时也能使用和自定义这些功能。

组件基于 Macromedia Component Architecture 的第 2 版 (V2)，因此，您可以方便而快速地构建具有一致的外观和行为的功能强大的应用程序。本手册介绍如何使用 v2 组件构建应用程序，以及每个组件的应用程序编程接口 (API)。它包括使用 Flash MX 2004 或 Flash MX Professional 2004 V2 组件的用法方案和过程范例，以及按字母排序的组件 API 说明。

您可以使用 Macromedia 创建的组件，下载其他开发人员创建的组件，还可以创建自己的组件。


目标读者

本书的目标读者是要构建 Flash MX 2004 或 Flash MX Professional 2004 应用程序并希望使用组件加快开发速度的开发人员。对于在 Macromedia Flash 中开发应用程序、编写动作脚本，以及 Macromedia Flash Player，您都应该已经比较熟悉了。

本书假定您已安装了 Flash MX 2004 或 Flash MX Professional 2004，并且知道如何使用它。在使用这些组件之前，您应该先学习完课程“使用组件创建用户界面”（选择“帮助”>“如何”>“快速任务”>“使用组件创建用户界面”）。

如果您希望尽可能少编写动作脚本，则可将组件拖到文档中，然后在属性检查器或“组件检查器”面板中设置这些组件的参数，并在“动作”面板中将 on() 处理函数直接附加到某个组件，以处理组件事件。

如果您希望创建更稳定的应用程序，则可以动态创建组件，使用其 API 在运行时设置属性和调用方法，然后使用侦听器事件模型来处理事件。

有关详细信息，请参阅使用组件。


系统要求

除 Flash MX 2004 或 Flash MX Professional 2004 外，Macromedia 组件没有任何其他系统要求。


安装组件

首次启动 Flash MX 2004 或 Flash MX Professional 2004 时，系统中就已安装了一组 Macromedia 组件。您可以在“组件”面板上查看它们。

Flash MX 2004 包括以下组件：

  • Button 组件
  • CheckBox 组件
  • ComboBox 组件
  • Label 组件
  • List 组件
  • Loader 组件
  • NumericStepper 组件
  • ProgressBar 组件
  • RadioButton 组件
  • ScrollPane 组件
  • TextArea 组件
  • TextInput 组件
  • Window 组件

Flash MX Professional 2004 包括 Flash MX 2004 组件及以下附加组件和类：

  • Accordion 组件（仅限 Flash Professional）
  • Alert 组件（仅限 Flash Professional）
  • 数据绑定类（仅限 Flash Professional）
  • DateField 组件（仅限 Flash Professional）
  • DataGrid 组件（仅限 Flash Professional）
  • DataHolder 组件（仅限 Flash Professional）
  • DataSet 组件（仅限 Flash Professional）
  • DateChooser 组件（仅限 Flash Professional）
  • Form 类（仅限 Flash Professional）
  • 媒体组件（仅限 Flash Professional）
  • Menu 组件（仅限 Flash Professional）
  • MenuBar 组件（仅限 Flash Professional）
  • RDBMSResolver 组件（仅限 Flash Professional）
  • Screen 类（仅限 Flash Professional）
  • Slide 类（仅限 Flash Professional）
  • Tree 组件（仅限 Flash Professional）
  • WebServiceConnector 类（仅限 Flash Professional）
  • XMLConnector 组件（仅限 Flash Professional）
  • XUpdateResolver 组件（仅限 Flash Professional）

检查安装的 Flash MX 2004 或 Flash MX Professional 2004 组件：

  1. 启动 Flash。
  2. 如果“组件”面板尚未打开，请选择“窗口”>“开发面板”>“组件”，打开“组件”面板。
  3. 选择“用户界面组件”，展开组件树并查看已安装的组件。

您也可以从 Macromedia Exchange 下载组件。要安装从 Exchange 下载的组件，请下载并安装 Macromedia Extension Manager。

任何组件，无论是 SWC 文件还是 FLA 文件（请参阅关于编译剪辑和 SWC 文件），都会在 Flash 的“组件”面板中出现。要在 Windows 或 Macintosh 计算机上安装组件，请遵循以下步骤。

在基于 Windows 的计算机上或 Macintosh 计算机上安装组件：

  1. 退出 Flash。
  2. 将包含组件的 SWC 或 FLA 文件放在硬盘上的以下文件夹中：
    • \Program Files\Macromedia\Flash MX 2004\<language>\First Run\Components (Windows)
    • HD/Applications/Macromedia Flash MX 2004/First Run/Components (Macintosh)
  3. 打开 Flash。
  4. 如果“组件”面板尚未打开，请选择“窗口”>“开发面板”>“组件”，以在“组件”面板中查看组件。


关于本文档

本文档详细说明如何使用组件开发 Flash 应用程序。它假定读者已具备 Macromedia Flash 和“动作脚本”的一般知识。有关 Flash 及相关产品的说明，另备有专门文档。

  • 有关 Macromedia Flash 的信息，请参阅Flash 入门（或“入门”帮助）、“使用 Flash”帮助、《动作脚本参考指南》帮助以及动作脚本字典帮助 。
  • 有关使用 Flash 应用程序访问 Web 服务的信息，请参阅 Using Flash Remoting（使用 Flash Remoting）。


印刷惯例

本书使用以下印刷惯例：

  • 斜体字体 表示应被替换的值（例如，文件夹路径中的文本）。
  • 代码字体表示动作脚本代码。
  • 斜体代码字体 表示动作脚本参数。
  • 粗体字体表示完全按原样采用的条目。

    注意：粗体字体与用于平行式标题的字体不同。平行式标题的字体用作项目符号的备用项。


本手册中使用的术语

本书中使用以下术语：

在运行时 代码在 Flash Player 中运行时。

在创作时 在 Flash 创作环境中工作时。


其他资源

有关 Flash 的最新信息，以及专家的建议、高级主题、范例、提示和其他更新，请访问定期更新的 Macromedia DevNet Web 站点。请经常访问该 Web 站点，查看有关 Flash 的最新消息以及如何充分利用该程序的指导。

有关 TechNote、文档更新以及指向“Flash 社区”中其他资源的链接，请访问 Macromedia Flash 支持中心，网址为：www.macromedia.com/go/flash_support_cn。

有关动作脚本术语、语法和用法的详细信息，请参阅《动作脚本参考指南》帮助和“动作脚本字典”帮助。

有关使用组件的介绍，请参阅 Macromedia On Demand 研究会“Flash MX 2004 系列：使用 UI 组件”。


组件概述

组件是带有参数的影片剪辑，这些参数使您可以修改组件的外观和行为。组件可以提供创建者能想到的任何功能。组件既可以是简单的用户界面控件（例如，单选按钮或复选框），也可以包含内容（例如，滚动窗格）；组件还可以是不可视的（例如，FocusManager，它用于控制应用程序中接收焦点的对象）。

任何人都可以使用组件构建复杂的 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 应用程序，即使他们对动作脚本并没有深入的了解。您不必创建自定义按钮、组合框和列表，将这些组件从“组件”面板拖到应用程序中即可为应用程序添加功能。您还可以方便地自定义组件的外观和行为来满足自己的设计需求。

组件基于 Macromedia Component Architecture 的第 2 版 (V2)，因此，您可以方便而快速地构建具有一致的外观和行为的功能强大的应用程序。第 2 版的结构包括所有组件基于的类、使您可以自定义组件外观的样式和外观机制、广播器/侦听器事件模式、深度和焦点管理、实施辅助功能，等等。

每个组件都有预定义参数，您可以在 Flash 中创作时来设置这些参数。每个组件还有一组独特的动作脚本方法、属性和事件，它们也称为 API（应用程序编程接口），使您可以在运行时设置参数和其他选项。

Flash MX 2004 和 Flash MX Professional 2004 包括许多新的 Flash 组件和若干新版本的 Flash MX 组件。要查看 Flash MX 2004 和 Flash MX Professional 2004 中所含组件的完整列表，请参阅安装组件。您还可以从 Macromedia Exchange 下载由 Flash 社区成员构建的组件。


第 2 版组件的优点

使用组件，就可以做到编码与设计的分离，而且，您还可以重复利用您自己创建的组件中的代码，或者通过下载和安装其他开发人员创建的组件来重复利用代码。

使用组件，代码编写者可以创建设计人员能够在应用程序中使用的功能。开发人员可以将常用功能封装在组件中，设计人员可以自定义组件的外观和行为，方法是在“属性检查器”或“组件检查器”面板中更改参数。

Flash 社区的成员可以使用 Macromedia Exchange 来交换组件。通过使用组件，您不再需要从头构建复杂的 Web 应用程序中的每个元素。您可以查找需要的组件，然后将它们一起放入 Flash 文档来创建新应用程序。

基于 第 2 版组件结构的组件共享样式、事件处理、外观、焦点管理和深度管理等核心功能。在将第一个第 2 版组件添加到应用程序中时，文档大小约增加 25K，用以提供此核心功能。如果再添加其他组件，系统会为这些组件重用相同的 25K，因此，增加的文档大小比预期的要小。有关将第 1 版组件升级到第 2 版组件的信息，请参阅将第 1 版组件升级到第 2 版结构。


组件类别

Flash MX 2004 和 Flash MX Professional 2004 中包含的组件分为五类：用户界面组件、数据组件、媒体组件、管理器和屏幕。用户界面组件使您可以与应用程序进行交互操作；例如，RadioButton、CheckBox 和 TextInput 组件都是用户界面控件。利用数据组件可以加载和处理数据源的信息；WebServiceConnector 和 XMLConnector 组件都是数据组件。媒体组件使您可以播放和控制媒体流；MediaController、MediaPlayback 和 MediaDisplay 都是媒体组件。管理器是不可见的组件，此类组件使您可以在应用程序中管理诸如焦点或深度等功能；FocusManager、DepthManager、PopUpManager 和 StyleManager 都是 Flash MX 2004 和 Flash MX Professional 2004 包含的管理器组件。屏幕类别包括了动作脚本类，这些类使您可以在 Flash MX Professional 2004 中控制表单和幻灯片。有关每个类别的完整列表，请参阅组件字典。


组件结构

您可以使用“属性检查器”或“组件检查器”面板来更改组件参数，以使用组件的基本功能。然而，如果要在更大程度上控制组件，您需要使用组件的 API，并且要了解组件的一些构建方式。

Flash MX 2004 和 Flash MX Professional 2004 组件是使用 Macromedia Component Architecture 第 2 版 (V2) 构建的。Flash Player 6 和 Flash Player 7 支持第 2 版组件。这些组件不一定总是与使用第 1 版 (v1) 结构构建的组件（在 Flash MX 2004 发布之前发布的所有组件）兼容。而且，Flash Player 7 不支持第 1 版组件。有关详细信息，请参阅将第 1 版组件升级到第 2 版结构。

第 2 版组件作为“编译剪辑”(SWC) 元件包含在“组件”面板中。编译剪辑是其代码已经过编译的组件影片剪辑。编译剪辑具有内置的实时预览，无法对它们进行编辑，但您可以在属性检查器和“组件检查器”面板中更改它们的参数，就像更改任何其他组件的参数一样。有关详细信息，请参阅关于编译剪辑和 SWC 文件。

第 2 版组件是用动作脚本 2.0 编写的。每个组件都是一个类，而每个类都属于一个动作脚本包。例如，单选按钮组件是 RadioButton 类的实例，该类的包名称是 mx.controls。有关包的详细信息，请参阅使用包。

用 Macromedia Component Architecture 的第 2 版构建的所有组件都是 UIObject 和 UIComponent 类的子类，并且从这些类继承了所有属性、方法和事件。许多组件也是其他组件的子类。在组件字典中，分别在每个组件的条目中指明了该组件的继承路径。

来自组件类层次结构的代码片断。

所有组件也使用相同的事件模型、基于 CSS 的样式和内置的外观机制。有关样式和外观的详细信息，请参阅自定义组件。有关事件处理的详细信息，请参阅使用组件。


第 2 版组件的新功能

“组件检查器”面板：在使用 Macromedia Flash 和 Macromedia Dreamweaver 进行创作时可以利用它来更改组件参数。（请参阅“组件检查器”面板和属性检查器中的组件。）

侦听器事件模型：函数的侦听器对象可以使用它来处理事件。（请参阅关于组件事件。）

外观属性：使您可以只在需要时才加载状态。（请参阅关于设置组件外观。）

基于 CSS 的样式：您可以使用它来创建具有一致外观和行为的应用程序。（请参阅使用样式自定义组件的颜色和文本。）

主题：您可以使用它将新外观拖到一组组件上。（请参阅关于主题。）

光晕主题：为应用程序提供预先创建的、互动式而且非常灵活的用户界面。

管理器类：提供了一种在应用程序中处理焦点和深度的简便方法。（请参阅创建自定义焦点导航和管理文档中的组件深度。）

基类 UIObject 和 UIComponent ：为所有组件提供核心功能。（请参阅 UIComponent和UIObject。）

打包为 SWC 文件：您可以使用它来编写便于分发和可隐藏的代码。请参阅创建组件。

内置数据绑定通过“组件检查器”面板提供。有关此功能的更多信息，请按“帮助更新”按钮。

便于扩展的类层次结构：使用动作脚本 2.0，使您可以创建唯一的命名空间，按需要导入类，并且可以方便地创建子类来扩展组件。请参阅创建组件和《动作脚本参考指南》帮助。


关于编译剪辑和 SWC 文件

编译剪辑用于预编译 Flash 文档中的复杂元件。例如，包含大量动作脚本代码且不经常更改的影片剪辑可以转换为编译剪辑。这样可使“测试影片”和“发布”的执行时间较短。

SWC 文件是用于保存和分发组件的文件类型。将 SWC 文件放在 First Run\Components 文件夹中后，该组件会出现在“组件”面板中。在从“组件”面板将组件添加到舞台上时，就会将编译剪辑元件添加到库中。

有关 SWC 文件的详细信息，请参阅创建组件。


辅助功能和组件

对 Web 内容要具有辅助功能（即，让各种残疾人可以使用 Web 内容）的要求在不断增长。使用屏幕读取程序软件可以使视觉障碍者能够比较容易地感知 Flash 应用程序中的可视内容。这种软件可以提供对屏幕内容的口语声音描述。

创作者在创建组件时，可以编写在组件与屏幕读取程序之间通讯的动作脚本。随后，当开发人员使用组件在 Flash 中构建应用程序时，可以使用“辅助功能”面板来配置每个组件实例。

由 Macromedia 构建的大多数组件都针对辅助功能进行了设计。要了解某个组件是否具备辅助功能，请查看组件字典中该组件的条目。在 Flash 中构建应用程序时，您需要为每个组件添加一行代码 (mx.accessibility.ComponentNameAccImpl.enableAccessibility();)，并在“辅助功能”面板中设置辅助功能参数。组件辅助功能的运行方式与所有 Flash 影片剪辑辅助功能的运行方式相同。有关详细信息，请参阅创建辅助内容。

由 Macromedia 构建的大多数组件也能通过键盘来导航。组件字典中每个组件的条目指出您是否可以用键盘控制该组件。


使用组件概述

在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中使用组件有多种方法。您可以使用“组件”面板来查看组件，并可以在创作过程中将组件添加到文档中。在将组件添加到文档中后，即可在属性检查器或“组件检查器”面板中查看组件属性。组件可以与其他组件通信，方法是侦听其他组件的事件并使用“动作脚本”处理这些事件。您还可以管理文档中的组件深度以及控制组件接收焦点的时间。


“组件”面板

所有组件都存储在“组件”面板中。安装 Flash MX 2004 或 Flash MX Professional 2004 之后第一次启动它时，“组件”面板中将会显示 Macromedia\Flash 2004\First Run\
Components (Windows) 或 Macromedia Flash 2004/zh_cn/First Run/Components (Macintosh) 文件夹中的组件。

显示“组件”面板：

  • 选择“窗口”>“开发面板”>“组件”。


“库”面板中的组件

在将组件添加到文档中后，它将在“库”面板中显示为编译剪辑（SWC 文件）元件。

“库”面板中的 ComboBox 组件。

通过将组件图标从库拖到舞台上可以添加该组件的多个实例。

有关编译剪辑的详细信息，请参阅处理 SWC 文件和编译剪辑。


“组件检查器”面板和属性检查器中的组件

在将组件的一个实例添加到 Flash 文档后，可以使用属性检查器来设置和查看该实例的信息。通过从“组件”面板将组件拖到舞台上创建该组件的一个实例，然后在属性检查器中给该实例命名，接着使用“参数”选项卡上的字段来指定该实例的参数。您也可以通过使用“组件检查器”面板来设置组件实例的参数。使用哪个面板来设置参数无关紧要，这只是您的个人喜好问题。有关设置参数的详细信息，请参阅设置组件参数。

在属性检查器中查看组件实例的信息：

  1. 选择“窗口”>“属性”。
  2. 在舞台上选择组件的一个实例。
  3. 要查看参数，请单击“参数”选项卡。

要查看“组件检查器”面板中组件实例的参数：

  1. 选择“窗口”>“开发面板”>“组件检查器”。
  2. 在舞台上选择组件的一个实例。
  3. 要查看参数，请单击“参数”选项卡。


“实时预览”中的组件

“实时预览”功能在默认情况下处于启用状态，使用该功能，您可以按组件出现在所发布 Flash 内容中的实际情况在舞台上查看这些组件，包括其大概尺寸。实时预览反映了不同组件的不同参数。要了解“实时预览”中所反映的组件参数的有关信息，请参阅组件字典中的每个组件条目。“实时预览”中的组件不可操作。要测试组件功能，可以使用“控制”>“测试影片”命令。

启用“实时预览”的 Button 组件

禁用“实时预览”的 Button 组件

打开或关闭“实时预览”：

  • 选择“控制”>“启用实时预览”。如果该选项旁边出现一个复选标记，表明已经启用了这项功能。

有关详细信息，请参阅创建组件。


处理 SWC 文件和编译剪辑

Flash MX 2004 或 Flash MX Professional 2004 中包含的组件不是 FLA 文件，而是 SWC 文件。SWC 是用于组件的 Macromedia 文件格式。在从“组件”面板将组件添加到舞台上时，就会将编译剪辑元件添加到库中。SWC 是已导出以进行分发的编译剪辑。

也可以在 Flash 中“编译”影片剪辑，并将其转换为编译剪辑元件。编译剪辑元件的行为方式与从中编译该元件的影片剪辑元件相似，但与常规影片剪辑元件相比，编译剪辑的显示和发布速度更快。编译剪辑不可编辑，但它们确实具有在属性检查器和“组件检查器”面板中出现的属性，并且它们包含实时预览。

Flash MX 2004 或 Flash MX Professional 2004 中包含的组件已转换为编译剪辑。如果创建组件，您可以选择将其导出为 SWC 以进行分发。有关详细信息，请参阅创建组件。

编译影片剪辑元件：

  • 选择库中的影片剪辑并用右键单击 (Windows) 或按住 Control 键单击 (Macintosh)，然后选择“转换为编译剪辑”。

要导出 SWC：

  • 选择库中的影片剪辑并用右键单击 (Windows) 或按住 Control 键单击 (Macintosh)，然后选择“导出 SWC 文件”。

注意：Flash MX 2004 和 Flash MX Professional 2004 继续支持 FLA 组件。


添加组件

在从“组件”面板将组件拖到舞台上时，就会将编译剪辑元件添加到“库”面板中。如果编译剪辑元件位于库中，您也可以通过使用 UIObject.createClassObject() 动作脚本方法，在运行时将该组件添加到文档中。

  • 初级 Flash 用户可以使用“组件”面板将组件添加到 Flash 文档中，接着使用属性检查器或“组件检查器”面板中的“参数”选项卡指定基本参数，然后使用 on() 事件处理函数来控制组件。
  • 中级 Flash 用户可以使用“组件”面板将组件添加到 Flash 文档中，然后使用属性检查器、“动作脚本”方法，或两者的组合来指定参数。他们可以使用 on() 事件处理函数或事件侦听器来处理组件事件。
  • 高级 Flash 程序员可以将“组件”面板和动作脚本结合在一起使用，以便添加组件并指定属性，或者选择在运行时完全使用动作脚本来实现组件实例。他们可以使用事件侦听器来控制组件。

如果在编辑了组件的外观后要添加该组件的另一个版本，或者添加共享同一外观的组件，则可以选择使用经过编辑的外观或使用一组新的默认外观来替换经过编辑的外观。如果替换了经过编辑的外观，那么所有使用这些外观的组件都会用默认的外观进行更新。有关如何编辑外观的详细信息，请参阅自定义组件。


使用“组件”面板添加组件

在使用“组件”面板将组件添加到文档后，通过将该组件从“库”面板拖到舞台上，可以将该组件的其他实例添加到文档中。您可以在属性检查器的“参数”选项卡或“组件检查器”面板的“参数”选项卡中设置其他实例的属性。

使用“组件”面板向 Flash 文档中添加组件：

  1. 选择“窗口”>“开发面板”>“组件”。
  2. 请执行以下操作之一：
    • 将组件从“组件”面板拖到舞台上。
    • 双击“组件”面板中的一个组件。
  3. 如果该组件为 FLA（所有安装的第 2 版组件都是 SWC）而且 您已经编辑了同一组件的另一个实例的外观，或者编辑了与您要添加的组件共享外观的组件的外观，则请执行下列操作：
    • 选择“不要替换现有项目”，保留已编辑的外观并将经过编辑的外观应用于新组件。
    • 选择“替换现有项目”，以默认外观替换所有外观。新组件和该组件所有以前的版本，或者与它共享相同外观的组件的以前版本都将使用默认外观。
  4. 在舞台上选择该组件。
  5. 选择“窗口”>“属性”。
  6. 在属性检查器中，输入组件实例的实例名称。
  7. 单击“参数”选项卡，然后为实例指定参数。

    有关详细信息，请参阅设置组件参数。

  8. 根据需要更改组件的大小。

    有关调整特定组件类型大小的详细信息，请参阅组件字典中的各个组件条目。

  9. 通过执行以下一项或多项操作，根据需要更改组件的颜色和文本格式：
    • 通过使用可用于所有组件的 setStyle() 方法设置或更改组件实例的特定样式属性值。有关详细信息，请参阅UIObject.setStyle()。
    • 在分配给所有第 2 版组件的 _global 样式声明中编辑多个属性。
    • 如果需要，可为特定组件实例创建自定义样式声明。

      有关详细信息，请参阅使用样式自定义组件的颜色和文本。

  10. 根据需要，执行以下其中一项操作来自定义组件的外观：
    • 应用主题（请参阅关于主题）。
    • 编辑组件的外观（请参阅关于设置组件外观）。


使用动作脚本添加组件

要使用“动作脚本”向文档中添加组件，必须先将组件添加到库中。

您可以使用“动作脚本”方法为动态添加的组件设置其他参数。有关详细信息，请参阅组件字典。

注意：本节的说明假定您具备“动作脚本”的中级或高级知识。

使用“动作脚本”向 Flash 文档中添加组件：

  1. 将组件从“组件”面板拖到舞台上并将其删除。

    这会将该组件添加到库中。

  2. 选择您想将该组件放置到的时间轴中的某一帧。
  3. 如果“动作”面板尚未打开，请将其打开。
  4. 调用 createClassObject() 方法，以便在运行时创建组件实例。

    此方法可以单独调用，也可以从任何组件实例调用。它将组件类名称、新实例的实例名称、深度和可选初始化对象作为它的参数。您可以在 className 参数中指定类包，如下所示：

    createClassObject(mx.controls.CheckBox, "cb", 5, {label:"Check Me"});

    或者您可以导入类包，如下所示：

    import mx.controls.CheckBox;
createClassObject(CheckBox, "cb", 5, {label:"Check Me"});

    有关详细信息，请参阅UIObject.createClassObject()。

  5. 使用该组件的“动作脚本”方法和属性在创作期间指定其他选项或覆盖设置的参数。

    有关每个组件的可用动作脚本方法和属性的详细信息，请参阅组件字典中的各个组件条目。


关于组件标签大小以及组件的宽度和高度

如果添加到文档中的组件实例不够大，而无法显示其标签，就会将标签文本剪切掉。如果组件实例比文本大，点击区域就会超出标签。

可以使用“任意变形”工具或 setSize() 方法来调整组件实例的大小。您可以从任何组件实例中调用 setSize() 方法（请参阅 UIObject.setSize()）。如果使用“动作脚本”的 _width 和 _height 属性来调整组件的宽度和高度，则可以调整该组件的大小，但组件内容的布局依然保持不变。这可能会导致在影片回放时组件发生扭曲。有关调整组件大小的详细信息，请参阅组件字典中的各个组件条目。


设置组件参数

每个组件都带有参数，您可以通过设置这些参数来更改组件的外观和行为。参数是在属性检查器和“组件检查器”面板中显示的属性或方法。最常用的属性和方法显示为创作参数；其他参数必须使用“动作脚本”来设置。在创作过程中可以设置的所有参数也可以使用“动作脚本”来设置。使用“动作脚本”设置的参数值将覆盖在创作过程中设置的任何值。

所有第 2 版组件都从 UIObject 类和 UIComponent 类继承属性和方法；这些是所有组件都使用的属性和方法，诸如 UIObject.setSize()、UIObject.setStyle()、UIObject.x 和 UIObject.y 等。每个组件还具有特有的属性和方法，其中的某些属性和方法可用作创作参数。例如，ProgressBar 组件具有 percentComplete 属性 (ProgressBar.percentComplete)，而 NumericStepper 组件具有 nextValue 和 previousValue 属性（NumericStepper.nextValue、NumericStepper.previousValue）。


从 Flash 文档删除组件

要从 Flash 文档删除组件的实例，请通过删除编译剪辑图标来从库中删除组件。

从文档中删除组件：

  1. 在“库”面板中，选择编译剪辑 (SWC) 元件。
  2. 单击“库”面板底部的“删除”按钮，或从“库”面板选项菜单中选择“删除”。
  3. 在“删除”对话框中，单击“删除”以确认删除操作。


使用代码提示

在使用动作脚本 2 时，您可以精确键入基于内置类（包括组件类）的变量。如果您这样做，动作脚本编辑器将显示该变量的代码提示。例如，假设您键入以下内容：

import mx.controls.CheckBox;
var myCheckBox:CheckBox;
myCheckBox.

您键入句点后，Flash 立即显示一列可供 CheckBox 组件使用的方法和属性，因为您是将该变量作为 CheckBox 键入的。有关数据键入的详细信息，请参阅严格数据类型指定。有关在出现代码提示时如何使用它们的信息，请参阅使用代码提示。


组件事件

所有组件都有事件，在用户与组件进行交互操作或组件中发生重要事情时，即会广播这些事件。要处理事件，请编写在触发事件时执行的“动作脚本”代码。

您可以通过以下方式来处理组件事件：

  • 使用 on() 组件事件处理函数。
  • 使用事件侦听器。


使用 on() 事件处理函数

处理组件事件最简单的方式是使用 on() 组件事件处理函数。您可以将 on() 事件处理函数分配给组件实例，就像将处理函数分配给按钮或影片剪辑一样。

当您使用 on() 事件处理函数时，将会在触发事件并将其传递到处理函数时自动生成事件对象 eventObj。该事件对象的属性包含有关事件的信息。传递到 on() 处理函数的事件对象始终是 eventObj。有关详细信息，请参阅UIEventDispatcher。

附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 Button 组件实例 myButtonComponent，它将“_level0.myButtonComponent”发送到“输出”面板：

on(click){
  trace(this);
}

要使用 on() 事件处理函数：

  1. 将 CheckBox 组件从“组件”面板拖到舞台中。
  2. 选择该组件，然后选择“窗口”>“动作”。
  3. 在“动作”面板中，输入以下代码：
    on(click){
  trace("The " + eventObj.type + " event was broadcast");
}

    您可以在大括号 ({}) 之间输入所需的任何代码。

  4. 选择“控制”>“测试影片”，然后在“输出”面板中选择要查看跟踪的复选框。

    有关详细信息，请参阅组件字典中的每个事件条目。


使用组件事件侦听器

处理组件事件最强大的方式是使用侦听器。事件由组件进行广播，作为侦听器注册到事件广播器（组件实例）的任何对象都会收到该事件的通知。给侦听器分配一个处理事件的函数。您可以向一个组件实例注册多个侦听器。您也可以向多个组件实例注册一个侦听器。

要使用事件侦听器模型，请创建一个侦听器对象，该对象所带的属性应为事件的名称。给该属性分配一个回调函数。接着，对广播事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，并将事件的名称和侦听器对象的名称传递给它。调用 UIEventDispatcher.addEventListener() 方法称为“注册”或“订阅”侦听器，如下所示：

listenerObject.eventName = function(evtObj){
  // 此处是您的代码
};
componentInstance.addEventListener("eventName", listenerObject);

在上面的代码中，如果在回调函数中使用关键字 this，则该关键字的作用范围是 listenerObject。

evtObj 参数是在触发事件并将其传递到侦听器对象回调函数时自动生成的事件对象。该事件对象的属性包含有关事件的信息。有关详细信息，请参阅UIEventDispatcher。

有关组件所广播事件的信息，请参阅组件字典中的每个组件条目。

要注册事件侦听器，请执行以下操作：

  1. 将 Button 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 button。
  3. 将 TextInput 组件从“组件”面板拖到舞台上。
  4. 在属性检查器中，输入实例名称 myText。
  5. 在时间轴中选择第 1 帧。
  6. 选择“窗口”>“动作”。
  7. 在“动作”面板中，输入以下代码：
    form = new Object();
form.click = function(evt){
  myText.text = evt.target;
}
button.addEventListener("click", form);

    事件对象的 target 属性是对广播事件的实例的引用。此代码在文本输入字段显示 target 属性的值。


其他事件语法

除了使用侦听器对象外，您还可以将函数用作侦听器。如果侦听器不属于对象，它就是函数。例如，以下代码创建侦听器函数 myHandler 并将它注册到 buttonInstance：

function myHandler(eventObj){
  if (eventObj.type == "click"){
    // your code here
  }
}
buttonInstance.addEventListener("click", myHandler);

注意：在函数侦听器中，this 关键字是指 buttonInstance，不是指定义函数的时间轴。

您也可以使用支持 handleEvent 方法的侦听器对象。不论事件的名称是什么，都会调用侦听器对象的 handleEvent 方法。您必须使用 if else 或 switch 语句来处理多个事件，因此，该语法不够灵活。例如，以下代码使用 if else 语句处理 click 和 enter 事件：

myObj.handleEvent = function(o){
  if (o.type == "click"){
    // your code here
  } else if (o.type == "enter"){
    // your code here
  }
}
target.addEventListener("click", myObj);
target2.addEventListener("enter", myObj);

另外还有一种事件语法样式，只有在创作组件并且知道某个特定对象是事件的唯一侦听器时，才应使用该事件语法样式。在这种情况下，您可以利用 V2 事件模型的一个特点，那就是它始终在事件名称加“Handler”的组件实例上调用方法。例如，如果要处理 click 事件，应编写以下代码：

componentInstance.clickHandler = function(o){
  // insert your code here
}

在上面的代码中，如果在回调函数中使用关键字 this，则该关键字的作用范围是 componentInstance。

有关详细信息，请参阅创建组件。


创建自定义焦点导航

当用户按 Tab 键在 Flash 应用程序中导航时，或在应用程序中单击时，FocusManager 类 会确定接收焦点的组件。您不必在应用程序中添加 FocusManager 实例，也不必编写任何代码来激活 FocusManager。

如果 RadioButton 对象接收焦点，FocusManager 将检查该对象和具有相同groupName 值的所有对象，然后将焦点设置在 selected 属性设为 true 的对象上。

每个模式 Window 组件都包含一个 FocusManager 的实例，以便该窗口上的控件形成它们自己的 Tab 键组，这样可以避免用户无意中按 Tab 键切换到其他窗口中的组件。

要在应用程序中创建焦点导航，请在应该接收焦点的所有组件（包括按钮）上设置 tabIndex 属性。当用户按 Tab 键时，FocusManager 类 查找 tabIndex 属性值高于当前 tabIndex 值的已启用对象。FocusManager 类 达到最高的 tabIndex 属性值后，会回到零。例如，在下面的范例中，comment 对象（可能为 TextArea 组件）首先接收焦点，然后 okButton 对象接收焦点：

comment.tabIndex = 1;
okButton.tabIndex = 2;

您还可以使用“辅助功能”面板来分配 Tab 键索引值。

如果舞台上没有任何对象具有 Tab 键索引值，则 FocusManager 使用 Z 顺序。Z 顺序最初按组件拖到舞台上的顺序设置；不过，您也可以使用“修改”/“排列”/“移至顶层”或“移至底层”命令来确定最终的 Z 顺序。

要将焦点指定给应用程序中的组件，请调用 FocusManager.setFocus()。

要创建在用户按 Enter 键 (Windows) 或 Return 键 (Macintosh) 时接收焦点的按钮，请将 FocusManager.defaultPushButton 属性设为所需按钮的实例名称，如下所示：

FocusManager.defaultPushButton = okButton;

FocusManager 类会覆盖默认的 Flash Player 焦点矩形，并绘制带圆角的自定义焦点矩形。


管理文档中的组件深度

如果要在应用程序中将某个组件放在另一个对象的上方或下方，必须使用 DepthManager 类。DepthManager 应用程序编程接口 (API) 使您可以按照相应的 Z 顺序来放置用户界面组件（例如，组合框在其他组件的前面下拉、插入点在所有内容的前面显示、对话窗口浮于内容上方，等等）。

DepthManager 有两个主要用途：管理任何文档内的相对深度分配，管理根时间轴上为系统级别服务（例如，光标和工具提示）保留的深度。

要使用 DepthManager，请调用其方法（请参阅DepthManager 类）。

下面的代码将组件实例 loader 放在 button 组件下：

loader.setDepthBelow(button);


关于对组件使用预加载器

默认情况下组件设置为“在第一帧导出”。这导致组件在应用程序的第一帧呈现之前加载。如果您需要为应用程序创建预加载器，则应为库中的任何编译剪辑元件取消选中“在第一帧导出”。

注意： 如果您使用 ProgressBar 组件来显示加载进度，则对于 ProgressBar，请保留“在第一帧导出”为选中状态。


将第 1 版组件升级到第 2 版结构

第 2 版组件在编写时符合多种 Web 标准（与事件、样式、getter/setter 策略等等有关的标准），它们与 Macromedia Flash MX 中以及在 Macromedia Flash MX 2004 之前发布的 DRK 中的第 1 版组件相比，有很大不同。第 2 版组件具有不同的 API，而且是用动作脚本 2 编写的。因此，在应用程序中同时使用第 1 版组件和第 2 版组件可能会导致不可预料的情况。有关升级第 1 版组件以使用第 2 版的事件处理、样式和 getter/setter 来访问属性（而不是方法）的信息，请参阅创建组件。

包含第 1 版组件的 Flash 应用程序如果是为 Flash Player 6 或 Flash Player 6 版本 65 发布的，则在 Flash Player 6 和 Flash Player 7 中可以正常工作；如果您希望更新应用程序，以便在为 Flash Player 7 发布时也能工作，则必须转换代码以使用精确数据键入功能。有关详细信息，请参阅《动作脚本参考指南》帮助中的使用动作脚本 2.0 创建类。


自定义组件概述

在不同的应用程序中使用组件时，您可能需要更改组件的外观。在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中完成这一任务有三种方法：

  • 使用样式 API。
  • 应用主题。
  • 修改或替换组件的外观。

“样式 API”（应用程序编程接口）具有一些方法和属性，您可以使用这些方法和属性来更改组件的颜色和文本格式。

主题是组成组件外表的样式和外观的集合。

外观是用来显示组件的元件。设置外观是通过修改或替换组件的源图形来更改组件外观的过程。外观可以是一小部分（例如，边框的边缘或角），也可以是合成的部分（例如，呈弹起（尚未被按下）状态的按钮的整幅图片）。外观还可以是不带图形的元件，它包含绘制一部分组件的代码。


使用样式

每个组件实例都有样式属性和 setStyle() 及 getStyle()（请参阅 UIObject.setStyle() 和 UIObject.getStyle()）方法，您可以使用这些方法来修改和访问样式属性。您可以使用样式通过以下方法来自定义组件：

  • 在组件实例上设置样式。

    您可以更改一个组件实例的颜色和文本属性。这种方式在有些情况下是有效的，但是，如果您需要在文档中设置所有组件上的各项属性，这种方式就会很耗时。

  • 使用 _global 样式声明，该样式声明为文档中的所有组件设置样式。

    如果要对整个文档应用一致的外观，可以在 _global 样式声明上创建样式。

  • 创建自定义样式声明，并将它们应用到特定的组件实例。

    您可能还要让文档中成组的组件共享样式。为此，可创建应用到特定组件的自定义样式声明。

  • 创建默认的类样式声明。

    您还可以定义默认的类样式声明，以使类的每个实例共享一个默认外观。

在使用“实时预览”功能查看舞台上的组件时，对样式属性所做的更改并不会显示出来。有关详细信息，请参阅“实时预览”中的组件。


在组件实例上设置样式

您可以编写动作脚本代码，在任何组件实例上设置和获取样式属性。UIObject.setStyle() 和 UIObject.getStyle() 方法均可从任何组件直接调用。例如，以下代码在称为 myButton 的 Button 实例上设置文本颜色：

myButton.setStyle("color", "0xFF00FF");

虽然可以通过属性（例如，myButton.Color = 0xFF00FF）直接访问样式，但最好使用 setStyle() 和 getStyle() 方法，以便样式可以正常工作。有关详细信息，请参阅设置样式属性值。

注意：不应通过多次调用 UIObject.setStyle() 方法来设置多个属性。如果想更改多个属性，或更改多个组件实例的属性，应创建自定义样式格式。有关详细信息，请参阅为特定组件设置样式。

设置或更改单个组件实例的属性：

  1. 在舞台上选择组件实例。
  2. 在“属性检查器”中，为其指定实例名称 myComp。
  3. 打开“动作”面板并选择“场景 1”，然后选择“第 1 层：第 1 帧”。
  4. 输入以下代码，将实例更改为蓝色：
    myComp.setStyle("themeColor", "haloBlue");

    以下语法为组件实例指定属性和值：

    instanceName.setStyle("property", value);
  5. 选择“控制”>“测试影片”，查看所做的更改。

    有关支持样式的列表，请参阅支持的样式。


设置全局样式

_global 样式声明分配给用第 2 版 Macromedia 组件结构（v2 组件）构建的所有 Flash 组件。_global 对象具有称为 style (_global.style) 的属性，该属性是 CSSStyleDeclaration 的实例。该 style 属性起着 _global 样式声明的作用。如果在 _global 样式声明中更改属性的值，该更改将应用到 Flash 文档中的所有组件。

一些样式是在组件类的 CSSStyleDeclaration 上设置的（例如，TextArea 和 TextInput 组件的 backgroundColor 样式）。因为在确定样式值时类样式声明优先于 _global 样式声明，所以在 _global 样式声明上设置 backgroundColor 对 TextArea 和 TextInput 没有影响。有关详细信息，请参阅在同一个文档中使用全局、自定义和类样式。

更改全局样式声明中的一个或多个属性：

  1. 确保该文档包含至少一个组件实例。

    有关详细信息，请参阅向 Flash 文档中添加组件。

  2. 在时间轴中创建一个新层，并为该层指定一个名称。
  3. 在出现组件（或出现组件之前）的新层上选择帧。
  4. 打开“动作”面板。
  5. 使用以下语法更改 _global 样式声明上的任何属性。只需列出要更改其值的属性，如下所示：
    _global.style.setStyle("color", 0xCC6699);
_global.style.setStyle("themeColor", "haloBlue")
_global.style.setStyle("fontSize",16);
_global.style.setStyle("fontFamily" , "_serif");

    有关样式列表，请参阅支持的样式。

  6. 选择“控制”>“测试影片”，查看所做的更改。


为特定组件设置样式

您可以创建自定义样式声明，从而为 Flash 文档中的特定组件指定一组独特的属性。首先，创建 CSSStyleDeclaration 对象的新实例，创建自定义样式名称并将其放置在 _global.styles 列表上 (_global.styles.newStyle)，然后为样式指定属性和值，再将该样式分配给实例。如果您在舞台上已经至少放置了一个组件实例，CSSStyleDeclaration 对象就能够被访问了。

您可以对自定义样式格式进行更改，方法和编辑 _global 样式声明中的属性的方法相同。只是使用 CSSStyleDeclaration 实例，而不是使用 _global 样式声明名称。有关 _global 样式声明的详细信息，请参阅设置全局样式。

有关 CSSStyleDeclaration 对象属性的信息，请参阅支持的样式。有关每个组件所支持样式的列表，请参阅组件字典中的各个组件条目。

为特定组件创建自定义样式声明：

  1. 确保该文档包含至少一个组件实例。

    有关详细信息，请参阅向 Flash 文档中添加组件。

    此范例使用三个按钮组件，实例名称分别为 a、b 和 c。如果使用不同组件，请在“属性检查器”中为它们指定实例名称，并在第 9 步使用这些实例名称。

  2. 在时间轴中创建一个新层，并为该层指定一个名称。
  3. 在出现组件（或出现组件之前）的新层上选择帧。
  4. 在专家模式下打开“动作”面板。
  5. 使用以下语法创建 CSSStyleDeclaration 对象的一个实例，以定义新的自定义样式格式：
    var styleObj = new mx.styles.CSSStyleDeclaration;
  6. 设置样式声明的 styleName 属性，为该样式命名：
    styleObj.styleName = "newStyle";
  7. 将该样式放置在全局样式表上：
    _global.styles.newStyle = styleObj;

    注意：您也可以使用以下语法来创建 CSSStyleDeclaration 对象并将它分配给新样式声明：

    var styleObj = _global.styles.newStyle = new mx.styles.CSSStyleDeclaration();
  8. 使用以下语法指定要为 myStyle 样式声明定义的属性：
    styleObj.fontFamily = "_sans";
styleObj.fontSize = 14;
styleObj.fontWeight = "bold";
styleObj.textDecoration = "underline";
styleObj.color = 0x336699;
styleObj.setStyle("themeColor", "haloBlue");
  9. 在同一个“脚本”窗格中，使用以下语法将两个特定组件的 styleName 属性设置为自定义样式声明：
    a.setStyle("styleName", "newStyle");
b.setStyle("styleName", "newStyle");

您也可以使用 setStyle() 和 getStyle() 方法访问自定义样式声明上的样式。以下代码设置 newStyle 样式声明上的 backgroundColor 样式：

_global.styles.newStyle.setStyle("backgroundColor", "0xFFCCFF");


为组件类设置样式

您可以为组件（Button、CheckBox，等等）的任何类定义类样式声明，该样式声明设置该类每个实例的默认样式。创建实例之前，必须先创建样式声明。诸如 TextArea 和 TextInput 之类的一些组件默认情况下预定义了类样式声明，因为必须自定义它们的 borderStyle 和 backgroundColor 属性。

以下代码创建 CheckBox 的类样式声明，并将复选框颜色设为蓝色：

var o = _global.styles.CheckBox = new mx.styles.CSSStyleDeclaration();
o.color = 0x0000FF;

您也可以使用 setStyle() 和 getStyle() 方法访问类样式声明上的样式。以下代码设置 RadioButton 样式声明上的颜色样式：

_global.styles.RadioButton.setStyle("color", "blue");

有关所支持样式的详细信息，请参阅支持的样式。


在同一个文档中使用全局、自定义和类样式

如果只在文档中的一个位置定义样式，Flash 将在需要知道属性值时使用该定义。然而，一个 Flash 文档可能同时具有 _global 样式声明、自定义样式声明、直接在组件实例上设置的样式属性，以及默认类样式声明。在此情况下，Flash 按照特定顺序查找所有这些位置的属性定义，以此来确定属性的值。

首先，Flash 查找组件实例上的样式属性。如果实例上没有直接设置样式，Flash 将查看实例的 styleName 属性，确定是否向它分配了样式声明。

如果 styleName 属性未分配给样式声明，Flash 将查找默认类样式声明上的属性。如果没有类样式声明，并且属性没有继承它的值，则将检查 _global 样式声明。如果属性未在 _global 样式声明中定义，则该属性为 undefined。

如果没有类样式声明，但属性确实继承了它的值，Flash 将查找该实例父级上的属性。如果属性未在父实例上定义，Flash 将检查父实例的 styleName 属性；如果未定义该属性，Flash 将继续查看父实例，直到达到 _global 级别。如果属性未在 _global 样式声明中定义，则该属性为 undefined。

StyleManager 向 Flash 告知样式是否继承了它的值。有关详细信息，请参阅StyleManager 类。

注意：不支持 CSS "inherit" 值。


关于颜色样式属性

颜色样式属性与非颜色样式属性的行为方式不同。所有颜色样式属性的名称都以“Color”结尾，例如 backgroundColor、disabledColor 和 color。更改颜色样式属性时，实例和所有相应子实例中的颜色会立即更改。所有其他样式属性更改只将对象标记为需要重绘，而实际的更改会在下一帧中生效。

颜色样式属性的值可以是数字、字符串或对象。如果该值是数字，它以十六进制数字 (0xRRGGBB) 的形式表示颜色的 RGB 值。如果该值是字符串，它必须为颜色名称。

颜色名称是映射到常用颜色的字符串。您可以使用 StyleManager（请参阅StyleManager 类）来添加新颜色名称。下表列出默认颜色名称：

颜色名称 | 值
black（黑色） | 0x000000
white（白色） | 0xFFFFFF
red（红色） | 0xFF0000
green（绿色） | 0x00FF00
blue（蓝色） | 0x0000FF
magenta（洋红色） | 0xFF00FF
yellow（黄色） | 0xFFFF00
cyan（青色） | 0x00FFFF

注意：如果不定义颜色名称，可能无法正确绘制组件。

您可以使用任何合法的动作脚本标识符来创建自己的颜色名称（例如 "WindowText" 或 "ButtonText"）。请使用 StyleManager 定义新颜色，如下所示：

mx.styles.StyleManager.registerColorName("special_blue", 0x0066ff);

大多数组件无法将对象处理为颜色样式属性值。然而，某些组件可以处理表示渐变或其他颜色组合的颜色对象。有关详细信息，请参阅组件字典中每个组件条目的“使用样式”部分。

您可以使用类样式声明和颜色名称来方便地控制屏幕上的文本和元件的颜色。例如，如果要提供与 Microsoft Windows 类似的显示配置屏幕，可以定义 ButtonText 和 WindowText 等颜色名称，以及 Button、CheckBox 和 Window 等类样式声明。通过将样式声明中的颜色样式属性设置为 ButtonText 和 WindowText，并为用户提供可用于更改 ButtonText 和 WindowText 值的用户界面，由此即可提供与 Micosoft Windows、Mac OS 或任何操作系统相同的颜色方案。


设置样式属性值

请使用 UIObject.setStyle() 方法在组件实例、全局样式声明、自定义样式声明或类样式声明上设置样式属性。以下代码将单选按钮实例的 color 样式设为红色：

myRadioButton.setStyle("color", "red");

以下代码设置自定义样式声明 CheckBox 的 color 样式：

_global.styles.CheckBox.setStyle("color", "white");

UIObject.setStyle() 方法可以识别样式是否为继承样式，并在该实例的子实例样式更改时，向它们发出通知。它也会通知组件实例：必须重绘自身以反映新样式。因此，应该使用 setStyle() 来设置或更改样式。然而，作为创建样式声明时的一项优化功能，您可以直接在对象上设置属性。有关详细信息，请参阅设置全局样式、为特定组件设置样式 和 为组件类设置样式。

请使用 UIObject.getStyle() 方法从组件实例、全局样式声明、自定义样式声明或类样式声明检索样式。以下代码获取颜色属性的值并将它赋予变量 o：

var o = myRadioButton.getStyle("color");

以下代码获取 _global 样式声明中定义的样式属性的值：

var r = _global.style.getValue("marginRight");

如果未定义样式，getStyle() 可能返回 undefined 值。然而，getStyle() 了解样式属性的继承方式。因此，即使样式为属性，您也应使用 UIObject.getStyle() 来访问样式，这样就不必知道它是否为继承样式。

有关详细信息，请参阅 UIObject.getStyle() 和 UIObject.setStyle()。


支持的样式

Flash MX 2004 和 Flash MX Professional 2004 带有两个主题：光晕 (HaloTheme.fla) 和 范例 (SampleTheme.fla)。每个主题支持一组不同的样式。“范例”主题使用第 2 版样式机制的所有样式，旨在向您提供这些样式在文档中的范例。“光晕”主题支持“范例”主题样式的一个子集。

“范例”样式中的大多数第二版组件都支持以下样式属性。有关各组件支持哪些“光晕”样式的信息，请参阅组件字典。

如果输入值不是任何允许值，则将使用默认值。在重用 CSS 样式声明，而该样式声明使用值的 Macromedia 子集以外的其他值时，这一点很重要。

组件支持以下样式：

样式 | 描述
backgroundColor | 组件的背景。这是唯一不继承样式值的颜色样式。默认值为透明。
borderColor | 三维边框的黑色部分或二维边框的彩色部分。默认值为 0x000000（黑色）。
borderStyle | 组件边框：可以是“none”、“inset”、“outset”或“solid”。此样式不继承其值。默认值为“solid”。
buttonColor | 按钮的表面和三维边框的一部分。默认值为 0xEFEEEF（浅灰）。
color | 组件标签的文本。默认值为 0x000000（黑色）。
disabledColor | 禁用的文本颜色。默认值为 0x848384（深灰）。
fontFamily | 文本的字体名称。默认值为 _sans。
fontSize | 字体的磅值。默认值为 10。
fontStyle | 字体样式：可以是“normal”或“italic”。默认值为“normal”。
fontWeight | 字体粗细：可以是“normal”或“bold”。默认值为“normal”。
highlightColor | 三维边框的一部分。默认值为 0xFFFFFF（白色）。
marginLeft | 表示文本左边距的数字。默认值为 0。
marginRight | 表示文本右边距的数字。默认值为 0。
scrollTrackColor | 滚动条的滚动滑轨。默认值为 0xEFEEEF（浅灰）。
shadowColor | 三维边框的一部分。默认值为 0x848384（深灰）。
symbolBackgroundColor | 复选框和单选按钮的背景色。默认值为 0xFFFFFF（白色）。
symbolBackgroundDisabledColor | 复选框和单选按钮在禁用时的背景色。默认值为 0xEFEEEF（浅灰）。
symbolBackgroundPressedColor | 复选框和单选按钮在按下时的背景色。默认值为 0xFFFFFF（白色）。
symbolColor | 复选框的复选标记或单选按钮的点。默认值为 0x000000（黑色）。
symbolDisabledColor | 被禁用的复选标记或单选按钮点的颜色。默认值为 0x848384（深灰）。
textAlign | 文本对齐方式：可以是“left”、“right”或“center”。默认值为“left”。
textDecoration | 文本修饰：可以是“none”或“underline”。默认值为“none”。
textIndent | 表示文本缩进的数字。默认值为 0。


主题

主题是样式和外观的集合。Flash MX 2004 和 Flash MX Professional 2004 的默认主题称为“光晕”(HaloTheme.fla)。“光晕”主题旨在使您能够为用户提供极富表现力的互动式体验。Flash MX 2004 和 Flash MX Professional 2004 还带有一个称为“范例”(SampleTheme.fla) 的主题。使用“范例”主题，您可以试验可用于第 2 版组件的全套样式。（“光晕”主题只使用可用样式的一个子集。） 主题文件位于以下文件夹中：

  • First Run\ComponentFLA (Windows)
  • First Run/ComponentFLA (Macintosh)

您可以创建新主题并将它们应用到应用程序，以便更改所有组件的外观和行为。例如，您可以创建二维主题和三维主题。

第 2 版组件使用外观（图形或影片剪辑元件）来显示它们的可视外观。定义每个组件的 .as 文件包含为该组件加载特定外观的代码。通过复制“光晕”或“范例”主题，以及修改外观中的图形，您可以很方便地创建新主题。

主题中也可以包含一组新样式。必须通过编写动作脚本代码来创建全局样式声明和任何其他样式声明。有关详细信息，请参阅使用样式自定义组件的颜色和文本。


将主题应用到文档

若要将新主题应用到文档，请打开某主题 FLA 作为外部库，并将主题文件夹从外部库拖到文档库中。以下步骤详细解释了该过程。

将主题应用到文档：

  1. 选择“文件”>“打开”，在 Flash 中打开使用第 2 版组件的文档，或选择“文件”>“新建”，创建使用第 2 版组件的新文档。
  2. 选择“文件”>“保存”，并为其选择诸如 ThemeApply.fla 的唯一名称。
  3. 选择“文件”>“导入”>“打开外部库”，然后选择要应用到文档的主题的 FLA 文件。

    如果尚未创建新主题，则可以使用“范例”主题，该主题位于 Flash 2004/en/Configuration/SampleFLA 文件夹下。

  4. 在主题的“库”面板中，选择“Flash UI 组件 2”>“主题”>“MMDefault”，然后将文档中所有组件的 Assets 文件夹拖到 ThemeApply.fla 库中。

    如果不确定文档中有哪些组件，可以将整个 Themes 文件夹拖到舞台上。库中 Themes 文件夹内的外观自动分配到文档中的组件。

    注意：舞台上的组件“实时预览”不会反映新主题。

  5. 选择“控制”>“测试影片”，查看应用新主题的文档。


创建新主题

如果您不想使用“光晕”主题或“范例”主题，可以对它们中的一个进行修改，以创建新主题。

主题中的某些外观具有固定大小。您可以增加或减小它们的大小，组件会自动调整大小来与它们匹配。其他外观由多个片段组成，一些为静态，另一些可以伸展。

某些外观（例如 RectBorder 和 ButtonSkin）使用动作脚本绘制 API 来绘制它们的图形，因为就大小和性能而言，这种方式更有效率。您可以将这些外观中的动作脚本代码用作模板，按需要调整外观。

创建新主题：

  1. 选择要用作模板的主题 FLA 文件，然后复制该文件。

    为副本指定唯一名称，例如 MyTheme.fla。

  2. 选择“文件”>“在 Flash 中打开 MyTheme.fla”。
  3. 如果尚未打开库，请选择“窗口”>“库”将其打开。
  4. 双击要修改的任何外观元件，在编辑元件模式下打开元件。

    外观位于 Themes > MMDefault > 组件 Assets 文件夹下（在本例中为 Themes > MMDefault > RadioButton Assets）。

  5. 修改元件或删除图形，然后创建新图形。

    您可能需要选择“视图”>“放大”来增加缩放比例。您在编辑外观时，必须您可以注册点，以便使外观能够正确显示。所有被编辑元件的左上角必须位于 (0,0)。

  6. 当编辑完该外观元件之后，单击舞台顶部信息栏左侧的“返回”按钮，返回到文档编辑模式。
  7. 重复执行第 4 步至第 6 步，直到编辑完所有要更改的外观。
  8. 执行前一节将主题应用到文档中的步骤，将 MyTheme.fla 应用到文档。


外观组件

外观是组件用来显示其外表的元件。外观可以是图形元件，也可以是影片剪辑元件。大多数外观包含表示组件外表的形状。某些外观只包含在文档中绘制组件的动作脚本代码。

Macromedia 第 2 版组件是编译剪辑，您在库中看不到它们的资源。然而，Flash 中安装的 FLA 文件包含所有组件外观。这些 FLA 文件称为主题。每个主题具有不同的外观和行为，但其中所含的外观具有相同的元件名称和链接标识符。这样，您就可以将主题拖到文档中的舞台上，以此来更改它的外观。有关主题的详细信息，请参阅关于主题。您还可以使用主题 FLA 文件来编辑组件外观。外观位于每个主题 FLA 的“库”面板中的 Themes 文件夹中。

每个组件由许多外观组成。例如，ScrollBar 子组件的向下箭头由三个外观组成：ScrollDownArrowDisabled、ScrollDownArrowUp 和 ScrollDownArrowDown。一些组件彼此共享外观。使用滚动条的组件（包括 ComboBox、List 和 ScrollPane）共享 ScrollBar Skins 文件夹中的外观。您可以通过编辑现有外观和创建新外观来更改组件的外表。

定义每个组件类的 .as 文件包含了加载组件的特定外观的代码。每个组件外观都有外观属性，系统为这些外观属性指定了外观元件的“链接标识符”。例如，ScrollBar 向下箭头的按（下）状态具有外观属性名称 downArrowDownName。downArrowDownName 属性的默认值为“ScrollDownArrowDown”，它是外观元件的“链接标识符”。您可以使用这些外观属性来编辑外观并将它们应用到组件。不必通过编辑组件的 .as 文件来更改其外观属性，您可以在文档中创建组件时，将外观属性值传递到组件的构造函数。

根据您要执行的操作，选择以下一种方法来为组件设置外观：

  • 要用一组新外观替换文档中的所有外观（每一类组件共享相同的外观），可应用主题（请参阅关于主题）。

    注意：建议初学者使用这种外观设置方法，因为它不需要撰写任何脚本。

  • 要为同一组件的多个实例使用不同的外观，可编辑现有的外观，然后设置外观属性（请参阅下一节，编辑组件外观和将经过编辑的外观应用到组件）。
  • 要更改子组件中的外观（例如，List 组件中的滚动条），可将该组件分成子类（请参阅将经过编辑的外观应用到子组件）。
  • 要更改无法从主组件直接访问的子组件（例如 ComboBox 组件中的 List 组件）的外观，请替换原型中的外观属性（请参阅在原型中更改外观属性）。

注意：上述方法按易用程度从上到下列出。


编辑组件外观

如果要为组件的某个实例使用某个特定外观，而为该组件的另一个实例使用另一种外观，必须打开“主题 FLA”文件并创建新主题元件。组件的设计便于您为不同实例使用不同外观。

要编辑外观，请执行以下操作：

  1. 选择“文件”>“打开”，打开要用作模板的“主题 FLA”文件。
  2. 选择“文件”>“另存为”，然后选择唯一名称，例如 MyTheme.fla。
  3. 选择要编辑的外观（在本例中，为 RadioTrueUp）。

    外观位于 Themes > MMDefault > 组件 Assets 文件夹中（在本例中，为 Themes > MMDefault > RadioButton Assets > States）。

  4. 从“库选项”菜单选择“重制”（或右键单击元件），然后为元件指定诸如 MyRadioTrueUp 的唯一名称。
  5. 在“元件属性”对话框中选择“高级”按钮，然后选择“为动作脚本导出”。

    自动输入与元件名称匹配的“链接标识符”。

  6. 双击库中的新外观，在元件编辑模式下打开该外观。
  7. 修改该影片剪辑，或删除它然后创建一个新影片剪辑。

    您可能需要选择“视图”>“放大”来增加缩放比例。您在编辑外观时，必须您可以注册点，以便使外观能够正确显示。所有被编辑元件的左上角必须位于 (0,0)。

  8. 当编辑完该外观元件之后，单击舞台顶部信息栏左侧的“返回”按钮，返回到文档编辑模式。
  9. 选择“文件”>“保存”，但不关闭 MyTheme.fla。现在必须创建新文档，在新文档中将经过编辑的外观应用到组件。

    有关详细信息，请参阅下一节，将经过编辑的外观应用到组件、将经过编辑的外观应用到子组件或在原型中更改外观属性。有关如何应用新外观的信息，请参阅关于设置组件外观。

注意：当使用“实时预览”功能在舞台上查看组件时，看不到对组件外观的更改。


将经过编辑的外观应用到组件

编辑完外观后，必须将它应用到文档中的组件。您可以使用 createClassObject() 方法动态创建组件实例，也可以将组件实例手动放置在舞台上。根据您给文档添加组件的方式不同，将外观应用到组件实例的方式有两种。

要动态创建组件并应用经过编辑的外观，请执行以下操作：

  1. 选择“文件”>“新建”，创建新的 Flash 文档。
  2. 选择“文件”>“保存”，并为其指定诸如 DynamicSkinning.fla 的唯一名称。
  3. 将任意组件从“组件”面板拖到舞台上（包括您编辑了其外观的组件，此例中为 RadioButton），然后删除它们。

    该操作会将元件添加到文档的库中，但并不会在文档中显示它们。

  4. 将 MyRadioTrueUp 和自定义的任何其他元件从 MyTheme.fla 拖到 DynamicSkinning.fla 的舞台上，然后删除它们。

    该操作会将元件添加到文档的库中，但并不会在文档中显示它们。

  5. 打开“动作”面板，然后在第 1 帧中输入以下代码：
    import mx.controls.RadioButton
createClassObject(RadioButton, "myRadio", 0, {trueUpIcon:"MyRadioTrueUp", label:"My Radio Button"});
  6. 选择“控制”>“测试影片”。

要将组件手动添加到舞台并应用经过编辑的外观，请执行以下操作：

  1. 选择“文件”>“新建”，创建新的 Flash 文档。
  2. 选择“文件”>“保存”，并为其指定诸如 ManualSkinning.fla 的唯一名称。
  3. 将组件从“组件”面板拖到舞台上（包括您编辑了其外观的组件，此例中为 RadioButton）。
  4. 将 MyRadioTrueUp 和自定义的任何其他元件从 MyTheme.fla 拖到 ManualSkinning.fla 的舞台上，然后删除它们。

    该操作会将元件添加到文档的库中，但并不会在文档中显示它们。

  5. 选择舞台上的 RadioButton 组件，然后打开“动作”面板。
  6. 将以下代码附加到 RadioButton 实例：
    onClipEvent(initialize){
  trueUpIcon = "MyRadioTrueUp";
}
  7. 选择“控制”>“测试影片”。


将经过编辑的外观应用到子组件

某些情况下，您可能要修改组件中某个子组件的外观，但无法直接访问外观属性（例如，无法直接修改 List 组件中的滚动条外观）。使用以下代码，您可以访问滚动条外观。在运行此代码之后创建的所有滚动条也都会具有新外观。

如果组件中包含子组件，则组件字典的组件条目中会标明这些子组件。

若要将新外观应用到子组件，请执行下列操作：

  1. 执行编辑组件外观中的步骤，但编辑滚动条外观。在此范例中，请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown。
  2. 选择“文件”>“新建”，创建新的 Flash 文档。
  3. 选择“文件”>“保存”，并为其指定诸如 SubcomponentProject.fla 的唯一名称。
  4. 双击“组件”面板中的 List 组件，将它添加到舞台中，然后按 Backspace 键，将它从舞台中删除。

    这样会将该组件添加到“库”面板，但不会在文档中显示该组件。

  5. 将 MyScrollDownArrowDown 和任何编辑过的其他元件从 MyTheme.fla 拖到 SubcomponentProject.fla 的舞台上，然后删除它们。

    这样会将该组件添加到“库”面板，但不会在文档中显示该组件。

  6. 请执行以下操作之一：
    • 如果要更改文档中的所有滚动条，请在时间轴第 1 帧的“动作”面板上输入以下代码：
      import mx.controls.List
import mx.controls.scrollClasses.ScrollBar
ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";

      然后可以在第 1 帧上输入下列代码，以动态创建列表：

      createClassObject(List, "myListBox", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});

      或者，也可以将 List 组件从库拖到舞台上。

    • 如果要更改文档中的特定滚动条，请在时间轴第 1 帧的“动作”面板上输入以下代码：
      import mx.controls.List
import mx.controls.scrollClasses.ScrollBar
var oldName = ScrollBar.prototype.downArrowDownName;
ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
createClassObject(List, "myList1", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});
myList1.redraw(true);
ScrollBar.prototype.downArrowDownName = oldName;

      注意：您必须设置足够多的数据，以便使滚动条显示出来，或者将 vScrollPolicy 属性设置为 true。

  7. 选择“控制”>“测试影片”。

为文档中的所有组件设置子组件外观还有另一种方法：在外观元件 #initclip 部分的该子组件 prototype 对象上设置外观属性。有关原型对象的详细信息，请参阅Function.prototype。

要使用 #initclip 将经过编辑的外观应用到文档中的所有组件，请执行以下操作：

  1. 执行编辑组件外观中的步骤，但编辑滚动条外观。在此范例中，请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown。
  2. 选择“文件”>“新建”，然后创建新的 Flash 文档。使用唯一名称（如 SkinsInitExample.fla）保存该文件。
  3. 从编辑过的主题库范例的库中选择 MyScrollDownArrowDown 元件，将其拖动到 SkinsInitExample.fla 的舞台上，然后删除它。

    此操作将该元件添加到库中，但不在舞台上显示它。

  4. 在 SkinsInitExample.fla 库中选择 MyScrollDownArrowDown，然后从“选项”菜单中选择“链接”。
  5. 选中“为动作脚本导出”复选框。单击“确定”。

    自动选中“在第一帧导出”。

  6. 双击库中的 MyScrollDownArrowDown，在元件编辑模式下将其打开。
  7. 在 MyScrollDownArrowDown 元件的第 1 帧上输入以下代码：
    #initclip 10
  import mx.controls.scrollClasses.ScrollBar;
  ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
#endinitclip
  8. 执行下列操作之一将 List 组件添加到文档中：
    • 将 List 组件从“组件”面板拖到舞台。输入足够多的标签参数，以便垂直滚动条能够显示出来。
    • 将 List 组件从“组件”面板拖到舞台上并将其删除。在 SkinsInitExample.fla 主时间轴第 1 帧上输入下列代码：
      createClassObject(mx.controls.List, "myListBox1", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});

      注意：添加足够多的数据，以便垂直滚动条可以显示出来，或者将 vScrollPolicy 设置为 true。

下面的范例解释如何为舞台上已有的对象设置外观。本范例仅设置 List 的外观，而不设置任何 TextArea 或 ScrollPane 滚动条的外观。

要使用 #initclip 将经过编辑的外观应用到文档中的特定组件，请执行以下操作：

  1. 执行编辑组件外观中的步骤，但编辑滚动条外观。在此范例中，请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown。
  2. 选择“文件”>“新建”，然后创建 Flash 文档。
  3. 选择“文件”>“保存”，并为文件指定诸如 MyVScrollTest.fla 的唯一名称。
  4. 将 MyScrollDownArrowDown 从主题库拖到 MyVScrollTest.fla 库。
  5. 选择“插入”>“新元件”，并为其指定诸如 MyScrollBars 的唯一名称。
  6. 选中“为动作脚本导出”复选框。单击“确定”。

    自动选中“在第一帧导出”。

  7. 在 MyVScrollBar 元件的第 1 帧上输入以下代码：
    #initclip 10
  import MyVScrollBar
  Object.registerClass("VScrollBar", MyVScrollBar);
#endinitclip
  8. 将 List 组件从“组件”面板拖到舞台。
  9. 在属性检查器中，输入足够多的 Label 参数，以便使垂直滚动条显示出来。
  10. 选择“文件”>“保存”。
  11. 选择“文件”>“新建”，然后创建新的动作脚本文件。
  12. 输入以下代码：
    import mx.controls.VScrollBar
import mx.controls.List
class MyVScrollBar extends VScrollBar{
  function init():Void{
    if (_parent instanceof List){
      downArrowDownName = "MyScrollDownArrowDown";
    }
    super.init();
  }
}
  13. 选择“文件”>“保存”，然后将此文件保存为 MyVScrollBar.as。
  14. 单击舞台上的空白区域，然后在属性检查器中，选择“发布设置”按钮。
  15. 选择“动作脚本版本设置”按钮。
  16. 单击加号 (+) 按钮添加新的类路径，然后选择“目标”按钮浏览到 MyComboBox.as 文件在硬盘上的位置。
  17. 选择“控制”>“测试影片”。


在原型中更改外观属性

如果组件不直接支持外观变量，您可以将该组件分成子类并替换其外观。例如，ComboBox 组件不直接支持设置其下拉列表的外观，因为 ComboBox 使用 List 组件作为其下拉列表。

如果组件中包含子组件，则组件字典的组件条目中会标明这些子组件。

要为子组件设置外观，请执行以下操作：

  1. 执行编辑组件外观中的步骤，但编辑滚动条外观。在此范例中，请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown。
  2. 选择“文件”>“新建”，然后创建 Flash 文档。
  3. 选择“文件”>“保存”，并为该文件指定诸如 MyComboTest.fla 的唯一名称。
  4. 将 MyScrollDownArrowDown 从主题库拖到 MyComboTest.fla 的舞台上并删除它。

    此操作将元件添加到库中，但不会在舞台上显示它。

  5. 选择“插入”>“新元件”，并为其指定诸如 MyComboBox 的唯一名称。
  6. 选中“为动作脚本导出”复选框并单击“确定”。

    自动选中“在第一帧导出”。

  7. 在 MyComboBox 第 1 帧动作的“动作”面板上输入以下代码：
    #initclip 10
  import MyComboBox
  Object.registerClass("ComboBox", MyComboBox);
#endinitclip
  8. 将 ComboBox 组件拖动到舞台上。
  9. 在属性检查器中，输入足够多的 Label 参数，以便使垂直滚动条显示出来。
  10. 选择“文件”>“保存”。
  11. 选择“文件”>“新建”，创建新的动作脚本文件（仅限 Flash Professional）。
  12. 输入以下代码：
    import mx.controls.ComboBox
import mx.controls.scrollClasses.ScrollBar
class MyComboBox extends ComboBox{
  function getDropdown():Object{
    var oldName = ScrollBar.prototype.downArrowDownName;
    ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
    var r = super.getDropdown();
    ScrollBar.prototype.downArrowDownName = oldName;
    return r;
  }
}
  13. 选择“文件”>“保存”，然后将此文件保存为 MyComboBox.as。
  14. 单击舞台上的空白区域，然后在属性检查器中，选择“发布设置”按钮。
  15. 选择“动作脚本版本设置”按钮。
  16. 单击加号 (+) 按钮添加新的类路径，然后选择“目标”按钮浏览到 MyComboBox.as 文件在硬盘上的位置。
  17. 选择“控制”>“测试影片”。


组件字典概述

本章介绍了各个组件及其应用程序编程接口 (API) 以供参考。

每个组件描述都包含了有关以下方面的信息：

  • 键盘交互
  • 实时预览
  • 辅助功能
  • 设置组件参数
  • 在应用程序中使用组件
  • 自定义组件的样式和外观
  • “动作脚本”方法、属性和事件

组件是按字母顺序排列的。您也可以在下表中找到按类别排列的组件。


用户界面 (UI) 组件

组件 | 描述
Accordion 组件（仅限 Flash Professional） | 一组垂直的互相重叠的视图，视图顶部有一些按钮，用户利用这些按钮可以在视图之间进行切换。
Alert 组件（仅限 Flash Professional） | 一个窗口，用于给用户提出问题并提供按钮来捕获用户的响应。
Button 组件 | 一个大小可调整的按钮，可使用自定义图标来自定义。
CheckBox 组件 | 允许用户进行布尔型选择（真或假）。
ComboBox 组件 | 允许用户从滚动的选择列表中选择一个选项。该组件可以在列表顶部有一个可选择的文本字段，以允许用户搜索此列表。
DateChooser 组件（仅限 Flash Professional） | 允许用户从日历中选择一个或多个日期。
DateField 组件（仅限 Flash Professional） | 一个不可选择的文本字段，并带有日历图标。当用户在组件边框内的任何位置单击时，就会显示一个 DateChooser 组件。
DataGrid 组件（仅限 Flash Professional） | 允许用户显示和操作多列数据。
Label 组件 | 一个不可编辑的单行文本字段。
List 组件 | 允许用户从滚动列表中选择一个或多个选项。
Loader 组件 | 一个包含已载入的 SWF 或 JPEG 文件的区块。
Menu 组件（仅限 Flash Professional） | 允许用户从列表中选择一个命令；它是一个标准的桌面应用程序菜单。
MenuBar 组件（仅限 Flash Professional） | 水平的菜单栏。
NumericStepper 组件 | 可单击的箭头，单击它们可以增加或减小数字的值。
ProgressBar 组件 | 显示一个过程（通常是加载过程）的进度。
RadioButton 组件 | 允许用户在相互排斥的选项之间进行选择。
ScrollPane 组件 | 使用自动滚动条在有限的区域内显示影片、位图和 SWF 文件。
TextArea 组件 | 一个可随意编辑的多行文本字段。
TextInput 组件 | 一个可以随意编辑的单行文本输入字段。
Tree 组件（仅限 Flash Professional） | 允许用户处理分级信息。
Window 组件 | 一个可拖动的窗口，带有标题栏、题注、边框和“关闭”按钮，用于向用户显示内容。


数据组件

组件 | 描述
数据绑定类（仅限 Flash Professional） | 这些类实现 Flash 的运行时数据绑定功能。
DataHolder 组件（仅限 Flash Professional） | 保存数据，并可用作组件之间的连接器。
DataProvider API | 此组件是数据线性访问列表的模型。这一模型提供简单的用于广播其更改的数组操作功能。
DataSet 组件（仅限 Flash Professional） | 一个构造块，用于创建数据驱动的应用程序。
RDBMSResolver 组件（仅限 Flash Professional） | 用于将数据保存回任何支持的数据源。该解析程序组件对 Web 服务、JavaBean、servlet 或 ASP 页可接收并分析的 XML 进行翻译。
Web 服务类（仅限 Flash Professional） | 这些类使您能够访问 mx.services 包中的使用简单对象访问协议 (SOPAP) 的 Web 服务。
WebServiceConnector 类（仅限 Flash Professional） | 提供对 Web 服务方法调用的无脚本访问。
XMLConnector 组件（仅限 Flash Professional） | 使用 HTTP GET 和 POST 方法来读写 XML 文档。
XUpdateResolver 组件（仅限 Flash Professional） | 用于将数据保存回任何支持的数据源。此解析程序组件将 DeltaPacket 翻译为 XUpdate。


媒体组件

组件 | 描述
MediaController 组件 | 在应用程序中控制媒体流的播放。
MediaDisplay 组件 | 在应用程序中显示媒体流
MediaPlayback 组件 | MediaDisplay 和 MediaController 组件的结合。


管理器

组件 | 描述
DepthManager 类 | 管理对象的堆叠深度。
FocusManager 类 | 处理屏幕上各组件之间的 Tab 键导航。还处理当用户在应用程序中单击时的焦点变化。
PopUpManager 类 | 允许您创建和删除弹出式窗口。
StyleManager 类 | 允许您注册样式和管理继承的样式。


屏幕

组件 | 描述
Form 类（仅限 Flash Professional） | 用于在运行时操作窗体应用程序屏幕。
Screen 类（仅限 Flash Professional） | Slide 和 Form 类的基类
Slide 类（仅限 Flash Professional） | 用于在运行时操作幻灯片演示屏幕。


关于 Accordion 组件（仅限 Flash Professional）

Accordion 组件是包含一系列子项（一次显示一个）的浏览器。子项必须是 UIObject 类的子类（包括使用 Macromedia Component Architecture 第 2 版构建的所有组件和屏幕），但最常见的情况下，子项是 View 类的子类。这包括分配给 mx.core.View 类的影片剪辑。要保持 accordion 的子项的 Tab 键顺序，子项必须同时是 View 类的实例。

Accordion 创建并管理标题按钮，用户可以按这些按钮在 accordion 的子项之间浏览。Accordion 呈纵向布局，其标题按钮横跨整个组件。每个子项均与一个标题关联，而每个标题均从属于 accordion（而不是子项）。当用户单击某个标题时，关联的子项即会显示在该标题下方。过渡到新的子项的过程使用过渡动画。

当带有子项的 accordion 接受焦点时，其标题的外观将发生变化以显示焦点。当用户使用 Tab 键切换到 accordion 中时，选定的标题将显示焦点指示符。不带子项的 Accordion 不会接受焦点。如果在选定子项内单击可接受焦点的组件，焦点将会出现在这些子项上。当 Accordion 实例具有焦点时，您可以使用下列按键对其进行控制：

按键 | 描述
向下箭头，向右箭头 | 将焦点移到下一个子标题。在不更改选定子项的情况下，焦点将从最后一个标题回绕到第一个标题。
向上箭头，向左箭头 | 将焦点移到前一个子标题。在不更改选定子项的情况下，焦点将从第一个标题回绕到最后一个标题。
End 键 | 选择最后一个子项。
Enter 键/空格键 | 选择与具有焦点的标题关联的子项。
Home 键 | 选择第一个子项。
Page Down 键 | 选择下一个子项。选区将从最后一个子项回绕到第一个子项。
Page Up 键 | 选择前一个子项。选区将从第一个子项回绕到最后一个子项。
Shift + Tab | 将焦点移到前一个组件。此组件可以在所选的子项内，也可以在 accordion 外；但它永远不会是同一 accordion 中的其它标题。
Tab 键 | 将焦点移到下一个组件。此组件可以在所选的子项内，也可以在 accordion 外；但它永远不会是同一 accordion 中的其它标题。

无法使用屏幕阅读器来访问 Accordion 组件。


使用 Accordion 组件（仅限 Flash Professional）

Accordion 组件可用于呈现多部分表单。例如，由三个子项组成的 accordion 可以呈现用户在其中填写发运地址、开单地址和付款信息（用于电子商务交易）的表单。使用 accordion（而不是多个网页）可以最大程度地减少服务器通信量，并使用户能够对应用程序中的进度和上下文有一个更好的认识。

Accordion 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 Accordion 组件实例设置的创作参数：

childSymbols 一个数组，指定要用于创建 accordion 子项的库元件的链接标识符。默认值为 []（空数组）。

childNames 一个数组，指定 accordion 子项的实例名称。默认值为 []（空数组）。

childLabels 一个数组，指定要在 accordion 的标题中使用的文本标签。默认值为 []（空数组）。

childIcons 一个数组，指定要用作 accordion 标题中的图标的库元件的链接标识符。默认值为 []（空数组）。

您可以编写动作脚本，以便使用 Accordion 组件的属性、方法和事件来控制该组件的这些和其他选项。有关详细信息，请参阅Accordion 类（仅限 Flash Professional）。

创建具有 Accordion 组件的应用程序

在本例中，应用程序开发人员正在构建在线商店的“结帐”部分。设计要求具有一个包含三个表单的 accordion，用户可在其中输入他们的发运地址、开单地址和付款信息。发运地址和开单地址表单相同。

要使用屏幕将 Accordion 组件添加到应用程序：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 表单应用程序”。
  2. 双击文本“Form1”并输入名称 addressForm。

    尽管 addressForm 屏幕未显示在库中，但它是 Screen 类（View 类的子类）的一个元件，accordion 可使用该元件作为子项。

  3. 在表单处于选定状态的情况下，在属性检查器中将其 visible 属性设置为 false。

    这将在应用程序中隐藏表单的内容；表单只会出现在 Accordion 中。

  4. 将诸如 Label 和 TextInput 等组件从“组件”面板拖到表单上，以便创建一个模拟地址表单；对这些组件进行排列，然后在“组件检查器”面板的“参数”窗格中设置它们的属性。

    将表单元素定位在表单的左上角。表单的左上角位于 Accordion 的左上角中。

  5. 重复步骤 2-4，以便创建一个名为 checkoutForm 的屏幕。
  6. 创建一个名为 accordionForm 的新表单。
  7. 将 Accordion 组件从“组件”面板拖到 accordionForm 表单中，并将其命名为 myAccordion。
  8. 在 myAccordion 处于选定状态的情况下，在属性检查器中执行以下操作：
    • 对于 childSymbols 属性，输入 addressForm、addressForm 和 checkoutForm。

      这些字符串指定用于创建 accordion 子项的屏幕的名称。

      注意：前两个子项是同一屏幕的实例，因为发运地址表单和开单地址表单具有相同的组件。

    • 对于 childNames 属性，输入 shippingAddress、billingAddress 和 checkout。

      这些字符串是该 accordion 的子项的动作脚本名称。

    • 对于 childLabels 属性，输入发运地址、开单地址和结帐。

      这些字符串是 accordion 标题上的文本标签。

  9. 选择“控制”>“测试影片”。

要将 Accordion 组件添加到应用程序，请执行以下操作：

  1. 选择“文件”>“新建”，然后创建新的 Flash 文档。
  2. 选择“插入”>“新元件”，并将其命名为 AddressForm。
  3. 在“创建新元件”对话框中，单击“高级”按钮并选择“为动作脚本导出”。在“AS 2.0 类”字段中，输入 mx.core.View。

    要保持某个 accordion 子项中的 Tab 键顺序，该子项必须同时是 View 类的实例。

  4. 将诸如 Label 和 TextInput 等组件从“组件”面板拖到舞台上，以便创建一个模拟地址表单；对这些组件进行排列，然后在“组件检查器”面板的“参数”窗格中设置它们的属性。

    将表单元素定位在舞台上相对于 0, 0（中心）的位置。影片剪辑的 0, 0 坐标位于 Accordion 的左上角。

  5. 选择“编辑”>“编辑文档”返回到主时间轴。
  6. 重复步骤 2-5，以便创建一个名为 CheckoutForm 的影片剪辑。
  7. 将 Accordion 组件从“组件”面板拖到主时间轴上的舞台上。
  8. 在属性检查器中，执行以下操作：
    • 输入实例名称 myAccordion。
    • 对于 childSymbols 属性，输入 AddressForm、AddressForm 和 CheckoutForm。

      这些字符串指定用于创建 accordion 子项的影片剪辑的名称。

      注意：前两个子项是同一影片剪辑的实例，因为发运地址表单和开单地址表单相同。

    • 对于 childNames 属性，输入 shippingAddress、billingAddress 和 checkout。

      这些字符串是该 accordion 的子项的动作脚本名称。

    • 对于 childLabels 属性，输入发运地址、开单地址和结帐。

      这些字符串是 accordion 标题上的文本标签。

    • 对于 childIcons 属性，输入 AddressIcon、AddressIcon 和 CheckoutIcon。

      这些字符串指定用作 accordion 标题上的图标的影片剪辑元件的链接标识符。如果希望图标出现在标题中，您必须创建这些影片剪辑元件。

  9. 选择“控制”>“测试影片”。

要使用动作脚本将子项添加到 Accordion 组件，请执行以下操作：

  1. 选择“文件”>“新建”，然后创建 Flash 文档。
  2. 将 Accordion 组件从“组件”面板拖到舞台上。
  3. 在属性检查器中，输入实例名称 myAccordion。
  4. 将 TextInput 组件拖到舞台上，然后将其删除。

    此操作会将该组件添加到库中，以便能够在步骤 6 中将其动态地实例化。

  5. 在时间轴第 1 帧的“动作”面板中，输入下列代码：
    myAccordion.createChild("View", "shippingAddress", { label:"Shipping Address" });
myAccordion.createChild("View", "billingAddress", { label:"Billing Address" });
myAccordion.createChild("View", "payment", { label:"Payment" });

    此代码调用 createChild() 方法来创建其子项视图。

  6. 在第 1 帧的“动作”面板中您在步骤 4 中输入的代码的下方，输入以下代码：
    var o = myAccordion.shippingAddress.createChild("TextInput", "firstName");
o.move(20, 38);
o.setSize(116, 20);
o = myAccordion.shippingAddress.createChild("TextInput", "lastName");
o.move(175, 38);
o.setSize(145, 20);

    此代码将组件实例（两个 TextInput 组件）添加到 accordion 的子项。


自定义 Accordion 组件（仅限 Flash Professional）

在创作过程中和运行时，您都可以在水平和垂直方向上使 Accordion 组件变形。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅UIObject.setSize()）。

setSize() 方法和“变形”工具只会更改 accordion 标题的宽度以及其内容区域的宽度和高度。标题的高度以及子项的宽度和高度不受影响。只有调用 setSize() 方法才能更改 accordion 的边框矩形。

如果标题太小而无法包含标签文本，则标签将会被裁剪。如果 accordion 的内容区域比子项小，则子项将会被裁剪。

对 Accordion 组件使用样式

您可以设置样式属性，以便更改 Accordion 组件的边框和背景的外观。

如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

Accordion 组件支持下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
backgroundColor | 背景色。
borderColor | 边框颜色。
borderStyle | 边框的样式；可能的值包括“none”、“solid”、“inset”、“outset”、“default”、“alert”。“default”值是 Window 组件边框的外观，“alert”值是 Alert 组件边框的外观。
headerHeight | 标题按钮的高度（以像素为单位）。
color | 标题的文本颜色。
disabledColor | 禁用 accordion 的颜色。
fontFamily | 标题标签的字体名称。
fontSize | 标题标签字体的磅值。
fontStyle | 标题标签的字体样式；“normal”或“italic”。
fontWeight | 标题标签的字体粗细；“normal”或“bold”。
textDecoration | 文本修饰；“无”或“下划线”。
openDuration | 过渡动画的持续时间（以毫秒为单位）。
openEasing | 动画使用的补间函数。

对 Accordion 组件使用外观

Accordion 组件使用外观来表示其标题按钮的可视状态。要在创作时为按钮和标题栏设置外观，在其中一个主题 FLA 文件的库中修改 Flash UI Components 2/Themes/MMDefault/Accordion Assets skins states 文件夹中的外观元件。有关详细信息，请参阅关于设置组件外观。

Accordion 组件由边框和背景、标题按钮和子项组成。边框和背景可设置样式，但不可设置外观。使用从下列按钮继承的外观的子集，标题可设置外观，但不可设置样式。Accordion 组件使用以下外观属性来动态设置标题按钮的外观：

属性 | 描述 | 默认值
falseUpSkin | 弹起状态。 | accordionHeaderSkin
falseDownSkin | 按下状态。 | accordionHeaderSkin
falseOverSkin | 滑过状态。 | accordionHeaderSkin
trueUpSkin | 切换状态。 | accordionHeaderSkin


Accordion 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > Accordion

动作脚本类名称 mx.containers.Accordion

Accordion 是一种组件，它包含一次显示一个的子项。每个子项都有在创建子项时创建的对应标题按钮。子项必须是 UIObject 的实例。

当影片剪辑元件成为 accordion 的子项时，它将自动成为 UIObject 类的实例。但是，要保持某个 accordion 子项中的 Tab 键顺序，该子项必须同时是 View 类的实例。如果使用某个影片剪辑元件作为子项，请将其“AS 2.0 类”字段设置为 mx.core.View，以使其继承自 View 类。

如果使用动作脚本设置 Accordion 类的属性，则会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.Accordion.version);

注意：下面的代码返回未定义的：trace(myAccordionInstance.version);。

Accordion 类的方法摘要

方法 | 描述
Accordion.createChild()> | 创建 accordion 实例的子项。
Accordion.createSegment()> | 创建 accordion 实例的子项。此方法的参数与 createChild() 方法的参数不同。
Accordion.destroyChildAt()> | 破坏位于指定索引位置的子项。
Accordion.getChildAt()> | 获取对位于指定索引位置的子项的引用。

继承 UIObject、UIComponent 和 mx.core.View 的所有方法。

Accordion 类的属性摘要

属性 | 描述
Accordion.numChildren> | accordion 实例的子项数。
Accordion.selectedChild> | 指向选定子项的引用。
Accordion.selectedIndex> | 选定子项的索引位置。

继承 UIObject、UIComponent 和 mx.core.View 的所有属性。

Accordion 类的事件摘要

事件 | 描述
Accordion.change> | 当 accordion 的 selectedIndex 和 selectedChild 属性由于用户单击鼠标或按键而更改时，广播到所有注册的侦听器。

继承 UIObject、UIComponent 和 mx.core.View 的所有事件。


Accordion.change

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.change = function(eventObject){
  // 此处插入您的代码
}
myAccordionInstance.addEventListener("change", listenerObject)

描述

事件；在 accordion 的 selectedIndex 和 selectedChild 属性更改时广播到所有注册的侦听器。只有在用户的鼠标单击或按键动作更改了 selectedChild 或 selectedIndex 值时才会广播该事件 而不是在使用动作脚本更改值时。在过渡动画出现之前广播该事件。

V2 组件使用调度程序/侦听器事件模型。Accordion 组件会在它的其中一个按钮被按下时发送 change 事件，该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称为处理函数）进行处理。您调用 addEventListener() 方法并将对处理函数的引用作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myAccordionListener 的处理函数，并且将该处理函数传递到 myAccordion.addEventListener() 方法，作为第二个参数。change 处理函数在 evtObject 参数中捕获事件对象。在广播 change 事件时，trace 语句被发送到“输出”面板，如下所示：

myAccordionListener = new Object();
myAccordionListener.change = function(){
  trace("Changed to different view");
}
myAccordion.addEventListener("change", myAccordionListener);


Accordion.createChild()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myAccordion.createChild(classOrSymbolName, instanceName[, initialProperties])

参数

classOrSymbolName 此参数可以是待实例化的 UIObject 的类的构造函数，也可以是链接名称（即指向待实例化的元件的引用）。类必须是 UIObject 或 UIObject 的子类，但大多数情况下是 View 或 View 的子类。

instanceName 新实例的实例名称。

initialProperties 指定新实例初始属性的可选参数。可使用以下属性：

  • label 此字符串指定新的子实例在其标题上使用的文本标签。
  • icon 此字符串指定子项用作其标题上的图标的库元件的链接标识符。

返回

指向 UIObject（新创建子项）的实例的引用。

说明

方法（从 View 继承）；为 Accordion 创建子项新创建的子项被添加到 Accordion 所拥有的子项列表的末尾。使用此方法将视图放置于 accordion 内。创建的子项是 classOrSymbolName 参数中指定的类或影片剪辑元件的实例。可以使用 label 和 icon 属性为 initialProperties 参数中每个子项的关联 accordion 标题指定文本标签和图标。

在创建每一子项时，按创建顺序给各子项分配一个索引编号，并且 numChildren 属性加 1。

示例

以下代码将创建名为 payment 的影片剪辑元件 PaymentForm 的一个实例，作为 myAccordion 的最后一个子项：

var child = myAccordion.createChild("PaymentForm", "payment", { label:"Payment", Icon:"payIcon" });
child.cardType.text = "Visa";
child.cardNumber.text = "1234567887654321";

以下代码创建作为 View 类的实例的子项：

var child = myAccordion.createChild(mx.core.View, "payment", { label:"Payment", Icon:"payIcon" });
child.cardType.text = "Visa";
child.cardNumber.text = "1234567887654321";

以下代码也创建作为 View 类的实例的子项，但它使用 import 语句引用该 View 类的构造函数：

import mx.core.View
var child = myAccordion.createChild(View, "payment", { label:"Payment", Icon:"payIcon" });
child.cardType.text = "Visa";
child.cardNumber.text = "1234567887654321";


Accordion.createSegment()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

myAccordion.createSegment(classOrSymbolName, instanceName[, label[, icon]])

参数

classOrSymbolName 此参数可以是指向待实例化的 UIObject 的类构造函数的引用，也可以是待实例化的元件的链接名称。类必须是 UIObject 或 UIObject 的子类，但大多数情况下是 View 或 View 的子类。

instanceName 新实例的实例名称。

label 此字符串指定新的子实例在其标题上使用的文本标签。此参数是可选的。

icon 此字符串引用子项用作其标题上的图标的库元件的链接标识符。此参数是可选的。

返回

指向新创建的 UIObject 实例的引用。

说明

方法；为 Accordion 创建子项。新创建的子项被添加到 Accordion 所拥有的子项列表的末尾。使用此方法将视图放置于 accordion 内。创建的子项是 classOrSymbolName 参数中指定的类或影片剪辑元件的实例。可以使用 label 和 icon 参数为每个子项的关联 accordion 标题指定文本标签和图标。

createSegment() 方法与 createChild() 方法的不同之处在于：label 和 icon 是作为参数（而不是作为 initalProperties 参数的属性）直接传递的。

在创建每一子项时，按创建顺序给各子项分配一个索引编号，并且 numChildren 属性加 1。

示例

以下范例将创建名为 payment 的 PaymentForm 影片剪辑元件的实例，作为 myAccordion 的最后一个子项：

var child = myAccordion.createSegment("PaymentForm", "payment", "Payment", "payIcon");
child.cardType.text = "Visa";
child.cardNumber.text = "1234567887654321";

以下代码创建作为 View 类的实例的子项：

var child = myAccordion.createSegment(mx.core.View, "payment", { label:"Payment", Icon:"payIcon" });
child.cardType.text = "Visa";
child.cardNumber.text = "1234567887654321";

以下代码也创建作为 View 类的实例的子项，但它使用 import 语句引用该 View 类的构造函数：

import mx.core.View
var child = myAccordion.createSegment(View, "payment", { label:"Payment", Icon:"payIcon" });
child.cardType.text = "Visa";
child.cardNumber.text = "1234567887654321";


Accordion.destroyChildAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myAccordion.destroyChildAt(index)

参数

index 要破坏的 accordion 子项的索引号。accordion 的每个子项均按其创建顺序获得了一个从零开始的索引号。

返回

无。

说明

方法（从 View 继承）；破坏其中一个 accordion 子项。要破坏的子项是由其索引指定的，该索引将被传递到 index 参数中的方法。调用此方法将同时破坏相应的标题。

如果已破坏的子项处于选定状态，则会选择一个新的选定子项。如果有下一个子项，则会将其选定。如果没有下一个子项，则会选定前一个子项。如果没有前一个子项，则该选择是未定义的。

注意：调用 destroyChildAt() 方法会将 numChildren 属性减 1。

示例

以下代码将破坏 myAccordion 的最后一个子项：

myAccordion.destroyChildAt(myAccordion.numChildren - 1);

另请参见

Accordion.createChild()


Accordion.getChildAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myAccordion.getChildAt(index)

参数

index Accordion 子项的索引号。accordion 的每个子项均按其创建顺序获得了一个从零开始的索引。

返回

指向位于指定索引位置的 UIObject 实例的引用。

说明

方法；返回指向位于指定索引位置的子项的引用。为每一 accordion 子项都提供一个索引编号以指示其位置。该索引编号从零开始，因此第一个子项为 0，第二个子项为 1，依此类推。

示例

以下代码将获取指向 myAccordion 最后一个子项的引用：

var lastChild:UIObject = myAccordion.getChildAt(myAccordion.numChildren - 1);


Accordion.numChildren

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myAccordion.numChildren

描述

属性（从 View 继承）；指明 accordion 实例中的子项数（UIObjects 子项）。标题不会被计作子项。

为每一 accordion 子项都提供一个索引编号以指示其位置。该索引编号从零开始，因此第一个子项为 0，第二个子项为 1，依此类推。代码 myAccordion.numChild - 1 始终引用添加到 accordion 的最后一个子项。例如，如果某个 accordion 中有 7 个子项，则最后一个子项的索引为 6。numChildren 属性不是从零开始的，因此 myAccordion.numChildren 的值将为 7。7 减 1 的结果是 6，即最后一个子项的索引号。

范例

以下范例选择最后一个子项：

myAccordion.selectedIndex = myAccordion.numChildren - 1;


Accordion.selectedChild

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myAccordion.selectedChild

描述

属性；如果存在一个或多个子项，则为选定子项；如果不存在子项，则未定义。此属性的类型为 UIObject 或未定义。

如果 accordion 有子项，则代码 myAccordion.selectedChild 与代码 myAccordion.getChildAt(myAccordion.selectedIndex) 等效。

将此属性设置为一个子项将导致 accordion 开始转换动画以显示指定的子项。

如果更改 selectedChild 的值，则会同时更改 selectedIndex 的值。

如果 accordion 有子项，则默认值为 myAccordion.getChildAt(0)。如果 accordion 没有子项，则默认值未定义。

范例

以下范例将获取选定子项视图的标签：

var selectedLabel = myAccordion.selectedChild.label;

以下范例将设置要作为选定子项视图的付款表单：

myAccordion.selectedChild = myAccordion.payment;

另请参见

Accordion.selectedIndex


Accordion.selectedIndex

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myAccordion.selectedIndex

描述

属性；在具有一个或多个子项的 accordion 中，为选定子项从零开始的索引。对于没有子项视图的 accordion，唯一的有效值为未定义。

为每一 accordion 子项都提供一个索引编号以指示其位置。该索引编号从零开始，因此第一个子项为 0，第二个子项为 1，依此类推。selectedIndex 的有效值为 0、1、2...、n - 1，其中 n 是子项的数量。

将此属性设置为一个子项将导致 accordion 开始转换动画以显示指定的子项。

如果更改 selectedIndex 的值，则会同时更改 selectedChild 的值。

范例

以下范例将记录选定子项的索引：

var oldSelectedIndex = myAccordion.selectedIndex;

以下范例选择最后一个子项：

myAccordion.selectedIndex = myAccordion.numChildren - 1;

另请参见

Accordion.selectedChild、Accordion.numChildren


关于 Alert 组件（仅限 Flash Professional）

Alert 组件使您能够弹出一个窗口，该窗口向用户呈现一条消息和响应按钮。Alert 窗口包含一个可填充文本的标题栏、一个可自定义的消息和若干可更改标签的按钮。Alert 窗口只能包含以下按钮的任意组合：“是”、“否”、“确定”和“取消”。可以通过使用以下属性更改按钮上的文本标签：Alert.yesLabel、Alert.noLabel、Alert.okLabel 和 Alert.cancelLabel。您无法更改 Alert 窗口中按钮的顺序；按钮顺序始终为“确定”、“是”、“否”、“取消”。

要弹出 Alert 窗口，您必须调用 Alert.show() 方法。为了成功调用该方法，Alert 组件必须位于库中。您必须将 Alert 组件从“组件”面板拖到舞台上，然后再将 Alert 组件从舞台中删除。此操作将组件添加到库中，但不会在文档中显示它。

Alert 组件的实时预览是一个空窗口。

可以使用屏幕阅读器来访问 Alert 窗口的文本和按钮。将 Alert 组件添加到应用程序时，可以使用“辅助功能”面板使其可由屏幕阅读器访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.AlertAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。

有关详细信息，请参阅创建辅助内容。


使用 Alert 组件（仅限 Flash Professional）

可在需要向用户通告某些内容时随时使用 Alert。例如，您可能要在用户未正确填写表单、股票达到某个价位或用户在未保存会话的情况下退出应用程序时弹出 Alert。

Alert 参数

Alert 组件没有创作参数。必须调用动作脚本的 Alert.show() 方法来弹出 Alert 窗口。可以使用其他动作脚本属性来修改应用程序中的 Alert 窗口。有关详细信息，请参阅Alert 类（仅限 Flash Professional）。

创建具有 Alert 组件的应用程序

以下过程解释了如何在创作时将 Alert 组件添加到应用程序。在本例中，Alert 组件将在股票达到某个价位时弹出。

要创建具有 Alert 组件的应用程序，请执行以下操作：

  1. 在“组件”面板中双击 Alert 组件，将其添加到舞台。
  2. 按 Backspace 键 (Windows) 或 Delete 键 (Macintosh) 将组件从舞台中删除，

    此操作将组件添加到库中，但不会在应用程序中显示它。

  3. 在“动作”面板中，在时间轴的第 1 帧上输入以下代码，以便为 click 事件定义事件处理函数：
    import mx.controls.Alert
myClickHandler = function (evt){
  if (evt.detail == Alert.OK){
    trace("start stock app");
    // startStockApplication();
  }
}
Alert.show("Launch Stock Application?", "Stock Price Alert", Alert.OK | Alert.CANCEL, this, myClickHandler, "stockIcon", Alert.OK);

    此代码将创建带有“确定”和“取消”按钮的 Alert 窗口。在按下任一按钮时，将调用 myClickHandler 函数。但在按下“确定”按钮时，调用的是 startStockApplication() 方法。

  4. “控制”>“测试影片”。


自定义 Alert 组件（仅限 Flash Professional）

Alert 将自己置于作为其父 参数传递的组件的中心。该父项必须是 UIComponent。如果父项是影片剪辑，您可以将剪辑注册为 mx.core.View，以使其继承自 UIComponent。

Alert 窗口会自动沿水平方向伸展，以便适合显示的消息文本或任何按钮。如果要显示大量的文本，请在文本中包含换行符。

Alert 不会响应 setSize() 方法。

对 Alert 组件使用样式

您可以设置样式属性以更改 Alert 组件的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

Alert 组件支持下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“常规”或“斜体”。
fontWeight | 字体粗细；“常规”或“粗体”。
textDecoration | 文本修饰；“无”或“下划线”。
buttonStyleDeclaration | 按钮文本样式的类（静态）CSSStyleDeclaration。
messageStyleDeclaration | 消息文本、边框和背景样式的类（静态）CSSStyleDeclaration。
titleStyleDeclaration | 标题文本样式的类（静态）CSSStyleDeclaration。

对 Alert 组件使用外观

Alert 组件使用窗口外观来表示其按钮和标题栏的可视状态。要在创作时为按钮和标题栏设置外观，请在其中一个主题 FLA 文件的库中修改 Flash UI Components 2/Themes/MMDefault/Window Assets skins states 文件夹中的外观元件。有关详细信息，请参阅关于设置组件外观。

Alert 组件使用 RectBorder.as 类中的动作脚本代码绘制其边框。可以使用 RectBorder 样式来修改 Alert 组件，如下所示：

var myAlert = Alert.show("This is a test of errors", "Error", Alert.OK | Alert.CANCEL, this);
myAlert.setStyle("borderStyle", "inset");

有关 RectBorder 样式的详细信息，请参阅在 List 组件中使用外观。

Alert 组件使用以下外观属性动态地设置按钮和标题栏的外观：

属性 | 描述 | 默认值
buttonUp | 按钮的弹起状态。 | ButtonSkin
buttonDown | 按钮的按下状态。 | ButtonSkin
buttonOver | 按钮的滑过状态。 | ButtonSkin
titleBackground | 窗口的标题栏。 | TitleBackground


Alert 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > ScrollView > Window > Alert

动作脚本类名称 mx.controls.Alert

要使用 Alert 组件，您需要将 Alert 组件拖到舞台上并将其删除，以便组件位于文档库中但不会在应用程序中显示。然后，您需要调用 Alert.show() 来弹出 Alert 窗口。可以将参数传递到 Alert.show()，这些参数将消息、标题栏和按钮添加到 Alert 窗口中。

由于动作脚本是异步的，因此 Alert 组件不是模块化的，也就是说动作脚本的代码行会在调用 Alert.show() 之后立即运行。必须添加侦听器来处理在用户按下按钮时广播的 click 事件，然后在播放事件后继续执行代码。

注意：在模块化的操作环境（例如，Microsoft Windows）中，在用户进行操作（如按下按钮）之前，对 Alert.show() 的调用不会返回。

Alert 类的方法摘要

事件 | 描述
Alert.show()> | 使用可选参数创建 Alert 窗口。

继承 UIObject 和 UIComponent 中的所有方法。

Alert 类的属性摘要

属性 | 描述
Alert.buttonHeight> | 每个按钮的高度（以像素为单位）。默认值为 22。
Alert.buttonWidth> | 每个按钮的宽度（以像素为单位）。默认值为 100。
Alert.cancelLabel> | “取消”按钮的标签文本。
Alert.noLabel> | “否”按钮的标签文本。
Alert.okLabel> | “确定”按钮的标签文本。
Alert.yesLabel> | “是”按钮的标签文本。

继承 UIObject 和 UIComponent 的所有属性。

Alert 类的事件摘要

事件 | 描述
Alert.click> | 在单击 Alert 窗口中的某个按钮时广播。

继承 UIObject 和 UIComponent 的所有事件。


Alert.buttonHeight

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.buttonHeight

描述

属性（类）；更改按钮高度的类属性（静态）。

另请参见

Alert.buttonWidth


Alert.buttonWidth

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.buttonWidth

描述

属性（类）；更改按钮宽度的类属性（静态）。

另请参见

Alert.buttonHeight


Alert.click

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

clickHandler = function(eventObject){
  // 此处插入您的代码
}
Alert.show(message[, title[, flags[, parent[, clickHandler[, icon[, defaultButton]]]]]])

描述

事件；在单击“确定”、“是”、“否”或“取消”按钮时广播至注册的侦听器。

V2 组件使用调度程序/侦听器事件模型。Alert 组件会在它的其中一个按钮被单击时发送 click 事件，该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称为处理函数）进行处理。您调用 Alert.show() 方法并将处理函数的名称作为参数传递给它。在单击 Alert 窗口中的某个按钮时，即会调用侦听器。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Alert.click 事件的事件对象具有一个附加的 detail 属性，取决于单击了哪个按钮，该属性的值可以是以下其中一个值：Alert.OK、Alert.CANCEL、Alert.YES、Alert.NO。有关事件对象的详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myClickHandler 的处理函数并将其作为第五个参数传递给 Alert.show() 方法。myClickHandler 在 evt 参数中捕获事件对象。然后，事件对象的 detail 属性将用在 trace 语句内，以便将所单击按钮的名称（Alert.OK 或 Alert.CANCEL）发送到“输出”面板，如下所示：

myClickHandler = function (evt){
  if (evt.detail == Alert.OK){
    trace(Alert.okLabel);
  }else if (evt.detail == Alert.CANCEL){
    trace(Alert.cancelLabel);
  }
}
Alert.show("This is a test of errors", "Error", Alert.OK | Alert.CANCEL, this, myClickHandler);


Alert.cancelLabel

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.cancelLabel

描述

属性（类）；指明“取消”按钮上的标签文本的类属性（静态）。

范例

以下范例将“取消”按钮的标签设置为“cancellation”：

Alert.cancelLabel = "cancellation";


Alert.noLabel

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.noLabel

描述

属性（类）；指明“否”按钮上的标签文本的类属性（静态）。

范例

以下范例将“否”按钮的标签设置为“nyet”：

Alert.noLabel = "nyet";


Alert.okLabel

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.okLabel

描述

属性（类）；指明“确定”按钮上的标签文本的类属性（静态）。

范例

以下范例将“确定”按钮的标签设置为“okay”：

Alert.okLabel = "okay";


Alert.show()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.show(message[, title[, flags[, parent[, clickHandler[, icon[, defaultButton]]]]]])

参数

message 要显示的消息。

title Alert 标题栏中的文本。此参数是可选的。如果未指定 title 参数，则标题栏为空。

flags 可选参数，指明要显示在 Alert 窗口中的一个或多个按钮。默认值为 Alert.OK，它将显示“确定”按钮。在使用多个值时，请利用 | 字符分隔各个值。该值可以是以下一个或多个值：

  • Alert.OK
  • Alert.CANCEL
  • Alert.YES
  • Alert.NO

您还可以使用 Alert.NONMODAL 指明 Alert 窗口是非模式的。非模式窗口允许用户与应用程序中的其他窗口交互。

parent Alert 组件的父窗口。Alert 窗口会将自己置于父窗口的中心。使用值 null 或 undefined 来指定 _root Timeline。该父窗口必须继承自 UIComponent 类。可以使用 mx.core.View 注册父窗口，以使其继承自 UIComponent。此参数是可选的。

clickHandler 单击按钮时广播的 click 事件的处理函数。除了标准的 click 事件对象属性外，还有一个附加的 detail 属性，该属性包含所单击按钮标志的值（Alert.OK、Alert.CANCEL、Alert.YES、Alert.NO）。此处理函数可能是函数或对象。有关详细信息，请参阅使用组件事件侦听器。

icon 表示要用作图标（显示在文本的左边）的库元件的链接标识符的字符串。此参数是可选的。

defaultButton 指明在用户按下 Enter 键 (Windows) 或 Return 键 (Macintosh) 时被单击的按钮。此参数可以是下列值之一：

  • Alert.OK
  • Alert.CANCEL
  • Alert.YES
  • Alert.NO

返回

所创建 Alert 类的实例。

说明

方法（类）；显示带有消息、可选标题、可选按钮和可选图标的 Alert 窗口的类（静态）方法。Alert 的标题显示在窗口的顶部，并且靠左对齐。图标显示在消息文本的左边。按钮显示在消息文本和图标下方的中间位置。

示例

以下代码显示一个带有“确定”按钮的 Alert 模式窗口的简单范例。

Alert.show("Hello, world!");

以下代码定义一个将有关所单击按钮的消息发送到“输出”面板的 click 处理函数。

myClickHandler = function (evt){
  trace (evt.detail + "was clicked");
}
Alert.show("This is a test of errors", "Error", Alert.OK | Alert.CANCEL, this, myClickHandler);

注意：事件对象的 detail 属性将返回一个数字，用于代表每个按钮。“确定”按钮为 4，“取消”按钮为 8，“是”按钮为 1，“否”按钮为 2。


Alert.yesLabel

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Alert.yesLabel

描述

属性（类）；指明“是”按钮上的标签文本的类属性（静态）。

范例

以下范例将“确定”按钮的标签设置为“da”：

Alert.yesLabel = "da";


关于 button 组件

Button 组件是一个可调整大小的矩形用户界面按钮。可以给按钮添加一个自定义图标。也可以将按钮的行为从按下改为切换。在单击切换按钮后，它将保持按下状态，直到再次单击时才会返回到弹起状态。

可以在应用程序中启用或者禁用按钮。在禁用状态下，按钮不接收鼠标或键盘输入。如果单击或者切换到某个按钮，处于启用状态的就会接收焦点。当一个 Button 实例具有焦点时，您可以使用下列按键来控制它：

按键 | 描述
Shift + Tab | 将焦点移到前一个对象。
空格键 | 按下或释放组件并触发 click 事件。
Tab 键 | 将焦点移到下一个对象。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 Button 实例的实时预览反映在创作过程中对属性检查器或“组件检查器”面板中的参数所做的更改。然而，在实时预览中，自定义图标在舞台上由一个灰色方块表示。

在将 Button 组件添加到应用程序时，您可以使用“辅助功能”面板，以使其可由屏幕读取器访问。首先，您必须添加下面的代码，为 Button 组件启用辅助功能：

mx.accessibility.ButtonAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 Button 组件

按钮是任何表单或 Web 应用程序的一个基础部分。每当您需要让用户启动一个事件时，都可以使用按钮。例如，大多数表单都有“提交”按钮，您也可以给演示文稿添加“前一个”和“后一个”按钮。

要给按钮添加一个图标，您需要选择或创建一个影片剪辑或图形元件以用作图标。元件应注册在（0，0）以在按钮上获得适当的布局。在“库”面板中选择图标元件，从“选项”菜单中打开“链接”对话框，然后输入一个链接标识符。该值是为属性检查器或“组件检查器”面板中的图标参数输入的值。也可以为 Button.icon 动作脚本属性输入此值。

注意：如果图标比按钮大，它将会延伸到按钮的边框外。

Button 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 Button 组件实例设置的创作参数：

label 设置按钮上文本的值；默认值是“Button”。

icon 为按钮添加自定义图标。该值是库中影片剪辑或图形元件的链接标识符；没有默认值。

toggle 将按钮转变为切换开关。如果值为 true，则按钮在按下后保持按下状态，直到再次按下时才返回到弹起状态。如果值为 false，则按钮的行为就像一个普通按钮；默认值为 false。

selected 如果 toggle 参数的值是 true，则该参数指定按钮是处于按下状态 (true) 还是释放状态 (false)。默认值为 false。

labelPlacement 确定按钮上的标签文本相对于图标的方向。该参数可以是下列四个值之一：left、right、top 或 bottom，默认值是 right。有关详细信息，请参阅Button.labelPlacement。

您可以编写“动作脚本”，通过利用其属性、方法和事件来控制 Button 组件的这些选项以及其他选项。有关详细信息，请参阅Button 类。

创建具有 Button 组件的应用程序

以下过程解释了如何在创作时将 Button 组件添加到应用程序。在本范例中，按钮是一个带有自定义图标的“帮助”按钮，当用户按下该按钮时，会打开一个“帮助”系统。

要创建具有 Button 组件的应用程序，请执行以下操作：

  1. 将 Button 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 helpBtn。
  3. 在属性检查器中，执行以下操作：
    • 为标签参数输入 Help。
    • 为图标参数输入 HelpIcon。

      要使用图标，必须将库中一个带有链接标识符的影片剪辑或图形元件用作图标参数。在本范例中，链接标识符是 HelpIcon。

    • 将 toggle 属性设置为 true。
  4. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    clippyListener = new Object();
clippyListener.click = function (evt){
  clippyHelper.enabled = evt.target.selected;
}
helpBtn.addEventListener("click", clippyListener);

    最后一行代码将 click 事件处理函数添加到 helpBtn 实例。该处理函数启用和禁用 clippyHelper 实例，此实例可能是某种“帮助”面板。


自定义 Button 组件

您可以在创作时或在运行时，在水平和垂直方向上改变 Button 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅 UIObject.setSize()）或任何适用的 Button 类的属性和方法（请参阅 Button 类）。调整按钮大小不会更改图标或标签的大小。

Button 实例的边框是不可见的，它同时也指定了该实例的点击区域。如果您增加实例的大小，也就增加了点击区的大小。如果边框太小而无法容纳标签，标签会被裁剪以适合边框。

如果图标比按钮大，它将会延伸到按钮的边框外。

对 Button 组件使用样式

您可以设置样式属性来更改按钮实例的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

Button 组件支持下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式：“常规”或“斜体”。
fontWeight | 字体粗细：“常规”或“粗体”。

对 Button 组件使用外观

Button 组件使用“动作脚本”绘图 API 来绘制按钮的状态。若要在创作时设计 Button 组件的外观，请修改 ButtonSkin.as 文件（该文件位于 First Run\Classes\mx\skins\halo 文件夹下）中的动作脚本代码。

如果您使用 UIObject.createClassObject() 方法（在运行时）动态创建 Button 组件实例，就可以动态设置其外观。要在运行时设计组件的外观，请设置传递给 createClassObject() 方法的 initObject 参数的外观属性。这些外观属性设置用作按钮状态的元件的名称，元件可以带有图标，也可以没有图标。

如果您在创作过程中设置图标参数，或者在运行时设置 icon 动作脚本属性，则将同一链接标识符指定为三种图标状态：falseUpIcon、falseDownIcon 和 trueUpIcon。如果您希望为八种图标状态中的任一种指定唯一的图标（例如，如果您希望在用户按下按钮时显示一个不同的图标），则必须设置传递到 createClassObject() 方法的 initObject 参数的属性。

下面的代码创建了一个名为 initObject 的对象，以用作 initObject 参数，并将外观属性设为新建元件的链接标识符。最后一行代码调用 createClassObject() 方法以创建一个新的 Button 类实例，该实例具有在 initObject 参数中传递的属性，如下所示：

var initObject = new Object();
initObject.falseUpIcon = "MyFalseUpIcon";
initObject.falseDownIcon = "MyFalseDownIcon";
initObject.trueUpIcon = "MyTrueUpIcon";
createClassObject(mx.controls.Button, "ButtonInstance", 0, initObject);

有关详细信息，请参阅关于设置组件外观和 UIObject.createClassObject()。

如果按钮被启用，当鼠标指针在它上方移过时，它会显示其悬停状态。在单击按钮时，按钮将接收输入焦点并显示其按下状态。当松开鼠标后，按钮又返回其悬停状态。如果在按下鼠标时指针移离按钮，按钮就会返回到其初始状态并保留输入焦点。如果切换参数设置为 true，则按钮的状态不会改变，直到鼠标在它上方松开。

如果按钮被禁用，不管用户进行什么交互操作，它都会显示其禁用状态。

Button 组件使用以下外观属性：

属性 | 描述
falseUpSkin | 弹起状态。默认值为 RectBorder。
falseDownSkin | 按下状态。默认值为 RectBorder。
falseOverSkin | 悬停状态。默认值为 RectBorder。
falseDisabledSkin | 禁用状态。默认值为 RectBorder。
trueUpSkin | 切换状态。默认值为 RectBorder。
trueDownSkin | 按下切换状态。默认值为 RectBorder。
trueOverSkin | 悬停切换状态。默认值为 RectBorder。
trueDisabledSkin | 禁用切换状态。默认值为 RectBorder。
falseUpIcon | 图标弹起状态。默认值未定义。
falseDownIcon | 图标按下状态。默认值未定义。
falseOverIcon | 图标悬停状态。默认值未定义。
falseDisabledIcon | 图标禁用状态。默认值未定义。
trueUpIcon | 图标切换状态。默认值未定义。
trueOverIcon | 图标悬停切换状态。默认值未定义。
trueDownIcon | 图标按下切换装态。默认值未定义。
trueDisabledIcon | 图标禁用切换状态。默认值未定义。


Button 类

继承 UIObject > UIComponent > SimpleButton > Button

动作脚本类名称 mx.controls.Button

Button 类的属性允许您在运行时给按钮添加图标、创建文本标签，或者指定该按钮在运行时的作用是普通按钮还是切换开关。

使用“动作脚本”设置 Button 类的属性将会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

Button 组件会用 FocusManager 覆盖默认的 Flash Player 焦点矩形，并画出一个带有圆角的自定义焦点矩形。有关详细信息，请参阅创建自定义焦点导航。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.Button.version);

注意：下面的代码返回未定义的：trace(myButtonInstance.version);。

Button 组件类与动作脚本内置 Button 对象不同。

Button 类的方法摘要

继承 UIObject 和 UIComponent 中的所有方法。

Button 类的属性摘要

方法 | 描述
SimpleButton.emphasized> | 指明按钮是否具有默认的普通按钮外观。
SimpleButton.emphasizedStyleDeclaration> | 当 emphasized 属性设置为 true 时的样式声明。
Button.icon> | 指定按钮实例的图标。
Button.label> | 指定在按钮上显示的文本。
Button.labelPlacement> | 指定标签文本相对于图标的方向。
Button.selected> | 当 toggle 属性为 true 时，指定按钮是处于按下状态 (true) 还是释放状态 (false)。
Button.toggle> | 指明按钮是否用作切换开关。

继承 UIObject 和 UIComponent 的所有属性。

Button 类的事件摘要

方法 | 描述
Button.click> | 在按钮实例上方按下鼠标或者按下空格键时进行广播。

继承 UIObject 和 UIComponent 的所有事件。


Button.click

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(click){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.click = function(eventObject){
  ...
}
buttonInstance.addEventListener("click", listenerObject)

描述

事件；当在按钮上单击（释放）鼠标，或者当按钮具有焦点并按下空格键时，对所有已注册的侦听器进行广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 Button 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下代码附加到 Button 组件实例 myButtonComponent，它将“_level0.myButtonComponent”发送到“输出”面板：

on(click){
  trace(this);
}

请注意，这与附加到常规 Flash 按钮元件的 on() 处理函数内部使用的 this 的行为不同。在附加到按钮元件的 on() 处理函数中使用 this 时，它指的是包含该按钮的时间轴。例如，以下代码附加到按钮元件实例 myButton，它将“_level0”发送到“输出”面板：

on(release){
  trace(this);
}

注意：内置的动作脚本 Button 对象没有 click 事件；最接近的事件是 release。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (buttonInstance) 发送一个事件（在本例中为 click），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。该事件对象有一组属性，这些属性包含有关事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 addEventListener() 方法（请参阅 UIEventDispatcher.addEventListener()），以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，当单击名为 buttonInstance 的按钮时，它会向“输出”面板发送一条消息。第一行代码给该按钮设置标签。第二行代码指定该按钮用作切换开关。第三行代码创建一个名为 form 的侦听器对象。第四行代码为侦听器对象上的 click 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在本例中是 buttonInstance。从事件对象的 target 属性中可以访问 Button.selected 属性。最后一行代码从 buttonInstance 调用 addEventListener() 方法，并将 click 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

buttonInstance.label = "Click Test"
buttonInstance.toggle = true;
form = new Object();
form.click = function(eventObj){
  trace("The selected property has changed to " + eventObj.target.selected);
}
buttonInstance.addEventListener("click", form);

下列代码还会在单击 buttonInstance 时向“输出”面板发送一条消息。必须将 on() 处理函数直接附加到 buttonInstance 上，如下所示：

on(click){
  trace("button component was clicked");
}

另请参见

UIEventDispatcher.addEventListener()


SimpleButton.emphasized

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.emphasized

描述

属性；指明按钮是否处于强调状态，如果是，则为 true，否则为 false。强调状态相当于默认的普通按钮外观。一般来说，应使用 FocusManager.defaultPushButton 属性，而不是直接设置 emphasized 属性。默认值为 false。

emphasized 属性是 SimpleButton 类的静态属性。因此，只能直接从 SimpleButton 访问它，如下所示：

SimpleButton.emphasizedStyleDeclaration = "foo";

如果您没有使用 FocusManager.defaultPushButton，则您可能只想将按钮设置为强调状态，或者使用强调状态来更改文本颜色。在下面的范例中，将设置按钮实例 myButton 的 emphasized 属性：

_global.styles.foo = new CSSStyleDeclaration();
_global.styles.foo.color = 0xFF0000;
SimpleButton.emphasizedStyleDeclaration = "foo";
myButton.emphasized = true;

另请参见

SimpleButton.emphasizedStyleDeclaration


SimpleButton.emphasizedStyleDeclaration

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.emphasizedStyleDeclataion

描述

属性；一个指明样式声明的字符串，该样式声明会在 emphasized 属性设置为 true 时格式化按钮。

另请参见

SimpleButton.emphasized


Button.icon

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.icon

描述

属性；一个字符串，指定库中要用作按钮实例图标的元件的链接标识符。图标可以是一个影片剪辑元件，也可以是具有左上角注册点的图形元件。如果图标太大而无法容纳，您必须调整按钮的大小；无法自动调整按钮和图标的大小。如果图标比按钮大，图标将会延展到按钮的边界外。

要创建一个自定义图标，请创建一个影片剪辑或者图形元件。在元件编辑模式下，选择舞台上的该元件，并在属性检查器中的“X”和“Y”框内都输入 0。在“库”面板中，选择影片剪辑并从“选项”菜单中选择“链接”。选择“为动作脚本导出”，并在“标识符”文本框内输入一个标识符。

默认值是一个空字符串 ("")，指明没有图标。

使用 labelPlacement 属性来设置图标相对于按钮的位置。

范例

下列代码从“库”面板中将带有链接标识符 happiness 的影片剪辑作为图标分配给 Button 实例：

myButton.icon = "happiness"

另请参见

Button.labelPlacement


Button.label

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.label

描述

属性；指定按钮实例的文本标签。默认情况下，标签显示在按钮的中央。调用此方法将会覆盖在属性检查器或“组件检查器”面板中指定的标签创作参数。默认值为 "Button"。

范例

下列代码将标签设为“Remove from list”：

buttonInstance.label = "Remove from list";

另请参见

Button.labelPlacement


Button.labelPlacement

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.labelPlacement

描述

属性；设置标签相对于图标的位置。默认值为 "right"。下面是四种可能的值，图标和标签始终在按钮的边界区域内垂直居中和水平居中：

  • "right" 标签设在图标的右侧。
  • "left" 标签设在图标的左侧。
  • "bottom" 标签设在图标的下方。
  • "top" 标签放在图标的上方。

范例

下列代码将标签设在图标的左侧。第二行代码将 labelPlacement 属性的值发送到“输出”面板：

iconInstance.labelPlacement = "left";
trace(iconInstance.labelPlacement);


Button.selected

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.selected

描述

属性；一个布尔值，指定按钮是 (true) 否 (false) 处于按下状态。要将 selected 属性设为 true，toggle 属性的值必须为 true。如果 toggle 属性为 false，则给 selected 属性赋予值 true 将不起作用。默认值为 false。

当用动作脚本更改 selected 属性的值时，不会触发 click 事件。当用户与该按钮交互时触发该事件。

范例

在下面的范例中，toggle 属性设为 true 并且 selected 属性也设为 true，这样就会使按钮处于按下状态。trace 动作将值 true 发送到“输出”面板：

ButtonInstance.toggle = true; // toggle 需要为 true，以便设置 selected 属性
ButtonInstance.selected = true; // 显示按钮的切换状态
trace(ButtonInstance.selected); // 跟踪 true

另请参见

Button.toggle


Button.toggle

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

buttonInstance.toggle

描述

属性；一个布尔值，指定将按钮用作切换开关 (true) 还是用作普通按钮 (false)。默认值是 false。当按下切换开关后，它将保持按下状态，直到再次单击它时为止。

范例

下列代码将 toggle 属性设为 true，这将会使 myButton 实例的行为与切换开关类似：

myButton.toggle = true;


关于 CellRenderer API

CellRenderer API 是一组属性和方法，基于列表的组件（List、DataGrid、Tree 和 Menu）使用它们来处理和显示每一行的自定义单元格内容。该自定义单元格可以包含预先建立的组件（如 CheckBox）或您创建的任何类。


了解 List 类

要使用 CellRenderer API，深刻了解 List 类至关重要。DataGrid、Tree 和 Menu 组件是 List 类的扩展，因此，了解 List 类使您能够同时了解这些组件。

注意：组件是一种类，但类不一定是组件。

关于 List 类的构成

List 类由行构成。这些行显示滑过和选区突出显示，用作行选区的点击状态，并在滚动中扮演重要的角色。除了选区突出显示和图标（如节点图标和 Tree 组件的展开箭头）之外，行还包含一个单元格（或者，如果是 DataGrid，则包含多个单元格）。在默认情况下，这些单元格是实现 CellRenderer API 的 TextField 对象。但是，您可以让 List 使用不同的组件类作为每一行的单元格。唯一的要求是该类必须实现 List 用于与单元格通信的 CellRenderer API。

List 或 DataGrid 组件中行的堆叠顺序。

注意：如果单元格具有按钮事件处理函数（onPress 等），则背景点击区域可能不会接收触发事件所必需的输入。

关于 List 类的滚动行为

List 类使用一种非常复杂的算法进行滚动。一个列表只会列出它一次能显示的最多行数，超出 rowCount 属性的值的项目根本不会获得行。在列表滚动时，它会将所有行上下移动（取决于滚动方向）。然后，列表将重复使用滚出视图的行；列表会重新初始化这些行，并使用它们作为正在滚入视图的新行，方法是将旧行的值设置为视图中的新行，然后将旧行移到新项目滚入视图的位置。

考虑到这种滚动行为，您无法期望只使用单元格代表一个值。由于行是重复使用的，因此单元格渲染器需要知道在将行设置为新值时如何完全重置其状态。例如，如果单元格渲染器创建了图标来显示某个项目，在使用它渲染另一项目时，可能需要移除该图标。假设单元格渲染器是一种随着时间的过去将填充许多项目值的容器，并且它必须知道如何使本身从显示某个值完全转换到显示另一个值。事实上，单元格甚至还应该知道如何正确地渲染未定义的项目，这可能意味着删除单元格中的所有旧内容。


使用 CellRenderer API

您必须编写包含四个方法（CellRenderer.getPreferredHeight()、CellRenderer.getPreferredWidth()、CellRenderer.setSize()、CellRenderer.setValue()）的类，基于列表的组件将使用该类与单元格通信。

系统将为单元格自动指定两个方法和一个属性（CellRenderer.getCellIndex()、CellRenderer.getDataLabel() 和 CellRenderer.listOwner），以便允许它与基于列表的组件通信。例如，假设单元格内包含一个复选框，该复选框导致行在单击时被选中。单元格渲染器需要引用包含它的基于列表的组件，以便调用基于列表的组件的 selectedIndex 属性。同时，单元格需要知道它当前正在渲染的项目索引，以便能够将 selectedIndex 设置为正确的编号；单元格可以使用 CellRenderer.listOwner 和 CellRenderer.getCellIndex() 达到此目的。您不需要实现这些 API；在将单元格放到基于列表的组件内时，单元格将自动接收这些 API。

要为 CellRenderer API 实现的方法

您必须编写包含以下方法的类，以便 List、DataGrid、Tree 或 Menu 能够与单元格通信：

名称 | 描述
CellRenderer.getPreferredHeight()> | 返回单元格的首选高度。
CellRenderer.getPreferredWidth()> | 返回单元格的首选宽度。
CellRenderer.setSize()> | 设置单元格的宽度和高度。
CellRenderer.setValue()> | 设置要显示在单元格中的内容。

CellRenderer API 提供的方法

以下是在组件内创建单元格时 List、DataGrid、Tree 和 Menu 为单元格指定的方法。您无需实现这些方法。

名称 | 描述
CellRenderer.getDataLabel()> | 返回包含单元格渲染器数据字段的名称的字符串。
CellRenderer.getCellIndex()> | 返回包含两个字段（columnIndex 和 rowIndex）的对象，这两个字段指明单元格的位置。

CellRenderer API 提供的属性

以下是在组件内创建单元格时 List、DataGrid、Tree 和 Menu 为单元格指定的属性。您无需实现此属性。

名称 | 描述
CellRenderer.listOwner> | 指向包含单元格的列表的引用。


CellRenderer.getDataLabel()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.getDataLabel()

参数

无。

返回

一个字符串。

描述

方法；返回包含单元格渲染器数据字段的名称的字符串。

范例

以下代码有助于使单元格知道它正在渲染数据字段“Price”。变量 p 现在等同于“Price”：

var p = getDataLabel();


CellRenderer.getCellIndex()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.getCellIndex()

参数

无。

返回

包含以下两个字段的对象：columnIndex 和 itemIndex。

描述

方法：返回包含两个字段（columnIndex 和 itemIndex）的对象，这两个字段确定单元格在网格中的位置。每个字段都是一个整数，它指明单元格的列位置和项目位置。对于除 DataGrid 外的任何组件，columnIndex 的值始终为 0。

范例

此范例从单元格内编辑 DataGrid 的 dataProvider：

var index = getCellIndex();
var colName = listOwner.getColumnAt(index.columnIndex).columnName;
listOwner.dataProvider.editField(index.itemIndex, colName, someVal);


CellRenderer.getPreferredHeight()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.getPreferredHeight()

参数

无。

返回

单元格的正确高度。

描述

方法；单元格的首选高度。此高度对于获取单元格内文本的正确高度特别重要。如果将此值设置为大于组件的 rowHeight 属性，单元格将超出行的上下边缘。

范例

此范例返回值 20，指明单元格的高度需要为 20 个像素：

function getPreferredHeight(Void) :Number
{
   return 20;
}


CellRenderer.getPreferredWidth()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.getPreferredWidth()

参数

无。

返回

无。

描述

方法；单元格的首选宽度。如果指定的宽度超出组件的宽度，单元格将被截断。

范例

此范例返回值 3，指明单元格需要比字符串所渲染的长度大三倍。

function getPreferredHeight(Void) :Number
{
   return myString.length*3;
}


CellRenderer.listOwner

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.listOwnner

描述

属性；指向拥有单元格的列表的引用。该列表可以是 DataGrid、Tree 或 List。

范例

此范例查找列表在某个单元格中的选定项目：

var s = listOwner.selectedItem;


CellRenderer.setSize()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.setSize(width, height)

参数

width 指明布置组件所依据宽度的数字。

height 指明布置组件所依据高度的数字。

返回

无。

描述

方法；允许列表告知其单元格应按什么大小安排自己的位置。CellRenderer 应进行规划，以便它适合所述区域的边界，否则单元格的可视显示内容可能会溢出到列表的其他部分中，因此看起来不完整。

范例

此范例将调整单元格内图像的大小，以适合列表所指定的边框：

function setSize(w:Number, h:Number) :Void
{
   image._width = w-2;
   image._height = w-2;
   image._x = image._y = 1;
}


CellRenderer.setValue()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.setValue(suggested, item, selected)

参数

suggested 用于代表单元格渲染器的文本的值（如果需要）。

item 代表要渲染的整个项目的对象。单元格渲染器可以使用此对象的任何所需属性进行渲染。

selected 指明是否选定单元格所在行的布尔值(true) 或 (false)。

返回

无。

描述

方法；采用指定的值，并在单元格内显示它们。这将使单元格中已显示内容以及要为新项目在单元格中所显示内容不会有任何不同。请务必记住，任何单元格处于列表中时都可能显示多个值。这是任何单元格渲染器中的最重要的方法。

范例

取决于传递的值，此范例会将图像加载到单元格内的 Loader 组件中：

function setValue(suggested, item, selected) :Void
{
   //清除加载器
   loader.contentPath = undefined;
   // 列表数据提供程序中的不同图像有不同的 URL
   if (suggested!=undefined)
   loader.contentPath = suggested;
}


关于 CheckBox 组件

复选框是一个可以选中或取消选中的方框。当它被选中后，框中会出现一个复选标记。您可以为复选框添加一个文本标签，并可以将它放在左侧、右侧、顶部或底部。

可以在应用程序中启用或者禁用复选框。如果复选框已启用，并且用户单击它或者它的标签，复选框会接收输入焦点并显示为按下状态。如果用户在按下鼠标按钮时将指针移到复选框或其标签的边界区域之外，则组件的外观会返回到其最初状态，并保持输入焦点。在组件上释放鼠标之前，复选框的状态不会发生变化。另外，复选框有两种禁用状态：选中和取消选中，这两种状态不允许鼠标或键盘的交互操作。

如果复选框被禁用，它会显示其禁用状态，而不管用户的交互操作。在禁用状态下，按钮不接收鼠标或键盘输入。

如果用户单击 CheckBox 实例或者用 Tab 按键切换到它时，CheckBox 实例将接收焦点。当一个 CheckBox 实例有焦点时，您可以使用下列按键来控制它：

按键 | 描述
Shift + Tab | 将焦点移到前一个元素。
空格键 | 选中或者取消选中组件并触发 click 事件。
Tab 键 | 将焦点移到下一个元素。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 CheckBox 实例的实时预览反映在创作过程中对属性检查器或组件检查器面板中的参数所做的更改。

在将 CheckBox 组件添加到应用程序时，您可以使用“辅助功能”面板使其可由屏幕读取器访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.CheckBoxAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 CheckBox 组件

复选框是任何表单或 Web 应用程序中的一个基础部分。每当需要收集一组非相互排斥的 true 或 false 值时，都可以使用复选框。例如，一个收集客户个人信息的表单可能有一个爱好列表供客户选择；每个爱好的旁边都有一个复选框。

CheckBox 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 CheckBox 组件实例设置的创作参数：

label 设置复选框上文本的值；默认值为 defaultValue。

selected 将复选框的初始值设为选中 (true) 或取消选中 (false)。

labelPlacement 确定复选框上标签文本的方向。该参数可以是下列四个值之一：left、right、top 或 bottom，默认值是 right。有关详细信息，请参阅CheckBox.labelPlacement。

您可以编写动作脚本，通过利用 CheckBox 组件的属性、方法和事件来控制该组件的这些选项以及其他选项。有关详细信息，请参阅CheckBox 类。

创建具有 CheckBox 组件的应用程序

以下过程解释了如何在创作时将 CheckBox 组件添加到应用程序。下面的范例是一个用于联机约会应用程序的表单，该表单是一个查询，它搜索与客户相匹配的可能约会。该查询表单必须有一个标签为“Restrict Age”的复选框，以允许客户将其搜索限定在一个指定的年龄组。选中“Restrict Age”复选框后，客户就可以在两个文本字段内输入最小年龄和最大年龄，这两个文本字段只有在“Restrict Age”被选中后才启用。

要创建具有 CheckBox 组件的应用程序，请执行以下操作：

  1. 将两个 TextInput 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 minimumAge 和 maximumAge。
  3. 将 CheckBox 组件从“组件”面板拖到舞台上。
  4. 在属性检查器中，执行以下操作：
    • 输入 restrictAge 作为实例名称。
    • 输入 Restrict Age 作为标签参数。
  5. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    restrictAgeListener = new Object();
restrictAgeListener.click = function (evt){
  minimumAge.enabled = evt.target.selected;
  maximumAge.enabled = evt.target.selected;
}
restrictAge.addEventListener("click", restrictAgeListener);

    此代码创建一个 click 事件处理函数，该函数可启用和禁用已放到舞台上的 minimumAge 和 maximumAge 文本字段组件。有关 click 事件的详细信息，请参阅 CheckBox.click。有关 TextInput 组件的详细信息，请参阅TextInput 组件。


自定义 CheckBox 组件

您可以在创作时或在运行时，在水平和垂直方向上改变 CheckBox 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（UIObject.setSize()）或任何适用的 CheckBox 类的属性和方法（请参阅 CheckBox 类）。调整复选框的大小不会改变标签或复选框图标的大小；它只会改变边框的大小。

CheckBox 实例的边框是不可见的，它同时也指定了该实例的点击区域。如果您增加实例的大小，也就增加了点击区的大小。如果边框太小而无法容纳标签，标签会被裁剪以适合边框。

对 CheckBox 组件使用样式

您可以设置样式属性以更改 CheckBox 实例的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

CheckBox 组件支持下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式：“常规”或“斜体”。
fontWeight | 字体粗细：“常规”或“粗体”。
textDecoration | 文本修饰：“无”或“下划线”。

对 CheckBox 组件使用外观

CheckBox 组件使用“库”面板中的元件来表示按钮的状态。若要在创作时设计 CheckBox 组件的外观，请修改“库”面板中的元件。CheckBox 组件外观位于 HaloTheme.fla 文件或者 SampleTheme.fla 文件的库中的 Flash UI Components 2/Themes/MMDefault/CheckBox Assets/states 文件夹下。有关详细信息，请参阅关于设置组件外观。

CheckBox 组件使用下列外观属性：

属性 | 描述
falseUpSkin | 弹起状态。默认值为 RectBorder。
falseDownSkin | 按下状态。默认值为 RectBorder。
falseOverSkin | 悬停状态。默认值为 RectBorder。
falseDisabledSkin | 禁用状态。默认值为 RectBorder。
trueUpSkin | 切换状态。默认值为 RectBorder。
trueDownSkin | 按下切换状态。默认值为 RectBorder。
trueOverSkin | 悬停切换状态。默认值为 RectBorder。
trueDisabledSkin | 禁用切换状态。默认值为 RectBorder。


CheckBox 类

继承 UIObject > UIComponent > SimpleButton > Button > CheckBox

动作脚本类名称 mx.controls.CheckBox

CheckBox 类的属性允许您在运行时创建一个文本标签，并将其放在复选框的左、右、上或下部。

使用“动作脚本”设置 CheckBox 类的属性将会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

CheckBox 组件用 FocusManager 覆盖默认的 Flash Player 焦点矩形，并画出一个带有圆角的自定义焦点矩形。有关详细信息，请参阅创建自定义焦点导航。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.CheckBox.version)；

注意：下面的代码返回未定义的：trace(myCheckBoxInstance.version);。

CheckBox 类的方法摘要

继承 UIObject 和 UIComponent 中的所有方法。

CheckBox 类的属性摘要

属性 | 描述
CheckBox.label> | 指定在复选框旁边出现的文本。
CheckBox.labelPlacement> | 指定标签文本相对于复选框的方向。
CheckBox.selected> | 指定复选框是处于选中状态 (true) 还是处于取消选中状态 (false)。

继承 UIObject 和 UIComponent 中的所有属性。

CheckBox 类的事件摘要

事件 | 描述
CheckBox.click> | 在按钮实例上按下鼠标时触发。

继承 UIObject 和 UIComponent 中的所有事件。


CheckBox.click

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(click){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.click = function(eventObject){
  ...
}
checkBoxInstance.addEventListener("click", listenerObject)

描述

事件；在复选框上单击（松开）鼠标时，或者，如果复选框有焦点并按下了空格键时，向所有已注册的侦听器广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 CheckBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到复选框 myCheckBox，它将“_level0.myCheckBox”发送到“输出”面板：

on(click){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (checkBoxInstance) 发送一个事件（在本例中为 click），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。该事件对象有一组属性，这些属性包含有关事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 addEventListener() 方法（请参阅 UIEventDispatcher.addEventListener()），以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，当单击名为 checkBoxInstance 的按钮时，它会向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象上的 click 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在本例中是 checkBoxInstance。从事件对象的 target 属性中可以访问 CheckBox.selected 属性。最后一行代码从 checkBoxInstance 调用 addEventListener() 方法，并将 click 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form = new Object();
form.click = function(eventObj){
  trace("The selected property has changed to " + eventObj.target.selected);
}
checkBoxInstance.addEventListener("click", form);

下面的代码也会在 checkBoxInstance 被单击时向“输出”面板发送消息。on() 处理函数必须直接附加到 checkBoxInstance，如下所示：

on(click){
  trace("check box component was clicked");
}

另请参见

UIEventDispatcher.addEventListener()


CheckBox.label

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

checkBoxInstance.label

描述

属性；显示复选框的文本标签。默认情况下，标签出现在复选框的右侧。对此属性的设置将会覆盖在剪辑参数面板中指定的标签参数。

范例

下面的代码设置显示在 CheckBox 组件旁的文本，并向“输出”面板发送该值：

checkBox.label = "Remove from list";
trace(checkBox.label)

另请参见

CheckBox.labelPlacement


CheckBox.labelPlacement

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

checkBoxInstance.labelPlacement

描述

属性；一个字符串，它指明标签相对于复选框的位置。下面是四种可能的值（虚线表示组件的边界区域，它们在文档中不可见）：

  • "right" 复选框被固定在边界区域的左上角。标签设置在复选框的右边。这是默认值。

  • "left" 复选框被固定在边界区域的右上角。标签设置在复选框的左边。

  • "bottom" 标签设置在复选框的下面。复选框和标签组水平、垂直居中。

  • "top" 标签放置在复选框的上面。复选框和标签组水平、垂直居中。

    在创作时可以使用 Transform 命令来更改组件的边界区域，或在运行时使用 UIObject.setSize() 属性来更改组件的边界区域。有关详细信息，请参阅自定义 CheckBox 组件。

范例

下面的范例将标签的位置设置在复选框的左侧。

checkBox_mc.labelPlacement = "left";

另请参见

CheckBox.label


CheckBox.selected

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

checkBoxInstance.selected

描述

属性；一个布尔值，它指明选中 (true) 或取消选中 (false) 复选框。

范例

下面的范例选中 checkbox1 实例：

checkbox1.selected = true;


关于 ComboBox 组件

组合框可以是静态的，也可以是可编辑的。使用静态组合框，用户可以从下拉列表中做出一项选择。使用可编辑的组合框，用户可以在列表顶部的文本字段中直接输入文本，也可以从下拉列表中选择一项。如果下拉列表超出文档底部，该列表将会向上打开，而不是向下。组合框由三个子组件组成，它们是：Button 组件、TextInput 组件和 List 组件。

当在列表中进行选择后，所选内容的标签被复制到组合框顶部的文本字段中。进行选择时既可以使用鼠标也可以使用键盘。

如果单击文本框或按钮，ComboBox 组件就会获取焦点。当 ComboBox 组件拥有焦点并且可编辑时，所有键盘输入都会传递到文本框并根据 TextInput 组件（请参阅TextInput 组件）的规则进行处理，但以下按键除外：

按键 | 描述
Control+下箭头键 | 打开下拉列表并给它设置焦点。
Shift + Tab | 将焦点移到前一个对象。
Tab 键 | 将焦点移到下一个对象。

如果一个 ComboBox 组件具有焦点，并且是静态的，按字母数字键就会沿下拉列表将选区上移和下移到下一个首字符相同的项目。您也可以使用下面的按键来控制静态组合框：

按键 | 描述
Control+下箭头键 | 打开下拉列表并给它设置焦点。
Control+上箭头键 | 关闭下拉列表（如果已在 Flash Player 的独立和浏览器版本中打开）。
向下箭头 | 选区会向下移动一项。
End 键 | 选区会移动到列表底端。
Esc 键 | 关闭下拉列表，并在“测试影片”模式下将焦点返回到组合框。
Enter 键 | 关闭下拉列表，并将焦点返回到组合框。
Home 键 | 选区会移动到列表顶端。
Page Down 键 | 选区会向下移动一页。
Page Up 键 | 选区会向上移动一页。
Shift + Tab | 将焦点移到前一个对象。
Tab 键 | 将焦点移到下一个对象。

如果组合框的下拉列表具有焦点，按字母数字键就会沿下拉列表将选区上移和下移到下一个首字符相同的项目。您也可以使用下面的按键来控制下拉列表：

按键 | 描述
Control+上箭头键 | 如果下拉列表处于打开状态，焦点就会返回到文本框，并且下拉列表将在独立或浏览器版本的 Flash Player 中关闭。
向下箭头 | 选区会向下移动一项。
End 键 | 插入点移动到文本框的末尾。
Enter 键 | 如果下拉列表处于打开状态，焦点就会返回到文本框，并且下拉列表会关闭。
Esc 键 | 如果下拉列表处于打开状态，焦点就会返回到文本框，并且下拉列表会在“测试影片”模式下关闭。
Home 键 | 插入点移动到文本框的开始位置。
Page Down 键 | 选区会向下移动一页。
Page Up 键 | 选区会向上移动一页。
Tab 键 | 将焦点移到下一个对象。
Shift-End | 选中从插入点到末尾位置的文本。
Shift-Home | 选择从插入点到开始位置的文本。
Shift-Tab | 将焦点移到前一个对象。
向上箭头 | 选区会向上移动一项。

注意：Page Up 键和 Page Down 键使用的页的大小比可以显示的项数少一项。例如，在一个十行的下拉列表中向下翻页，将会依次显示第 0-9 项、第 9-18 项、第 18-27 项，等等，每页都会有一个重叠项。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 ComboBox 组件实例在舞台上的实时预览反映在创作过程中对属性检查器或“组件检查器”面板中的参数所做的更改。然而，在实时预览中下拉列表并不打开，并且第一个项目会显示为选中项目。

在将 ComboBox 组件添加到应用程序时，您可以使用“辅助功能”面板，使其可由屏幕读取器访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.ComboBoxAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 ComboBox 组件

在任何需要从列表中选择一项的表单或应用程序中，您都可以使用 ComboBox 组件。例如，您可以在客户地址表单中提供一个州/省的下拉列表。对于比较复杂的情况，您可以使用可编辑的组合框。例如，在一个驾驶方向应用程序中，您可以使用一个可编辑的组合框来让用户输入出发地址和目标地址。下拉列表可以包含用户以前输入过的地址。

ComboBox 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 ComboBox 组件设置的创作参数：

editable 确定 ComboBox 组件是可编辑的 (true) 还是只能选择的 (false)。默认值为 false。

labels 用一个文本值数组填充 ComboBox 组件。

data 将一个数据值与 ComboBox 组件中的每个项目相关联。该数据参数是一个数组。

rowCount 设置在不使用滚动条的情况下一次最多可以显示的项目数。默认值为 5。

您可以编写“动作脚本”，通过利用 ComboBox 类的方法、属性和事件来设置 ComboBox 实例的其他选项。有关详细信息，请参阅ComboBox 类。

创建具有 ComboBox 组件的应用程序

以下过程解释了如何在创作时将 ComboBox 组件添加到应用程序。在此范例中，组合框在其下拉列表呈现出一个从中选择城市的列表。

要创建具有 ComboBox 组件的应用程序，请执行以下操作：

  1. 将 ComboBox组件从“组件”面板拖到舞台上。
  2. 选择“变形”工具，并在舞台上调整该组件的大小。

    组合框只能在创作时在舞台上调整大小。通常，您只需改变组合框的宽度以适应其条目。

  3. 选择组合框，并在属性检查器中输入实例名称 comboBox。
  4. 在“组件检查器”面板或属性检查器中，执行以下操作：
    • 输入 Minneapolis、Portland 和 Keene 作为标签参数。双击标签参数字段以打开“值”对话框。然后单击加号（+）以添加项目。
    • 输入 MN.swf、OR.swf 和 NH.swf 作为数据参数。

      这些是假想的 SWF 文件。例如，当用户在组合框中选择了一个城市时，你就可以加载这些文件。

  5. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    form = new Object();
form.change = function (evt){
  trace(evt.target.selectedItem.label);
}
comboBox.addEventListener("change", form);

    最后一行代码将 change 事件处理函数添加到 ComboBox 实例。有关详细信息，请参阅ComboBox.change。


自定义 ComboBox 组件

在创作时，您可以在水平和垂直方向调整 ComboBox 组件。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。

如果文本太长而不能在组合框中完全显示，文本将会被裁剪以适合组合框。您必须在创作时调整组合框的大小以适合标签文本。

在可编辑的组合框中，只有按钮是点击区，文本框不是。对于静态组合框，按钮和文本框一起组成点击区。

对 ComboBox 组件使用样式

您可以设置样式属性来更改 ComboBox 组件的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

组合框有两个独有的样式。其他样式通过各自组件传递到组合框的按钮、文本框和下拉列表，如下所示：

  • 该按钮是一个 Button 实例，并使用它自己的样式。（请参阅对 Button 组件使用样式。）
  • 文本是一个 TextInput 实例，它使用自己的样式。（请参阅对 TextInput 组件使用样式。）
  • 下拉列表是一个 List 实例并使用它自己的样式。（请参阅对 List 组件使用样式。）

ComboBox 组件使用下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式：“常规”或“斜体”。
fontWeight | 字体粗细：“常规”或“粗体”。
textDecoration | 文本修饰：“无”或“下划线”。
openDuration | 打开下拉列表的毫秒数。默认值为 250。
openEasing | 对控制下拉列表动画的补间函数的引用。默认为正弦输入/输出。要了解更多的公式，请从 Robert Penner's website（Robert Penner 的 Web 站点）下载列表，地址为 www.robertpenner.com/easing/。

对 ComboBox 组件使用外观

ComboBox 组件使用“库”面板中的元件来表示按钮的状态，ComboBox 具有向下箭头的外观变量。除此之外，它还使用滚动条外观和列表外观。要在创作过程中设计 ComboBox 组件的外观，请在“库”面板中修改元件并将组件重新导出为 SWC。CheckBox 组件外观位于 HaloTheme.fla 文件或者 SampleTheme.fla 文件的库中的 Flash UI Components 2/Themes/MMDefault/ComboBox Assets/states 文件夹下。有关详细信息，请参阅关于设置组件外观。

ComboBox 组件使用下列外观属性：

属性 | 描述
ComboDownArrowDisabledName | 向下箭头的禁用状态。默认值为 RectBorder。
ComboDownArrowDownName | 向下箭头的按下状态。默认值为 RectBorder。
ComboDownArrowUpName | 向下箭头的弹起状态。默认值为 RectBorder。
ComboDownArrowOverName | 向下箭头的悬停状态。默认值为 RectBorder。


ComboBox 类

继承 UIObject > UIComponent > ComboBase > ComboBox

动作脚本类名称 mx.controls.ComboBox

ComboBox 组件结合了三个单独的子组件：Button、TextInput 和 List。从 ComboBox 组件中可以直接使用每个子组件的大多数 API，ComboBox 类的方法、属性和事件表中列出了这些 API。

所提供的组合框中的下拉列表是作为 Array 或者作为 DataProvider 对象。如果您使用 DataProvider 对象，列表会在运行时更改。通过切换到一个新的 Array 或 DataProvider 对象，可以动态改变 ComboBox 的数据源。

组合框列表中的项目是按位置从数字 0 开始编排索引的。一个项目可以是以下内容之一：

  • 原始数据类型。
  • 一个对象，其中包含 label 属性和 data 属性。

    注意：对象可能使用 ComboBox.labelFunction> 或 ComboBox.labelField> 属性来确定 label 属性。

如果该项目是原始数据类型而不是字符串，则会转换为字符串。如果某个项目是一个对象，则其 label 属性必须是字符串，而 data 属性可以是任何动作脚本值。

您向其提供项目的 ComboBox 组件方法有两个参数：label 和 data，它们指的是上述属性。返回一个项目的方法会将该项目作为一个“对象”返回。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.ComboBox.version);

注意：下面的代码返回未定义的：trace(myComboBoxInstance.version);。

ComboBox 类的方法摘要

属性 | 描述
ComboBox.addItem()> | 向列表的结尾添加项目。
ComboBox.addItemAt()> | 向列表的结尾在指定的索引处添加项目。
ComboBox.close()> | 关闭下拉列表。
ComboBox.getItemAt()> | 返回指定索引处的项目。
ComboBox.open()> | 打开下拉列表。
ComboBox.removeAll()> | 删除列表中的所有项目。
ComboBox.removeItemAt()> | 删除位于列表中指定位置的项目。
ComboBox.replaceItemAt()> | 用其他指定项目替换列表中的某个项目。

继承 UIObject 和 UIComponent 中的所有方法。

ComboBox 类的属性摘要

属性 | 描述
ComboBox.dataProvider> | 列表中项目的数据模型。
ComboBox.dropdown> | 返回一个对组合框所包含的 List 组件的引用。
ComboBox.dropdownWidth> | 下拉列表的宽度（以像素为单位）。
ComboBox.editable> | 指明组合框是否可以编辑。
ComboBox.labelField> | 指明使用哪个数据字段作为下拉列表的标签。
ComboBox.labelFunction> | 指定一个用于计算下拉列表标签字段的函数。
ComboBox.length> | 只读。下拉列表的长度。
ComboBox.rowCount> | 列表一次可以显示的最大项目数。
ComboBox.selectedIndex> | 下拉列表中所选项目的索引。
ComboBox.selectedItem> | 下拉列表中所选项目的值。
ComboBox.text> | 文本框中文本的字符串。
ComboBox.textField> | 对组合框中 TextInput 组件的引用。
ComboBox.value> | 文本框（可编辑）或下拉列表（静态）的值。

继承 UIObject 和 UIComponent 中的所有属性。

ComboBox 类的事件摘要

事件 | 描述
ComboBox.change> | 当组合框的值因用户交互操作而改变时广播。
ComboBox.close> | 当下拉列表开始关闭时广播。
ComboBox.enter> | 当按下 Enter 键时广播。
ComboBox.itemRollOut> | 当指针滑离一个下拉列表项时广播。
ComboBox.itemRollOver> | 当滑过下拉列表的一个项目时广播。
ComboBox.open> | 当下拉列表开始打开时广播。
ComboBox.scroll> | 当滚动下拉列表时广播。

继承 UIObject 和 UIComponent 中的所有事件。


ComboBox.addItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

comboBoxInstance.addItem(label[, data])

用法 2：

comboBoxInstance.addItem({label:label[, data:data]})

用法 3：

comboBoxInstance.addItem(obj);

参数

label 一个字符串，它指明新项目的标签。

data 该项目的数据，可以是任何数据类型。此参数是可选的。

obj 具有 label 属性和可选 data 属性的对象。

返回

在其位置添加了项目的索引。

描述

方法；在列表的结尾添加新项目。

范例

下面的代码给 myComboBox 实例添加一个项目：

myComboBox.addItem("this is an Item");


ComboBox.addItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

comboBoxInstance.addItemAt(index, label[, data])

参数

index 一个等于或大于 0 的数字，指明要插入项目的位置（新项目的索引）。

label 一个字符串，它指明新项目的标签。

data 该项目的数据，可以是任何数据类型。此参数是可选的。

返回

在其位置添加了项目的索引。

描述

方法；在位于列表结尾的由 index 参数指定的索引处添加新项目。大于 ComboBox.length 的索引将被忽略。

范例

下面的代码在索引 3 处（即组合框列表中的第 4 个位置（0 是第 1 个位置））插入一个项目：

myBox.addItemAt(3, "this is the fourth Item");


ComboBox.change

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(change){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("change", listenerObject)

描述

事件；当组合框的值因用户交互操作而改变时向所有已注册的侦听器广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(change){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 addEventListener() 方法（请参阅 UIEventDispatcher.addEventListener()），以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例将生成 change 事件的组件的实例名称发送到“输出”面板：

form.change = function(eventObj){
  trace("Value changed to " + eventObj.target.value);
}
myCombo.addEventListener("change", form);

另请参见

UIEventDispatcher.addEventListener()


ComboBox.close()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.close()

参数

无。

返回

无。

描述

方法；关闭下拉列表。

范例

下面的范例关闭组合框 myBox 的下拉列表：

myBox.close();

另请参见

ComboBox.open()


ComboBox.close

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(close){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.close = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("close", listenerObject)

描述

事件；当组合框的列表开始回缩时，向所有已注册的侦听器广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(close){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 close），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例在下拉列表开始关闭时，向“输出”面板发送一条消息：

form.close = function(){
  trace("The combo box has closed");
}
myCombo.addEventListener("close", form);

另请参见

UIEventDispatcher.addEventListener()


ComboBox.dataProvider

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

comboBoxInstance.dataProvider

描述

属性；在列表中查看的项目的数据模型。该属性的值可以是一个数组或任何实现 DataProvider 接口的对象。默认值为 []。这是 List 组件的一个属性，但是可以从 ComboBox 组件实例中直接访问。

List 组件以及其他支持数据的组件会将方法添加到 Array 对象的原型，以便它们符合 DataProvider 接口（有关详细信息，请参阅 DataProvider.as）。因此，任何同时作为列表存在的数组都会自动具有作为列表的模型所需的所有方法（addItem()、getItemAt() 等等），并可用于向多个组件广播模型更改。

如果数组包含对象，则会访问 labelField 或 labelFunction 属性以确定要显示项目的哪些部分。默认值是 "label"，所以，如果存在这样的字段，就会选择它来进行显示；如果不存在，就会显示用逗号分隔的所有字段的列表。

注意：如果该数组在每个索引处都包含字符串，而不包含对象，该列表就无法对项目进行排序和保持选定状态。进行任何排序都会丢失所做选择。

任何实现 DataProvider 接口的实例都可以作为 List 的数据提供程序。这包括 Flash Remoting RecordSets、Firefly DataSets，等等。

范例

本范例使用一个字符串数组来填充下拉列表：

comboBox.dataProvider = ["Ground Shipping","2nd Day Air","Next Day Air"];

此范例将创建一个数据提供程序数组，并将其赋予 dataProvider 属性，如下所示：

myDP = new Array();
list.dataProvider = myDP;

for (var i=0; i<accounts.length; i++) {
  // 对 DataProvider 的这些更改将广播到列表
  myDP.addItem({ label:accounts[i].name,
                 data:accounts[i].accountID });
}


ComboBox.editable

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.editable

描述

属性；指明组合框是 (true) 否 (false) 可编辑。对于可编辑组合框，可以在文本框中输入值,这些值不显示在下拉列表中。如果组合框是不可编辑的，则只有下拉列表中列出的值才可以输入到文本框中。默认值为 false。

将组合框设置为可编辑会清除组合框的文本字段，还会将所选的索引（以及项目）设置为未定义。要使组合框可编辑且仍保留所选项，请使用下面的代码：

var ix = myComboBox.selectedIndex;
myComboBox.editable = true; // 清除文本字段
myComboBox.selectedIndex = ix; // 将标签复制回文本字段。

范例

下面的代码将 myComboBox 设置为可编辑的：

myComboBox.editable = true;


ComboBox.enter

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(enter){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.enter = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("enter", listenerObject)

描述

事件；当在文本框中按下 Enter 键时，向所有已注册的侦听器广播。该事件只从可编辑的组合框广播。这是一个从组合框广播的 TextInput 事件。有关详细信息，请参阅TextInput.enter。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(enter){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 enter），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例在下拉列表开始关闭时，向“输出”面板发送一条消息：

form.enter = function(){
  trace("The combo box enter event was triggered");
}
myCombo.addEventListener("enter", form);

另请参见

UIEventDispatcher.addEventListener()


ComboBox.itemRollOut

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(itemRollOut){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.itemRollOut = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("itemRollOut", listenerObject)

事件对象

除了事件对象的标准属性外，itemRollOut 事件还有一个附加属性：index。index 是已经滚动出的项目的数量。

描述

事件；当指针滚动出下拉列表项目时，向所有已注册的侦听器广播。这是一个从组合框广播的 List 事件。有关详细信息，请参阅List.itemRollOut。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(itemRollOut){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 itemRollOut），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

范例

下面的范例向“输出”面板发送一条消息，指明已经滚动出哪些项目索引编号:

form.itemRollOut = function (eventObj) {
  trace("Item #" + eventObj.index + " has been rolled out of.");
}
myCombo.addEventListener("itemRollOut", form);

另请参见

ComboBox.itemRollOver、UIEventDispatcher.addEventListener()


ComboBox.itemRollOver

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(itemRollOver){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.itemRollOver = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("itemRollOver", listenerObject)

事件对象

除了事件对象的标准属性外，itemRollOver 事件还有一个附加属性：index。index 是滑过的项目的数量。

描述

事件；当滑过下拉列表项目时，向所有已注册的侦听器广播。这是一个从组合框广播的 List 事件。有关详细信息，请参阅List.itemRollOver。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(itemRollOver){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 itemRollOver），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

范例

下面的范例向“输出”面板发送一条消息，指明已在哪个项目索引编号上滑过：

form.itemRollOver = function (eventObj) {
  trace("Item #" + eventObj.index + " has been rolled over.");
}
myCombo.addEventListener("itemRollOver", form);

另请参见

ComboBox.itemRollOut、UIEventDispatcher.addEventListener()


ComboBox.labelField

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.labelField

描述

属性；在 dataProvider 数组对象中要用作标签字段的字段名称。这是 List 组件的一个属性，可以从 ComboBox 组件实例中使用。有关详细信息，请参阅List.labelField。

默认值未定义。

范例

下面的范例将 dataProvider 属性设置为一个字符串数组并设置 labelField 属性，以指明应将 name 字段用作下拉列表的标签：

myComboBox.dataProvider  = [
  {name:"Gary", gender:"male"},
  {name:"Susan", gender:"female"} ];

myComboBox.labelField = "name";

另请参见

List.labelFunction


ComboBox.labelFunction

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.labelFunction

描述

属性；一个计算 dataProvider 项目标签的函数。必须定义该函数。默认值未定义。

范例

下面的范例创建了一个数据提供程序，然后定义一个函数以指定用作下拉列表标签的内容：

myComboBox.dataProvider  = [
  {firstName:"Nigel", lastName:"Pegg", age:"really young"},
  {firstName:"Gary", lastName:"Grossman", age:"young"},
  {firstName:"Chris", lastName:"Walcott", age:"old"},
  {firstName:"Greg", lastName:"Yachuk", age:"really old"} ];

myComboBox.labelFunction = function(itemObj){
  return (itemObj.lastName + ", " + itemObj.firstName);
}

另请参见

List.labelField


ComboBox.length

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.length

描述

属性（只读）；下拉列表的长度。这是 List 组件的一个属性，可以从 ComboBox 实例使用。有关详细信息，请参阅List.length。默认值为 0。

范例

下面的范例将 length 的值存储到一个变量：

dropdownItemCount = myBox.length;


ComboBox.open()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.open()

参数

无。

返回

无。

描述

属性；打开下拉列表。

范例

下面的代码打开 combo1 实例的下拉列表：

combo1.open();

另请参见

ComboBox.close()


ComboBox.open

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(open){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.open = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("open", listenerObject)

描述

事件；当下拉列表开始出现时，向所有已注册的侦听器广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(open){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 open），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

范例

以下范例向“输出”面板发送一条消息，以指明已经滚动出的项目索引号：

form.open = function () {
  trace("The combo box has opened with text " + myBox.text);
}
myBox.addEventListener("open", form);

另请参见

ComboBox.close、UIEventDispatcher.addEventListener()


ComboBox.removeAll()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

comboBoxInstance.removeAll()

参数

无。

返回

无。

描述

方法；删除列表中的所有项目。这是 List 组件的一个方法，可以从 ComboBox 组件的实例中获得。

范例

下列代码会清除列表：

myCombo.removeAll();

另请参见

ComboBox.removeItemAt()、ComboBox.replaceItemAt()


ComboBox.removeItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.removeItemAt(index)

参数

index 一个数字，指明要删除的项目的位置。该值是从零开始的。

返回

一个对象；已删除的项目（如果项目不存在，则它是未定义的）。

描述

方法；删除指定索引位置处的项目。index 参数指明的索引后面的列表索引会折叠一项。这是 List 组件的一个方法，可以从 ComboBox 组件的实例中获得。

范例

下面的代码会删除在索引位置 3 的项目：

myCombo.removeItemAt(3);

另请参见

ComboBox.removeAll()、ComboBox.replaceItemAt()


ComboBox.replaceItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

comboBoxInstance.replaceItemAt(index, label[, data])

参数

index 一个等于或大于 0 的数字，指明要插入项目的位置（新项目的索引）。

label 一个字符串，它指明新项目的标签。

data 项目的数据。此参数是可选的。

返回

无。

描述

方法；替换 index 参数指定的索引位置的项目内容。它是 List 组件的一个方法，可以从 ComboBox 组件中获得。

范例

以下范例会更改第三个索引位置：

myCombo.replaceItemAt(3, "new label");

另请参见

ComboBox.removeAll()、ComboBox.removeItemAt()


ComboBox.rowCount

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.rowCount

描述

属性；下拉列表中可见的最大行数。默认值为 5。

如果下拉列表中的项目数大于或等于 rowCount 属性，那么它会调整大小，并根据需要显示滚动条。如果下拉列表中包含的项目数少于 rowCount 属性，那么它会调整到列表中的项目数。

这种行为与 List 组件的行为不同，List 组件会始终显示 rowCount 属性所指定的行数，即使有些地方出现空白。

如果该值是负的或小数，则该行为是未定义的。

范例

以下范例指定组合框中应该可以看到 20 行或更少的行：

myComboBox.rowCount = 20;


ComboBox.scroll

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(scroll){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.scroll = function(eventObject){
  // 此处是您的代码
}
comboBoxInstance.addEventListener("scroll", listenerObject)

事件对象

除了标准的事件对象属性之外，滚动事件还有另一个 direction 属性。它是一个字符串，有两个可能的值："horizontal" 或 "vertical"。对于 ComboBox scroll事件，该值始终是 "vertical"。

描述

事件；当滚动下拉列表时，向所有已注册的侦听器广播。这是一个 List 组件事件，可以用于 ComboBox。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 ComboBox 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面的代码附加到 ComboBox 组件实例 myBox 上，它将“_level0.myBox”发送到“输出”面板：

on(scroll){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (comboBoxInstance) 发送一个事件（在本例中为 scroll），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

范例

以下范例向“输出”面板发送一条消息，以指明已经滚动到的项目索引号：

form.scroll = function(eventObj){
  trace("The list had been scrolled to 项 # " + eventObj.target.vPosition);
}
myCombo.addEventListener("scroll", form);

另请参见

UIEventDispatcher.addEventListener()


ComboBox.selectedIndex

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.selectedIndex

描述

属性；下拉列表中所选项目的索引（数值）。默认值为 0。给该属性赋值会清除当前的选择，而选择指定项目，并在组合框的文本框中显示指定项目的标签。

如果对 selectedIndex 的赋值超出了范围，则会被忽略。在可编辑组合框的文本字段中输入文本会将 selectedIndex 设置为未定义。

范例

下列代码会选择列表中的最后一项：

myComboBox.selectedIndex = myComboBox.length-1;

另请参见

ComboBox.selectedItem


ComboBox.selectedItem

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.selectedItem

描述

属性；下拉列表中所选项目的值。

如果组合框是可编辑的，在文本框中输入任何文本时，selectedItem 都将返回未定义。如果您从下拉列表中选择一项，或者通过动作脚本设置该值，那么它将只有一个值。如果组合框是静态的，则 selectedItem 的值始终有效。

范例

如果数据提供程序包含了原始类型，则以下范例会显示 selectedItem：

var item = myComboBox.selectedItem;
trace("You selected the item " + item);

如果数据提供程序包含了具有 label 和 data 属性的对象，则以下范例会显示 selectedItem：

var obj = myComboBox.selectedItem;
trace("You have selected the color named:" + obj.label);
trace("The hex value of this color is:" + obj.data);

另请参见

ComboBox.dataProvider、ComboBox.selectedIndex


ComboBox.text

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.text

描述

属性；文本框中的文本。您可以为可编辑的组合框获取和设定该值。对于静态的组合框，该值是只读的。

范例

以下范例设置了可编辑组合框的当前 text 值：

myComboBox.text = "California";


ComboBox.textField

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.textField

描述

属性（只读）；对 ComboBox 包含的 TextInput 组件的引用。

使用该属性，您可以访问下层的 TextInput 组件，这样您就可以操作该组件。例如，您可能需要更改文本框的选定内容或者限制可以输入到文本框中的字符。

范例

下列代码会限制 myComboBox 的文本框只接受数字：

myComboBox.textField.restrict = "0-9";


ComboBox.value

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.value

描述

属性（只读）；如果组合框是可编辑的，value 会返回文本框的值。如果组合框是静态的，value 会返回下拉列表的值。下拉列表的值为 data 字段，或者，如果 data 字段不存在，则为 label 字段。

范例

以下范例通过设置 dataProvider 属性，将数据输入组合框。然后，它会在“输出”面板中显示 value。最后，它选择 "California"，并将其显示在文本框中，如下所示：

cb.dataProvider = [
  {label:"Alaska", data:"AZ"},
  {label:"California", data:"CA"},
  {label:"Washington", data:"WA"}];

cb.editable = true;
cb.selectedIndex = 1;
trace('Editable value is "California":'+ cb.value);

cb.editable = false;
cb.selectedIndex = 1;
trace('Non-editable value is "CA":'+ cb.value);


关于数据绑定类

数据绑定类为 Flash MX Professional 2004 中的数据绑定特性提供了运行时功能。您可以使用“组件检查器”面板中的“绑定”选项卡在 Flash 创作环境中直观地创建和配置数据绑定，也可以使用 mx.data.binding 包中的类以编程方式创建和配置绑定。

有关数据绑定的概述，以及如何在 Flash 创作工具中直观地创建数据绑定，请参阅数据绑定（仅限于 Flash Professional）。


使数据绑定类在运行时可用（仅限 Flash Professional）

为了能够在运行时使用数据绑定服务类，DataBindingClasses 组件必须位于 FLA 文件的库中。当您在 Flash 创作环境中直观地创建绑定时，此组件将自动添加到文档的库中。但是，如果只是使用动作脚本在运行时创建绑定，则您必须手动将此组件添加到文档的库中。有关如何将此组件添加到文档中的信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。


mx.data.binding 包中的类（仅限 Flash Professional）

下表列出了 mx.data.binding 包中的类。

类 | 描述
Binding 类（仅限 Flash Professional） | 在两个端点之间创建绑定。
ComponentMixins 类（仅限 Flash Professional） | 将特定于数据绑定的功能添加到组件。
CustomFormatter 类（仅限 Flash Professional） | 用于创建自定义格式程序类的基类。
CustomValidator 类（仅限 Flash Professional） | 用于创建自定义验证程序类的基类。
DataType 类（仅限 Flash Professional） | 提供对组件属性的数据字段的读写访问权限。
EndPoint 类（仅限 Flash Professional） | 定义绑定的来源或目标。
TypedValue 类（仅限 Flash Professional） | 包含数据值和有关值的数据类型的信息。


Binding 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.Binding

Binding 类定义两个端点（来源 和目标）之间的关联。它侦听来源端点的更改，并在每次来源更改时将更改后的数据复制到目标端点。

您可以使用 Binding 类（和提供支持的类）编写自定义绑定，也可以使用“组件检查器”面板中的“绑定”选项卡（“窗口”>“开发面板”>“组件检查器”）。

注意：要使此类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中类的概述，请参阅数据绑定类（仅限 Flash Professional）。

Binding 类的方法摘要

方法 | 描述
Binding.execute()> | 从来源组件中获取数据，对数据进行格式化，然后将数据分配给目标组件。

Binding 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

new Binding(source, destination, [format], [isTwoWay])

参数

source 绑定的来源端点。此参数在名义上属于 mx.data.binding.EndPoint 类型，但可以是具有所需“端点”字段的任何动作脚本对象（请参阅 EndPoint 类（仅限 Flash Professional））。

destination 绑定的目标端点。此参数在名义上属于 mx.data.binding.EndPoint 类型，但可以是具有所需“端点”字段的任何动作脚本对象（请参阅 EndPoint 类（仅限 Flash Professional））。

format （可选）包含格式设置信息的对象。该对象必须具有以下属性：

  • cls 扩展 mx.data.binding.DataAccessor 类的动作脚本类。
  • settings 一个对象，其属性为 cls 指定的格式程序类提供可选设置。

isTwoWay （可选）布尔值，指定新的 Binding 对象是 (true) 否 (false) 为双向。默认值为 false。

返回

无。

说明

构造函数；创建新的 Binding 对象。可以将数据绑定到具有属性并发出事件的任何动作脚本对象（包括但不限于组件）。

只要处于最里层的影片剪辑同时包含来源和目标组件，就会存在绑定对象。例如，如果名为“A”的影片剪辑包含组件“X”和“Y”，并且“X”和“Y”之间存在绑定，则只要影片剪辑 A 存在，绑定就有效。

注意：不必保留对新 Binding 对象的引用（尽管您可以这样做）。Binding 对象一经创建就会立即开始侦听任一“端点”发出的“已更改”事件。但是，在某些情况下，您可能需要保存对新 Binding 对象的引用，以便稍后能够调用它的 execute() 方法（请参阅 Binding.execute()>）。

示例

范例 1：在此范例中，一个 TextInput 组件 (src_txt) 的 text 属性被绑定到另一个 TextInput 组件 (dest_txt) 的 text 属性。在 src_txt 文本字段失去焦点时（也就是说，在生成 focusOut 事件时），它的 text 属性的值将被复制到 dest_txt.text 中。

import mx.data.binding.*;
var src = new EndPoint();
src.component = src_txt;
src.property = "text";
src.event = "focusOut";

var dest= new EndPoint();
dest.component = dest_txt;
dest.property = "text";

new Binding(src, dest);

范例 2：此范例演示如何创建使用自定义格式程序类的 Binding 对象。有关创建自定义格式程序类的详细信息，请参阅CustomFormatter 类（仅限 Flash Professional）。

import mx.data.binding.*;
var src = new EndPoint();
src.component = src_txt;
src.property = "text";
src.event = "focusOut";

var dest= new EndPoint();
dest.component = text_dest;
dest.property = "text";

new Binding(src, dest, {cls:mx.data.formatters.Custom, settings:{classname:"com.mycompany.SpecialFormatter"}});


Binding.execute()

可用性

Flash Player 6。

版本

Flash MX Professional 2004。

用法

myBinding.execute([reverse])

参数

reverse 布尔值，指定是同时执行从目标到来源的绑定 (true)，还是只执行从来源到目标的绑定 (false)。默认情况下，此值为 false。

返回

如果绑定成功执行，则值为 null；否则将会返回一个错误消息（字符串）数组，这些错误消息描述阻碍绑定执行的一个或多个错误。

说明

方法；从来源组件获取数据，并将其分配给目标组件。如果绑定使用格式程序，则会在将数据分配给目标之前对其进行格式化。

此方法还会对数据进行验证，并会造成目标和来源组件发出 valid 或 invalid 事件。数据即使无效也会被分配给目标，除非目标是只读的。

如果 reverse 参数设置为 true，并且绑定是双向的，则会反向执行绑定（从目标到来源）。

示例

Button 组件实例附带的以下代码将在按钮被单击时反向执行绑定（从目标组件到来源组件）。

on(click){
  _root.myBinding.execute(true);
}


CustomFormatter 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.CustomFormatter

CustomFormatter 类定义两个方法（format() 和 unformat()），它们提供了将数据值从特定数据类型转换为 String（反之亦然）的能力。默认情况下，这些方法不会执行任何操作；您必须在 mx.data.binding.CustomFormatter 的子类中实现它们。

要创建自己的自定义格式程序，您需要首先创建实现 format() 和 unformat() 方法的 CustomFormatter 的子类。然后，您可以将该类分配给组件之间的绑定，方法是使用动作脚本创建一个新的 Binding 对象（请参阅Binding 类（仅限 Flash Professional）），或使用“组件检查器”面板中的“绑定”选项卡。有关使用组件检查器分配格式程序类的信息，请参阅架构格式程序（仅限于 Flash Professional）。

您也可以在“组件检查器”面板的“架构”选项卡上将格式程序类分配给组件属性。但是，在这种情况下，只有在需要字符串格式的数据时才会使用格式程序。相反，使用“绑定”面板分配或通过动作脚本创建的格式程序会在每次执行绑定时使用。

有关使用动作脚本编写和分配自定义格式程序的范例，请参阅自定义格式程序范例。

注意：要使此类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中类的概述，请参阅数据绑定类（仅限 Flash Professional）。

自定义格式程序范例

以下范例演示如何创建自定义格式程序类，然后使用动作脚本将其应用到两个组件之间的绑定。在此范例中，NumericStepper 组件的当前值（其 value 属性）被绑定到 TextInput 组件的当前值（其 text 属性）。在将 NumericStepper 组件的当前数字值（例如，1、2 或 3）分配给 TextInput 组件之前，自定义格式程序类会将该值格式化为其对等的英文单词（例如，“one”、“two”或“three”）。

要创建和使用自定义格式程序：

  1. 在 Flash MX Professional 2004 中，创建一个新的动作脚本文件。
  2. 将以下代码添加到该文件：
    // NumberFormatter.as
class NumberFormatter extends mx.data.binding.CustomFormatter {
  // 格式化数字，返回字符串
  function format(rawValue) {
    var returnValue;
    var strArray = new Array('one', 'two', 'three');
    var numArray = new Array(1, 2, 3);
    returnValue = 0;
    for (var i = 0; i<strArray.length; i++) {
      if (rawValue == numArray[i]) {
        returnValue = strArray[i];
        break;
      }
    }
    return returnValue;
  }  // 转换格式化后的值，返回原始值
  function unformat(formattedValue) {
    var returnValue;
    var strArray = new Array('one', 'two', 'three');
    var numArray = new Array(1, 2, 3);
    returnValue = "invalid";
    for (var i = 0; i<strArray.length; i++) {
      if (formattedValue == strArray[i]) {
        returnValue = numArray[i];
        break;
      }
    }
    return returnValue;
  }
}
  3. 将动作脚本文件另存为 NumberFormatter.as。
  4. 创建新的 Flash (FLA) 文档。
  5. 打开“组件”面板（“窗口”>“开发面板”>“组件”）。
  6. 将 TextInput 组件拖到舞台上，然后将其命名为 textInput。
  7. 将 NumericStepper 组件拖到舞台上，然后将其命名为 stepper。
  8. 打开“时间轴”（“窗口”>“时间轴”）并选择第 1 层上的第一帧。
  9. 打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  10. 将以下代码添加到“动作”面板：
    import mx.data.binding.*;
var x:NumberFormatter;
var customBinding = new Binding({component:stepper, property:"value", event:"change"}, {component:textInput, property:"text", event:"enter,change"}, {cls:mx.data.formatters.Custom, settings:{classname:"NumberFormatter"}});

    代码的第二行 (var x:NumberFormatter) 确保编译后的 SWF 文件中包含自定义格式程序类的字节代码。

  11. 选择“窗口”>“面板”>“其他面板”>“类”以打开“类”库。
  12. 通过选择“窗口”>“库”打开文档的库。
  13. 将 DataBindingClasses 组件从“类”库拖到文档的库中。

    这将使文档可以使用数据绑定运行时类。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

  14. 将 FLA 文件保存到包含 NumberFormatter.as 的同一文件夹中。
  15. 测试文件（“控制”>“测试影片”）。

    单击 NumericStepper 组件上的按钮，并观看 TextInput 组件的内容发生更新。

CustomFormatter 类的方法摘要

方法 | 描述
CustomFormatter.format()> | 从原始数据类型转换为文本字符串。
CustomFormatter.unformat()> | 从文本字符串转换为原始数据类型。


CustomFormatter.format()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

此方法是自动调用的；您不必直接调用它。

参数

rawData 要格式化的数据。

返回

格式化后的值。

说明

方法；从原始数据类型转换为新的对象。

此方法不会默认执行。您必须在 mx.data.binding.CustomFormatter 的子类中定义此方法。

示例

请参阅自定义格式程序范例。


CustomFormatter.unformat()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

此方法是自动调用的；您不必直接调用它。

参数

formattedData 要转换回原始数据类型的已格式化数据。

返回

取消格式的值。

说明

方法；从字符串（或其他数据类型）转换为原始数据类型。此转换应执行与 CustomFormatter.format() 恰好相反的转换。

此方法不会默认执行。您必须在 mx.data.binding.CustomFormatter 的子类中定义此方法。

有关详细信息，请参阅自定义格式程序范例。


CustomValidator 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.CustomValidator

在需要对组件包含的数据字段执行自定义验证时，可以使用 CustomValidator 类。

要创建自定义验证类，您需要首先创建实现名为 validate() 的方法的 mx.data.binding.CustomValidator 的子类。待验证的值会自动传递到此方法。有关如何实现此方法的详细信息，请参阅 CustomValidator.validate()。

接着，您需要使用“组件检查器”面板的“架构”选项卡将自定义验证程序类分配给组件的字段。有关创建和使用自定义验证程序类的范例，请参阅 CustomValidator.validate() 条目中的“范例”部分。

要分配自定义验证程序，请执行以下操作：

  1. 在“组件检查器”面板（“窗口”>“组件检查器”）中，选择“架构”选项卡。
  2. 选择要验证的字段，然后从“数据类型”弹出菜单中选择“自定义”。
  3. 选择“验证选项”字段（位于“架构”选项卡的底部），然后单击放大镜图标打开“自定义验证设置”对话框。
  4. 在“动作脚本类”文本框中输入您创建的自定义验证类的名称。

    为了使指定的类包含在发布的 SWF 内，它必须位于类路径中。

注意：要使该类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中类的概述，请参阅数据绑定类（仅限 Flash Professional）。

CustomValidator 类的方法摘要

方法 | 描述
CustomValidator.validate()> | 对数据执行验证。
CustomValidator.validationError()> | 报告验证错误。


CustomValidator.validate()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

此方法是自动调用的；您不必直接调用它。

参数

value 要验证的数据；可以是任何类型。

返回

无。

说明

方法；自动调用以验证 value 参数包含的数据。必须在 CustomValidator 的子类中实现此方法；默认实现不会执行任何操作。

可以使用任何所需的动作脚本代码检查和验证数据。如果数据无效，此方法应调用带有相应消息的 this.validationError()。如果数据存在多个验证问题，则可以调用 this.validationError() 多次。

由于 validate() 方法可以被重复调用，因此应避免将需要很长时间才能完成的代码添加到此方法。此方法的实现只应检查有效性，然后使用 CustomValidator.validationError() 报告任何错误。同样，这种实现不应作为验证测试的任何结果（如警示最终用户），而应该为 valid 和 invalid 事件创建事件侦听器，然后从这些事件侦听器中警示最终用户（请参阅下面的范例）。

示例

以下过程演示如何创建和使用自定义验证类。CustomValidator 类的 validate() 方法 OddNumbersOnly.as 将不是奇数的任何值确定为无效。验证在 NumericStepper 组件的值发生更改时进行，该组件已绑定到 Label 组件的 text 属性。

要创建和使用自定义验证程序类：

  1. 在 Flash MX Professional 2004 中，创建一个新的动作脚本 (AS) 文件。
  2. 将以下代码添加到该 AS 文件：
    class OddNumbersOnly extends mx.data.binding.CustomValidator
{
  public function validate(value) {
    // 确保值为数字
    var n = Number(value);
    if (String(n) == "NaN") {
      this.validationError("'" + value + "' is not a number.");
      return;
    }
    // 确定数字为奇数
    if (n % 2 == 0) {
      this.validationError("'" + value + "' is not a odd number.");
      return;
    }
    // 数据无误，无需执行任何操作，只需返回
  }
}
  3. 将该 AS 文件另存为 OddNumbersOnly.as。

    注意：AS 文件的名称必须与类的名称匹配。

  4. 创建新的 Flash (FLA) 文档。
  5. 打开“组件”面板（“窗口”>“开发面板”>“组件”）。
  6. 将 NumericStepper 组件从“组件”面板拖到舞台上，然后将其命名为 stepper。
  7. 将 Label 组件拖到舞台上，然后将其命名为 textLabel。
  8. 将 TextArea 组件拖到舞台上，然后将其命名为 status。
  9. 选择 NumericStepper 组件，然后打开“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”）。
  10. 在“组件检查器”面板中选择“绑定”选项卡，然后单击“添加绑定”(+) 按钮。
  11. 在“添加绑定”对话框中选择 Value 属性（唯一的属性），然后单击“确定”。
  12. 在“组件检查器”面板中，双击“绑定”选项卡“绑定属性”窗格中的“绑定到”，打开“绑定到”对话框。
  13. 在“绑定到”对话框的“组件路径”窗格中选择 Label 组件，并在“架构位置”窗格中选择其 text 属性。单击“确定”。
  14. 在舞台上选择 Label 组件，然后单击“组件检查器”面板中的“架构”选项卡。
  15. 在“架构属性”窗格中，从“数据类型”弹出菜单中选择“自定义”。
  16. 双击“架构属性”窗格中的“验证选项”字段，打开“自定义验证设置”对话框。
  17. 在“动作脚本类”文本框中输入 OddNumbersOnly，即之前创建的动作脚本类的名称。单击“确定”。
  18. 打开“时间轴”（“窗口”>“时间轴”）并选择第 1 层上的第一帧。
  19. 打开“动作”面板（“窗口”>“动作”）。
  20. 将以下代码添加到“动作”面板：
    function dataIsInvalid(evt) {
  if (evt.property == "text") {
    status.text = evt.messages;
  }
}

function dataIsValid(evt) {
  if (evt.property == "text") {
    status.text = "OK";
  }
}

textLabel.addEventListener("valid", dataIsValid);
textLabel.addEventListener("invalid", dataIsInvalid);
  21. 将 FLA 文件另存为 OddOnly.fla，保存到包含 OddNumbersOnly.as 的同一文件夹中。
  22. 测试 SWF（“控制”>“测试影片”）。

    单击 NumericStepper 组件上的箭头更改它的值。注意在选择偶数和奇数时 TextArea 组件中出现的消息。


CustomValidator.validationError()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

this.validationError(errorMessage)

注意：只能从自定义验证程序类中调用此方法；关键字 this 指当前的 CustomValidator 对象。

参数

errorMessage 包含要报告的错误消息的字符串。

返回

无。

说明

方法；可以从 CustomValidator 的子类的 validate() 方法中调用此方法，以便报告验证错误。如果不调用此方法，则会在 validate() 完成时生成 valid 事件。如果从 validate() 方法内调用此方法一次或多次，则在 validate() 返回后会生成 invalid 事件。

传递给 validationError() 的每条消息都可在传递到 invalid 事件处理函数的事件对象的“messages”属性中找到。

示例

请参阅 CustomValidator.validate() 的“范例”部分。


EndPoint 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.EndPoint

EndPoint 类定义绑定的来源或目标。EndPoint 对象定义常数值、组件属性或组件属性的特定字段，您可以从中获取数据或将数据分配到其中。它们还能够定义 Binding 对象侦听的事件或事件列表；在发生指定事件时，绑定即会执行。

当使用 Binding 类构造函数创建新的绑定时，您需要为其传递两个 EndPoint 对象：一个用于来源，一个用于目标。

new mx.data.binding.Binding(srcEndPoint, destEndPoint);

EndPoint 对象 srcEndPoint 和 destEndPoint 可按以下方式进行定义：

var srcEndPoint = new mx.data.binding.EndPoint();
var destEndPoint = new mx.data.binding.EndPoint();
srcEndPoint.component = source_txt;
srcEndPoint.property = "text";
srcEndPoint.event = "focusOut";
destEndPoint.component = dest_txt;
destEndPoint.property = "text";

如果用文字表述，上面代码的意思是“在来源文本字段失去焦点时，将其 text 属性的值复制到目标文本字段的 text 属性上”。

您也可以将一般动作脚本对象传递给 Binding 构造函数，而不是传递明确构造的 EndPoint 对象。唯一的要求是这些对象应定义所需的 EndPoint 属性，即 component 和 property。以下代码与上面显示的代码等效。

var srcEndPoint = {component:source_txt, property:"text"};
var destEndPoint = {component:dest_txt, property:"text"};
new mx.data.binding.Binding(srcEndPoint, destEndPoint);

注意：要使此类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中类的概述，请参阅数据绑定类（仅限 Flash Professional）。

EndPoint 类的属性摘要

方法 | 描述
EndPoint.constant> | 一个常数值。
EndPoint.component> | 指向组件实例的引用。
EndPoint.property> | EndPoint.component> 指定的组件实例的属性名称。
EndPoint.location> | 数据字段在组件实例的属性中的位置。
EndPoint.event> | 组件实例在数据更改时将发出的事件或事件列表的名称。

EndPoint 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

new EndPoint()

返回

无。

说明

构造函数；创建新的 EndPoint 对象。

示例

此范例将创建名为 source_txt 的新 EndPoint 对象，并为其 component 和 property 属性赋值。

var source_obj = new mx.data.binding.EndPoint();
source_obj.component = myTextField;
source_obj.property = "text";


EndPoint.constant

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

endPoint_src.constant

说明

属性；分配给 EndPoint 对象的常数值。此属性只能应用于作为组件间绑定的来源（而不是目标）的“端点”。值可以是与绑定目标兼容的任何数据类型。如果指定了该值，则指定 EndPoint 对象的所有其他 EndPoint 属性将被忽略。

示例

在本范例中，字符串常数值“hello”被分配给 EndPoint 对象的 constant 属性。

var sourceEndPoint = new mx.data.binding.EndPoint();
sourceEndPoint.constant="hello";


EndPoint.component

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

endPointObj.component

说明

属性；指向组件实例的引用。

示例

此范例将 List 组件的某个实例 (listBox1) 分配为 EndPoint 对象的组件参数。

var sourceEndPoint = new mx.data.binding.EndPoint();
sourceEndPoint.component=listBox1;


EndPoint.property

可用性

Flash Player 6 版本 79

版本

Flash MX Professional 2004。

用法

endPointObj.property

说明

属性；指定由 EndPoint.component（包含可绑定数据）指定的组件实例的名称。

注意： EndPoint.component> 和 EndPoint.property> 必须结合使用才能形成有效的动作脚本对象/属性组合。

示例

此范例将一个 TextInput 组件 (text_1) 的 text 属性绑定到另一个 TextInput 组件 (text_2) 的相同属性。

var sourceEndPoint = {component:text_1, property:"text"};
var destEndPoint = {component:text_2, property:"text"};
new Binding(sourceEndPoint, destEndPoint);


EndPoint.location

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

endPointObj.location

说明

属性；指定数据字段在组件实例的属性中的位置。可以以四种方式来指定位置：作为包含 XPath 表达式或动作脚本路径的字符串、字符串数组或对象。

只有在数据是 XML 对象时，才能使用 XPath 表达式。有关支持的 XPath 表达式的列表，请参阅支持的 XPath 表达式。（请参阅下面的范例 1。）

对于 XML 和动作脚本对象，您还可以指定包含动作脚本路径的字符串。动作脚本路径包含由点分隔的字段名称（例如，"a.b.c"）。

您也可以指定字符串数组作为位置。数组中的每个字符串均“下寻”到另一个嵌套级别。可以将此技术用于 XML 和动作脚本数据。（请参阅下面的范例 2。）当用于动作脚本数据时，字符串数组相当于使用动作脚本；也就是说，数组 ["a","b","c"] 相当于 "a.b.c"。

如果将某个对象指定为位置，则该对象必须指定两个属性：path 和 indices。如上所述，path 属性是一个字符串数组，除了一个或多个指定字符串可能是特殊标记 "[n]"。对于 path 中出现的每个这种标记，在 indices 中必须有对应的索引项。在计算路径的值时，这些索引用于为数组建立索引。索引项可以是任意“端点”。这种类型的位置只能应用于动作脚本数据，而不能应用于 XML。（请参阅下面的范例 3。）

示例

范例 1：此范例使用 XPath 表达式在 XML 对象中指定名为 zip 的节点的位置。

var sourceEndPoint = new mx.databinding.EndPoint();
var sourcObj=new Object();
sourceObj.xml=new XML("<zip>94103</zip>");
sourceEndPoint.component=sourceObj;
sourceEndPoint.property="xml";
sourceEndPoint.location="/zip";//

范例 2：此范例使用字符串数组“下寻”到嵌套的影片剪辑属性。

var sourceEndPoint = new mx.data.binding.EndPoint();
// 假设 movieClip1.ball.position 存在
ssourceEndPoint.component=movieClip1;
sourceEndPoint.property="ball";
// 访问 movieClip1.ball.position.x
sourceEndPoint.location=["position","x"];

范例 3：此范例显示如何使用对象在复杂的数据结构中指定数据字段的位置。

var city=new Object();
city.theaters = [{theater:"t1", movies:[{name:"Good,Bad,Ugly"}, {name:"Matrix Reloaded"}]}, {theater:"t2", movies:[{name:"Gladiator"}, {name:"Catch me if you can"}]}];
var srcEndPoint = new EndPoint();
srcEndPoint.component=city;
srcEndPoint.property="theaters";
srcEndPoint.location = {path:["[n]","movies","[n]","name"], indices:[{constant:0},{constant:0}]};


EndPoint.event

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

endPointObj.event

说明

属性；指定在分配给绑定属性的数据更改时由组件生成的事件名称或事件名称数组。当事件发生时，绑定即会执行。

指定的事件仅适用于用作绑定来源或双向绑定的目标的组件。有关创建双向绑定的详细信息，请参阅Binding 类（仅限 Flash Professional）。

示例

在此范例中，一个 TextInput 组件 (src_txt) 的 text 属性被绑定到另一个 TextInput 组件 (dest_txt) 的相同属性。当 src_txt 组件发出 focusOut 或 enter 事件时，绑定即会执行。

var source = {component:src_txt, property:"text", event:["focusOut", "enter"]};
var dest = {component:myTextArea, property:"text"};
var newBind = new mx.data.binding.Binding(source, dest);


ComponentMixins 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.ComponentMixins

ComponentMixins 类定义自动添加到任何对象（充当绑定的来源或目标）或任何组件（充当 ComponentMixins.initComponent() 方法调用的目标）的属性和方法。这些属性和方法不会影响正常的组件功能；相反，它们还添加了对数据绑定十分有用的功能。

注意：要使此类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中类的概述，请参阅数据绑定类（仅限 Flash Professional）。

ComponentMixins 类的方法摘要

方法 | 描述
ComponentMixins.getField()> | 返回用于在组件属性的指定位置获取和设置字段值的对象。
ComponentMixins.initComponent()> | 将 ComponentMixin 方法添加到组件。
ComponentMixins.refreshFromSources()> | 执行所有将此组件作为目标“端点”的绑定。
ComponentMixins.refreshDestinations()> | 执行所有将此对象作为来源“端点”的绑定。
ComponentMixins.validateProperty()> | 检查以确定指定属性中的数据是否有效。


ComponentMixins.getField()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.getField(propertyName, [location])

参数

propertyName 包含指定组件的属性名称的字符串。

location （可选）字段在组件属性内的位置。如果 propertyName 指定的组件属性是复杂的数据结构，并且您对该结构的特定字段感兴趣，则此参数十分有用。此属性可以是以下三种格式之一：

  • 包含 XPath 表达式的字符串。这种格式仅对 XML 数据结构有效。有关支持的 XPath 表达式的列表，请参阅支持的 XPath 表达式。
  • 包含由点分隔的字段名（例如，“a.b.c”）的字符串。此形式允许用于任何复杂数据（动作脚本或 XML）。
  • 字符串数组，其中每个字符串都是一个字段名，例如，["a", "b", "c"]。此形式允许用于任何复杂数据（动作脚本或 XML）。

返回

一个 DataType 对象。

说明

方法；返回一个 DataType 对象，您可以使用该对象的方法在组件属性的指定字段位置获取或设置数据值。有关详细信息，请参阅DataType 类（仅限 Flash Professional）。

示例

此范例使用 DataType.setAsString() 方法设置位于组件属性中的字段的值。在这种情况下，属性 (results) 是一种复杂数据结构。

import mx.data.binding.*;
var field :DataType = myComponent.getField("results", "po.address.name1");
field.setAsString("Teri Randall");

另请参见

DataType.setAsString()


ComponentMixins.initComponent()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mx.data.binding.ComponentMixins.initComponent(componentInstance)

参数

componentInstance 指向组件实例的引用。

返回

无。

说明

方法（静态）；将所有 ComponentMixins 方法添加到 componentInstance 指定的组件中。系统将为数据绑定中涉及的所有组件自动调用此方法。要使 ComponentMixins 方法可供数据绑定中未涉及的某个组件使用，您必须明确地为该组件调用此方法。

示例

以下代码使 ComponentMixins 方法可供 DataSet 组件使用。

mx.data.binding.ComponentMixins.initComponent(_root.myDataSet);


ComponentMixins.refreshFromSources()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.refreshSources()

返回

无。

说明

方法；执行 componentInstance 是目标 EndPoint 对象的所有绑定。此方法使您能够执行具有常数来源或未发出任何“数据已更改”事件的来源的绑定。

示例

以下范例执行 ListBox 组件实例（名为 cityList）是目标 EndPoint 对象的所有绑定。

cityList.refreshFromSources();


ComponentMixins.refreshDestinations()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.refreshDestinations()

返回

无。

说明

方法；执行 componentInstance 是来源“端点”的所有绑定。此方法使您能够执行来源未发出“数据已更改”事件的绑定。

示例

以下范例执行 DataSet 组件实例（名为 user_data）是来源 EndPoint 对象的所有绑定。

user_data.refreshDestinations();


ComponentMixins.validateProperty()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.validateProperty(propertyName)

参数

propertyName 字符串，包含属于 componentInstance 的属性的名称。

返回

一个数组，或 null。

说明

方法；确定 propertyName 中的数据依据属性的架构设置是否有效。属性的架构设置是指“组件检查器”面板的“架构”选项卡上所指定的内容。

如果数据有效，方法将返回 null；否则将返回错误消息数组作为字符串。

验证仅适用于具有可用架构信息的字段。如果某个字段是包含其他字段的对象，则会以递归方式验证每个“子”字段，依此类推。每个单独的字段都会在必要时发送 valid 或 invalid 事件。对于 propertyName 包含的每个数据字段，此函数将发送 valid 或 invalid 事件，如下所示：

  • 如果字段的值为 null，并且不是 必需的，则方法将返回 null。不会生成任何事件。
  • 如果字段的值为 null，并且是 必需的，则会返回错误并生成 invalid 事件。
  • 如果字段的值非空并且字段的架构没有 验证程序，则方法将返回 null；不会生成任何事件。
  • 如果值非空并且字段的架构已定义了验证程序，则数据将由验证程序对象处理。如果数据有效，则会生成 valid 事件并返回 null；否则生成 invalid 事件并返回错误字符串数组。

示例

以下范例显示如何使用 validateProperty() 来确保用户所输入文本的长度有效。您将通过在“组件检查器”面板的“架构”选项卡中为字符串数据类型设置“验证选项”来确定有效长度。如果用户在文本字段中输入了长度无效的字符串，则 validateProperty() 方法返回的错误消息将显示在“输出”面板中。

要对用户在 TextInput 组件中输入的文本进行验证：

  1. 将 TextInput 组件从“组件”面板（“窗口”>“开发面板”>“组件”）拖到舞台上，然后将其命名为 zipCode_txt。
  2. 选择 TextInput 组件，然后在“组件检查器”面板（“窗口”>“开发面板”>“组件”）中单击“架构”选项卡。
  3. 在“架构树”窗格（“架构”选项卡的顶部窗格）中，选择 text 属性。
  4. 在“架构属性”窗格（“架构”选项卡的底部窗格）中，从“数据类型”弹出菜单中选择“ZipCode”。
  5. 通过选择“窗口”>“时间轴”打开时间轴（如果尚未打开）。
  6. 单击时间轴中“第 1 层”上的第一帧，然后打开“动作”面板（“窗口”>“动作”）。
  7. 将以下代码添加到“动作”面板：
    // 将 ComponentMixin 方法添加到 TextInput 组件。
// 请注意，只有在组件尚未作为
// 来源或目标涉及在数据绑定中时，
// 才必须进行此步骤。
mx.data.binding.ComponentMixins.initComponent(zipCode_txt);
// 为组件定义事件侦听器函数：
validateResults = function (eventObj) {
  var errors:Array = eventObj.target.validateProperty("text");
  if (errors != null) {
    trace(errors);
  }
};
// 将侦听器函数注册到组件：
zipCode_txt.addEventListener("enter", validateResults);
  8. 选择“窗口”>“其他面板”>“公用库”>“类”以打开“类”库。
  9. 通过选择“窗口”>“库”打开文档的库。
  10. 将 DataBindingClasses 组件从“类”库拖到文档的“库”面板中。

    要使数据绑定运行时类可供 SWF 在运行时使用，则必须执行此步骤。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

  11. 通过选择“控制”>“测试影片”来测试 SWF。

    在舞台上的 TextInput 组件中，输入一个无效的美国邮政编码，例如，全部由字母组成或包含少于五个数字的邮政编码。注意“输出”面板中显示的错误消息。


DataType 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.DataType

DataType 类提供对组件属性的数据字段的读写权限。要获取 DataType 对象，您需要对组件调用 ComponentMixins.getField() 函数。然后，您可以调用 DataType 对象的方法来获取和设置字段的值。

使用 DataType 对象方法获取和设置字段值以及直接在组件实例上获取或设置值之间的差异在于：后一种情况以“原始”形式提供数据。相反，在使用 DataType 类的方法获取或设置字段值时，系统将根据字段的架构设置处理这些值。

例如，以下代码将直接获取组件属性的值，并将其赋给变量。变量 propVar 包含作为 propName 属性的当前值的任何“原始”值。

var propVar = myComponent.propName;

下一范例将使用 DataType.getAsString() 方法获取同一属性的值。在这种情况下，分配给 stringVar 的值就是根据架构设置处理后作为字符串返回的 propName 的值。

var dataTypeObj:mx.data.binding.DataType = myComponent.getField("propName");
var stringVar:String = dataTypeObj.getAsString();

有关如何指定字段的架构设置的详细信息，请参阅在“架构”选项卡中处理架构（仅限于 Flash Professional）。

您也可以使用 DataType 类的方法来获取或设置不同数据类型的字段。如果可能，DataType 类会自动将原始数据转换为要求的类型。例如，在上面的代码范例中，检索出的数据被转换为字符串类型（即使原始数据是另一种类型）。

ComponentMixins.getField() 方法可供已包括在数据绑定中（作为来源、目标或索引）或已使用 ComponentMixins.initComponent() 方法初始化的组件使用。有关详细信息，请参阅ComponentMixins 类（仅限 Flash Professional）。

注意：要使此类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中类的概述，请参阅数据绑定类（仅限 Flash Professional）。

DataType 类的方法摘要

方法 | 描述
DataType.getAsBoolean()> | 以布尔值的形式获取字段的当前值。
DataType.getAsNumber()> | 以数值的形式获取字段的当前值。
DataType.getAsString()> | 以字符串值的形式获取字段的当前值。
DataType.getAnyTypedValue()> | 获取字段的当前值。
DataType.getTypedValue()> | 以要求数据类型的形式获取字段的当前值。
DataType.setAnyTypedValue()> | 在该字段中设置一个新值。
DataType.setAsBoolean()> | 将字段设置为以布尔值形式提供的新值。
DataType.setAsNumber()> | 将字段设置为以数值形式提供的新值。
DataType.setAsString()> | 将字段设置为以字符串形式提供的新值。
DataType.setTypedValue()> | 在该字段中设置一个新值。

DataType 类的属性摘要

属性 | 描述
DataType.encoder> | 提供对与此字段关联的 Encoder 对象的引用。
DataType.formatter> | 提供对与此字段关联的 Formatter 对象的引用。
DataType.kind> | 提供对与此字段关联的 Kind 对象的引用。


DataType.encoder

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.encoder

说明

属性；提供对与此字段关联的编码器对象的引用（如果存在）。可以使用此属性访问由特定编码器（应用于“组件检查器”面板的“架构”选项卡中的字段）定义的任何属性和方法。

如果未将任何编码器应用于所述字段，则此属性将返回 undefined。

有关随 Flash MX Professional 2004 提供的编码器的详细信息，请参阅架构编码器（仅限于 Flash Professional）。

示例

以下范例假设所访问的字段 (isValid) 使用布尔值编码器 (mx.data.encoders.Bool)。此编码器随 Flash MX Professional 2004 提供，并包含名为 trueStrings 的属性，该属性指定应将哪些字符串解释为布尔值 true。下面的代码将字段编码器的 trueStrings 属性设置为字符串“yes”和“si”。

var myField:mx.data.binding.DataType = dataSet.getField("isValid");
myField.encoder.trueStrings = "Yes,Oui";


DataType.formatter

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.formatter

说明

属性；提供对与字段关联的格式程序对象的引用（如果存在）。可以使用此属性访问格式程序对象（应用于“组件检查器”面板“架构”选项卡中的字段）的任何属性和方法。

如果未将任何格式程序应用于所述字段，则此属性将返回 undefined。

有关随 Flash MX Professional 2004 提供的格式程序的详细信息，请参阅架构格式程序（仅限于 Flash Professional）。

示例

此范例假设所访问的字段正在使用随 Flash MX Professional 2004 提供的数值格式程序 (mx.data.formatters.NumberFormatter)。此格式程序包含一个名为 precision 的属性，该属性指定小数点后显示的数字位数。以下代码为使用此格式程序的字段将 precision 属性设置为两位小数。

var myField:DataType = dataGrid.getField("currentBalance");
myField.formatter.precision = 2;


DataType.getAsBoolean()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.getAsBoolean()

返回

一个布尔值。

说明

方法；以布尔值的形式获取字段的当前值。如有必要，该值会被转换为布尔值形式。

示例

在此范例中，将以布尔值的形式检索名为 propName 的字段（属于名为 myComponent 的组件），并赋给变量。

var dataTypeObj:mx.data.binding.DataType = myComponent.getField("propName");
var propValue:Boolean = dataTypeObj.getAsBoolean();


DataType.getAsNumber()

可用性

Flash Player 6。

版本

Flash MX Professional 2004。

用法

dataTypeObject.getAsNumber()

返回

一个数字。

说明

方法；以数值的形式获取字段的当前值。如有必要，该值会被转换为数值形式。

示例

在此范例中，将以数值的形式检索名为 propName 的字段（属于名为 myComponent 的组件），并赋给变量。

var dataTypeObj:mx.data.binding.DataType = myComponent.getField("propName");
var propValue:Number = dataTypeObj.getAsNumber();

另请参见

DataType.getAnyTypedValue()


DataType.getAsString()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.getAsString()

返回

一个字符串。

说明

方法；以字符串的形式获取字段的当前值。如有必要，该值会被转换为字符串形式。

示例

在此范例中，将以字符串的形式检索名为 propName 的组件（属于名为 myComponent 的组件）的属性，并赋给变量。

var dataTypeObj:mx.data.binding.DataType = myComponent.getField("propName");
var propValue:String = dataTypeObj.getAsString();

另请参见

DataType.getAnyTypedValue()


DataType.getAnyTypedValue()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.getAnyTypedValue(suggestedTypes)

参数

suggestedTypes 字符串数组，按需要程度依降序为字段指定所需的首选数据类型。有关详细信息，请参阅下面的“说明”部分。

返回

字段的当前值，采用 suggestedTypes 数组中指定的某个数据类型的形式。

说明

方法；获取字段的当前值，并使用字段架构中的信息来处理值。如果字段能够提供值作为 suggestedTypes 数组中指定的第一个数据类型，则方法将返回字段的值作为该数据类型。否则，方法将尝试抽取字段的值作为 suggestedTypes 数组中指定的第二个数据类型，依此类推。

如果指定 null 作为 suggestedTypes 数组中的项目之一，则方法将以“架构”面板中指定的数据类型返回字段的值。指定 null 将始终会导致正在返回值的现象，因此，请仅在数组的结尾使用 null。

如果值无法以某个建议类型的形式返回，则会以“架构”面板中指定的类型返回。

示例

此范例将首先尝试以数值形式获取 XMLConnector 组件的 results 属性中某个字段（productInfo.available）的值，如果失败，则以字符串的形式获取。

import mx.data.binding.DataType;
import mx.data.binding.TypedValue;
var f:DataType = myXmlConnector.getField("results", "productInfo.available");
var b:TypedValue = f.getAnyTypedValue(["Number", "String"]);

另请参见

ComponentMixins.getField()


DataType.getTypedValue()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.getTypedValue(requestedType)

参数

requestedType 包含数据类型的名称或 null 的字符串。

返回

一个 TypedValue 对象（请参阅TypedValue 类（仅限 Flash Professional））

说明

方法；以 requestedType 指定的形式返回字段的值（如果已指定，并且字段能够以该形式提供值）。如果字段无法以要求的形式提供值，则方法将返回 null。

如果将 null 指定为 requestedType，则方法将以默认类型返回字段的值。

示例

var bool:TypedValue = field.getTypedValue("Boolean");


DataType.kind

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.kind

说明

属性；提供对与此字段关联的 Kind 对象的引用。可以使用此属性来访问 Kind 对象的属性和方法。


DataType.setAnyTypedValue()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.setAnyTypedValue(newTypedValue)

参数

newValue 要在该字段中设置的 TypedValue 对象值。

有关 TypedValue 对象的详细信息，请参阅TypedValue 类（仅限 Flash Professional）。

返回

一个字符串数组，描述在尝试设置此新值时发生的任何错误。在以下条件下可能发生错误：

  • 无法将提供的数据转换为此字段的数据类型（例如，无法将“abc”转换为数值）。
  • 数据是可接受类型，但不满足该字段的验证条件。
  • 该字段为只读。

注意： 消息的实际文本将因在该字段的架构中定义的数据类型、格式程序和编码器而异。

说明

方法；将新值设置到字段中，并使用字段架构中的信息来处理字段。

此方法会通过首先调用 DataType.setTypedValue() 方法来设置值。如果失败，方法将检查以确定目标对象是否愿意接受字符串、布尔值或数值数据，如果答案肯定，则会尝试使用对应的动作脚本转换函数。

示例

此范例创建新的 TypedValue 对象（一个布尔值），然后将该值分配给名为 field 的一个 DataType 对象。发生的任何错误都被分配给 errors 数组。

import mx.data.binding.*;
var t:TypedValue = new TypedValue (true, "Boolean");
var errors:Array = field.setAnyTypedValue (t);

另请参见

DataType.setTypedValue()


DataType.setAsBoolean()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.setAsBoolean(newBooleanValue)

参数

newBooleanValue 布尔值。

返回

无。

说明

方法；将字段设置为以布尔值形式提供的新值。该值被转换并存储为适合该字段的数据类型。

示例

var bool:Boolean = true;
field.setAsBoolean (bool);


DataType.setAsNumber()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.setAsNumber(newNumberValue)

参数

newNumberValue 数值。

返回

无。

说明

方法；将字段设置为以数值形式提供的新值。该值被转换并存储为适合该字段的数据类型。

示例

var num:Number = 32;
field.setAsNumber (num);


DataType.setAsString()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.setAsString(newStringValue)

参数

newStringValue 字符串。

返回

无。

说明

方法；将字段设置为以字符串形式提供的新值。该值被转换并存储为适合该字段的数据类型。

示例

var stringVal:String = "The new value";
field.setAsString (stringVal);


DataType.setTypedValue()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataTypeObject.setTypedValue(newTypedValue)

参数

newValue 要在该字段中设置的 TypedValue 对象值。

有关 TypedValue 对象的详细信息，请参阅TypedValue 类（仅限 Flash Professional）。

返回

一个字符串数组，描述在尝试设置此新值时发生的任何错误。在以下条件下可能发生错误：

  • 所提供数据的类型不可接受。
  • 无法将提供的数据转换为此字段的数据类型（例如，无法将“abc”转换为数值）。
  • 数据是可接受类型，但不满足该字段的验证条件。
  • 该字段为只读。

注意： 消息的实际文本将因在该字段的架构中定义的数据类型、格式程序和编码器而异。

说明

方法；将新值设置到字段中，并使用字段架构中的信息来处理字段。此方法的行为方式与 DataType.setAnyTypedValue() 类似，只是它不会同样努力地将数据转换为可接受的数据类型。有关详细信息，请参阅 DataType.setAnyTypedValue()。

示例

此范例创建新的 TypedValue 对象（一个布尔值），然后将该值分配给名为 field 的一个 DataType 对象。发生的任何错误都被分配给 errors 数组。

import mx.data.binding.*;
var bool:TypedValue = new TypedValue (true, "Boolean");
var errors:Array = field.setTypedValue (bool);

另请参见

DataType.setTypedValue()


TypedValue 类（仅限 Flash Professional）

动作脚本类名称 mx.data.binding.TypedValue

TypedValue 是一个对象，它包含数据值以及有关该值的数据类型的信息。TypedValue 对象以 DataType 类各种方法的参数的形式提供，并且是从这些方法中返回的。TypedValue 对象中的数据类型信息帮助 DataType 对象确定何时需要执行数据类型转换，以及如何进行。

注意：要使此类在运行时可用，您必须在 FLA 文档中包括 DataBindingClasses 组件。有关详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

有关 mx.data.binding 包中的类的概述，请参阅数据绑定类（仅限 Flash Professional）。

TypedValue 类的属性摘要

属性 | 描述
TypedValue.type> | 包含与 TypedValue 对象的值关联的架构。
TypedValue.typeName> | 包含 TypedValue 对象的值的数据类型名称。
TypedValue.value> | 包含 TypedValue 对象的数据值。

TypedValue 类的构造函数

可用性

Flash Player 6 版本 79。

用法

new mx.data.binding.TypedValue(value, typeName, [type])

参数

value 数据值。此值可以是任何类型。

typeName 包含值的数据类型名称的字符串。

type （可选）更详细描述数据的架构的 Schema 对象。只有在某些情形下（诸如将数据设置为 DataSet 组件的 dataProvider 属性时），此字段才是必需的。

描述

构造函数；创建新的 TypedValue 对象。


TypedValue.type

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

typedValueObject.type

说明

属性；包含与 TypedValue 对象的值关联的架构。它仅用在某些情形中。

示例

此范例将在“输出”面板中显示“null”。

var t:TypedValue = new TypedValue (true, "Boolean", null);
trace(t.type);


TypedValue.typeName

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

typedValueObject.typeName

说明

属性；包含 TypedValue 对象的值的数据类型名称。

示例

此范例将在“输出”面板中显示“布尔值”。

var t:TypedValue = new TypedValue (true, "Boolean", null);
trace(t.typeName);


TypedValue.value

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

typedValueObject.value

说明

属性；包含 TypedValue 对象的数据值。

示例

此范例将在“输出”面板中显示“true”。

var t:TypedValue = new TypedValue (true, "Boolean", null);
trace(t.value);


关于 DataHolder 组件（仅限 Flash Professional）

DataHolder 组件是数据的储备库，并且可用于在数据更改时生成事件。它的主要用途是容纳数据，并充当使用数据绑定的其他组件之间的连接器。

DataHolder 组件最初只有一个名为 data 的可绑定属性。您可以使用“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”）中的“架构”选项卡添加更多属性。有关使用“架构”选项卡的详细信息，请参阅在“架构”选项卡中处理架构（仅限于 Flash Professional）。

您可以将任何类型的数据分配给 DataHolder 属性，方法是在数据和另一属性之间创建绑定，或者使用自己的动作脚本代码。当该数据的值更改时，DataHolder 组件将发出一个名称与属性相同的事件，并执行与该属性关联的任何绑定。

在无法直接将组件（如连接器、用户界面组件或 DataSet 组件）绑定在一起时，DataHolder 组件十分有用。下面是您可以使用 DataHolder 组件的一些情况：

  • 如果数据值是由动作脚本生成的，则可能需要将其绑定到某些其他组件。在这种情况下，您可以使用包含按需要绑定的属性的 DataHolder 组件。在将新值分配给这些属性时（例如，通过动作脚本），这些值将被分发到绑定了数据的对象。
  • 您可能有从索引复杂的数据绑定中产生的数据值，如下图中所示。

    在这种情况下，将数据值绑定到某个 DataHolder 组件（在上图中称为 DataModel）然后使用该组件绑定到用户界面较为方便。


创建具有 DataHolder 组件的应用程序（仅限 Flash Professionalonly）

在此范例中，您需要将数组属性添加到 DataHolder 组件的架构（一个数组）中，该架构的值由您编写的动作脚本代码确定。然后，您需要将该数组属性绑定到 DataGrid 组件的 dataProvider 属性，方法是使用“组件检查器”面板中的“绑定”选项卡。

要在简单应用程序中使用 DataHolder 组件：

  1. 在 Flash MX Professional 2004 中，创建一个新文件。
  2. 打开“组件”面板（“窗口”>“开发面板”>“组件”），将 DataHolder 组件拖到舞台上，然后将其命名为 dataHolder。
  3. 将 DataGrid 组件拖到舞台上，然后将其命名为 namesGrid。
  4. 选择 DataHolder 组件，然后打开“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”）。
  5. 在“组件检查器”面板中，单击“架构”选项卡。
  6. 单击位于“架构”选项卡顶部窗格中的“添加组件属性”(+) 按钮。
  7. 在“架构”选项卡底部窗格的“字段名称”字段中键入 namesArray，然后从“数据类型”弹出菜单中选择“数组”。
  8. 在“组件检查器”面板中单击“绑定”选项卡，然后在 DataHolder 组件的 namesArray 属性和 DataGrid 组件的 dataProvider 属性之间添加绑定。

    有关使用“绑定”选项卡创建绑定的详细信息，请参阅在“绑定”选项卡中处理绑定（仅限于 Flash Professional）。

  9. 在“时间轴”（“窗口”>“时间轴”）中，选择“第 1 层”上的第一个帧，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  10. 在“动作”面板中输入以下代码：
    dataHolder.namesArray= [{name:"Tim"},{name:"Paul"},{name:"Jason"}];

    此代码使用若干对象填充 namesArray 数组。当此变量赋值执行时，将会执行您之前在 DataHolder 组件和 DataGrid 组件之间建立的绑定。

  11. 通过选择“控制”>“测试影片”对文件进行测试。

DataHolder 类的属性摘要

属性 | 描述
DataHolder.data> | DataHolder 组件的默认可绑定属性。


DataHolder.data

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

dataHolder.data

说明

属性；DataHolder 对象架构中的默认项目。此属性不是 DataHolder 组件的“永久”成员，而是组件每个实例的默认可绑定属性。通过使用“组件检查器”面板的“架构”选项卡，您可以添加自己的可绑定属性，也可以删除默认的 data 属性。

有关使用“架构”选项卡的详细信息，请参阅在“架构”选项卡中处理架构（仅限于 Flash Professional）。

示例

有关使用此组件的范例，请参阅创建具有 DataHolder 组件的应用程序（仅限 Flash Professionalonly）。


关于 DataProvider API

动作脚本类名称 mx.controls.listclasses.DataProvider

DataProvider API 是一组方法和属性，数据源需要这些方法和属性才能使基于 List 的类与其通信。数组、记录集和数据集均实现此 API。您可以通过实现本文档中描述的所有方法来创建符合 DataProvider 的类。然后，基于列表的组件将能够使用该类作为数据提供程序。

DataProvider API 的方法使您能够在显示数据的任何组件（也称为视图）中查询和修改数据。DataProvider API 还会在数据更改时广播更改事件。多个视图可以使用同一数据提供程序并都接收更改事件。

数据提供程序是项目的线性集合（类似于数组）。每个项目都是一个由多个数据字段组成的对象。使用 DataProvider.getItemAt()，您可以通过项目索引来访问这些项目（就好像处理数组一样）。

使用数据提供程序的最常见情况是与数组一起使用。当 Array 对象与支持数据的组件处于同一帧或屏幕中时，支持数据的组件会将 DataProvider API 的所有方法应用到 Array.prototype。这样，您将可以使用任何现有数组作为具有 dataProvider 属性的视图的数据。

由于 DataProvider API 的存在，提供数据视图的第 2 版组件（DataGrid、List、Tree 等）还可以显示 Flash Remoting 记录集以及 DataSet 组件中的数据。DataProvider API 是支持数据的组件用于与其数据提供程序通信的语言。

在 Macromedia Flash 文档中，“DataProvider”是 API 的名称，dataProvider 是充当数据视图的每个组件的属性，而“数据提供程序”是表示数据源的一般术语。

DataProvider API 的方法

名称 | 描述
DataProvider.addItem()> | 将项目添加到数据提供程序的结尾。
DataProvider.addItemAt()> | 将项目添加到数据提供程序的指定位置。
DataProvider.editField()> | 更改数据提供程序的某个字段。
DataProvider.getEditingData()> | 从数据提供程序中获取用于编辑的数据。
DataProvider.getItemAt()> | 获取对位于指定位置的项目的引用。
DataProvider.getItemID()> | 返回项目的唯一 ID。
DataProvider.removeAll()> | 从数据提供程序中删除所有项目。
DataProvider.removeItemAt()> | 从数据提供程序的指定位置删除项目。
DataProvider.replaceItemAt()> | 用其他项目替换位于指定位置的项目。
DataProvider.sortItems()> | 对数据提供程序中的项目进行排序。
DataProvider.sortItemsBy()> | 依据指定比较函数对数据提供程序中的项目进行排序。

DataProvider API 的属性

名称 | 描述
DataProvider.length> | 数据提供程序中的项目数。

DataProvider API 的事件

名称 | 描述
DataProvider.modelChanged> | 在数据提供程序更改时广播。


DataProvider.addItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.addItem(item)

参数

item 包含数据的对象。它包含数据提供程序中的项目。

返回

无。

说明

方法；在数据提供程序的结尾添加新项目。

此方法触发事件名称为 addItems 的 modelChanged 事件。

示例

以下范例将一个新项目添加到数据提供程序 myDP 的结尾：

myDP.addItem({ label:"this is an Item"});


DataProvider.addItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.addItemAt(index, item)

参数

index 一个等于或大于 0 的数字。插入项目的位置；新项目的索引。

item 包含项目数据的对象。

返回

无。

说明

方法；将新项目添加到数据提供程序的指定索引处。大于数据提供程序长度的索引将被忽略。

此方法触发事件名称为 addItems 的 modelChanged 事件。

示例

以下范例将一个新项目添加到数据提供程序 myDP 的第 4 个位置：

myDP.addItemAt(3, {label :"this is the fourth Item"});


DataProvider.editField()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.editField(index, fieldName, newData)

参数

index 一个大于或等于 0 的数字。项目的索引。

fieldName 一个字符串，指明要修改的项目中字段的名称。

newData 要放入数据提供程序的新数据。

返回

无。

说明

方法；更改数据提供程序的某个字段。

此方法触发事件名称为 updateField 的 modelChanged 事件。

示例

以下代码修改第三个项目的 label 字段：

myDP.editField(2, "label", "mynewData");


DataProvider.getEditingData()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.getEditingData(index, fieldName)

参数

index 一个大于或等于 0，且小于 DataProvider.length 的数字。要检索的项目的索引。

fieldName 一个字符串，指明所编辑字段的名称。

返回

要使用的可编辑格式数据。

说明

方法；从数据提供程序中检索要编辑的数据。这样，数据模型将能够提供不同格式的数据进行编辑和显示。

示例

以下代码将获取 price 字段的可编辑字符串：

trace(myDP.getEditingData(4, "price");


DataProvider.getItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.getItemAt(index)

参数

index 一个大于或等于 0，且小于 DataProvider.length 的数字。要检索的项目的索引。

返回

对检索出的项目的引用；如果索引超出范围，则为未定义。

说明

方法；检索对位于指定位置的项目的引用。

示例

以下代码将显示第 5 个项目的标签：

trace(myDP.getItemAt(4).label);


DataProvider.getItemID()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 Professional。

用法

myDP.getItemID(index)

参数

index 一个大于或等于 0 的数字。

返回

一个数字，充当项目的唯一 ID。

描述

方法；返回项目的唯一 ID。此方法主要用于跟踪选择。此 ID 用于支持数据的组件中，对哪些项目的列表处于选定状态进行记录。

范例

此范例获取第 4 个项目的 ID：

var ID = myDP.getItemID(3);


DataProvider.modelChanged

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.modelChanged = function(eventObject){
  // 此处插入您的代码
}
myMenu.addEventListener("modelChanged", listenerObject

描述

事件；在数据提供程序被修改时向所有其视图侦听器广播。侦听器通常是通过分配其 dataProvider 属性添加到模型的。

V2 组件使用调度程序/侦听器事件模型。当数据提供程序在某些方面发生更改时，它将会广播 modelChanged 事件，并且支持数据的组件将捕获该事件来更新显示，以便反映数据的更改。

Menu.modelChanged 事件的事件对象具有五个附加属性：

  • eventName eventName 属性用于划分 modelChanged 事件的子类别。支持数据的组件使用此信息来避免完全刷新使用数据提供程序的组件实例（视图）。下面是 eventName 属性的支持值：
    • updateAll 整个视图都需要刷新（除滚动位置外）。
    • addItems 已添加一系列项目。
    • removeItems 已删除一系列项目。
    • updateItems 一系列项目需要刷新。
    • sort 数据已排序。
    • updateField 项目内的某个字段已更改，并且需要刷新。
    • updateColumn dataProvider 内的整个字段定义需要刷新。
    • filterModel 已筛选模型，并且视图需要刷新（重置 scrollPosition）。
    • schemaLoaded 已声明 dataProvider 的字段定义。
  • firstItem 第一个受影响项目的索引。
  • lastItem 最后一个受影响项目的索引。如果只有一个项目受影响，则该值与 firstItem 相等。
  • removedIDs 已删除项目标识符的数组。
  • fieldName 一个字符串，指明受影响字段的名称。

有关事件对象的详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 listener 的处理函数并将其作为第二个参数传递给 addEventListener() 方法。modelChanged 处理函数在 evt 参数捕获事件对象。在广播 modelChanged 事件时，trace 语句被发送到“输出”面板，如下所示：

listener = new Object();
listener.modelChanged = function(evt){
    trace(evt.eventName);
}
myList.addEventListener("modelChanged", listener);


DataProvider.length

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.length

描述

属性（只读）；数据提供程序中的项目数。

范例

此范例将 myArray 数据提供程序中的项目数发送到“输出”面板：

trace(myArray.length);


DataProvider.removeAll()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.removeAll()

参数

无。

返回

无。

描述

方法；删除数据提供程序中的所有项目。

此方法触发事件名称为 removeItems 的 modelChanged 事件。

范例

此范例将删除数据提供程序中的所有项目：

myDP.removeAll();


DataProvider.removeItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.removeItemAt(index)

参数

index 一个大于或等于 0 的数字。要删除的项目的索引。

返回

无。

描述

方法；删除位于指定索引处的项目。已删除索引后面的索引将依次减 1。

此方法触发事件名称为 removeItems 的 modelChanged 事件。

范例

此范例将删除位于第 4 个位置的项目：

myDP.removeItemAt(3);


DataProvider.replaceItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDP.replaceItemAt(index, item)

参数

index 一个大于或等于 0 的数字。要更改的项目的索引。

item 充当新项目的对象。

返回

无。

描述

方法；替换位于指定索引处的项目的内容。

此方法触发事件名称为 removeItems 的 modelChanged 事件。

范例

此范例将使用具有“new label”标签的项目替换位于索引 3 处的项目：

myDP.replaceItemAt(3, {label :"new label"});


DataProvider.sortItems()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myDP.sortItems([compareFunc], [optionsFlag])

参数

compareFunc 一个指向函数的引用，该函数用于比较两个项目以确定它们的排序顺序。有关详细信息，请参阅“动作脚本字典”帮助中的 Array.sort()。此参数是可选的。

optionsFlag 允许您不必复制整个数组或反复对其重新排序，即可对单个数组执行不同类型的多次排序。此参数是可选的。

以下是 optionsFlag 的可能值：

  • Array.DESCENDING - 按从高到低的顺序排序。
  • Array.CASEINSENSITIVE - 按不区分大小写的方式排序。
  • Array.NUMERIC - 如果所比较的两个元素是数字，则按数字顺序排序。如果它们不是数字，则使用字符串比较（字符串比较可以不区分大小写，只要指定该标记即可）。
  • Array.UNIQUESORT - 如果数组中有两个对象相同或具有相同的排序字段，则此方法返回错误代码 (0)，而不是排序后的数组。
  • Array.RETURNINDEXEDARRAY - 返回作为排序结果的整数索引数组。例如，如果用包含 Array.RETURNINDEXEDARRAY 值的 optionsFlag 参数排序，则以下数组将返回代码的第二行，并且该数组将保持不变：
    ["a", "d", "c", "b"]
[0, 3, 2, 1]

您可以将这些选项合并成一个值。例如，以下代码将合并选项 3 和 1：

array.sort (Array.NUMERIC | Array.DESCENDING)

返回

无。

描述

方法；依据 compareFunc 参数指定的比较函数或 optionsFlag 参数指定的一个或多个排序选项对数据提供程序中的项目进行排序。

此方法触发事件名称为 sort 的 modelChanged 事件。

范例

此范例依据大写标签进行排序。项目 a 和 b 被传递到函数，并包含 label 和 data 字段：

myList.sortItems(upperCaseFunc);
function upperCaseFunc(a,b){
    return a.label.toUpperCase() > b.label.toUpperCase();
}


DataProvider.sortItemsBy()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myDP.sortItemsBy(fieldName, order, [optionsFlag])

参数

fieldName 一个字符串，指定要用于排序的字段的名称。通常情况下，此值为 "label" 或 "data"。

order 一个字符串，指定是以升序 ("ASC") 还是以降序 ("DESC") 对项目进行排序。

optionsFlag 允许您不必复制整个数组或反复对其重新排序，即可对单个数组执行不同类型的多次排序。此参数是可选的。

以下是 optionsFlag 的可能值：

  • Array.DESCENDING - 按从高到低的顺序排序。
  • Array.CASEINSENSITIVE - 按不区分大小写的方式排序。
  • Array.NUMERIC - 如果所比较的两个元素是数字，则按数字顺序排序。如果它们不是数字，则使用字符串比较（字符串比较可以不区分大小写，只要指定该标记即可）。
  • Array.UNIQUESORT - 如果数组中有两个对象相同或具有相同的排序字段，则此方法返回错误代码 (0)，而不是排序后的数组。
  • Array.RETURNINDEXEDARRAY - 返回作为排序结果的整数索引数组。例如，如果用包含 Array.RETURNINDEXEDARRAY 值的 optionsFlag 参数排序，则以下数组将返回代码的第二行，并且该数组将保持不变：
    ["a", "d", "c", "b"]
[0, 3, 2, 1]

您可以将这些选项合并成一个值。例如，以下代码将合并选项 3 和 1：

array.sort (Array.NUMERIC | Array.DESCENDING)

返回

无。

描述

方法；按字母或数值顺序、按指定的顺序、使用指定的字段名对数据提供程序中的项目进行排序。如果 fieldName 项目既包括文本字符串也包括整数，则首先列出整数项目。fieldName 参数通常为 "label" 或 "data"，但高级编程人员可能会指定任何原始值。您可以根据需要使用 optionsFlag 参数来指定排序样式。

此方法触发事件名称为 sort 的 modelChanged 事件。

范例

下列代码使用列表项的标签按升序对列表中的项目进行排序：

myDP.sortItemsBy("label", "ASC");


关于 DataSet 组件（仅限 Flash Professional）

DataSet 组件使您能够将数据处理为可进行索引、排序、搜索、筛选和修改的对象的集合。

DataSet 组件功能包括 DataSetIterator（一组用于遍历和处理数据集合的方法）和 DeltaPacket（一组用于处理数据集合更新的接口和类）。大多数情况下，您不会直接使用这些类和接口；您将通过 DataSet 类提供的方法间接使用它们。

DataSet 组件管理的项目也称为传送对象。传送对象使用公共属性或存取器方法（用于读取和写入数据）显示驻留在服务器上的业务数据。DataSet 组件使开发人员能够处理复杂的客户端对象（反映其服务器端对应对象）或最简单的匿名对象集合（具有表示数据记录内的字段的公共属性）。有关传送对象的详细信息，请参阅Core J2EE Patterns Transfer Object（核心 J2EE 模式传送对象）。

注意：DataSet 组件需要 Flash Player 7 或更高版本。


使用 DataSet 组件（仅限 Flash Professional）

通常情况下，您在应用程序中将 DataSet 组件与其他组件结合使用以处理和更新数据源：Connector 组件（用于连接到外部数据源）、用户界面组件（用于显示数据源中的数据）以及 Resolver 组件（用于将对数据集进行的更新转换为适当的格式，以便发送到外部数据源）。然后，您可以使用数据绑定将这些不同组件的属性绑定在一起。

有关 DataSet 组件以及如何将它与其他组件一起使用的一般详细信息，请参阅数据管理（仅限于 Flash Professional）。

DataSet 组件参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 DataSet 组件实例设置的创作参数：

itemClassName 在每次需要新项目时将实例化的传送对象类的名称。

注意：要使指定的类在运行时可用，您必须同时在 SWF 文件的代码内的某处对该类进行完全限定引用。（例如，var myItem:my.package.myItem;）。

filtered 如果为 true，则会对数据集应用过滤器，以使其仅包含匹配过滤条件的对象。

logChanges 如果为true，数据集会将所有变化（对数据或方法调用进行的更改）记录到它的 deltaPacket 属性。

readOnly 如果为 true，则无法修改数据集。

您可以编写动作脚本，以便使用 DataSet 组件的属性、方法和事件来控制该组件的这些和其他选项。有关详细信息，请参阅DataSet 类（仅限 Flash Professional）。

创建具有 DataSet 组件的应用程序

通常情况下，您可以将 DataSet 组件与其他用户界面组件一起使用，并通常与 Connector 组件（如 XMLConnector 或 WebServiceConnector 组件）一起使用。数据集中的项目是借助于 Connector 组件或原始动作脚本数据填充的，并随后绑定到用户界面控件（如 List 或 DataGrid 组件）。

要使用 DataSet 组件创建应用程序：

  1. 在 Flash MX Professional 2004 中，选择“文件”>“新建”。在“类型”列中选择“Flash 文档”，然后单击“确定”。
  2. 如果“组件”面板尚未打开，请将其打开（“窗口”>“开发面板”>“组件”）。
  3. 将 DataSet 组件从“组件”面板拖到舞台上。在属性检查器中将其命名为 userData。
  4. 将 DataGrid 组件拖到舞台上，然后将其命名为 userGrid。
  5. 将 DataGrid 组件的大小调整为约 300 像素宽，100 像素高。
  6. 将 Button 组件拖到舞台上，然后将其命名为 nextBtn。
  7. 在“时间轴”中选择“第 1 层”上的第一帧，然后打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  8. 将以下代码添加到“动作”面板：
    var recData = [{id:0, firstName:"Mick", lastName:"Jones"},
              {id:1, firstName:"Joe", lastName:"Strummer"},
              {id:2, firstName:"Paul", lastName:"Simonon"}];
userData.items = recData;

    这将使用一个对象数组填充 DataSet 对象的 items 属性，其中每个对象具有三个属性：firstName、lastName 和 id。

  9. 要将 DataSet 组件的内容绑定到 DataGrid 组件的内容，请打开“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”），然后单击“绑定”选项卡。
  10. 在舞台上选择 DataGrid 组件 (userGrid)，然后单击“组件检查器”面板中的“添加绑定”(+) 按钮。
  11. 在“添加绑定”对话框中，选择“dataProvider：数组”，然后单击“确定”。
  12. 在“组件检查器”面板中双击“绑定到”字段。
  13. 在出现的“绑定到”对话框中，从“组件路径”列中选择“DataSet <userData>”，然后从“架构位置”列中选择“dataProvider：数组”。
  14. 要将 DataSet 组件的选定索引绑定到 DataGrid 组件的选定索引，请在“组件检查器”面板中再次单击“添加绑定”(+) 按钮。
  15. 在出现的对话框中，选择“selectedIndex：数值”。单击“确定”。
  16. 在“组件检查器”面板中双击“绑定到”字段，打开“绑定到”对话框。
  17. 在“组件路径”字段中，从“组件路径”列中选择“DataSet <userData>”，然后从“架构位置”列中选择“selectedIndex：数值”。
  18. 选择 Button 组件 (nextBtn)，如果“动作”面板尚未打开，请将其打开（“窗口”>“开发面板”>“动作”）。
  19. 在“动作”面板中输入以下代码：
    on(click){
  _parent.userData.next();
}

    此代码使用 DataSet.next() 方法浏览到 DataSet 对象项目集合中的下一个项目。由于之前已将 DataGrid 对象的 selectedIndex 属性绑定到 DataSet 对象的同一属性，因此，如果更改 DataSet 对象中的当前项目，DataGrid 对象中的当前（选定）项目也会随之更改。

  20. 保存文件，然后选择“控制”>“测试影片”来测试 SWF 文件。

    DataGrid 对象即会被指定项目填充。注意单击按钮将如何更改 DataGrid 对象中的选定项目。


DataSet 类（仅限 Flash Professional）

动作脚本类名称 mx.data.components.DataSet

DataSet 类的方法摘要

方法 | 描述
DataSet.addItem()> | 将指定项目添加到集合。
DataSet.addSort()> | 创建集合中项目的新的已排序视图。
DataSet.applyUpdates()> | 通知侦听器对 DataSet 对象进行的更改已就绪。
DataSet.changesPending()> | 指明 DeltaPacket 对象中是否存在项目。
DataSet.clear()> | 从集合的当前视图中清除所有项目。
DataSet.createItem()> | 返回最新初始化的集合项目。
DataSet.disableEvents()> | 停止向侦听器发送 DataSet 事件。
DataSet.enableEvents()> | 继续向侦听器发送 DataSet 事件。
DataSet.find()> | 在集合的当前视图中定位项目。
DataSet.findFirst()> | 在集合的当前视图中定位出现的第一个项目。
DataSet.findLast()> | 在集合的当前视图中定位出现的最后一个项目。
DataSet.first()> | 移至集合当前视图中的第一个项目。
DataSet.getItemId()> | 返回指定项目的唯一 ID。
DataSet.getIterator()> | 返回当前重复值的克隆。
DataSet.hasNext()> | 指明当前的重复值是否位于集合视图的结尾。
DataSet.hasPrevious()> | 指明当前的重复值是否位于集合视图的开头。
DataSet.hasSort()> | 指明是否存在指定的排序。
DataSet.isEmpty()> | 指明集合是否包含任何项目。
DataSet.last()> | 移至集合当前视图中的最后一个项目。
DataSet.loadFromSharedObj()> | 从共享对象中检索 DataSet 对象的内容。
DataSet.locateById()> | 将当前重复值移到具有指定 ID 的项目。
DataSet.next()> | 移至集合当前视图中的下一个项目。
DataSet.previous()> | 移至集合当前视图中的上一个项目。
DataSet.removeAll()> | 从集合中删除所有项目。
DataSet.removeItem()> | 从集合中删除指定项目。
DataSet.removeRange()> | 删除当前重复值的范围设置。
DataSet.removeSort()> | 从 DataSet 对象中删除指定排序。
DataSet.saveToSharedObj()> | 将 DataSet 对象中的数据保存到共享对象。
DataSet.setIterator()> | 设置 DataSet 对象的当前重复值。
DataSet.setRange()> | 设置当前重复值的范围设置。
DataSet.skip()> | 在集合的当前视图中按指定项目数向前或向后移动。
DataSet.useSort()> | 使指定排序处于活动状态。

DataSet 类的属性摘要

属性 | 描述
DataSet.currentItem> | 返回集合中的当前项目。
DataSet.dataProvider> | 返回 DataProvider 接口。
DataSet.deltaPacket> | 返回对集合所做的更改，或分配要对集合进行的更改。
DataSet.filtered> | 指明是否已筛选项目。
DataSet.filterFunc> | 用于在集合中筛选项目的用户定义函数。
DataSet.items> | 集合中的项目。
DataSet.itemClassName> | 要在分配项目时创建的对象。
DataSet.length> | 指定集合当前视图中的项目数。
DataSet.logChanges> | 指明是否记录对集合或其项目所做的更改。
DataSet.properties> | 包含此集合内任何传送对象的属性（字段）。
DataSet.readOnly> | 指明是否能修改集合。
DataSet.schema> | 以 XML 格式指定集合的架构。
DataSet.selectedIndex> | 包含集合内当前项目的索引。

DataSet 类的事件摘要

事件 | 描述
DataSet.addItem> | 在将项目添加到集合之前广播。
DataSet.afterLoaded> | 在分配了 items 属性之后广播。
DataSet.deltaPacketChanged> | 在 DataSet 对象的变量增量包已更改并且可以使用时广播。
DataSet.calcFields> | 在应更新计算所得字段时广播。
DataSet.iteratorScrolled> | 在重复值的位置更改时广播。
DataSet.modelChanged> | 在集合中项目的某些方面已被修改时广播。
DataSet.newItem> | 在 DataSet 对象构建了新项目时（但在将其添加到集合之前）广播。
DataSet.removeItem> | 在删除了项目时广播。
DataSet.resolveDelta> | 在将 DeltaPacket 对象分配给包含消息的 DataSet 对象时广播。


DataSet.addItem

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(addItem) {
  // insert your code here
}
listenerObject = new Object();
listenerObject.addItem = function (eventObj) {
  // insert your code here
}
dataSet.addEventListener("addItem", listenerObject)

说明

事件；就在将新的传送对象插入此集合之前生成。

如果将事件对象的 result 属性设置为 false，则添加操作将被取消；如果将其设置为 true，则允许添加操作。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象。

type 字符串 "addItem"。

item 指向集合中要添加的项目的引用。

result 一个布尔值，它指定是否应添加指定项目。默认情况下，该值为 true。

示例

如果名为 userHasAdminPrivs() 的用户定义函数返回 false，下面的 on(addItem) 事件处理函数（附加到 DataSet 对象）将取消新项目的添加操作；否则允许添加项目。

on(addItem) {
  if(globalObj.userHasAdminPrivs()) {
    // 允许添加项目。
    eventObj.result = true;
  } else {
    // 不允许添加项目；用户没有管理权限。
    eventObj.result = false;
  }
}

另请参见

DataSet.removeItem


DataSet.addItem()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.addItem([obj])

参数

obj 要添加到此集合的对象。此参数是可选的。

返回

如果项目已添加到集合，则返回 true；否则返回 false。

说明

方法；将指定传送对象添加到集合以便管理。新添加的项目将成为数据集的当前项目。如果未指定 obj 参数，则会通过 DataSet.createItem() 自动创建新的对象。

新项目在集合中的位置取决于是否为当前重复值指定了排序。如果未使用排序，则会将指定项目添加到集合的结尾。如果使用了排序，则会依据项目在当前排序中的位置将其添加到集合中。

有关初始化和构建传送对象的详细信息，请参阅DataSet.createItem()。

示例

myDataSet.addItem(myDataSet.createItem());

另请参见

DataSet.createItem()


DataSet.addSort()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.addSort(name, fieldList, sortOptions)

参数

name 一个字符串，它指定排序的名称。

fieldList 一个字符串数组，它指定要进行排序的字段名。

sortOptions 以下一个或多个整数（常数）值，它们指明为此排序使用哪些选项。使用逐位 OR 运算符 (|) 分隔多个值。值必须是下列之一：

  • DataSetIterator.Ascending 按升序对项目进行排序。这是默认的排序选项（如果未指定任何选项）。
  • DataSetIterator.Descending 依据指定的项目属性按降序对项目进行排序。
  • DataSetIterator.Unique 防止排序（如果任何字段包含相同的值）。
  • DataSetIterator.CaseInsensitive 在排序操作期间比较两个字符串时忽略大小写。默认情况下，如果正在进行排序的属性是字符串，则排序是区分大小写的。

如果将 DataSetIterator.Unique 指定为排序选项且正在排序的数据不唯一，添加了指定的排序名称或者 fieldList 数组中指定的属性在此数据集中不存在，则会抛出 DataSetError 例外。

返回

无。

说明

方法；依据 fieldList 参数指定的属性为当前重复值创建新的升序或降序排序。在创建了新的排序并将其存储在排序集合中以供稍后检索之后，新的排序将被自动分配给当前重复值。

示例

以下代码将创建名为 "rank" 的新排序，该排序将对 DataSet 对象的 "classRank" 字段按降序进行区分大小写的唯一排序。

myDataSet.addSort("rank", ["classRank"], DataSetIterator.Descending | DataSetIterator.Unique | DataSetIterator.CaseInsensitive);

另请参见

DataSet.removeSort()


DataSet.afterLoaded

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(afterLoaded) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.afterLoaded = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("afterLoaded", listenerObject)

说明

事件；在分配了 DataSet.items 属性后立即广播。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象

type 字符串 "afterLoaded"。

示例

在此范例中，一旦分配了 DataSet contact_ds 中的项目，名为 contactForm 的表单（未显示）将变得可见。

contact_ds.addEventListener("afterLoaded", loadListener);
loadListener = new Object();
loadListener.afterLoaded = function (eventObj) {
  if(eventObj.target == "contact_ds") {
    contactForm.visible = true;
  }
}


DataSet.applyUpdates()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.applyUpdates()

返回

无。

说明

方法；指出 DataSet.deltaPacket 属性具有您可以使用数据绑定或直接通过动作脚本访问的值。在调用此方法之前，DataSet.deltaPacket 属性为 null。如果已通过 DataSet.disableEvents() 方法禁用了事件，则此方法没有效果。

调用此方法还会为当前 DataSet.deltaPacket 属性创建事务 ID，并发出 deltaPacketChanged 事件。有关详细信息，请参阅 DataSet.deltaPacket。

示例

以下代码将对 myDataSet 调用 applyUpdates() 方法。

myDataSet.applyUpdates();

另请参见

DataSet.deltaPacket


DataSet.calcFields

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(calcFields) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.calcFields = function (eventObj) {
  // insert your code here
}
dataSet.addEventListener("calcFields", listenerObject)

说明

事件；在需要确定集合中当前项目的计算所得字段的值时生成。计算所得字段是指 Kind 属性在“组件检查器”面板的“架构”选项卡上设置为“已计算”的字段。您创建的 calcFields 事件侦听器应执行必需的计算，并设置计算所得字段的值。

在非计算所得字段（即 Kind 属性在“组件检查器”面板的“架构”选项卡上设置为“数据”的字段）的值更新时，也会调用此事件。

有关 Kind 属性的详细信息，请参阅架构种类（仅限于 Flash Professional）。

小心：不要更改此事件中任何非计算所得字段的值，因为这将导致“无限循环”。只能设置 calcFields 事件内计算所得字段的值。


DataSet.changesPending()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.changesPending()

返回

一个布尔值。

说明

方法；如果集合或集合内的任何项目具有尚未发送到 DeltaPacket 对象中的待定更改，则返回 true；否则返回 false。

示例

如果 DataSet 集合或该集合内的任何项目具有尚未提交到 DeltaPacket 对象的修改，以下代码将启用“保存更改”按钮（未显示）。

if( data_ds.changesPending() ) {
  saveChanges_btn.enabled = true;
}


DataSet.clear()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.clear()

返回

无。

说明

方法；删除集合当前视图中的项目。哪些项目被视为“可查看”取决于任何当前的过滤器和当前重复值的范围设置。因此，调用此方法可能不会清除集合中的所有项目。要清除集合中的所有项目而不考虑当前重复值的视图，请使用 DataSet.removeAll()。

如果在调用此方法时 DataSet.logChanges 设置为 true，则会为集合内的所有项目将“remove”条目添加到 DataSet.deltaPacket 中。

示例

此范例将从 DataSet 集合的当前视图中删除所有项目。由于 logChanges 属性设置为 true，因此将记录这些项目的删除。

myDataSet.logChanges= true;
myDataSet.clear();

另请参见

DataSet.deltaPacket、DataSet.logChanges


DataSet.createItem()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.createItem([itemData])

参数

itemData 与项目关联的数据。此参数是可选的。

返回

新构建的项目。

说明

方法；创建不与集合关联的项目。可以指定使用 DataSet.itemClassName 属性创建的对象的类。如果未指定 DataSet.itemClassName 值并且忽略了 itemData 参数，则会构建匿名对象。视 DataSet.schema 当前指定的架构而定，此匿名对象的属性将被设置为默认值。

在调用此方法时，DataSet.newItem 事件的所有侦听器将收到通知，并且能够在此方法返回项目之前对项目进行处理。指定的可选项目用于初始化通过 DataSet.itemClassName 属性指定的类，并在 DataSet.itemClassName 为空白时用作项目。

如果无法加载通过 DataSet.itemClassName 属性指定的类，则会抛出 DataSetError 例外。

示例

contact.itemClassName = "Contact";
var itemData = new XML("<contact_info><name>John Smith</name><phone>555.555.4567</phone><zip><pre>94025</pre><post>0556</post></zip></contact_info>");
contact.addItem(contact.createItem(itemData));

另请参见

DataSet.itemClassName、DataSet.newItem、DataSet.schema


DataSet.currentItem

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.currentItem

说明

属性（只读）；返回 DataSet 集合中的当前项目，或者，如果集合为空或集合当前重复值的视图为空，则会返回 null。

此属性提供对集合内的项目的直接访问。通过直接访问此对象所进行的更改既不会被跟踪（在 DataSet.deltaPacket 属性中），也不会是应用于此对象任何属性的任何架构设置。

示例

以下范例将显示 customerName 属性（在名为 customerData 的数据集的当前项目中定义）的值。

trace(customerData.currentItem.customerName);


DataSet.dataProvider

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.dataProvider

说明

属性；此数据集的 DataProvider 接口。此属性为用户界面控件（如 List 和 DataGrid 组件）提供数据。

有关 DataProvider API 的详细信息，请参阅DataProvider API。

示例

以下代码将 DataSet 对象的 dataProvider 属性分配给 DataGrid 组件的对应属性。

myGrid.dataProvider = myDataSet.dataProvider;


DataSet.deltaPacket

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.deltaPacket

说明

属性；返回 DeltaPacket 对象，该对象包含对 dataSet 集合及其项目所做的所有更改操作。在对 dataSet 调用 DataSet.applyUpdates() 之前，此属性为 null。

在调用 DataSet.applyUpdates() 时，会将一个事务 ID 分配给 DeltaPacket 对象。此事务 ID 用于在从服务器开始并返回到客户机的更新往返行程中标识 DeltaPacket 对象。DeltaPacket 对象（具有匹配事务 ID）为 deltaPacket 属性分配的任何后续值都将被视为对之前所发送更改的服务器响应。具有匹配 ID 的 DeltaPacket 对象用于更新集合，并报告包内指定的错误。.

将会向 DataSet.resolveDelta 事件的侦听器报告错误或服务器消息。请注意，在将具有匹配 ID 的 DeltaPacket 对象分配给 DataSet.deltaPacket 时，将忽略 DataSet.logChanges 设置。没有匹配事务 ID 的 DeltaPacket 对象将更新集合，就像直接使用 DataSet API 一样。视 dataSet 和 DeltaPacket 对象的当前 DataSet.logChanges设置而定，这样可能会创建额外的变量增量条目。

如果为 DeltaPacket 对象分配了匹配的事务 ID，并且无法在原始 DeltaPacket 对象中找到新分配的 DeltaPacket 对象中的某个项目，则会抛出 DataSetError 例外。

另请参见

DataSet.applyUpdates()、DataSet.logChanges、DataSet.resolveDelta


DataSet.deltaPacketChanged

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(deltaPacketChanged) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.deltaPacketChanged = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("deltaPacketChanged", listenerObject)

说明

事件；在指定 DataSet 对象的 deltaPacket 属性已更改并且可供使用时广播。

另请参见

DataSet.deltaPacket


DataSet.disableEvents()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.disableEvents()

返回

无。

说明

方法；为 DataSet 对象禁用事件。如果禁用了事件，则在对集合中的项目进行更改或 DataSet 对象滚动到集合中的另一项目时，将不会更新用户界面控件（如 DataGrid 组件）。

要重新启用事件，您必须调用 DataSet.enableEvents()。disableEvents() 方法可被调用多次，因此 enableEvents() 必须被调用相同的次数才能重新启用事件发送。

示例

在此范例中，在对集合中的项进行更改前禁用事件，因此 DataSet 对象将不会尝试刷新控件和影响性能。

// 禁用数据集的事件
myDataSet.disableEvents();
myDataSet.last();
while(myDataSet.hasPrevious()) {
  var price = myDataSet.price;
  price = price * 0.5; // 所有项均为五折。
  myDataSet.price = price;
  myDataSet.previous();
}
// 告诉数据集现在应该更新控件
myDataSet.enableEvents();

另请参见

DataSet.enableEvents()


DataSet.enableEvents()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.enableEvents()

返回

无。

说明

方法；在通过调用 DataSet.disableEvents() 禁用了事件之后为 DataSet 对象重新启用事件。要为 DataSet 对象重新启用事件，enableEvents() 方法的调用次数必须等于或大于 disableEvents() 的调用次数。

示例

在此范例中，在对集合中的项进行更改前禁用事件，因此 DataSet 对象将不会尝试刷新控件和影响性能。

// 禁用数据集的事件
myDataSet.disableEvents();
myDataSet.last();
while(myDataSet.hasPrevious()) {
  var price = myDataSet.price;
  price = price * 0.5; // 所有项均为五折。
  myDataSet.price = price;
  myDataSet.previous();
}
// 告诉数据集现在应该更新控件
myDataSet.enableEvents();

另请参见

DataSet.disableEvents()


DataSet.filtered

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.filtered

说明

属性；一个布尔值，它指明是否过滤当前重复值中的数据。如果设置为 true，则会为集合中的每个项目调用 DataSet.filterFunc 指定的过滤函数。

示例

在以下范例中，对名为 employee_ds 的 DataSet 对象启用过滤。假设 DataSet 集合中的每条记录都包含一个名为 empType 的字段。如果当前项目中的 empType 字段设置为 "management"，以下过滤函数将返回 true；否则返回 false。

employee_ds.filtered = true;
employee_ds.filterFunc = function(item:Object) {
  // 过滤出职务为经理的那些员工...
  return(item.empType != "management");
}

另请参见

DataSet.filterFunc


DataSet.filterFunc

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.filterFunc = function(item:Object) {
  // 返回 true|false；
};

说明

属性；指定一个函数，该函数确定在集合的当前视图中包括哪些项目。如果 DataSet.filtered 设置为 true，则会为集合中的每个传送对象调用分配给此属性的函数。对于传送到函数的每个项目，如果项目应包括在当前视图中，则它应返回 true，或者，如果项目不应包括在当前视图中，则应返回 false。

示例

在以下范例中，对名为 employee_ds 的 DataSet 对象启用过滤。如果每个项目中的 empType 字段设置为 "management"，则指定的过滤函数返回 true；否则返回 false。

employee_ds.filtered = true;
employee_ds.filterFunc = function(item:Object) {
  // 过滤出职务为经理的那些员工...
  return(item.empType != "management");
}

另请参见

DataSet.filtered


DataSet.find()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.find(searchValues)

参数

searchValues 一个数组，包含要在当前排序中查找的一个或多个字段值。

返回

如果找到这些值，则返回 true；否则返回 false。

说明

方法；使用 searchValues 指定的字段值搜索集合的当前视图以查找项目。在当前视图中包含哪些项取决于任何当前过滤器和范围设置。如果找到，则找到的项目将成为 DataSet 对象中的当前项目。

searchValues 指定的值的顺序必须与当前排序指定的字段列表的顺序相同（请参阅下面的范例）。

如果当前排序不唯一，则找到的传送对象不确定。如果要在非唯一排序中查找出现的第一个或最后一个传送对象，请使用 DataSet.findFirst() 或 DataSet.findLast()。

指定的数据转换基于基础字段的类型以及数组中指定的内容。例如，如果指定 ["05-02-02"] 作为搜索值，则会使用基础日期字段，通过日期的 DataType.setAsString() 方法来转换值。如果指定了 [new Date().getTime()]，则使用日期的 DataType.setAsNumber() 方法。

示例

此范例将在当前集合中查找 name 和 id 字段相应包含值 "Bobby" 和 105 的项目。如果找到，则会使用 DataSet.getItemId() 方法来获取项目在集合中的唯一标识符，并使用 DataSet.locateById() 方法将当前重复值放在该项目上。

var studentID:String = null;
studentData.addSort("id", ["name","id"]);
// 查找由 "Bobby" 和 105 标识的传送对象。
// 请注意，搜索字段的顺序匹配
// addSort() 方法中指定的顺序。
if(studentData.find(["Bobby", 105])) {
  studentID = studentData.getItemId();
}
// 现在使用 locateByID() 方法将当前重复值定位在
// 集合中 ID 与 studentID 匹配的项上
if(studentID != null) {
  studentData.locateById(studentID);
}

另请参见

DataSet.applyUpdates()、DataSet.getItemId()、DataSet.locateById()


DataSet.findFirst()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.findFirst(searchValues)

参数

searchValues 一个数组，包含要在当前排序中查找的一个或多个字段值。

返回

如果找到这些项，则返回 true；否则，返回 false。

说明

方法；使用 searchValues 指定的字段值搜索集合的当前视图以查找第一个项目。在当前视图中包含哪些项取决于任何当前过滤器和范围设置。

searchValues 指定的值的顺序必须与当前排序指定的字段列表的顺序相同（请参阅下面的范例）。

指定的数据转换基于基础字段的类型以及数组中指定的内容。例如，如果指定的搜索值为 ["05-02-02"]，则会使用基础日期字段通过日期的 setAsString() 方法来转换值。如果指定的值是 [new Date().getTime()]，则使用日期的 setAsNumber() 方法。

示例

此范例将在当前集合中搜索 name 和 age 字段包含 "Bobby" 和 "13" 的第一个项目。如果找到，则会使用 DataSet.getItemId() 来获取项目在集合中的唯一标识符，并使用 DataSet.locateById() 将当前重复值放在该项目上。

var studentID:String = null;
studentData.addSort("nameAndAge", ["name", "age");
// 查找具有指定值的第一个传送对象。
// 请注意，搜索字段的顺序匹配
// addSort() 方法中指定的顺序。
if(studentData.findFirst(["Bobby", "13"])) {
  studentID = studentData.getItemId();
}
// 现在使用 locateByID() 方法将当前重复值定位在
// 集合中 ID 与 studentID 匹配的项上
if(studentID != null) {
  studentData.locateById(studentID);
}

另请参见

DataSet.applyUpdates()、DataSet.getItemId()、DataSet.locateById()


DataSet.findLast()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.findLast(searchValues)

参数

searchValues 一个数组，包含要在当前排序中查找的一个或多个字段值。

返回

如果找到这些项，则返回 true；否则，返回 false。

说明

方法；使用 searchValues 指定的字段值搜索集合的当前视图以查找最后一个项目。在当前视图中包含哪些项取决于任何当前过滤器和范围设置。

searchValues 指定的值的顺序必须与当前排序指定的字段列表的顺序相同（请参阅下面的范例）。

指定的数据转换基于基础字段的类型以及数组中指定的内容。例如，如果指定的搜索值为 ["05-02-02"]，则会使用基础日期字段通过日期的 setAsString() 方法来转换值。如果指定的值是 [new Date().getTime()]，则使用日期的 setAsNumber() 方法。

示例

此范例将在当前集合中搜索 name 和 age 字段包含 "Bobby" 和 "13" 的最后一个项目。如果找到，则会使用 DataSet.getItemId() 方法来获取项目在集合中的唯一标识符，并使用 DataSet.locateById() 方法将当前重复值放在该项目上。

var studentID:String = null;
studentData.addSort("nameAndAge", ["name", "age");
// 查找具有指定值的最后一个传送对象。
// 请注意，搜索字段的顺序匹配
// addSort() 方法中指定的顺序。
if(studentData.findLast(["Bobby", "13"])) {
  studentID = studentData.getItemId();
}
// 现在使用 locateByID() 方法将当前重复值定位在
// ID 与 studentID 匹配的集合中项目的当前重复值。
if(studentID != null) {
  studentData.locateById(studentID);
}

另请参见

DataSet.applyUpdates()、DataSet.getItemId()、DataSet.locateById()


DataSet.first()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.first()

返回

无。

说明

方法；使集合当前视图中的第一个项目成为当前项目。在当前视图中包含哪些项取决于任何当前过滤器和范围设置。

示例

以下代码将 DataSet userData 放在其集合中的第一个项目处，然后使用 DataSet.currentItem 属性显示该项目包含的 price 属性的值。

inventoryData.first();
trace("The price of the first item is:"+ inventoryData.currentItem.price);

另请参见

DataSet.last()


DataSet.getItemId()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.getItemId([index])

参数

index 一个数值，指定要获取其 ID 的项目当前视图中的项目。此参数是可选的。

返回

一个字符串。

说明

方法；返回当前项目在集合中的标识符，或返回由 index 指定的项目的标识符。此标识符只有在此集合中才是唯一的，它由 DataSet.addItem() 自动分配。

示例

以下代码将获取当前项目在集合中的唯一 ID，然后在“输出”面板中显示该 ID。

var itemNo:String = myDataSet.getItemId();
trace("Employee id("+ itemNo+ ")");

另请参见

DataSet.addItem()


DataSet.getIterator()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.getIterator()

返回

一个 ValueListIterator 对象。

说明

方法；返回此集合的一个新重复值；此重复值是正在使用的当前重复值的克隆，其中包括它在集合内的当前位置。此方法主要供想要访问同一集合同时出现的多个视图的高级用户使用。

示例

myIterator:ValueListIterator = myDataSet.getIterator();
myIterator.sortOn(["name"]);
myIterator.find({name:"John Smith"}).phone = "555-1212";


DataSet.hasNext()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.hasNext()

返回

一个布尔值。

说明

方法；如果当前重复值位于其集合视图的结尾处，则返回 false；否则返回 true。

示例

此范例将重复集合当前视图中的所有项目（从开头位置开始），并对每个项目的 price 属性执行计算。

myDataSet.first();
while(myDataSet.hasNext()) {
  var price = myDataSet.currentItem.price;
  price = price * 0.5; // 所有项均为五折。
  myDataSet.currentItem.price = price;
  myDataSet.next();
}

另请参见

DataSet.currentItem、DataSet.first()、DataSet.next()


DataSet.hasPrevious()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.hasPrevious()

返回

一个布尔值。

说明

方法；如果当前重复值位于其集合视图的开头处，则返回 false；否则返回 true。

示例

此范例将重复集合当前视图中的所有项目（从最后一个项目开始），并对每个项目的 price 属性执行计算。

myDataSet.last();
while(myDataSet.hasPrevious()) {
  var price = myDataSet.currentItem.price;
  price = price * 0.5; // 所有项均为五折。
  myDataSet.currentItem.price = price;
  myDataSet.previous();
}

另请参见

DataSet.currentItem、DataSet.skip()、DataSet.previous()


DataSet.hasSort()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.hasSort(sortName)

参数

sortName 一个字符串，它包含使用 DataSet.addSort() 创建的排序的名称

返回

一个布尔值。

说明

方法；如果 sortName 指定的排序存在，则返回 true；否则返回 false。

示例

以下代码将测试名为“customerSort”的排序是否存在。如果该排序已存在，则会通过 DataSet.useSort() 方法使其成为当前排序。如果具有该名称的排序不存在，则会通过 DataSet.addSort() 方法创建一个。

if(myDataSet.hasSort("customerSort"))
  myDataSet.useSort("customerSort");
} else {
  myDataSet.addSort("customerSort", ["customer"], DataSetIterator.Descending);
}

另请参见

DataSet.applyUpdates()、DataSet.useSort()


DataSet.isEmpty()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.isEmpty()

返回

一个布尔值。

说明

方法；如果指定的 DataSet 对象不包含任何项目（也就是说，如果 dataSet.length == 0），则返回 true。

示例

以下代码将在“删除记录”按钮（未显示）所应用到的 DataSet 对象为空时禁用该按钮。

if(userData.isEmpty()){
    delete_btn.enabled = false;
}

另请参见

DataSet.length


DataSet.items

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myDataSet.items

说明

属性；由 myDataSet 管理的项目数组。

示例

此范例将对象数组分配给 DataSet 对象的 items 属性。

var recData = [{id:0, firstName:"Mick", lastName:"Jones"},
              {id:1, firstName:"Joe", lastName:"Strummer"},
              {id:2, firstName:"Paul", lastName:"Simonon"}];
myDataSet.items = recData;


DataSet.itemClassName

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.itemClassName

说明

属性；一个字符串，指明在将项目添加到集合中时应创建的类的名称。您指定的类必须实现 TransferObject 接口，如下所示。

interface mx.data.to.TransferObject {
  function clone():Object;
  function getPropertyData():Object;
  function setPropertyData(propData:Object):Void;
}

您也可以在属性检查器中设置该属性。

要使指定的类在运行时可用，您必须同时在 SWF 文件的代码内的某处对该类进行完全限定引用，如以下代码片断中所示：

var myItem:my.package.myItem;

如果试图在载入了 DataSet.items 数组之后修改此属性的值，则会抛出 DataSetError 例外。

有关 TransferObject 接口的详细信息，请参阅TransferObject 接口。


DataSet.iteratorScrolled

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(iteratorScrolled) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.iteratorScrolled = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("iteratorScrolled", listenerObject)

说明

事件；在当前重复值已滚动到集合中的新项目之后立即生成。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象。

type 字符串 "iteratorScrolled"。

scrolled 一个数值，它指定重复值滚动了多少项目；正值指明重复值在集合中向前移动；负值指明它在集合中向后移动。

示例

在此范例中，应用程序的状态栏（未显示）将在当前重复值的位置更改时更新。

on(iteratorScrolled) {
  var dataSet:mx.data.components.DataSet = eventObj.target;
  var statusBarText = dataSet.fullname+" Acct #:"+dataSet.getField("acctnum").getAsString();
  setStatusBar(statusBarText);
}


DataSet.last()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.last()

返回

无。

说明

方法；使集合当前视图中的最后一个项目成为当前项目。

示例

以下代码（附加到 Button 组件）将转到 DataSet 集合中的最后一个项目。

function goLast(eventObj:obj) {
  inventoryData.last();
}
goLast_btn.addEventListener("click", goLast);

另请参见

DataSet.first()


DataSet.length

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.length

说明

属性（只读）；指定集合当前视图中的项目数。这个可查看的项目数以当前过滤器和范围的设置为基础。

示例

如果用户在数据集中没有输入足够的内容，以下范例可能会使用可编辑的 DataGrid 组件警示用户。

if(myDataSet.length < MIN_REQUIRED) {
  alert("You need at least "+MIN_REQUIRED);
}


DataSet.loadFromSharedObj()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.loadFromSharedObj(objName, [localPath])

参数

objName 一个字符串，指定要检索的共享对象的名称。名称中可以包含斜杠（例如“work/addresses”）。在指定的名称中不允许包括空格和以下字符：

~ % & \ ; : " ' , < > ? #

localPath 一个可选字符串参数，指定创建了共享对象的 SWF 文件的完整或部分路径。此字符串用于确定对象存储在用户计算机上的何处。默认值是 SWF 文件的完整路径。

返回

无。

说明

方法；加载从共享对象中恢复此 DataSet 集合所需的所有相关数据。要将 DataSet 集合保存到共享对象，请使用 DataSet.saveToSharedObj()。DataSet.loadFromSharedObject() 方法将覆盖此 DataSet 集合内可能存在的任何数据或待定更改。请注意，DataSet 集合的实例名称用于在指定的共享对象内标识数据。

如果指定的共享对象未找到或从中检索数据时有问题，此方法将抛出 DataSetError 例外。

示例

此范例将尝试加载与数据集（名为 myDataSet ）关联的共享对象（名为 webapp/customerInfo）。将在 try...catch 代码块内调用该方法。

try {
  myDataSet.loadFromSharedObj("webapp/customerInfo");
}
catch(e:DataSetError) {
  trace("Unable to load shared object.”);
}

另请参见

DataSet.saveToSharedObj()


DataSet.locateById()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.locateById(id)

参数

id 待查找集合中项目的字符串标识符。

返回

一个布尔值。

说明

方法；将当前重复值放在 ID 与 id 匹配的集合项目上。如果指定的 ID 可与集合中的某个项目匹配，此方法将返回 true；否则返回 false。

示例

此范例将使用 DataSet.find() 在当前集合中搜索 name 和 id 字段分别包含值 "Bobby" 和 105 的项目。如果找到，则会使用 DataSet.getItemId() 方法来获取该项目的唯一标识符，并使用 DataSet.locateById() 方法将当前重复值放在该项目上。

var studentID:String = null;
studentData.addSort("id", ["name","id"]);
if(studentData.find(["Bobby", 105])) {
  studentID = studentData.getItemId();
  studentData.locateById(studentID);
}

另请参见

DataSet.applyUpdates()、DataSet.find()、DataSet.getItemId()


DataSet.logChanges

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.logChanges

说明

属性；一个布尔值，它指定是 (true) 否 (false) 应在 DataSet.deltaPacket 中记录对数据集或其项目进行的更改。

如果此属性设置为 true，在集合级别和项目级别执行的操作将被记录。集合级别的更改包括在集合中添加项目或从中删除项目的操作。项目级别的更改包括对项目进行的属性更改，以及通过 DataSet 组件对项目进行的方法调用。

示例

以下范例将为名为 userData 的 DataSet 对象禁用记录操作。

userData.logChanges = false;

另请参见

DataSet.deltaPacket


DataSet.modelChanged

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(modelChanged) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.modelChanged = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("modelChanged", listenerObject)

说明

事件；在集合的某些方面已更改（例如，删除项目或将项目添加到集合、项目属性的值发生更改或对集合进行了过滤或排序）时广播。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象。

type 字符串 "iteratorScrolled"。

firstItem 受更改影响的集合中第一个项目的索引（号）。

lastItem 受更改影响的集合中最后一个项目的索引（号），如果只有一个项目受影响，则它与 firstItem 相等。

fieldName 一个字符串，它包含受影响的字段的名称。除非对 DataSet 对象的属性进行了更改，否则此属性为 undefined。

eventName 一个字符串，它描述发生的更改。它可以是以下值之一：

字符串值 | 描述
"addItems" | 已添加一系列项目。
"filterModel" | 已过滤模型，并且视图需要刷新（重置滚动位置）。
"removeItems" | 已删除一系列项目。
"schemaLoaded" | 已声明数据提供程序的字段定义。
"sort" | 数据已排序。
"updateAll" | 整个视图都需要刷新（除滚动位置外）。
"updateColumn" | 数据提供程序内整个字段的定义都需要刷新。
"updateField" | 项目内的字段已更改，并且需要刷新。
"updateItems" | 一系列项目需要刷新。

示例

在此范例中，如果已从集合中删除了项目且目标 DataSet 对象没有其他项目，则会禁用“删除项”按钮。

on(modelChanged) {
  delete_btn.enabled = ((eventObj.eventName == "removeItems") && (eventObj.target.isEmpty()));
}

另请参见

DataSet.isEmpty()


DataSet.newItem

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(newItem) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.newItem = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("newItem", listenerObject)

说明

事件；在通过 DataSet.createItem() 构建了新的传送对象时广播。此事件的侦听器可在将项目添加到集合之前对其进行修改。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象。

type 字符串 "iteratorScrolled"。

item 指向所创建项目的引用。

示例

此范例在将新创建的项目添加到集合之前对其进行修改。

function newItemEvent(evt:Object):Void {
  var employee:Object = evt.item;
  employee.name = "newGuy";
  // 属性数据恰好是 XML
  employee.zip = employee.getPropertyData().firstChild.childNodes[1].attributes.zip;
}
employees_ds.addEventListener("newItem", newItemEvent);


DataSet.next()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.next()

返回

无。

说明

方法；使集合当前视图中的下一个项目成为当前项目。在当前视图中包含哪些项取决于任何当前过滤器和范围设置。

示例

此范例将遍历 DataSet 对象中的所有项目（从第一个项目开始），并对每个项目中的字段执行计算。

myDataSet.first();
while(myDataSet.hasNext()) {
  var price = myDataSet.price;
  price = price * 0.5; // 所有项均为五折。
  myDataSet.price = price;
  myDataSet.next();
}

另请参见

DataSet.first()、DataSet.hasNext()


DataSet.previous()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.previous()

返回

无。

说明

方法；使集合当前视图中的上一个项目成为当前项目。在当前视图中包含哪些项取决于任何当前过滤器和范围设置。

此范例将集合当前视图中的所有项目（从最后一个项目开始），并对每个项目中的字段执行计算。

myDataSet.last();
while(myDataSet.hasPrevious()) {
  var price = myDataSet.price;
  price = price * 0.5; // 所有项均为五折。
  myDataSet.price = price;
  myDataSet.previous();
}

另请参见

DataSet.first()、DataSet.hasNext()


DataSet.properties

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.properties

说明

属性（只读）；返回一个对象，该对象包含此集合内任意传送对象所有公开的属性（字段）。

示例

此范例将显示名为 myDataSet 的 DataSet 对象中属性的所有名称。

for(var i in myDataSet.properties) {
  trace("field '"+i+ "' has value "+ myDataSet.properties[i]);
}


DataSet.readOnly

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.readOnly

说明

属性；一个布尔值，它指定此集合是可以修改 (false) 还是只读 (true)。将此属性设置为 true 可防止对集合进行更新。

您也可以在属性检查器中设置该属性。

示例

以下范例使名为 myDataSet 的 DataSet 对象变为只读，然后尝试更改属于集合中当前项目的属性的值。这将抛出一个例外。

myDataSet.readOnly = true;
// 这将抛出一个例外
myDataSet.currentItem.price = 15;

另请参见

DataSet.currentItem


DataSet.removeAll()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.removeAll()

参数

无。

返回

无。

描述

方法；删除 DataSet 集合中的所有项目。

范例

此范例将删除 DataSet 集合 contact_ds 中的所有项目：

contact_ds.removeAll();


DataSet.removeItem

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(removeItem) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.removeItem = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("removeItem", listenerObject)

说明

事件；就在从此集合中删除新项目之前生成。

如果将事件对象的 result 属性设置为 false，则删除操作将被取消；如果将其设置为 true，则允许删除操作。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象。

type 字符串 "removeItem"。

item 指向集合中要删除的项目的引用。

result 一个布尔值，它指定是否应删除项目。默认情况下，该值为 true。

示例

在此范例中，如果名为 userHasAdminPrivs() 的用户定义函数返回 false，则 on(removeItem) 事件处理函数取消新项目的删除操作；否则允许删除操作。

on(removeItem) {
  if(globalObj.userHasAdminPrivs()) {
    // 允许删除项目。
    eventObj.result = true;
  } else {
    // 不允许删除项目；用户没有管理权限。
    eventObj.result = false;
  }
}

另请参见

DataSet.addItem


DataSet.removeItem()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.removeItem([item])

参数

item 应删除的项目。此参数是可选的。

返回

一个布尔值。如果成功删除了项目，则返回 true；否则返回 false。

说明

方法；从集合中删除指定项目；或者，如果忽略了 item 参数，则删除当前项目。如果 DataSet.logChanges 为 true，则将此操作记录到 DataSet.deltaPacket。

示例

以下代码（附加到 Button 组件的实例）将删除名为 usersData 的 DataSet 对象中的当前项目，该对象驻留在与 Button 实例相同的时间轴上。

on(click){
  _parent.usersData.removeItem();
}

另请参见

DataSet.deltaPacket、DataSet.logChanges


DataSet.removeRange()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.removeRange()

返回

无。

说明

方法；删除通过当前重复值的 DataSet.setRange() 指定的当前端点设置。

示例

myDataSet.addSort("name_id", ["name", "id"]);
myDataSet.setRange(["Bobby", 105],["Cathy", 110]);
while(myDataSet.hasNext()) {
  myDataSet.gradeLevel ="5"; // 更改此范围中的所有级别
  myDataSet.next();
}
myDataSet.removeRange();
myDataSet.removeSort("name_id");

另请参见

DataSet.applyUpdates()、DataSet.hasNext()、DataSet.next()、DataSet.removeSort()、DataSet.setRange()


DataSet.removeSort()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.removeSort(sortName)

参数

sortName 一个字符串，它指定要删除的排序的名称。

返回

无。

说明

方法；从此 DataSet 对象中删除指定排序（如果排序存在）。如果指定的排序不存在，此方法将抛出 DataSetError 例外。

示例

myDataSet.addSort("name_id", ["name", "id"]);
myDataSet.setRange(["Bobby", 105],["Cathy", 110]);
while(myDataSet.hasNext()) {
  myDataSet.gradeLevel ="5"; // 更改此范围中的所有级别
  myDataSet.next();
}
myDataSet.removeRange();
myDataSet.removeSort("name_id");

另请参见

DataSet.applyUpdates()、DataSet.hasNext()、DataSet.next()、DataSet.removeRange()、DataSet.setRange()


DataSet.resolveDelta

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

on(resolveDelta) {
  // 此处插入您的代码
}
listenerObject = new Object();
listenerObject.resolveDelta = function (eventObj) {
  // 此处插入您的代码
}
dataSet.addEventListener("resolveDelta", listenerObject)

说明

事件；在将 DeltaPacket 对象分配给 DataSet.deltaPacket 时广播，它的事务 ID 与之前从 DataSet 对象中检索的 DeltaPacket 对象的事务 ID 匹配，并且具有与该 DeltaPacket 对象所包含任何 Delta 或 DeltaItem 对象关联的消息。

此事件使您能够在尝试应用先前提交的更改时协调从服务器返回的任何错误。通常，您可以使用此事件来显示包含冲突值的“协调对话框”，从而允许用户对数据进行修改以便能够重新发送。

事件对象 (eventObj) 包含以下属性：

target 生成该事件的 DataSet 对象。

type 字符串 "resolveDelta"。

data Delta 对象及关联 DeltaItem 对象的数组，它具有长度不为零的消息。

示例

此范例显示一个名为 reconcileForm 的表单（未显示），并对该表单对象调用一个方法 (setReconcileData())，该方法使用户能够协调服务器返回的任何冲突值。

myDataSet.addEventListener("resolveDelta", resolveDelta);
function resolveDelta(eventObj:Object) {
  reconcileForm.visible = true;
  reconcileForm.setReconcileData(eventObj.data);
}
// 在 reconcileForm 代码中
function setReconcileData(data:Array):Void {
  var di:DeltaItem;
  var ops:Array = ["property", "method"];
  var cl:Array;
  // 更改列表
  var msg:String;
  for (var i = 0; i<data.length; i++) {
    cl = data[i].getChangeList();
    for (var j = 0; j<cl.length; j++) {
      di = cl[j];
      msg = di.getMessage();
      if (msg.length>0) {
        trace("The following problem occurred '"+msg+"' while performing a '"+ops[di.kind]+"' modification on/with '"+di.name+"' current server value ["+di.curValue+"], value sent ["+di.newValue+"] Please fix!");
      }
    }
  }
}


DataSet.saveToSharedObj()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.saveToSharedObj(objName, [localPath])

参数

objName 一个字符串，它指定要创建的共享对象的名称。名称中可以包含斜杠（例如“work/addresses”）。在指定的名称中不允许包括空格和以下字符：

~ % & \ ; : " ' , < > ? #

localPath 一个可选字符串参数，指定创建了共享对象的 SWF 文件的完整或部分路径。此字符串用于确定对象将存储在用户计算机上的何处。默认值是 SWF 文件的完整路径。

返回

无。

说明

方法；保存将此 DataSet 集合恢复到共享对象所需的所有相关数据。它使用户能够在与来源数据断开连接的情况下工作（如果来源数据是网络资源）。此方法将覆盖此 DataSet 集合的指定共享对象内可能存在的任何数据。要从共享对象恢复 DataSet 集合，请使用 DataSet.loadFromSharedObj()。请注意，DataSet 集合的实例名称用于在指定的共享对象内标识数据。

如果无法创建共享对象或在将数据刷新到其中时有问题，此方法将抛出 DataSetError 例外。

示例

此范例将在 try..catch 块内调用 saveToSharedObj()，并且，如果在将数据保存到共享数据时有问题，此范例将显示一个错误。

try {
  myDataSet.saveToSharedObj("webapp/customerInfo");
}
catch(e:DataSetError) {
  trace("Unable to create shared object”);
}

另请参见

DataSet.loadFromSharedObj()


DataSet.schema

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.schema

说明

属性；为此 DataSet 对象提供以 XML 方式表示的架构。分配给此属性的 XML 必须具有以下格式：

<?xml version="1.0"?>
<properties>
  <property name="propertyName">
    <type name="dataType" />
    <encoder name="dataType">
      <options>
        <dataFormat>format options<dataFormat/>
      <options/>
    <encoder/>
    <kind name="dataKind">
      <options/>
    </kind>
  </property>
  <property> ...</property>
  ...
</properties>

如果指定的 XML 不符合上面的格式，则会抛出 DataSetError 例外。

示例

myDataSet.schema = new XML("<properties><property name="billable"> ..etc..</properties>");


DataSet.selectedIndex

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.selectedIndex

说明

属性；指定集合内的选定索引。可以将此属性绑定到 DataGrid 或 List 组件中的选定项目，反之亦然。有关演示此操作的完整范例，请参阅创建具有 DataSet 组件的应用程序。

示例

以下范例将 DataSet 对象 (userData) 的选定索引设置为 DataGrid 组件 (userGrid) 中的选定索引。

userData.selectedIndex = userGrid.selectedIndex;


DataSet.setIterator()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.setIterator(iterator)

参数

iterator 对 DataSet.getIterator() 的调用所返回的重复值对象。

返回

无。

说明

方法；将指定的重复值分配给此 DataSet 对象，并使其成为当前重复值。指定的重复值必须来自之前对其所分配到的 DataSet.getIterator() 的调用；否则，将抛出 DataSetError 例外。

示例

myIterator:ValueListIterator = myDataSet.getIterator();
myIterator.sortOn(["name"]);
myDataSet.setIterator(myIterator);

另请参见

DataSet.getIterator()


DataSet.setRange()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.setRange(startValues, endValues)

参数

startValues 范围内第一个传送对象的属性的关键值数组。

endValues 范围内最后一个传送对象的属性的关键值数组。

返回

无。

说明

方法；设置当前重复值的端点。这些端点定义一个范围，重复值将在其中进行运算。只有在通过 DataSet.applyUpdates() 为当前重复值设置了有效的排序时，此方法才有效。

如果需要分组的值，则为当前重复值设置一个范围比使用过滤函数更有效（请参阅 DataSet.filterFunc）。

示例

myDataSet.addSort("name_id", ["name", "id"]);
myDataSet.setRange(["Bobby", 105],["Cathy", 110]);
while(myDataSet.hasNext()) {
  myDataSet.gradeLevel ="5"; // 更改此范围中的所有级别
  myDataSet.next();
}
myDataSet.removeRange();
myDataSet.removeSort("name_id");

另请参见

DataSet.applyUpdates()、DataSet.hasNext()、DataSet.next()、DataSet.removeRange()、DataSet.removeSort()


DataSet.skip()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.skip(offSet)

参数

offSet 一个整数，指定重复值位置要移动的记录数。

返回

无。

说明

方法；将当前重复值的位置在集合内向前或向后移动一定距离（由 offSet 指定）。如果 offSet 值为正，则重复值的位置向前移动；如果值为负，则向后移动。

如果指定的 offset 超出了集合的开头（或结尾），重复值将被定位在集合的开头（或结尾）。

示例

此范例将当前重复值定位在集合中的第一个项目，然后移动到倒数第二个项目，并对属于该项目的字段执行计算。

myDataSet.first();
// 移动到倒数第二个项目
var itemsToSkip = myDataSet.length - 2;
myDataSet.skip(itemsToSkip).price = myDataSet.amount * 10;


DataSet.useSort()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

dataSet.useSort(sortName, order)

参数

sortName 一个字符串，它包含要使用的排序的名称。

order 一个整数值，它指明排序的排序顺序；该值必须为 DataSetIterator.Ascending 或 DataSetIterator.Descending。

返回

无。

说明

方法；将当前重复值的排序切换到 sortName 指定的排序（如果存在）。如果 sortName 指定的排序不存在，则会抛出 DataSetError 例外。

要创建排序，请使用 DataSet.applyUpdates()。

示例

此代码使用 DataSet.hasSort() 来确定名为 "customer" 的排序是否存在。如果存在，代码将调用 DataSet.useSort() 使 "customer" 成为当前排序。否则，代码将使用 DataSet.addSort() 创建一个具有该名称的排序。

if(myDataSet.hasSort("customer")) {
  myDataSet.useSort("customer");
} else {
  myDataSet.addSort("customer", ["customer"], DataSetIterator.Descending);
}

另请参见

DataSet.applyUpdates()、DataSet.hasSort()


关于 DateChooser 组件（仅限 Flash Professional）

DateChooser 组件是一个允许用户选择日期的日历。它包含一些按钮，这些按钮允许用户在月份之间来回滚动并单击某个日期将其选中。可以设置指明月份和日名称、星期的第一天和任何禁用日期以及突出显示当前日期的参数。

每个 DateChooser 实例的实时预览反映了创作过程中属性检查器或“组件检查器”面板指明的值。


使用 DateChooser 组件（仅限 Flash Professional）

DateChooser 可用于任何您想让用户选择日期的场合。例如，您可以将 DateChooser 组件用于酒店预订系统中，其中某些日期是可选择的，其他日期则是禁用的。您也可以在用户选择日期时显示当前事件（如表演或会议）的应用程序中使用 DateChooser 组件。

DateChooser 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 DateChooser 组件实例设置的创作参数：

monthNames 设置在日历的标题行中显示的月份名称。该值是一个数组，并且默认值是 ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October","November", "December"]。

dayNames 设置一周中各天的名称。该值是一个数组，并且默认值是 ["S", "M", "T", "W", "T", "F", "S"]。

firstDayOfWeek 指明一周中的哪一天（其值为 0-6，0 是 dayNames 数组的第一个元素）显示在 DateChooser 的第 1 列中。此属性更改“日”列的显示顺序。

disabledDays 指明一周中禁用的各天。该参数是一个数组，并且最多具有 7 个值。默认值为 []（空数组）。

showToday 指明是否突出显示今天的日期。默认值为 true。

您可以编写动作脚本，使用其属性、方法和事件来控制 DateChooser 组件的这些和其他选项。有关详细信息，请参阅DateChooser 类（仅限 Flash Professional）。

创建具有 DateChooser 组件的应用程序

以下过程解释了如何在创作时将 DateChooser 组件添加到应用程序。在此范例中，DateChooser 使用户能够从航空公司预订系统中选择一个日期。10 月 15 日之前的所有日期必须被禁用。同时，12 月中的某个范围必须被禁用以创建一个假日关闭期，并且星期一也必须被禁用。

要创建具有 DateChooser 组件的应用程序，请执行以下操作：

  1. 在“组件”面板中双击 DateChooser 组件，将其添加到舞台。
  2. 在属性检查器中，输入实例名称 flightCalendar。
  3. 在“动作”面板中，在时间轴的第 1 帧上输入以下代码，以设置可选日期的范围：
    flightCalendar.selectableRange = {rangeStart:new Date(2003, 9, 15), rangeEnd:new Date(2003, 11, 31)}

    此代码将一个值分配给动作脚本对象中的 selectableRange 属性，该属性包含两个 Date 对象，这两个对象分别具有变量名称 rangeStart 和 rangeEnd。这样，此代码就定义了用户可以在其内选择日期的范围的上限和下限。

  4. 在“动作”面板中，在时间轴的第 1 帧上输入以下代码，以设置假日禁用日期的范围：
    flightCalendar.disabledRanges = [{rangeStart:new Date(2003, 11, 15), rangeEnd:new Date(2003, 11, 26)}];
  5. 在“动作”面板中，在时间轴的第 1 帧上输入以下代码，以禁用各星期一：
    flightCalendar.disabledDays=[1];
  6. “控制”>“测试影片”。


自定义 DateChooser 组件（仅限 Flash Professional）

在创作过程中和运行时，您都可以在水平和垂直方向上改变 DateChooser 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅UIObject.setSize()）。

对 DateChooser 组件使用样式

您可以设置样式属性来更改日期选择器实例的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

DateChooser 组件支持下列光晕样式：

样式 | 描述
themeColor | 用于变换图象和所选日期的发亮的颜色。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“normal”或“italic”。
fontWeight | 字体粗细；“normal”或“bold”。
textDecoration | 文本修饰：“none”或“underline”。

对 DateChooser 组件使用外观

DateChooser 组件会使用外观来表现其可视状态。要在创作时设置 DateChooser 组件的外观，请在其中一个主题 FLA 文件的库中修改 Flash UI Components 2/Themes/MMDefault/DateChooser Assets/Elements/Month skins states 文件夹中的外观元件。有关详细信息，请参阅关于设置组件外观。

在此组件中，只有月份滚动按钮才能被动态地设置外观。DateChooser 组件使用以下外观属性：

属性 | 描述
falseUpSkin | 弹起状态。默认值为 fwdMonthUp 和 backMonthUp。
falseDownSkin | 按下状态。默认值为 fwdMonthDown 和 backMonthDown。
falseDisabledSkin | 禁用状态。默认值为 fwdMonthDisabled 和 backMonthDisabled。


DateChooser 类（仅限 Flash Professional）

继承 UIObject > UIComponent > DateChooser

动作脚本类名称 mx.controls.DateChooser

DateChooser 类的属性使您能够访问选定的日期以及显示的月份和年份。您也可以设置日和月的名称，指明禁用的日期和可选的日期，设置一周中的第一天，以及指明当前日期是否应突出显示。

使用动作脚本设置 DateChooser 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.DateChooser.version);

注意：下面的代码返回未定义的：trace(myDC.version);.

DateChooser 类的方法摘要

继承 UIObject 和 UIComponent 中的所有方法。

DateChooser 类的属性摘要

属性 | 描述
DateChooser.dayNames> | 一个数组，指明一周中各天的名称。
DateChooser.disabledDays> | 一个数组，指明为日期选择器中所有适用日期禁用的一周中的各天。
DateChooser.disabledRanges> | 禁用日期的范围或单个禁用的日期。
DateChooser.displayedMonth> | 一个数字，指明 monthNames 数组中要在日期选择器中显示的元素。
DateChooser.displayedYear> | 一个数字，指明要显示的年份。
DateChooser.firstDayOfWeek> | 一个数字，指明 dayNames 数组中要在日期选择器的第一列中显示的元素。
DateChooser.monthNames> | 一个字符串数组，指明月份名称。
DateChooser.selectableRange> | 单个可选日期或可选日期的范围。
DateChooser.selectedDate> | 一个 Date 对象，指明可选日期。
DateChooser.showToday> | 一个布尔值，指明是否突出显示当前日期。

继承 UIObject 和 UIComponent 中的所有属性。

DateChooser 类的事件摘要

事件 | 描述
DateChooser.change> | 在选择一个日期时广播。
DateChooser.scroll> | 在按下月份按钮时广播。

继承 UIObject 和 UIComponent 中的所有事件。


DateChooser.change

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

on(change){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  ...
}
chooserInstance.addEventListener("change", listenerObject)

描述

事件；当选择日期时，向所有已注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到 DateChooser 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下代码（附加到日期选择器 myDC）将“_level0.myDC”发送到“输出”面板：

on(change){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (chooserInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，它会在一个名为 myDC 的 DateChooser 发生更改时向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 change 事件定义一个函数。该函数内部有一个 trace() 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件（在本例中是 myDC）。从事件对象的 target 属性中可以访问 NumericStepper.maximum 属性。最后一行从 myDC 调用 UIEventDispatcher.addEventListener() 方法，并把 change 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form.change = function(eventObj){
    trace("date selected " +  eventObj.target.selectedDate) ;
}
myDC.addEventListener("change", form);


DateChooser.dayNames

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.dayNames

描述

属性；包含一周中各天的名称的数组。星期日是第一天（索引位置为 0），其他各天的名称按顺序跟在后面。默认值为 ["S", "M", "T", "W", "T", "F", "S"]。

范例

以下范例将一周的第 5 天（星期四）的值从“T”更改为“R”：

myDC.dayNames[4] = "R";


DateChooser.disabledDays

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.disabledDays

描述

属性；指明一周中被禁用的各天的数组。一个月中属于指定日期范围内的所有日期都被禁用。此数组的元素可以具有介于 0（星期日）和 6（星期六）之间的值。默认值为 []（空数组）。

范例

以下范例将禁用星期日和星期六，以使用户只能选择每周工作日：

myDC.disabledDays = [0, 6];


DateChooser.disabledRanges

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.disabledRanges

描述

属性；禁用某一天或一个范围中的各天。此属性是对象数组。该数组中的每个对象必须或者是指定要禁用的某一天的 Date 对象，或者是包含 rangeStart 和/或 rangeEnd 属性（这两个属性的值必须是 Date 对象）的对象。rangeStart 和 rangeEnd 属性描述日期范围的界限。如果这两个属性中的任何一个属性被省略，则范围在该方向上无限制。

disabledRanges 的默认值未定义。

在为 disabledRanges 属性定义日期时应指定一个完整日期。例如，应指定 new Date(2003,6,24)，而不是 new Date()。如果没有指定一个完整日期，则该时间返回为 00:00:00。

范例

以下范例定义一个数组，该数组具有 rangeStart 和 rangeEnd Date 对象，禁用 5 月 7 日和 6 月 7 日之间的日期：

myDC.disabledRanges = [ {rangeStart:new Date(2003, 4, 7), rangeEnd:new Date(2003, 5, 7)}];

以下范例禁用 11 月 7 日之后的所有日期：

myDC.disabledRanges = [ {rangeStart:new Date(2003, 10, 7)}];

以下范例禁用 10 月 7 日之前的所有日期：

myDC.disabledRanges = [ {rangeEnd:new Date(2002, 9, 7)}];

以下范例仅禁用 11 月 7 日：

myDC.disabledRanges = [ new Date(2003, 11, 7) ];


DateChooser.displayedMonth

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.displayedMonth

描述

属性；指明显示哪一月份的数字。该数字指明 monthNames 数组中的元素，其中 0 是第一个月份。默认值是当前日期的月份。

范例

以下范例将显示的月份设置为 December（12 月）：

myDC.displayedMonth = 11;

另请参见

DateChooser.displayedYear


DateChooser.displayedYear

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.displayedYear

描述

属性；指明显示哪一年份的四位数数字。默认值为当前年份。

范例

以下范例将显示的年份设置为 2010：

myDC.displayedYear = 2010;

另请参见

DateChooser.displayedMonth


DateChooser.firstDayOfWeek

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.firstDayOfWeek

描述

属性；一个数值，指明一周中的哪一天（0-6，0 是 dayNames 数组的第一个元素）显示在 DateChooser 组件的第一列中。更改该属性将更改日列的顺序，但对 dayNames 属性的顺序没有影响。默认值为 0（星期日）。

范例

以下范例将一周的第一天设置为 Monday（星期一）：

myDC.firstDayOfWeek = 1;

另请参见

DateChooser.dayNames


DateChooser.monthNames

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.monthNames

描述

属性；一个字符串数组，在 DateChooser 组件的顶部指明月份名称。默认值为 ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]。

范例

以下范例将设置 myDC 实例的月份名称：

 myDC.monthNames = ["Jan", "Feb","Mar","Apr", "May", "June","July", "Aug" , "Sept","Oct", "Nov", "Dec"];


DateChooser.scroll

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

on(scroll){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.scroll = function(eventObject){
  ...
}
myDC.addEventListener("scroll", listenerObject)

描述

事件；在按下月份按钮时广播到所有注册的侦听器。

第一个用法范例使用 on() 处理函数，并且必须直接附加到 DateChooser 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码（附加到步进器 myDC）将“_level0.myDC”发送到“输出”面板：

on(scroll){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (myDC) 发送一个事件（在本例中为 scroll），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。scroll 事件的事件对象还有另一个属性 detail，该属性可以具有以下值之一：nextMonth、previousMonth、nextYear、previousYear。

最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，当在名为 myDC 的 DateChooser 实例上按下月份按钮时，它将向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 scroll 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件；在本例中是 myDC。最后一行从 myDC 调用 UIEventDispatcher.addEventListener() 方法，并把 scroll 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form = new Object();
form.scroll = function(eventObj){
  trace(eventObj.detail);
}
myDC.addEventListener("scroll", form);


DateChooser.selectableRange

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.selectableRange

描述

属性；设置可选的某一天或一定范围的可选日期。用户将无法超出可选范围滚动。此属性的值是由名为 rangeStart 和 rangeEnd 的两个 Date 对象组成的对象。rangeStart 和 rangeEnd 属性指定可选日期范围的界限。如果只定义 rangeStart，则启用 rangeStart 后的所有日期。如果只定义 rangeEnd，则启用 rangeEnd 前的所有日期。默认值未定义。

如果您想要只启用某一天，则可以使用单个 Date 对象作为 selectableRange 的值。

在定义日期时指定完整日期例如，应指定 new Date(2003,6,24)，而不是 new Date()。如果没有指定一个完整日期，则该时间返回为 00:00:00。

DateChooser.selectedDate 的值在超出可选范围时将被设置为未定义。

如果当前月份超出可选范围，DateChooser.displayedMonth 和 DateChooser.displayedYear 的值将被设置为可选范围中最接近的最后一个月份。例如，如果当前显示的月份是 8 月，并且可选范围是从 2003 年 6 月到 2003 年 7 月，则显示的月份将更改为 2003 年 7 月。

范例

以下范例将可选范围定义为 5 月 7 日和 6 月 7 日之间的日期（包括这两个日期）：

myDC.selectableRange = {rangeStart:new Date(2001, 4, 7), rangeEnd:new Date(2003, 5, 7)};

以下范例将可选范围定义为 5 月 7 日之后的日期（包括 5 月 7 日）：

myDC.selectableRange = {rangeStart:new Date(2003, 4, 7)};

以下范例将可选范围定义为 6 月 7 日之前的日期（包括 6 月 7 日）：

myDC.selectableRange = {rangeEnd:new Date(2003, 5, 7)};

以下范例将可选日期定义为仅限 6 月 7 日：

myDC.selectableRange = new Date(2003, 5, 7);


DateChooser.selectedDate

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.selectedDate

描述

属性；一个 Date 对象，如果该值属于 selectableRange 属性的值的范围内，则指明所选日期。默认值未定义。

selectedDate 属性不能设置为处于 disabledRange 内、超出 selectableRange 或与某个已禁用的日期相同。如果将 selectedDate 属性设置为以前的某个日期，则值将为未定义。

范例

以下范例将所选日期设置为 6 月 7 日：

myDC.selectedDate = new Date(2003, 5, 7);


DateChooser.showToday

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDC.showToday

描述

属性；此属性确定是否突出显示当前日期。默认值为 true。

范例

以下范例关闭对今天日期的突出显示：

myDC.showToday = false;


关于 DateField 组件（仅限 Flash Professional）

DateField 组件是一个不可选择的文本字段，它显示右边带有日历图标的日期。如果未选定日期，则该文本字段为空白，并且当前日期的月份显示在日期选择器中。当用户在日期字段边框内的任意位置单击时，将会弹出一个日期选择器，并显示选定日期所在月份内的日期。当日期选择器打开时，用户可以使用月份滚动按钮在月份和年份之间来回滚动，并选择一个日期。选定了日期时，日期选择器将关闭。

DateField 的实时预览不会反映创作时属性检查器或“组件检查器”面板指明的值，因为该组件是一个弹出组件，在创作时是不可见的。


使用 DateField 组件（仅限 Flash Professional）

DateField 组件可用于您想让用户选择日期的任何场合。例如，您可以将 DateField 组件用于酒店预订系统中，其中某些日期是可选择的，其他日期则是禁用的。您也可以在用户选择日期时显示当前事件（如表演或会议）的应用程序中使用 DateField 组件。

DateField 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 DateField 组件设置的创作参数：

monthNames 设置在日历的标题行中显示的月份名称。该值是一个数组，并且默认值是 ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October","November", "December"]。

dayNames 设置一周中各天的名称。该值是一个数组，并且默认值是 ["S", "M", "T", "W", "T", "F", "S"]。

firstDayOfWeek 指明一周中的哪一天（其值为 0-6，0 是 dayNames 数组的第一个元素）显示在 DateChooser 的第 1 列中。此属性更改“日”列的显示顺序。

默认值为 0（即“S”）。

disabledDays 指明一周中禁用的各天。该参数是一个数组，并且最多具有 7 个值。默认值为 []（空数组）。

showToday 指明是否突出显示今天的日期。默认值为 true。

您可以编写动作脚本，以便使用其属性、方法和事件来控制 DateField 组件的这些和其他选项。有关详细信息，请参阅DateField 类（仅限 Flash Professional）。

创建具有 DateField 组件的应用程序

以下过程解释了如何在创作时将 DateField 组件添加到应用程序。在此范例中，DateField 组件使用户能够从航空公司预订系统中选择一个日期。当前日期之前的所有日期必须被禁用。12 月中一个 15 天的范围也必须被禁用，以便创建一个假日关闭期。同时，由于某些航班在星期一不可用，因此必须为这些航班禁用所有星期一。

要创建具有 DateField 组件的应用程序，请执行以下操作：

  1. 在“组件”面板中双击 DateField 组件，将其添加到舞台。
  2. 在属性检查器中，输入实例名称 flightCalendar。
  3. 在“动作”面板中，在时间轴的第 1 帧上输入以下代码，以设置可选日期的范围：
    flightCalendar.selectableRange = {rangeStart:new Date(2001, 9, 1), rangeEnd:new Date(2003, 11, 1)};

    此代码将一个值分配给动作脚本对象中的 selectableRange 属性，该属性包含两个 Date 对象，这两个对象分别具有变量名称 rangeStart 和 rangeEnd。这样，此代码就定义了用户可以在其内选择日期的范围的上限和下限。

  4. 在“动作”面板中，在时间轴的第一帧上输入以下代码以设置禁用日期的范围，一个范围处于 12 月，另一个代表当前日期之前的所有日期：
    flightCalendar.disabledRanges = [{rangeStart:new Date(2003, 11, 15), rangeEnd:new Date(2003, 11, 31)}, {rangeEnd:new Date(2003, 6, 16)}];
  5. 在“动作”面板中，在时间轴的第 1 帧上输入以下代码，以禁用各星期一：
    flightCalendar.disabledDays=[1];
  6. “控制”>“测试影片”。


自定义 DateField 组件（仅限 Flash Professional）

在创作过程中和运行时，您都可以在水平方向上改变 DateField 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅UIObject.setSize()）。设置宽度不会改变 DateField 组件内日期选择器的尺寸。但是，您可以使用 pullDown 属性来访问 DateChooser 组件并设置其尺寸。

对 DateField 组件使用样式

您可以设置样式属性来更改日期字段实例的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

DateField 组件支持下列光晕样式：

样式 | 描述
themeColor | 用于变换图象和所选日期的发亮的颜色。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“normal”或“italic”。
fontWeight | 字体粗细；“normal”或“bold”。
textDecoration | 文本修饰：“none”或“underline”。

对 DateField 组件使用外观

DateField 组件使用外观来表示弹出图标的可视状态。要在创作时设置弹出图标的外观，请在其中一个主题 FLA 文件的库中修改 Flash UI Components 2/Themes/MMDefault/DateField Elements skins states 文件夹中的外观元件。有关详细信息，请参阅关于设置组件外观。

在此组件中，只有弹出图标按钮才能被设置外观。DateField 组件使用以下外观属性动态地设置弹出图标的外观：

属性 | 描述
openDateUp | 弹出图标的弹起状态。
openDateDown | 弹出图标的按下状态。
openDateOver | 弹出图标的滑过状态。
openDateDisabled | 弹出图标的禁用状态。


DateField 类（仅限 Flash Professional）

继承 UIObject > UIComponent > ComboBase > DateField

动作脚本类名称 mx.controls.DateField

DateField 类的属性使您能够访问选定的日期以及显示的月份和年份。您也可以设置日和月的名称，指明禁用的日期和可选的日期，设置一周中的第一天，以及指明当前日期是否应突出显示。

使用动作脚本设置 DateField 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.DateField.version);

注意：下面的代码返回未定义的：trace(myDateFieldInstance.version);.

DateField 类的方法摘要

方法 | 描述
DateField.close()> | 关闭弹出日期选择器子组件。
DateField.open()> | 打开弹出日期选择器子组件。

继承 UIObject 和 UIComponent 中的所有方法。

DateField 类的属性摘要

属性 | 描述
DateField.dateFormatter> | 对要在文本字段中显示的日期进行格式化的函数。
DateField.dayNames> | 一个数组，指明一周中各天的名称。
DateField.disabledDays> | 一个数组，指明为日期选择器中所有适用日期禁用的一周中的各天。
DateField.disabledRanges> | 禁用日期的范围或单个禁用的日期。
DateField.displayedMonth> | 一个数字，指明 monthNames 数组中要在日期选择器中显示的元素。
DateField.displayedYear> | 一个数字，指明要显示的年份。
DateField.firstDayOfWeek> | 一个数字，指明 dayNames 数组中要在日期选择器的第一列中显示的元素。
DateField.monthNames> | 一个字符串数组，指明月份名称。
DateField.pullDown> | 指向 DateChooser 子组件的引用。该属性为只读。
DateField.selectableRange> | 单个可选日期或可选日期的范围。
DateField.selectedDate> | 一个 Date 对象，指明可选日期。
DateField.showToday> | 一个布尔值，指明是否突出显示当前日期。

继承 UIObject 和 UIComponent 中的所有属性。

DateField 类的事件摘要

事件 | 描述
DateField.change> | 在选择一个日期时广播。
DateField.close> | 在日期选择器子组件关闭时广播。
DateField.open> | 在日期选择器子组件打开时广播。
DateField.scroll> | 在按下月份按钮时广播。

继承 UIObject 和 UIComponent 中的所有事件。


DateField.change

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

on(change){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  ...
}
myDF.addEventListener("change", listenerObject)

描述

事件；当选择日期时，向所有已注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 DateField 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下代码附加到日期字段 myDF 上，它将“_level0.myDF”发送到“输出”面板：

on(change){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (chooserInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，它会在一个名为 myDF 的日期字段发生更改时向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 change 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在这个范例中是 myDF。从事件对象的 target 属性中可以访问 DateField.selectedDate 属性。最后一行从 myDF 调用 UIEventDispatcher.addEventListener() 方法，并把 change 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form.change = function(eventObj){
    trace("date selected " +  eventObj.target.selectedDate) ;
}
myDF.addEventListener("change", form);


DateField.close()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.close()

参数

无。

返回

无。

说明

方法；关闭弹出菜单。

示例

以下代码将关闭 myDF 日期字段实例的日期选择器弹出窗口。

myDF.close();


DateField.close

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

on(close){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.close = function(eventObject){
  ...
}
myDF.addEventListener("close", listenerObject)

描述

事件；当用户在图标外单击或选择一个日期后 DateChooser 子组件关闭时向所有注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 DateField 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下代码附加到日期字段 myDF 上，它将“_level0.myDF”发送到“输出”面板：

on(close){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (myDF) 发送一个事件（在本例中为 close），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，它会在 myDF 内的日期选择器关闭时向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 close 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在这个范例中是 myDF。从事件对象的 target 属性中可以访问 属性。最后一行从 myDF 调用 UIEventDispatcher.addEventListener() 方法，并把 close 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form.close = function(eventObj){
  trace("PullDown Closed" + eventObj.target.selectedDate);
}
myDF.addEventListener("close", form);


DateField.dateFormatter

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.dateFormatter

描述

属性；对要在文本字段中显示的日期进行格式化的函数。该函数必须接收 Date 对象作为参数，并以要显示的格式返回字符串。

范例

以下范例将设置函数以返回要显示的日期的格式：

myDF.dateFormatter = function(d:Date){
  return d.getFullYear()+"/ "+(d.getMonth()+1)+"/ "+d.getDate();
};


DateField.dayNames

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.dayNames

描述

属性；包含一周中各天的名称的数组。星期日是第一天（索引位置为 0），其他各天的名称按顺序跟在后面。默认值为 ["S", "M", "T", "W", "T", "F", "S"]。

范例

以下范例将一周的第 5 天（星期四）的值从“T”更改为“R”：

myDF.dayNames[4] = "R";


DateField.disabledDays

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.disabledDays

描述

属性；指明一周中被禁用的各天的数组。一个月中属于指定日期范围内的所有日期都被禁用。此数组的元素可以具有介于 0（星期日）和 6（星期六）之间的值。默认值为 []（空数组）。

范例

以下范例将禁用星期日和星期六，以使用户只能选择每周工作日：

myDF.disabledDays = [0, 6];


DateField.disabledRanges

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.disabledRanges

描述

属性；禁用某一天或一个范围中的各天。此属性是对象数组。该数组中的每个对象必须或者是指定要禁用的某一天的 Date 对象，或者是包含 rangeStart 和/或 rangeEnd 属性（这两个属性的值必须是 Date 对象）的对象。rangeStart 和 rangeEnd 属性描述日期范围的界限。如果这两个属性中的任何一个属性被省略，则范围在该方向上无限制。

disabledRanges 的默认值未定义。

在为 disabledRanges 属性定义日期时应指定一个完整日期。例如，应指定 new Date(2003,6,24)，而不是 new Date()。如果没有指定一个完整日期，则该时间返回为 00:00:00。

范例

以下范例定义一个数组，该数组具有 rangeStart 和 rangeEnd Date 对象，禁用 5 月 7 日和 6 月 7 日之间的日期：

myDF.disabledRanges = [ {rangeStart:new Date(2003, 4, 7), rangeEnd:new Date(2003, 5, 7)}];

以下范例禁用 11 月 7 日之后的所有日期：

myDF.disabledRanges = [ {rangeStart:new Date(2003, 10, 7)}];

以下范例禁用 10 月 7 日之前的所有日期：

myDF.disabledRanges = [ {rangeEnd:new Date(2002, 9, 7)}];

以下范例仅禁用 11 月 7 日：

myDF.disabledRanges = [ new Date(2003, 11, 7) ];


DateField.displayedMonth

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.displayedMonth

描述

属性；指明显示哪一月份的数字。该数字指明 monthNames 数组中的元素，其中 0 是第一个月份。默认值是当前日期的月份。

范例

以下范例将显示的月份设置为 December（12 月）：

myDF.displayedMonth = 11;

另请参见

DateField.displayedYear


DateField.displayedYear

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.displayedYear

描述

属性；指明显示哪一年份的数字。默认值为当前年份。

范例

以下范例将显示的年份设置为 2010：

myDF.displayedYear = 2010;

另请参见

DateField.displayedMonth


DateField.firstDayOfWeek

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.firstDayOfWeek

描述

属性；一个数值，指明一周中的哪一天（0-6，0 是 dayNames 数组的第一个元素）显示在 DateField 组件的第一列中。更改该属性将更改日列的顺序，但对 dayNames 属性的顺序没有影响。默认值为 0（星期日）。

范例

以下范例将一周的第一天设置为 Monday（星期一）：

myDF.firstDayOfWeek = 1;

另请参见

DateField.dayNames


DateField.monthNames

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.monthNames

描述

属性；一个字符串数组，在 DateField 组件的顶部指明月份名称。默认值为 ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]。

范例

以下范例将设置 myDF 实例的月份名称：

myDF.monthNames = ["Jan", "Feb","Mar","Apr", "May", "June","July", "Aug" , "Sept","Oct", "Nov", "Dec"];


DateField.open()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.open()

参数

无。

返回

无。

说明

方法；打开弹出 DateChooser 子组件。

示例

以下代码将打开 df 实例的弹出日期选择器：

df.open();


DateField.open

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

on(open){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.open = function(eventObject){
  ...
}
myDF.addEventListener("open", listenerObject)

描述

事件；当用户单击图标后日期选择器子组件打开时向所有注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 DateField 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下代码附加到日期字段 myDF 上，它将“_level0.myDF”发送到“输出”面板：

on(open){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (myDF) 发送一个事件（在本例中为 open），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，它会在一个名为 myDF 的步进器打开时向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 open 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在这个范例中是 myDF。从事件对象的 target 属性中可以访问 DateField.selectedDate 属性。最后一行从 myDF 调用 UIEventDispatcher.addEventListener() 方法，并把 open 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form.open = function(eventObj){
    trace("Pop-up opened and date selected is " +  eventObj.target.selectedDate) ;
}
myDF.addEventListener("open", form);


DateField.pullDown

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.pullDown

描述

属性（只读）；对 DateField 组件包含的 DateChooser 组件的引用。当用户单击 DateField 组件时，DateChooser 子组件将被实例化。但是，如果在用户单击该组件之前引用了 pullDown 属性，则 DateChooser 将被实例化并随后被隐藏。

范例

以下范例将 DateChooser 子组件的可见性设置为 false，然后将 DateChooser 子组件的大小设置为 300 像素高，300 像素宽：

myDF.pullDown._visible = false;
myDF.pullDown.setSize(300,300);


DateField.scroll

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

on(scroll){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.scroll = function(eventObject){
  ...
}
myDF.addEventListener("scroll", listenerObject)

描述

事件；在按下月份按钮时广播到所有注册的侦听器。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 DateField 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下代码附加到日期字段 myDF 上，它将“_level0.myDF”发送到“输出”面板：

on(scroll){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (myDF) 发送一个事件（在本例中为 scroll），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。scroll 事件的事件对象还有另一个属性 detail，该属性可以具有以下值之一：nextMonth、previousMonth、nextYear、previousYear。

最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，当在名为 myDF 的 DateField 实例上按下月份按钮时，它将向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 scroll 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在这个范例中是 myDF。最后一行从 myDateField 调用 UIEventDispatcher.addEventListener() 方法，并把 scroll 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form = new Object();
form.scroll = function(eventObj){
  trace(eventObj.detail);
}
myDF.addEventListener("scroll", form);


DateField.selectableRange

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.selectableRange

描述

属性；设置可选的某一天或一定范围的可选日期。此属性的值是由名为 rangeStart 和 rangeEnd 的两个 Date 对象组成的对象。rangeStart 和 rangeEnd 属性指定可选日期范围的界限。如果只定义 rangeStart，则启用 rangeStart 后的所有日期。如果只定义 rangeEnd，则启用 rangeEnd 前的所有日期。默认值未定义。

如果您想要只启用某一天，则可以使用单个 Date 对象作为 selectableRange 的值。

在定义日期时指定完整日期例如，应指定 new Date(2003,6,24)，而不是 new Date()。如果没有指定一个完整日期，则该时间返回为 00:00:00。

DateField.selectedDate 的值在超出可选范围时将被设置为未定义。

如果当前月份超出可选范围，DateField.displayedMonth 和 DateField.displayedYear 的值将被设置为可选范围中最接近的最后一个月份。例如，如果当前显示的月份是 8 月，并且可选范围是从 2003 年 6 月到 2003 年 7 月，则显示的月份将更改为 2003 年 7 月。

范例

以下范例将可选范围定义为 5 月 7 日和 6 月 7 日之间的日期（包括这两个日期）：

myDF.selectableRange = {rangeStart:new Date(2001, 4, 7), rangeEnd:new Date(2003, 5, 7)};

以下范例将可选范围定义为 5 月 7 日之后的日期（包括 5 月 7 日）：

myDF.selectableRange = {rangeStart:new Date(2003, 4, 7)};

以下范例将可选范围定义为 6 月 7 日之前的日期（包括 6 月 7 日）：

myDF.selectableRange = {rangeEnd:new Date(2003, 5, 7)};

以下范例将可选日期定义为仅限 6 月 7 日：

myDF.selectableRange = new Date(2003, 5, 7);


DateField.selectedDate

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.selectedDate

描述

属性；一个 Date 对象，如果该值属于 selectableRange 属性的值的范围内，则指明所选日期。默认值未定义。

范例

以下范例将所选日期设置为 6 月 7 日：

myDF.selectedDate = new Date(2003, 5, 7);


DateField.showToday

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDF.showToday

描述

属性；此属性确定是否突出显示当前日期。默认值为 true。

范例

以下范例关闭对今天日期的突出显示：

myDF.showToday = false;


关于 DepthManager 类

动作脚本类名称 mx.managers.DepthManager

DepthManager 类向动作脚本的 MovieClip 类添加功能，使您可以管理任何组件或影片剪辑的相对深度（包括 _root）分配。它还允许您为光标或工具提示这样的系统级服务来管理在 _root 上的特殊最深剪辑中保留的深度。

以下方法组成了按相对深度排序的 API：

  • DepthManager.createChildAtDepth()
  • DepthManager.createClassChildAtDepth()
  • DepthManager.setDepthAbove()
  • DepthManager.setDepthBelow()
  • DepthManager.setDepthTo()

以下方法组成了保留深度空间 API：

  • DepthManager.createClassObjectAtDepth()
  • DepthManager.createObjectAtDepth()

DepthManager 类的方法摘要

方法 | 描述
DepthManager.createChildAtDepth()> | 在指定深度处创建指定元件的子级。
DepthManager.createClassChildAtDepth()> | 在该指定深度处创建指定类的对象。
DepthManager.createClassObjectAtDepth()> | 在特殊最深剪辑中的指定深度处创建指定类的实例。
DepthManager.createObjectAtDepth()> | 在最深剪辑中的指定深度处创建一个对象。
DepthManager.setDepthAbove()> | 将深度设置到指定实例之上。
DepthManager.setDepthBelow()> | 将深度设置到指定实例之下。
DepthManager.setDepthTo()> | 将深度设置为最深剪辑中的指定实例。


DepthManager.createChildAtDepth()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

movieClipInstance.createChildAtDepth(linkageName, depthFlag[, initObj])

参数

linkageName 一个链接标识符。此参数是一个字符串。

depthFlag 它是下列值之一：DepthManager.kTop、DepthManager.kBottom、DepthManager.kTopmost、DepthManager.kNotopmost。所有深度标记都是 DepthManger 类的静态属性。您必须引用 DepthManager 包（例如 mx.managers.DepthManager.kTopmost），或者使用 import 语句导入 DepthManager 包。

initObj 一个初始化对象。此参数是可选的。

返回

指向所创建的对象的引用。

描述

方法；创建一个由 linkageName 参数指定的元件的子实例，该子实例位于 depthFlag 参数指定的深度。

范例

下面的范例创建 MinuteSymbol 影片剪辑的实例 minuteHand，并将其放在 clock 之上：

import mx.managers.DepthManager;
minuteHand = clock.createChildAtDepth("MinuteSymbol", DepthManager.kTop);


DepthManager.createClassChildAtDepth()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

movieClipInstance.createClassChildAtDepth( className, depthFlag[, initObj] )

参数

className 一个类名称。

depthFlag 它是下列值之一：DepthManager.kTop、DepthManager.kBottom、DepthManager.kTopmost、DepthManager.kNotopmost。所有深度标记都是 DepthManger 类的静态属性。您必须引用 DepthManager 包（例如 mx.managers.DepthManager.kTopmost），或者使用 import 语句导入 DepthManager 包。

initObj 一个初始化对象。此参数是可选的。

返回

指向所创建的子级的引用。

描述

方法；在 depthFlag 参数指定的深度创建一个 className 参数指定的类的子类。

范例

下面的代码在所有 NoTopmost 对象之上绘制一个焦点矩形：

import mx.managers.DepthManager
this.ring = createClassChildAtDepth(mx.skins.RectBorder, DepthManager.kTop);

下面的代码创建一个 Button 类的实例，并将其 label 属性的值作为 initObj 参数传递给该实例：

import mx.managers.DepthManager
button1 = createClassChildAtDepth(mx.controls.Button, DepthManager.kTop, {label:"Top Button"});


DepthManager.createClassObjectAtDepth()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

DepthManager.createClassObjectAtDepth(className, depthSpace[, initObj])

参数

className 一个类名称。

depthSpace 它是下列值之一：DepthManager.kCursor、DepthManager.kTooltip。所有深度标记都是 DepthManger 类的静态属性。您必须引用 DepthManager 包（例如 mx.managers.DepthManager.kCursor），或者使用 import 语句导入 DepthManager 包。

initObj 一个初始化对象。此参数是可选的。

返回

指向所创建的对象的引用。

描述

方法；在 depthSpace 参数指定的深度创建一个 className 参数指定的类的对象。该方法用于访问特殊最高深度剪辑中保留的深度空间。

范例

下面的范例创建一个 Button 类的对象：

import mx.managers.DepthManager
myCursorButton = createClassObjectAtDepth(mx.controls.Button, DepthManager.kCursor, {label:"Cursor"});


DepthManager.createObjectAtDepth()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

DepthManager.createObjectAtDepth(linkageName, depthSpace[, initObj])

参数

linkageName 一个链接标识符。

depthSpace 它是下列值之一：DepthManager.kCursor、DepthManager.kTooltip。所有深度标记都是 DepthManger 类的静态属性。您必须引用 DepthManager 包（例如 mx.managers.DepthManager.kCursor），或者使用 import 语句导入 DepthManager 包。

initObj 一个初始化对象。

返回

指向所创建的对象的引用。

描述

方法；在指定深度处创建一个对象。该方法用于访问特殊最高深度剪辑中保留的深度空间。

范例

下面的范例创建一个 TooltipSymbol 元件的实例，并将其放在为工具提示保留的深度：

import mx.managers.DepthManager
myCursorTooltip = createObjectAtDepth("TooltipSymbol", DepthManager.kTooltip);


DepthManager.setDepthAbove()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

movieClipInstance.setDepthAbove(instance)

参数

instance 一个实例名称。

返回

无。

描述

方法；将影片剪辑或组件实例的深度设置到 instance 参数指定的实例的深度之上。


DepthManager.setDepthBelow()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

movieClipInstance.setDepthBelow(instance)

参数

instance 一个实例名称。

返回

无。

描述

方法；将影片剪辑或组件实例的深度设置到 instance 参数指定的实例的深度之下。

范例

下列代码将 textInput 实例的深度设置到 button 的深度之下：

textInput.setDepthBelow(button);


DepthManager.setDepthTo()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

movieClipInstance.setDepthTo(depth)

参数

depth 深度级别。

返回

无。

描述

方法；将 movieClipInstance 的深度设置为 depth 指定的值。此方法将实例移动到其他深度，以便留出空间供其他对象使用。

范例

下面的范例将 mc1 实例的深度设置为深度 10：

mc1.setDepthTo(10);

有关深度和堆叠顺序的详细信息，请参阅确定下一个最大的可用深度。


关于 FocusManager 类

您可以使用 FocusManager 来指定一个顺序，当用户按 Tab 键在应用程序中定位时，组件将按此顺序接受焦点。您可以使用 FocusManager API 在文档中设置一个按钮，当用户按 Enter 键 (Windows) 或 Return 键 (Macintosh) 时，该按钮会接收键盘输入。例如，当用户填完一张表单后，他们应该能够使用 Tab 键在字段之间切换，然后按 Enter 键 (Windows) 或 Return 键 (Macintosh) 来提交表单。

所有组件都支持 FocusManager；您无需编写代码来调用它。FocusManager 也会与系统管理器进行交互，当激活或取消激活弹出窗口时，系统管理器会激活或取消激活 FocusManager 实例。每个模式窗口都有一个 FocusManager 实例，所以，该窗口中的组件就成为了它们自己的 Tab 集，这样就可以防止用户按 Tab 键切换到其他窗口中的组件。

FocusManager 可识别单选按钮组（这些按钮具有定义的 RadioButton.groupName 属性），并将焦点设置到该组中 selected 属性设置为 true 的实例。当按 Tab 键时，焦点管理器会查看下一个对象是否与当前对象具有相同的 groupName。如果是这样，那么它会自动将焦点移动到下一个具有不同 groupName 的对象。其他支持 groupName 属性的组件组也可以使用这一功能。

FocusManager 会处理由鼠标单击而引起的焦点变化。如果用户单击一个组件，则该组件就被赋予焦点。

FocusManager 不会自动给应用程序中的组件指定焦点。除非您对组件调用 FocusManager.setFocus()，否则默认情况下，主窗口和任何弹出窗口都不会在任何组件上设置焦点。


使用 FocusManager

FocusManager 不会自动给组件指定焦点。如果想要某个组件在加载应用程序时具有焦点，必须编写一个对组件调用 FocusManager.setFocus() 的脚本。

要在应用程序中创建焦点导航，请在应接收焦点的任何对象（包括按钮）上设置 tabIndex 属性。当用户按下 Tab 键时，FocusManager 就会查找一个已启用对象，此对象应具有比 tabIndex 当前值更高的 tabIndex 属性。FocusManager 达到 tabIndex 属性的最高值后，它就会返回到零。因此，在以下范例中，首先 comment 对象（可能是 TextArea 组件）接收焦点，然后 okButton 对象接收焦点：

comment.tabIndex = 1;
okButton.tabIndex = 2;

您还可以使用“辅助功能”面板来分配 Tab 键索引值。

如果舞台上没有任何对象具有 Tab 键索引值，则 FocusManager 使用 Z 顺序。Z 顺序最初按组件拖到舞台上的顺序设置；不过，您也可以使用“修改”/“排列”/“移至顶层”或“移至底层”命令来确定最终的 Z 顺序。

要创建一个当用户按下 Enter 键 (Windows) 或者 Return 键 (Macintosh) 时接收焦点的按钮，可将 FocusManager.defaultPushButton 属性设为所需按钮的实例名称，如下所示：

focusManager.defaultPushButton = okButton;

注意：FocusManager 与对象放在舞台上的时间（对象的深度顺序）有关，而与它们在舞台上的相对位置无关。这与 Flash Player 处理 Tab 键排序的方式不同。

FocusManager 参数

FocusManager 没有创作参数。你必须使用“动作”面板中 FocusManager 类的动作脚本方法和属性。有关详细信息，请参阅 FocusManager 类。

创建具有 FocusManager 的应用程序

以下步骤会在 Flash 应用程序中创建一个焦点方案。

  1. 将 TextInput 组件从“组件”面板拖到舞台中。
  2. 在属性检查器中，为它分配实例名称 comment。
  3. 将 Button 组件从“组件”面板拖到舞台中。
  4. 在属性检查器中，为它分配实例名称 okButton，并将标签参数设置为 OK。
  5. 在“动作”面板的第 1 帧中，输入下列代码：
    comment.tabIndex = 1;
okButton.tabIndex = 2;
focusManager.setFocus(comment);
focusManager.defaultPushButton = okButton;
lo = new Object();
lo.click = function(evt){
  trace(evt.target + " was clicked");
}
okButton.addEventListener("click", lo);

    这段代码设置了 Tab 键顺序，并指定在用户按 Enter 键 (Windows) 或 Return 键 (Macintosh) 时用来接收 click 事件的默认按钮。


自定义 FocusManager

通过更改 themeColor 样式的值，可以更改光晕主题中焦点环的颜色。

FocusManager 使用 FocusRect 外观来绘制焦点。可以替换或修改此外观，子类也可以覆盖 UIComponent.drawFocus 以绘制自定义的焦点指示符。


FocusManager 类

继承 UIObject > UIComponent > FocusManager

动作脚本类名称 mx.managers.FocusManager

FocusManager 类的方法摘要

方法 | 描述
FocusManager.getFocus()> | 返回对具有焦点的对象的引用。
FocusManager.sendDefaultPushButtonEvent()> | 给注册到默认普通按钮的侦听器对象发送一个 click 事件。
FocusManager.setFocus()> | 给指定对象设置焦点。

FocusManager 类的属性摘要

方法 | 描述
FocusManager.defaultPushButton> | 一个对象，该对象在用户按 Return 键或 Enter 键时接收 click 事件。
FocusManager.defaultPushButtonEnabled> | 指明是启用 (true) 还是禁用 (false) 默认普通按钮的键盘处理功能。默认值为 true。
FocusManager.enabled> | 指明是启用 (true) 还是禁用 (false) Tab 键的处理功能。默认值为 true。
FocusManager.nextTabIndex> | tabIndex 属性的下一个值。


FocusManager.defaultPushButton

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

focusManager.defaultPushButton

描述

属性；为应用程序指定默认普通按钮。当用户按 Enter 键 (Windows) 或 Return 键 (Macintosh) 时，默认普通按钮的侦听器会接收到一个 click 事件。默认值未定义，而且这个属性的数据类型是对象类型。

FocusManager 使用 SimpleButton 类的强调样式声明以可视方式指明当前的默认普通按钮。

defaultPushButton 属性的值始终是具有焦点的按钮。设置 defaultPushButton 属性无法将初始焦点指定给默认的普通按钮。如果应用程序中有多个按钮，则在按下 Enter 键或 Return 键时，由当前具有焦点的按钮接收 click 事件。如果在按下 Enter 键或 Return 键时某个其他组件具有焦点，则将 defaultPushButton 属性重置为其原始值。

范例

下列代码将默认普通按钮设置为 OKButton 实例：

FocusManager.defaultPushButton = OKButton;

另请参见

FocusManager.defaultPushButtonEnabled、FocusManager.sendDefaultPushButtonEvent()


FocusManager.defaultPushButtonEnabled

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

focusManager.defaultPushButtonEnabled

描述

属性；一个布尔值，确定是启用 (true) 还是禁用 (false) 默认普通按钮的键盘处理功能。将 defaultPushButtonEnabled 设置为 false，可以使组件接收 Return 键或 Enter 键，并在内部对其进行处理。必须通过监视组件的 onKillFocus() 方法（请参阅 MovieClip.onKillFocus）或 focusOut 事件来重新启用默认普通按钮处理功能。默认值为 true。

范例

下列代码会禁用默认普通按钮处理功能：

focusManager.defaultPushButtonEnabled = false;


FocusManager.enabled

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

focusManager.enabled

描述

属性；一个布尔值，确定是为一组特定的具有焦点的对象启用 (true) 还是禁用 (false) Tab 键处理功能。（例如，其他弹出窗口可能具有它自己的 FocusManager。）将 enabled 设置为 false，可以使组件接收 Tab 处理按键，并在内部对它们进行处理。必须通过监视组件的 onKillFocus() 方法（请参阅 MovieClip.onKillFocus）或 focusOut 事件来重新启用 FocusManager 处理功能。

范例

下面的代码禁用 Tab 键处理功能：

focusManager.enabled = false;


FocusManager.getFocus()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

focusManager.getFocus()

参数

无。

返回

对具有焦点的对象的引用。

描述

方法；返回对当前具有焦点的对象的引用。

范例

如果当前具有焦点的对象是 myInputText，下列代码会将焦点设置到 myOKButton：

if (focusManager.getFocus() == myInputText)
{
  focusManager.setFocus(myOKButton);
}

另请参见

FocusManager.setFocus()


FocusManager.nextTabIndex

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

FocusManager.nextTabIndex

描述

属性；下一个可用的 Tab 键索引号。该属性用于动态地设置对象的 tabIndex 属性。

范例

下列代码为 mycheckbox 实例赋予下一个最高的 tabIndex 值：

mycheckbox.tabIndex = focusManager.nextTabIndex;

另请参见

UIComponent.tabIndex


FocusManager.sendDefaultPushButtonEvent()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

focusManager.sendDefaultPushButtonEvent()

参数

无。

返回

无。

描述

方法；给注册到默认普通按钮的侦听器对象发送一个 click 事件。使用该方法可以用编程方式发送 click 事件。

范例

下面的代码在用户选择 CheckBox 实例 chb（复选框将标记为“自动登录”）时触发默认普通按钮的 click 事件，并填写用户名和密码字段：

name_txt.tabIndex = 1;
password_txt.tabIndex = 2;
chb.tabIndex = 3;
submit_ib.tabIndex = 4;

focusManager.defaultPushButton = submit_ib;

chbObj = new Object();
chbObj.click = function(o){
  if (chb.selected == true){
    name_txt.text = "Jody";
    password_txt.text = "foobar";
    focusManager.sendDefaultPushButtonEvent();
  } else {
    name_txt.text = "";
    password_txt.text = "";
  }
}
chb.addEventListener("click", chbObj);

submitObj = new Object();
submitObj.click = function(o){
  if (password_txt.text != "foobar"){
    trace("error on submit");
  } else {
    trace("Yeah! sendDefaultPushButtonEvent worked!");
  }
}
submit_ib.addEventListener("click", submitObj);

另请参见

FocusManager.defaultPushButton、FocusManager.sendDefaultPushButtonEvent()


FocusManager.setFocus()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

focusManager.setFocus(object)

参数

object 对要接收焦点的对象的引用。

返回

无。

描述

方法；将焦点设置为指定的对象。

范例

下列代码将焦点设置到 myOKButton：

focusManager.setFocus(myOKButton);

另请参见

FocusManager.getFocus()


关于 Form 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > Loader > Screen > Form

动作脚本类名称 mx.screens.Form

Form 类提供您在 Flash MX Professional 2004 的“屏幕大纲”窗格中所创建窗体的运行时行为。有关使用屏幕的概述，请参阅使用屏幕（仅限于 Flash Professional）。


使用 Form 类（仅限 Flash Professional）

窗体用作图形对象（例如，应用程序中的用户界面元素）和应用程序状态的容器。可以使用“屏幕大纲”窗格使您正在创建的应用程序的不同状态可视化，其中每个窗体都是不同的应用程序状态。例如，以下图示显示了使用窗体设计的应用程序范例的“屏幕大纲”窗格。

窗体应用程序范例的“屏幕大纲”视图

此图示显示名为“Employee Directory”的应用程序范例的大纲，其中包含一些窗体。名为“entryForm”的窗体（在上面的图示中处于选中状态）包含一些用户界面对象，包括输入文本字段、标签和普通按钮。通过切换此窗体的可见性（使用 Form.visible 属性），同时也切换其他窗体的可见性，开发人员可以轻松地使用户看到此窗体。

使用“行为”面板（“窗口”>“开发面板”>“行为”），您还可以将行为和控件附加到窗体。有关向屏幕添加过渡和控件的详细信息，请参阅使用行为为屏幕创建控件和过渡（仅限于 Flash Professional）。

因为 Form 类扩展了 Loader 类，所以可以轻松地将外部内容（SWF 或 JPEG）加载到窗体中。例如，窗体的内容可以是单独的 SWF，其本身可能包含窗体。通过此方法，可以使窗体应用程序模块化，从而能更轻松地维护应用程序，同时还降低了最初的下载时间。有关详细信息，请参阅将外部内容加载到屏幕（仅限 Flash Professional）。

窗体对象参数

以下列出了一些创作参数，您可以在属性检查器或“组件检查器”面板中为每个窗体对象实例设置这些参数：

autoload 指示 contentPath 参数指定的内容是应该自动加载 (true)，还是应该等到调用 Loader.load() 方法时再进行加载 (false)。默认值为 true。

contentPath 指定窗体的内容。该参数可以是一个影片剪辑的链接标识符，也可以是要加载到幻灯片中的 SWF 或 JPG 文件的绝对或相对 URL。默认情况下，加载的内容会进行剪辑以适合幻灯片的大小。

visible 指定窗体在第一次加载时是 (true) 否 (false) 可见。

Form 类的方法摘要

方法 | 描述
Form.getChildForm()> | 返回指定索引处的子窗体。

继承 UIObject、UIComponent、View、Loader 组件和 Screen 类（仅限 Flash Professional）的所有方法。

Form 类的属性摘要

属性 | 描述
Form.currentFocusedForm> | 返回包含全局当前焦点的“最低叶”窗体。
Form.indexInParentForm> | 返回此窗体在其父窗体的子窗体列表中的索引（从零开始）。
Form.visible> | 指定窗体在其父窗体、幻灯片、影片剪辑或 SWF 可见时是否可见。
Form.numChildForms> | 返回此窗体包含的子窗体的数量。
Form.parentIsForm> | 返回此窗体的父对象是否也是窗体。
Form.rootForm> | 返回包含此窗体的窗体树（或子树）的根。

继承 UIObject、UIComponent、View、Loader 组件和 Screen 类（仅限 Flash Professional）的所有属性。


Form.currentFocusedForm

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mx.screens.Form.currentFocusedForm

说明

属性（只读）；返回包含全局当前焦点的窗体对象。实际的焦点可能在窗体自身上，或者在影片剪辑、文本对象或者该窗体内的组件上。如果没有当前焦点，则可以为 null。

示例

以下代码附加到一个按钮（未显示），并显示具有当前焦点的窗体的名称。

trace("The form with the current focus is:" + mx.screens.Form.currentFocusedForm);


Form.getChildForm()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myForm.getChildForm(childIndex)

参数

childIndex 一个数字，指示要返回的子窗体的索引（从零开始）。

返回

一个窗体对象。

说明

方法；返回 myForm 的子窗体（其索引为 childIndex）。

示例

下面的范例在“输出”面板中显示了属于名为 Application 的窗体根对象的所有子窗体对象名称。

for (var i:Number = 0; i < _root.Application.numChildForms; i++) {
    var childForm:mx.screens.Form = _root.Application.getChildForm(i);
    trace(childForm._name);
}

另请参见

Form.numChildForms


Form.indexInParentForm

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myForm.indexInParentForm

说明

属性（只读）；包含 myForm 在其父对象的子窗体列表中的索引（从零开始）。如果 myForm 的父对象是屏幕而不是窗体（例如，是幻灯片），则 indexInParentForm 始终为 0。

示例

var myIndex:Number = myForm.indexInParent;
if (myForm == myForm._parent.getChildForm(myIndex)) {
  trace("I'm where I should be");
}

另请参见

Form.getChildForm()


Form.numChildForms

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myForm.numChildForms

说明

属性（只读）；返回 myForm 包含的子窗体数量。此属性不包括 myForm 所包含的任何幻灯片，只包括窗体。

示例

以下代码循环访问 myForm 所包含的所有子窗体，并在“输出”面板中显示它们的名称。

var howManyKids:Number = myForm.numChildForms;
for(i=0; i<howManyKids; i++) {
  var childForm = myForm.getChildForm(i);
  trace(childForm._name);
}

另请参见

Form.getChildForm()


Form.parentIsForm

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myForm.parentIsForm

说明

属性（只读）：返回一个布尔值（true 或 false），指示所指定窗体的父对象是 (true) 否 (false) 也是窗体。如果为 false，则 myForm 位于其窗体层次结构的根位置。

示例

if (myForm.parentIsForm) {
  trace("I have "+myForm._parent.numChildScreens+" sibling screens");
} else {
  trace("I am the root form and have no siblings");
}


Form.rootForm

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myForm.rootForm

说明

属性（只读）；返回位于窗体层次结构顶层的包含 myForm 的窗体。如果 myForm 包含于非窗体的对象（即幻灯片）中，则此属性会返回 myForm。

示例

在下面的范例中，将一个对 myForm 的根窗体的引用放入到名为 root 的变量中。如果指定给 root 的值引用 myForm，则 myForm 位于其窗体树的顶层。

var root:my.screens.Form = myForm.rootForm;
if(rootForm == myForm) {
  trace("myForm is the top form in its tree");
}


Form.visible

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myForm.visible

说明

属性；确定 myForm 在其父窗体、幻灯片、影片剪辑或影片可见时是否可见。也可以使用 Flash 创作环境中的属性检查器设置此属性。

此属性设置为 true 时，myForm 会接收到 reveal 事件；当设置为 false 时，myForm 会接收到 hide 事件。您可以将在窗体接收到上述一种事件时执行的过渡附加到窗体上。有关向屏幕添加过渡的详细信息，请参阅 使用行为为屏幕创建控件和过渡（仅限于 Flash Professional）。

示例

以下代码附加到 Button 组件的一个实例，它将包含按钮的窗体的 visible 属性设置为 false。

on(click){
  _parent.visible = true;
}


关于 Label 组件

一个标签组件就是一行文本。您可以指定一个标签采用 HTML 格式。您也可以控制标签的对齐和大小。Label 组件没有边框、不能具有焦点，并且不广播任何事件。

每个 Label 实例的实时预览反映了创作时在属性检查器中或在“组件检查器”面板中对参数所做的更改。标签没有边框，因此，查看它的实时预览的唯一方法就是设置其文本参数。实时预览不支持 autoSize 参数。

将 Label 组件添加到应用程序时，可以使用“辅助功能”面板使其可以由屏幕阅读器进行访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.LabelAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 label 组件

使用一个 Label 组件为表单的另一个组件创建文本标签；例如，TextInput 字段左侧的“姓名：”标签来接受用户的姓名。如果您要构建一个应用程序，这个程序使用基于 Macromedia Component Architecture 第 2 版 (v2) 的组件，那么，使用 Label 组件来替代普通文本字段就是一个好方法，因为您可以使用样式来维持一致的外观。

Label 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 Label 组件设置的创作参数：

text 指明标签的文本；默认值是 Label。

html 指明标签是 (true) 否 (false) 采用 HTML 格式。如果将 html 参数设置为 true，就不能用样式来设定 Label 的格式。默认值为 false。

autoSize 指明标签的大小和对齐方式应如何适应文本。默认值为 none。参数可以是以下四个值之一：

  • none：标签不会调整大小或对齐方式来适应文本。
  • left：标签的右边和底部可以调整大小以适应文本。左边和上边不会进行调整。
  • center：标签的底部会调整大小以适应文本。标签的水平中心锚定在它原始的水平中心位置。
  • right：标签的左边和底部会调整大小以适应文本。上边和右边不会进行调整。

注意：Label 组件的 autoSize 属性与内置的动作脚本 TextField 对象的 autoSize 属性不同。

您可以使用 Label 实例的方法、属性和事件为其编写动作脚本来设置其他选项。有关详细信息，请参阅 Label 类。

创建具有 Label 组件的应用程序

以下过程解释了如何在创作时将 Label 组件添加到应用程序。在本例中，标签位于购物车应用程序中某个带有日期的组合框的旁边。

要创建具有 Label 组件的应用程序，请执行以下操作：

  1. 将 Label 组件从“组件”面板拖至舞台。
  2. 在“组件检查器”面板中，执行以下操作：
    • 为 label 参数输入过期日期。


自定义 label 组件

在创作时和运行时，您都可以在水平和垂直方向使 Label 组件变形。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。您可以设置 autoSize 创作参数；设置此参数不会改变实时预览中的边框，但是会调整标签的大小。有关详细信息，请参阅Label 参数。在运行时，请使用 setSize() 方法（请参阅 UIObject.setSize()）或 Label.autoSize。

对 Label 组件使用样式

您可以设置样式属性来更改标签实例的外观。Label 组件实例中的所有文本必须采用相同的样式。例如，对同一标签内的单词应用 color 样式时，不能将一个单词设置为 "blue"，而将另一个单词设置为 "red"。

如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。

有关样式的详细信息，请参阅使用样式自定义组件的颜色和文本。

Label 组件支持下列样式：

样式 | 描述
color | 文本的默认颜色。
embedFonts | 文档中嵌入的字体。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式，“常规”或“斜体”。
fontWeight | 字体粗细，“常规”或“粗体”。
textAlign | 文本对齐方式：“左”、“右”或“居中”。
textDecoration | 文本修饰，“无”或“下划线”。

使用具有 Label 组件的外观

Label 组件不能使用外观。

有关设计组件外观的详细信息，请参阅关于设置组件外观。


Label 类

继承 UIObject > Label

动作脚本类名称 mx.controls.Label

Label 类的属性允许您在运行时为标签指定文本，指明文本是否可采用 HTML 格式，以及标签是否自动调整大小以适应文本。

使用“动作脚本”设置的 Label 类的属性会覆盖在属性检查器中或在“组件检查器”面板中设置的同名参数。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.Label.version);

注意：下面的代码返回未定义的：trace(myLabelInstance.version);。

Label 类的方法摘要

继承 UIObject 的所有方法。

Label 类的属性摘要

属性 | 描述
Label.autoSize> | 一个字符串，指明如何调整标签大小和对齐方式以适应其 text 属性值。有四种可能的值："none"、"left"、"center" 和 "right"。默认值为 "none"。
Label.html> | 一个布尔值，它指明标签是 (true) 否 (false) 采用 HTML 格式。
Label.text> | 标签上的文本。

继承 UIObject 的所有属性。

Label 类的事件摘要

继承 UIObject 的所有事件。


Label.autoSize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

labelInstance.autoSize

描述

属性；一个字符串，指明如何调整标签大小和对齐方式以适应其 text 属性的值。有四种可能的值："none"、"left"、"center" 和 "right"。默认值为 "none"。

  • none：标签不会调整大小或对齐方式来适应文本。
  • left：标签的右边和底边会调整大小以适应文本。左边和上边不会进行调整。
  • center：标签的底边会调整大小以适应文本。标签的水平中心锚定在它原始的水平中心位置。
  • right：标签的左边和底边会调整大小以适应文本。上边和右边不会进行调整。

注意：Label 组件的 autoSize 属性与内置的动作脚本 TextField 对象的 autoSize 属性不同。


Label.html

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

labelInstance.html

描述

属性；一个布尔值，它指明标签是 (true) 否 (false) 可采用 HTML 格式。默认值为 false。html 属性设置为 true 的 Label 组件不能用样式设定格式。

即使当 Label.html 设置为 true 时，您也不能对 Label 组件使用 <font color> HTML 标签。例如，在以下范例中，文本“Hello”显示为黑色，而不是它原本应该显示的红色（如果支持 <font color> 的情况下）：

lbl.html = true;
lbl.text = "<font color=\"#FF0000\">Hello</font> World";

为了从 HTML 格式的文本获得纯文本，可将 HTML 属性设置为 false，然后访问 text 属性。这将去掉 HTML 格式，所以在获取纯文本之前，可能需要将标签文本复制到屏幕以外的 Label 或 TextArea 组件中。

范例

以下范例将 html 属性设置为 true，以便可以使用 HTML 设定标签的格式。然后，将 text 属性设置为一个包含 HTML 格式的字符串，如下所示：

labelControl.html = true;
labelControl.text = "The <b>Royal</b> Nonesuch";

单词“Royal”以粗体显示。


Label.text

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

labelInstance.text

描述

属性；标签的文本。默认值为 "Label"。

范例

下列代码设置了 Label 实例 labelControl 的 text 属性，并将该值发送到“输出”面板：

labelControl.text = "The Royal Nonesuch";
trace(labelControl.text);


关于 List 组件

List 组件是一个可滚动的单选或多选列表框。列表也可以显示图形，其中包含其他组件。您在单击标签或数据参数字段时，会出现“值”对话框，您可以使用该对话框来添加显示在 List 中的项目。您也可以使用 List.addItem() 和 List.addItemAt() 方法来将项目添加到列表。

List 组件使用基于零的索引，其中索引为 0 的项目就是显示在顶端的项目。当使用 List 类的方法和属性添加、删除或替换列表项时，您可能需要指定该列表项的索引。

在单击列表或按 Tab 键切换到列表时，列表获得焦点，您然后可使用以下键控制它：

按键 | 描述
字母或数字键 | 跳转到标签中以 Key.getAscii() 作为首字符的下一项。
Ctrl 键 | 切换键。允许多个不临近的选择和取消选择。
向下箭头 | 选区会向下移动一项。
Home 键 | 选区会移动到列表顶端。
Page Down 键 | 选区会向下移动一页。
Page Up 键 | 选区会向上移动一页。
Shift 键 | 连续选择键。允许进行连续选择。
向上箭头 | 选区会向上移动一项。

注意：Page Up 键和 Page Down 键使用的页的大小比可以显示的项数少一项。例如，在一个十行的下拉列表中向下翻页，将会依次显示第 0-9 项、第 9-18 项、第 18-27 项，等等，每页都会有一个重叠项。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或 FocusManager 类。

舞台上的每个 List 实例的实时预览反映了创作时在属性检查器或“组件检查器”面板中的对参数所做的更改。

当您将 List 组件添加到应用程序后，就可以使用“辅助功能”面板，使其可由屏幕读取器访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.ListAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 List 组件

您可以建立一个列表，以便用户可以选择一项或多项。例如，用户访问电子商务 Web 站点时需要选择想要购买的项目。一共有 30 个项目，用户在列表中上下滚动，并通过单击选择一项。

您也可以设计一个列表，该列表使用自定义影片剪辑作为行，这样就可以向用户显示更多信息。例如，在电子邮件应用程序中，每个信箱可能就是一个 List 组件，而每行可能会有指明优先级和状态的图标。

List 组件参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 List 组件实例设置的创作参数：

data 填充列表数据的值数组。默认值为 []（空数组）。没有相应的运行时属性。

labels 填充列表的标签值的文本值数组。默认值为 []（空数组）。没有相应的运行时属性。

multipleSelection 一个布尔值，它指明是 (true) 否 (false) 可以选择多个值。默认值为 false。

rowHeight指明每行的高度，以像素为单位。默认值是 20。设置字体不会更改行的高度。

您可以使用 List 实例的方法、属性和事件为其编写动作脚本来设置其他选项。有关详细信息，请参阅 List 类。

创建具有 List 组件的应用程序

以下过程解释了如何在创作时将 List 组件添加到应用程序。在本例中，列表是一个有三个项目的范例。

要将一个简单的 List 组件添加到一个应用程序中，请执行以下操作：

  1. 将 List 组件从“组件”面板拖到舞台。
  2. 选择列表，然后选择“修改”>“变形”，调整大小以适应您的应用程序。
  3. 在属性检查器中，执行以下操作：
    • 输入实例名称 myList。
    • 为标签参数输入 Item1、Item2 和 Item3。
    • 为数据参数输入 item1.html、item2.html、item3.html。
  4. 选择“控制”>“测试影片”，以查看带项目的列表。

    您可以在应用程序中使用数据属性值来打开 HTML 文件。

以下过程解释了如何在创作时将 List 组件添加到应用程序。在本例中，列表是一个有三个项目的范例。

要将 List 组件添加到应用程序，请执行以下操作：

  1. 将 List 组件从“组件”面板拖到舞台。
  2. 选择列表，然后选择“修改”>“变形”，调整大小以适应您的应用程序。
  3. 在“动作”面板中，输入实例名称 myList
  4. 在时间轴中选择第一帧，在“动作”面板中，输入下列代码：
    myList.dataProvider = myDP;

    如果已经定义了名为 myDP 的数据提供程序，那么列表中将填入数据。有关数据提供程序的详细信息，请参阅 List.dataProvider。

  5. 选择“控制”>“测试影片”，以查看带项目的列表。


自定义 List 组件

在创作时和运行时，您都可以按水平方向和垂直方向将 List 组件变形。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 List.setSize() 方法（请参阅 UIObject.setSize()）。

当调整列表的大小后，列表的行会在水平方向收缩，剪下其中的任何文本。在垂直方向，列表根据需要增加或删除行。滚动条自动对它们定位。有关滚动条的详细信息，请参阅ScrollPane 组件。

对 List 组件使用样式

您可以设置样式属性以更改 List 实例的外观。

List 组件使用下列光晕样式：

样式 | 描述
alternatingRowColors | 指定交替模式中行的颜色。它的值可以是两个或多个颜色（例如 0xFF00FF、0xCC6699 和 0x996699）组成的数组。
backgroundColor | 列表的背景颜色。该样式在类样式声明 ScrollSelectList 上进行定义。
borderColor | 三维边框的黑色部分或二维边框的彩色部分。
borderStyle | 边框样式。可能的值包括：“none”、“solid”、“inset”和“outset”。该样式在类样式声明 ScrollSelectList 上进行定义。
defaultIcon | 用于列表行的默认图标的名称。默认值未定义。
rollOverColor | 滑过的行的颜色。
selectionColor | 所选行的颜色。
selectionEasing | 对用于控制编程补间的扩大公式（函数）的引用。
disabledColor | 禁用的文本颜色。
textRollOverColor | 指针在文本上滑过时，该文本的颜色。
textSelectedColor | 选定文本时，该文本的颜色。
selectionDisabledColor | 行被选中并禁用之后的颜色。
selectionDuration | 选择项目时的任何转换的长度。
useRollOver | 确定滑过一行时是否激活突出显示该行。

List 组件也使用 Label 组件（请参阅对 Label 组件使用样式）、ScrollPane 组件（请参阅ScrollPane 组件）和 RectBorder 的样式属性。

在 List 组件中使用外观

List 组件中的所有外观都包含在组成列表的子组件（ScrollPane 组件和 RectBorder）中。有关详细信息，请参阅ScrollPane 组件。您可以使用 setStyle() 方法（请参阅 UIObject.setStyle()）来更改下列 RectBorder 样式属性：

RectBorder 样式 | 边框位置
borderColor | a
highlightColor | b
borderColor | c
shadowColor | d
borderCapColor | e
shadowCapColor | f
shadowCapColor | g
borderCapColor | h

这些样式属性设置边框上的下列位置：


List 类

继承 UIObject > UIComponent > View > ScrollView > ScrollSelectList > List

动作脚本类名称 mx.controls.List

List 组件由下列三个部分组成：

  • 项
  • 行
  • 数据提供程序

项是用于将信息单位存储在列表中的一个“动作脚本”对象。可以将列表看作一个数组；数组中的每个索引空间就是一个项。项是一个对象，它通常有一个显示出来的 label 属性和一个 data 属性（用于存储数据）。

行是用于显示项的一个组件。默认情况下，列表会提供行（使用 SelectableRow 类），或者您也可以提供行，它们通常作为 SelectableRow 类的子类。SelectableRow 类实现 CellRenderer 接口，该接口是属性和方法的集合，通过这些属性和方法，列表可以操作各行并将数据和状态信息（例如，大小、已被选中等等）发送到行以供显示。

数据提供程序是列表中的项列表的数据模型。同一帧中作为列表的任何数组都会自动得到一些方法，这些方法允许您操作数据并将更改广播给多个视图。您可以创建一个 Array 实例或者从服务器上获取一个实例，然后将它用作多个 List、ComboBox、DataGrid 等的数据模型。List 组件有一组代理其数据提供程序的方法（例如，addItem() 和 removeItem()）。如果没有为列表提供外部数据提供程序，则这些方法会自动创建一个数据提供程序实例，该实例会通过 List.dataProvider 被公开。

要将一个 List 组件添加到应用程序的 Tab 键顺序，请设置其 tabIndex 属性（请参阅 UIComponent.tabIndex）。List 组件用 FocusManager 覆盖默认的 Flash Player 焦点矩形，并绘制一个带有圆角的自定义焦点矩形。有关详细信息，请参阅创建自定义焦点导航。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.List.version);

注意：下面的代码返回未定义的：trace(myListInstance.version);。

List 类的方法摘要

方法 | 描述
List.addItem()> | 向列表的结尾添加项目。
List.addItemAt()> | 将项目添加到指定索引处的列表。
List.getItemAt()> | 返回指定索引处的项目。
List.removeAll()> | 删除列表中的所有项目。
List.removeItemAt()> | 删除指定索引处的项目。
List.replaceItemAt()> | 用其他项目替换指定索引处的项目。
List.setPropertiesAt()> | 将指定的属性应用到指定的项目。
List.sortItems()> | 按照指定的比较函数对列表中的项目进行排序。
List.sortItemsBy()> | 按照指定的属性对列表中的项目进行排序。

继承 UIObject 和 UIComponent 中的所有方法。

List 类的属性摘要

属性 | 描述
List.cellRenderer> | 指定要使用的类或元件以显示列表的每一行。
List.dataProvider> | 列表项目的来源。
List.hPosition> | 列表的水平位置。
List.hScrollPolicy> | 指明是 ("on") 否 ("off") 显示水平滚动条。
List.iconField> | 各项目中用于指定图标的字段。
List.iconFunction> | 一个函数，它确定要使用的图标。
List.labelField> | 指定各项目中用作标签文本的字段。
List.labelFunction> | 一个函数，它确定各个项目的哪些字段要用作标签文本。
List.length> | 项目中列表的长度。该属性为只读。
List.maxHPosition> | 当将 List.hScrollPolicy> 设置为 "on" 时，指定列表可以向右滚动的像素数目。
List.multipleSelection> | 指明列表中是 (true) 否 (false) 允许多选。
List.rowCount> | 列表中至少可以看到一部分的行数。
List.rowHeight> | 列表中每行的像素高度。
List.selectable> | 指定列表是 (true) 否 (false) 为可选择列表。
List.selectedIndex> | 单选列表中的选择索引。
List.selectedIndices> | 多选列表中的已选择项目的数组。
List.selectedItem> | 单选列表中的已选择项目。该属性为只读。
List.selectedItems> | 多选列表中的已选择的项目对象。该属性为只读。
List.vPosition> | 滚动列表，以便使最顶部可见的项目为指定的数。
List.vScrollPolicy> | 指明是显示 ("on")、不显示 ("off") 还是在需要时显示 ("auto") 垂直滚动条。

继承 UIObject 和 UIComponent 的所有属性。

List 类的事件摘要

事件 | 描述
List.change> | 所选内容因用户交互操作而更改时广播。
List.itemRollOut> | 指针在列表项目上滑过然后又滑离时广播。
List.itemRollOver> | 指针在列表项目上滑过时广播。
List.scroll> | 滚动列表时，进行广播。

继承 UIObject 和 UIComponent 的所有事件。


List.addItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.addItem(label[, data])
listInstance.addItem(itemObject)

参数

label 一个字符串，它指明新项目的标签。

data 项目的数据。此参数是可选的，可以是任何数据类型。

itemObject 一个项目对象，通常具有 label 属性和 data 属性。

返回

在其位置添加了项目的索引。

描述

方法；在列表的结尾添加新项目。

在第一个用法范例中，始终使用指定的 label 属性和 data 属性（如果已指定）来创建项目对象。

第二个用法范例添加了指定的项目对象。

调用此方法会修改 List 组件的数据提供程序。如果与其他组件共享数据提供程序，那些组件也将会更新。

范例

下面两行代码都会将项目添加到 myList 实例。要试用这行代码，可将一个 List 拖到舞台，并为其设定实例名称 myList。将下面的代码添加到时间轴中的第一帧：

myList.addItem("this is an Item");
myList.addItem({label:"Gordon",age:"very old",data:123});


List.addItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.addItemAt(index, label[, data])
listInstance.addItemAt(index, itemObject)

参数

label 一个字符串，它指明新项目的标签。

data 项目的数据。此参数是可选的，可以是任何数据类型。

index 一个大于或等于零的数，指明项目的位置。

itemObject 一个项目对象，通常具有 label 属性和 data 属性。

返回

在其位置添加了项目的索引。

描述

方法；将新项目添加到 index 参数指定的位置。

在第一个用法范例中，始终使用指定的 label 属性和 data 属性（如果已指定）来创建项目对象。

第二个用法范例添加了指定的项目对象。

调用此方法会修改 List 组件的数据提供程序。如果与其他组件共享数据提供程序，那些组件也将会更新。

范例

以下代码行会将一个项目添加到第三索引位置，该位置是列表中的第四个项目：

myList.addItemAt(3,{label:'Red',data:0xFF0000});


List.cellRenderer

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.cellRenderer

描述

属性；指定要用于列表各行的单元格渲染器。此属性必须是类对象引用，或者是元件链接标识符。用于此属性的任何类都必须实现CellRenderer API。

范例

下面的范例使用链接标识符来设置一个新的单元格渲染器：

myList.cellRenderer = "ComboBoxCell";


List.change

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(change){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  // 此处是您的代码
}
listInstance.addEventListener("change", listenerObject)

描述

事件；当所选的列表的索引因用户交互操作而改变时，向所有已注册的侦听器广播。

第一个用法范例使用了 on() 处理函数，并且必须直接附加到一个 list 组件实例。附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 list 组件实例 myBox，它将“_level0.myBox”发送到“输出”面板：

on(click){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (listInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

最后，对广播该事件的组件实例调用 addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

范例

下面的范例将生成 change 事件的组件的实例名称发送到“输出”面板：

form.change = function(eventObj){
  trace("Value changed to " + eventObj.target.value);
}
myList.addEventListener("change", form);

另请参见

UIEventDispatcher.addEventListener()


List.dataProvider

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listnstance.dataProvider

描述

属性；在列表中查看的项目的数据模型。该属性的值可以是一个数组或任何实现 DataProvider 接口的对象。默认值为 []。有关 DataProvider 接口的详细信息，请参阅DataProvider API。

List 组件以及其他支持数据的组件会将方法添加到 Array 对象的原型，以便它们符合 DataProvider 接口。因此，任何同时作为列表存在的数组都可以自动获得作为列表的数据模型所需的所有方法（addItem()、getItemAt() 等），并可用于向多个组件广播模型更改。

如果数组包含对象，则会访问 List.labelField 或 List.labelFunction 属性，以确定要显示项目的哪些部分。默认值为 "label"，如果存在 label 字段，则会选择显示它，如果不存在该字段，则显示用逗号分隔的所有字段的列表。

注意：如果该数组在每个索引处都包含字符串，而不包含对象，该列表就无法对项目进行排序和保持选定状态。进行任何排序都会丢失所做选择。

任何实现 DataProvider 接口的实例都可以作为 List 组件的数据提供程序。这包括 Flash Remoting RecordSets、Firefly DataSets，等等。

范例

在本例使用一个字符串数组填充列表：

list.dataProvider = ["Ground Shipping","2nd Day Air","Next Day Air"];

本例创建一个数据提供程序数组，并将其赋予 dataProvider 属性，如下所示：

myDP = new Array();
list.dataProvider = myDP;

for (var i=0; i<accounts.length; i++) {
  // 对 DataProvider 的这些更改将广播到列表
  myDP.addItem({ label:accounts[i].name,
                 data:accounts[i].accountID });
}


List.getItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.getItemAt(index)

参数

index 一个大于或等于 0 且小于 List.length 的数字。要检索的项目的索引。

返回

索引项目对象。如果索引已超出范围，则是未定义的。

描述

方法；检索所指定索引处的项目。

范例

下面代码显示索引位置 4 处的项目的标签：

trace(myList.getItemAt(4).label);


List.hPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.hPosition

描述

属性；水平滚动列表到指定的像素数。只有在 hScrollPolicy 的值是 "on"，而且列表的 maxHPosition 大于 0 的情况下，才能设置 hPosition。

范例

下面的范例获取 myList 的水平滚动位置：

var scrollPos = myList.hPosition;

以下范例将水平滚动位置始终设置到左侧：

myList.hPosition = 0;


List.hScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.hScrollPolicy

描述

属性；确定是否显示水平滚动条的字符串；该值可以是 "on" 或 "off"。默认值为 "off"。水平滚动条不会测量文本，您必须设置最大水平滚动位置，请参阅 List.maxHPosition。

注意：List.hScrollPolicy 不支持值 "auto"。

范例

下面代码最多可以使列表水平滚动 200 像素：

myList.hScrollPolicy = "on";
myList.Box.maxHPosition = 200;

另请参见

List.hPosition、List.maxHPosition


List.iconField

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.iconField

描述

属性；指定了要用作图标标识符的字段名称。如果字段的值为未定义，则使用 defaultIcon 样式指定的默认图标。如果 defaultIcon 样式是未定义的，则不使用任何图标。

范例

下面的范例将 iconField 属性设置为每个项目的 icon 属性：

list.iconField = "icon"

另请参见

List.iconFunction


List.iconFunction

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.iconFunction

描述

属性；指定一个函数，该函数用于确定每行将使用哪个图标来显示其项目。此函数会接收参数 item（该参数指示所呈现的项目），并且必须返回一个表示图标元件标识符的字符串。

范例

下面范例添加了一些图标，这些图标指明文件是图像还是文本文档。如果 data.fileExtension 字段包含值 "jpg" 或 "gif"，那么所用的图标将是 "pictureIcon"，依此类推：

list.iconFunction = function(item){
  var type = item.data.fileExtension;
  if (type=="jpg" || type=="gif") {
    return "pictureIcon";
  } else if (type=="doc" || type=="txt") {
    return "docIcon";
  }
}


List.itemRollOut

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(itemRollOut){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.itemRollOut = function(eventObject){
  // 此处是您的代码
}
listInstance.addEventListener("itemRollOut", listenerObject)

事件对象

除了事件对象的标准属性外，itemRollOut 事件还有一个附加属性：index。index 是已经滚动出的项目的数量。

描述

事件；当滚动出列表项目时，向所有已注册的侦听器广播。

第一个用法范例使用了 on() 处理函数，并且必须直接附加到一个 List 组件实例。附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 List 实例 myList 上，它将“_level0.myList”发送到“输出”面板：

on(itemRollOut){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (listInstance) 调度一个事件（在本例中为 itemRollOut），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例向“输出”面板发送一条消息，指明已在哪个项目索引编号上滑过：

form.itemRollOut = function (eventObj) {
  trace("Item #" + eventObj.index + " has been rolled out.");
}
myList.addEventListener("itemRollOut", form);

另请参见

List.itemRollOver


List.itemRollOver

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(itemRollOver){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.itemRollOver = function(eventObject){
  // 此处是您的代码
}
listInstance.addEventListener("itemRollOver", listenerObject)

事件对象

除了事件对象的标准属性外，itemRollOver 事件还有一个附加属性：index。index 是滑过的项目的数量。

描述

事件；当滑过列表项目时，向所有已注册的侦听器广播。

第一个用法范例使用了 on() 处理函数，并且必须直接附加到一个 List 组件实例。附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 List 实例 myList 上，它将“_level0.myList”发送到“输出”面板：

on(itemRollOver){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (listInstance) 调度一个事件（在本例中为 itemRollOver），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例向“输出”面板发送一条消息，指明已在哪个项目索引编号上滑过：

form.itemRollOver = function (eventObj) {
  trace("Item #" + eventObj.index + " has been rolled over.");
}
myList.addEventListener("itemRollOver", form);

另请参见

List.itemRollOut


List.labelField

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.labelField

描述

属性；指定每个项目中的一个字段用作显示文本。此属性会获得该字段的值，并将其用作标签。默认值为 "label"。

范例

下面范例将 labelField 属性设置为每个项目的 "name" 字段“Nina”将显示为第二行代码中添加的项目的标签：

list.labelField = "name";
list.addItem({name:"Nina", age: 25});

另请参见

List.labelFunction


List.labelFunction

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.labelFunction

描述

属性；指定一个函数用于决定要显示每个项目的哪个字段（或字段组合）。此函数会接收一个参数 item（该参数指示所呈现的项目），并且必须返回一个表示要显示的文本的字符串。

范例

以下范例让标签显示项目的一些设置了格式的细节：

list.labelFunction = function(item){
  return "The price of product " + item.productID + ", " + item.productName + " is $"
+ item.price;
}

另请参见

List.labelField


List.length

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.length

描述

属性（只读）；列表中的项目数。

范例

下面范例将 length 的值放入一个变量中：

var len = myList.length;


List.maxHPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.maxHPosition

描述

属性；指定当 List.hScrollPolicy 设置为 "on" 时，列表可以滚动的像素数。列表无法精确地测量所包含的文本的宽度。必须设置 maxHPosition 以指明列表需要的滚动量。如果不设置此属性，则列表将不水平滚动。

范例

以下范例创建了一个带 400 像素的可以水平滚动的列表：

myList.hScrollPolicy = "on";
myList.maxHPosition = 400;

另请参见

List.hScrollPolicy


List.multipleSelection

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.multipleSelection

描述

属性；指明是可以多选 (true) 还是只可以单选 (false)。默认值为 false。

范例

以下范例会进行测试，以确定是否可以选择多个项目：

if (myList.multipleSelection){
  // 此处是您的代码
}

以下范例允许列表进行多选：

myList.selectMultiple = true;


List.removeAll()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.removeAll()

参数

无。

返回

无。

描述

方法；删除列表中的所有项目。

调用此方法会修改 List 组件的数据提供程序。如果与其他组件共享数据提供程序，那些组件也将会更新。

范例

下列代码会清除列表：

myList.removeAll();


List.removeItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.removeItemAt(index)

参数

index 一个字符串，它指明新项目的标签。它是一个大于零但小于 List.length 的值。

返回

一个对象；已删除的项目（如果项目不存在，则它是未定义的）。

描述

方法；删除指定 index 位置处的项目。index 参数指明的索引后面的列表索引会折叠一项。

调用此方法会修改 List 组件的数据提供程序。如果与其他组件共享数据提供程序，那些组件也将会更新。

范例

下面的代码会删除在索引位置 3 的项目：

myList.removeItemAt(3);


List.replaceItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.replaceItemAt(index, label[, data])
listInstance.replaceItemAt(index, itemObject)

参数

index 一个大于零且小于 List.length 的数字，指明要插入项目的位置（新项目的索引）。

label 一个字符串，它指明新项目的标签。

data 项目的数据。此参数是可选参数，它可以是任何类型。

itemObject。 用作项目的对象，通常含有 label 和 data 属性。

返回

无。

描述

方法；替换 index 参数指定的索引位置的项目内容。

调用此方法会修改 List 组件的数据提供程序。如果与其他组件共享数据提供程序，那些组件也将会更新。

范例

以下范例更改了第四索引的位置：

myList.replaceItemAt(3, "new label");


List.rowCount

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.rowCount

描述

属性；列表中至少可以看到一部分的行数。如果您已经使用像素缩放了一个列表，但需要计算它的行数，则该属性很有用。相反，设置行数可以保证显示准确的行数，而不会在底部出现部分行。

代码 myList.rowCount = num 相当于代码 myList.setSize(myList.width, h)（其中 h 为显示 num 个项目所需的高度）。

默认值基于创作时设置的列表高度，或者由 list.setSize() 方法（请参阅 UIObject.setSize()）设置。

范例

以下范例会发现列表中的可以看到的项目数量：

var rowCount = myList.rowCount;

下面范例会使列表显示四个项目：

myList.rowCount = 4;

在本例会删除列表底部的部分行（如果存在部分行）：

myList.rowCount = myList.rowCount;

该范例将列表设置为它可以完整显示的最小行数：

myList.rowCount = 1;
trace("myList has "+myList.rowCount+" rows");


List.rowHeight

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.rowHeight

描述

属性；列表中每行的像素高度。字体设置不会增加行高以适应文字，因此设置 rowHeight 属性是确保项目完全显示的最佳方法。默认值为 20。

范例

以下范例将每行设置为 30 像素：

myList.rowHeight = 30;


List.scroll

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(scroll){
  // 此处是您的代码
}

用法 2：

listenerObject = new Object();
listenerObject.scroll = function(eventObject){
  // 此处是您的代码
}
listInstance.addEventListener("scroll", listenerObject)

事件对象

除了标准的事件对象属性之外，scroll 事件还有另一个附加属性：direction。它是一个字符串，有两个可能的值："horizontal" 或 "vertical"。对于 ComboBox 滚动事件，该值始终是 "vertical"。

描述

事件；当列表滚动时，向所有已注册的侦听器广播。

第一个用法范例使用了 on() 处理函数，并且必须直接附加到一个 List 组件实例。附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 List 实例 myList 上，它将“_level0.myList”发送到“输出”面板：

on(scroll){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (listInstance) 调度一个事件（在本例中为 scroll），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例将生成 change 事件的组件的实例名称发送到“输出”面板：

form.scroll = function(eventObj){
  trace("list scrolled");
}
myList.addEventListener("scroll", form);


List.selectable

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.selectable

描述

属性；一个指明列表是 (true) 否 (false) 为可选列表的布尔值。默认值为 true。


List.selectedIndex

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.selectedIndex

描述

属性；单选列表的已选择索引。如果没有选中任何内容，则该值是未定义的；如果有多项所选内容，则该值等于最后选中的项目。如果您为 selectedIndex 分配一个值，就会清除当前所做任何选择，并且会选中所指明的项目。

范例

在本例将选择当前所选项目之后的项目。如果没有可选择的项目，则选择项目 0，如下所示：

var selIndex = myList.selectedIndex;
myList.selectedIndex = (selIndex==undefined ?0 : selIndex+1);

另请参见

List.selectedIndices、List.selectedItem、List.selectedItems


List.selectedIndices

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.selectedIndices

描述

属性；所选项目的索引数组。指定此属性将替换当前选择。将 selectedIndices 设置为 0 长度数组（或未定义的）将清除当前选择。如果没有可选择的项目，则无法定义该值。

selectedIndices 属性以项目的选择顺序列出。如果您单击第二个项目，再单击第三个项目，然后单击第一个项目，则 selectedIndices 将返回 [1,2,0]。

范例

以下范例将获取所选的索引：

var selIndices = myList.selectedIndices;

以下范例选择了四个项目：

var myArray = new Array (1,4,5,7);
myList.selectedIndices = myArray;

另请参见

List.selectedIndex、List.selectedItem、List.selectedItems


List.selectedItem

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.selectedItem

描述

属性（只读）；单选列表中的项目对象。（在有多个选中项目的多选列表中，selectedItem 将返回最近选中的项目。）如果没有所选内容，则该值是未定义的。

范例

在本例将显示选中的标签：

trace(myList.selectedItem.label);

另请参见

List.selectedIndex、List.selectedIndices、List.selectedItems


List.selectedItems

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.selectedItems

描述

属性（只读）；所选项目对象组成的数组。在多选列表中，selectedItems 允许您以项目对象的形式访问选中的项目组。

范例

以下范例会获取一个所选项目对象的数组：

var myObjArray = myList.selectedItems;

另请参见

List.selectedIndex、List.selectedItem、List.selectedIndices


List.setPropertiesAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.setPropertiesAt(index, styleObj)

参数

index 一个大于零且小于 List.length 的数字，它指明要更改的项目的索引。

styleObj 一个对象，它枚举要设置的属性和值。

返回

无。

描述

方法；将 styleObj 参数指定的属性应用到 index 参数指定的项目。受支持的属性为 icon 和 backgroundColor。

范例

以下范例会将第四个项目更改为黑色，并为它指定一个图标：

myList.setPropertiesAt(3, {backgroundColor:0x000000, icon:"file"});


List.sortItems()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.sortItems(compareFunc)

参数

compareFunc 引用一个函数。此函数用于比较两个项目，以确定它们的排序顺序。

有关更多信息，请参阅 Array.sort()。

返回

在其位置添加了项目的索引。

描述

方法；根据 compareFunc 参数对列表中的项目进行排序。

范例

以下范例基于大写标签对项目进行排序。请注意，传递给函数的参数 a 和 b 指示具有 label 和 data 属性的项目：

myList.sortItems(upperCaseFunc);
function upperCaseFunc(a,b){
    return a.label.toUpperCase() > b.label.toUpperCase();
}

另请参见

List.sortItemsBy()


List.sortItemsBy()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.sortItemsBy(fieldName, order)

参数

fieldName 指定用于排序的属性名称的字符串。通常情况下，该值为 "label" 或 "data"。

order 一个字符串，指定是以升序 ("ASC") 还是以降序 ("DESC") 对项目进行排序。

返回

无。

描述

方法；按字母或数值次序、以指定的顺序、根据指定的 fieldName 对列表中的项目进行排序。如果 fieldName 项目既包括文本字符串也包括整数，则首先列出整数项目。通常情况下，fieldName 参数为 "label" 或 "data"，但您可以指定任何原始数据值。

范例

下列代码根据列表项的标签以升序对列表 surnameMenu 中的项目进行排序：

surnameMenu.sortItemsBy("label", "ASC");

另请参见

List.sortItems()


List.vPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.vPosition

描述

属性；滚动列表以便索引成为可以最先看到的项目。如果索引超出了边框，则转到离边框最近的边框内的索引。默认值为 0。

范例

以下范例将列表位置设置为第一个索引项目：

myList.vPosition = 0;


List.vScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

listInstance.vScrollPolicy

描述

属性；一个字符串，确定列表是否支持垂直滚动。该属性可以是下列值之一："on"、"off" 或 "auto"。值 "auto" 指定在需要时显示滚动条。

范例

以下范例将禁用滚动条：

myList.vScrollPolicy = "off";

您仍然可以通过使用 List.vPosition 创建滚动功能。

另请参见

List.vPosition


关于 Loader 组件

Loader 组件是一个容器，它可以显示 SWF 或 JPEG。您可以缩放加载器的内容，或者调整加载器自身的大小来匹配内容的大小。默认情况下，缩放内容要适合 Loader 的大小。您也可以在运行时加载内容，并监视加载进度。

Loader 组件不能接收焦点。但是，Loader 组件中加载的内容可以接受焦点，并且可以有自己的焦点交互操作。有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 Loader 实例的实时预览反映了创作时在属性检查器或“组件检查器”面板中对参数所做的更改。

可以启用加载到 Loader 组件中的内容来使用辅助功能。如果启用了，可以使用“辅助功能”面板以使屏幕读取程序可以访问内容。有关详细信息，请参阅创建辅助内容。


使用 Loader 组件

当需要从一个远程位置获取内容并将其拖到“Flash”应用程序中时，您可以使用加载器。例如，您可以使用加载器将公司徽标（JPEG 文件）添加到表单。您也可以使用加载器来继承并利用已经完成的 Flash 作品。例如，如果您已经创建了一个 Flash 应用程序，但想扩展该应用程序，可以使用加载器将旧的应用程序拖到新应用程序中，或者将旧应用程序作为某个选项卡界面的一部分。再例如，您可以在显示相片的应用程序中使用加载器组件。使用 Loader.load()、Loader.percentLoaded 和 Loader.complete 可以在加载期间控制图像加载的计时，并为用户显示进度栏。

Loader 组件参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 Loader 组件设置的创作参数：

autoload 指明内容是应该自动加载 (true)，还是应该等到调用 Loader.load() 方法时再进行加载 (false)。默认值为 true。

contentPath 一个绝对或相对的 URL，指明要加载到加载器的文件。相对路径必须是相对于加载内容的 SWF 的路径。该 URL 必须与 Flash 内容当前驻留的 URL 在同一子域中。为了在 Flash Player 中使用 SWF 文件，或者在影片测试模式下测试 SWF 文件，必须将所有 SWF 文件存储在同一文件夹中，并且其文件名不能包含文件夹或磁盘驱动器说明。默认值要在开始加载后才定义。

scaleContent 指明是内容缩放以适应加载器 (true)，还是加载器进行缩放以适应内容 (false)。默认值为 true。

您可以使用 Loader 实例的方法、属性和事件来编写动作脚本，以为其设置其他选项。有关详细信息，请参阅 Loader 类。

创建具有 Loader 组件的应用程序

以下过程解释了如何在创作时将 Loader 组件添加到应用程序。在本例中，加载器将从一个虚拟的 URL 中加载一个徽标 JPEG。

要创建具有 Loader 组件的应用程序，请执行以下操作：

  1. 将 Loader 组件从“组件”面板上拖到舞台上。
  2. 在舞台上选择加载器，然后使用“任意变形”工具将其调整到公司徽标的尺寸。
  3. 在属性检查器中，输入实例名称 logo。
  4. 选择舞台上的加载器，在“组件检查器”面板中执行以下操作：
    • 为 contentPath 参数输入 http://corp.com/websites/logo/corplogo.jpg。


自定义 Loader 组件

在创作时和在运行时，都可以在水平和垂直方向上改变 Loader 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅 UIObject.setSize()）。

Loader 组件的调整大小的行为由 scaleContent 属性控制。当 scaleContent = true 时，内容会缩放以适合加载器的边界（当调用 UIObject.setSize() 时，重新进行缩放）。当属性为 scaleContent = false 时，组件的大小固定为内容的大小，而 UIObject.setSize() 方法将无效。

使用具有 Loader 组件的样式

Loader 组件不使用样式。

使用具有 Loader 组件的外观

Loader 组件使用 RectBorder，该 RectBorder 使用动作脚本绘制 API。可以使用 setStyle() 方法（请参阅 UIObject.setStyle()）更改下列 RectBorder 样式属性：

RectBorder 样式 | 字母
borderColor | a
highlightColor | b
borderColor | c
shadowColor | d
borderCapColor | e
shadowCapColor | f
shadowCapColor | g
borderCapColor | h

这些样式属性设置边框上的下列位置：


Loader 类

继承 UIObject > UIComponent > View > Loader

动作脚本类名称 mx.controls.Loader

Loader 类的属性允许您设置要加载的内容并在运行时监视它的加载进程。

使用“动作脚本”设置 Loader 类的属性会覆盖在属性检查器中或在“组件检查器”面板中设置的同名参数。

有关详细信息，请参阅创建自定义焦点导航。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.Loader.version);

注意：下面的代码返回未定义的：trace(myLoaderInstance.version);。

Loader 类的方法摘要

方法 | 描述
Loader.load()> | 加载由 contentPath 属性指定的内容。

继承 UIObject 和 UIComponent 中的所有方法。

Loader 类的属性摘要

属性 | 描述
Loader.autoLoad> | 一个布尔值，指明内容是自动加载 (true) 还是只在您调用 Loader.load()> 时才进行加载 (false)。
Loader.bytesLoaded> | 只读属性，指明已经加载的字节数。
Loader.bytesTotal> | 指明内容中的总字节数的只读属性。
Loader.content> | 引用由 Loader.contentPath> 属性指定的内容。该属性为只读。
Loader.contentPath> | 一个字符串，它指明要加载的内容的 URL。
Loader.percentLoaded> | 一个数字，它指明已加载内容的百分比。该属性为只读。
Loader.scaleContent> | 一个布尔值，它指明是内容会进行缩放以适合加载器 ( true)，还是加载器会进行缩放以适合内容 (false)。

继承 UIObject 和 UIComponent 的所有属性。

Loader 类的事件摘要

事件 | 描述
Loader.complete> | 当内容加载完成时触发。
Loader.progress> | 在内容加载过程中触发。

继承 UIObject 和 UIComponent 的所有属性


Loader.autoLoad

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.autoLoad

描述

属性；一个布尔值，它指明是自动加载内容 (true)，还是等到调用 Loader.load() 时才加载内容 (false)。默认值为 true。

范例

下列代码将 loader 组件设置为等待 Loader.load() 调用：

loader.autoload = false;


Loader.bytesLoaded

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.bytesLoaded

描述

属性（只读）；已经加载的内容的字节数目。在开始加载内容之前，默认值为 0。

范例

以下代码创建一个 ProgressBar 和一个 Loader 组件。然后，它创建一个具有 progress 事件处理函数的侦听器对象，该事件处理函数会显示加载的进程。侦听器注册到 loader 实例，如下所示：

createClassObject(mx.controls.ProgressBar, "pBar", 0);
createClassObject(mx.controls.Loader, "loader", 1);
loadListener = new Object();
loadListener.progress = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Loader。
  pBar.setProgress(loader.bytesLoaded, loader.bytesTotal); // 显示进程
}
loader.addEventListener("progress", loadListener);
loader.content = "logo.swf";

用 createClassObject() 方法创建实例时，必须用 move() 和 setSize() 方法将其放置在舞台上。请参阅 UIObject.move() 和 UIObject.setSize()。

另请参见

Loader.bytesTotal、UIObject.createClassObject()


Loader.bytesTotal

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.bytesTotal

描述

属性（只读）；内容的大小，以字节为单位。在内容开始加载前，默认值为 0。

范例

以下代码创建一个 ProgressBar 和一个 Loader 组件。然后，它创建一个具有 progress 事件处理函数的 load 侦听器对象，该事件处理函数会显示加载的进程。侦听器与 loader 实例一起注册，如下所示：

createClassObject(mx.controls.ProgressBar, "pBar", 0);
createClassObject(mx.controls.Loader, "loader", 1);
loadListener = new Object();
loadListener.progress = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Loader。
  pBar.setProgress(loader.bytesLoaded, loader.bytesTotal); // 显示进程
}
loader.addEventListener("progress", loadListener);
loader.content = "logo.swf";

另请参见

Loader.bytesLoaded


Loader.complete

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(complete){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.complete = function(eventObject){
  ...
}
loaderInstance.addEventListener("complete", listenerObject)

描述

事件；当加载完内容时向所有已注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 Loader 组件实例。附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 Loader 组件实例 myLoaderComponent，它将“_level0.myLoaderComponent”发送到“输出”面板：

on(complete){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (loaderInstance) 调度一个事件（在本例中为 complete），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下范例创建一个 Loader 组件，然后定义一个带有 complete 事件处理函数的侦听器对象，该事件处理函数将 loader 的 visible 属性设置为 true：

createClassObject(mx.controls.Loader, "loader", 0);
loadListener = new Object();
loadListener.complete = function(eventObj){
  loader.visible = true;
}
loader.addEventListener("complete", loadListener);S
loader.contentPath = "logo.swf";


Loader.content

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.content

描述

属性（只读）；对加载器内容的引用。到加载开始时才会定义该值。

另请参见

Loader.contentPath


Loader.contentPath

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.contentPath

描述

属性；一个字符串，指明要加载到 loader 中的文件的绝对 URL 或相对 URL。相对路径必须相对于加载内容的 SWF。该 URL 必须与作为加载 SWF 的 URL 在同一子域中。

如果您要使用 Flash Player，或者在 Flash 中使用测试影片模式，必须将所有 SWF 文件存储在同一文件夹中，并且其文件名不能包含文件夹或磁盘驱动器信息。

范例

以下范例指示 loader 实例显示“logo.swf”文件的内容：

loader.contentPath = "logo.swf";


Loader.load()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.load(path)

参数

path 可选参数，指定在开始加载之前 contentPath 属性的值。如果未指定值，则使用 contentPath 的当前值。

返回

无。

描述

方法；指示 loader 开始加载其内容。

范例

以下代码创建一个 Loader 实例并将 autoload 属性设置为 false，这样加载器必须等待调用 load() 方法时才能开始加载内容。然后，它调用 load() 并指明要加载的内容：

createClassObject(mx.controls.Loader, "loader", 0);
loader.autoload = false;
loader.load("logo.swf");


Loader.percentLoaded

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.percentLoaded

描述

属性（只读）；一个数字，指明已加载内容的百分比。通常，使用该属性是为了以一种易于阅读的形式向用户展示进程。使用以下代码将数字舍入为最接近的整数：

Math.round(bytesLoaded/bytesTotal*100))

范例

以下范例创建一个 Loader 实例，然后创建一个带有进程处理函数的侦听器对象，该处理函数跟踪加载的百分比并将其发送到“输出”面板：

createClassObject(Loader, "loader", 0);
loadListener = new Object();
loadListener.progress = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Loader。
  trace("logo.swf is " + loader.percentLoaded + "% loaded."); // 跟踪加载进程
}
loader.addEventListener("complete", loadListener);
loader.content = "logo.swf";


Loader.progress

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(progress){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.progress = function(eventObject){
  ...
}
loaderInstance.addEventListener("progress", listenerObject)

描述

事件；在加载内容时向所有已注册的侦听器广播。当 autoload 参数或对 Loader.load() 的调用触发加载操作时，触发该事件。progress 事件并不会始终广播。complete 事件可以在没有调度任何 progress 事件的情况下广播。如果加载的内容是本地文件，尤其会出现这种情况。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 Loader 组件实例。附加到组件上的 on() 处理函数中使用的关键字 this 指的是组件实例。例如，以下代码附加到 Loader 组件实例 myLoaderComponent，它将“_level0.myLoaderComponent”发送到“输出”面板：

on(progress){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (loaderInstance) 调度一个事件（在本例中为 progress），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下代码创建一个 Loader 实例，然后为 progress 事件创建一个带有事件处理函数的侦听器对象，该处理函数会将一条关于已加载内容的百分比的消息发送到“输出”面板：

createClassObject(mx.controls.Loader, "loader", 0);
loadListener = new Object();
loadListener.progress = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Loader。
  trace("logo.swf is " + loader.percentLoaded + "% loaded."); // 跟踪加载进程
}
loader.addEventListener("progress", loadListener);
loader.contentPath = "logo.swf";


Loader.scaleContent

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

loaderInstance.scaleContent

描述

属性；指明是内容进行缩放以适应加载器 (true) 还是加载器进行缩放以适应内容 (false)。默认值为 true。

范例

以下代码指示加载器调整自身的大小以匹配内容的大小：

loader.strechContent = false;


关于媒体组件（仅限 Flash Professional）

媒体流组件能够很方便地将媒体流加入到 Flash 演示文稿中。这些组件可让您以多种方法显示媒体。

下面是三种可用的媒体组件：

  • MediaDisplay 组件使媒体可以流入到 Flash 内容中，而不需要支持的用户界面。此组件可以用于处理视频和音频数据。当 MediaDisplay 组件由其自身使用时，应用程序的用户将无法控制媒体。
  • MediaController 组件通过提供一个用户界面来补充 MediaDisplay 组件，该界面使用标准的控件（播放、暂停等）控制媒体播放。媒体不会加载到 MediaController 或由 MediaController 播放；它仅用于控制 MediaPlayback 或 MediaDisplay 实例中的播放。MediaController 组件起到“抽屉”的作用，它会在鼠标位于组件上方时显示播放控件的内容。
  • MediaPlayback 组件是 MediaDisplay 和 MediaController 组件的结合；它提供对媒体内容进行流式处理的方法。

请记住关于媒体组件的以下要点：

  • 媒体组件要求 Flash Player 7 或更高版本。
  • 媒体组件不支持向前扫描和向后扫描功能。不过，可以通过移动播放滑块获得此功能。
  • 只有组件大小和控制器策略会在“实时预览”中反映出来。
  • 媒体组件不支持辅助功能。


与媒体组件进行交互（仅限 Flash Professional）

流式 MediaPlayback 和 MediaController 组件会响应对鼠标和键盘活动。MediaDisplay 组件不响应键盘或鼠标事件。下表总结了 MediaPlayback 和 MediaController 组件在接收到焦点后的动作：

目标 | 导航 | 描述
给定控制器的播放控件 | 鼠标移过 | 按钮突出显示。
给定控制器的播放控件 | 单击鼠标左键 | 用户可以通过给定控制器的播放控件控制音频和视频媒体的播放，方法是单击播放控件以触发其相应的效果。 “暂停”/“播放”和“转到开头”/“转到结尾”按钮遵从标准的按钮行为。按下鼠标按钮时，屏幕上的按钮会突出显示为其被按下状态，当松开鼠标按钮时，屏幕上的按钮会回到未选中的状态。 在播放 FLV 媒体文件时，“转到结尾”按钮被禁用。
给定控制器的滑块控件 | 前后移动滑块 | 播放滑块指示用户在媒体内容中的位置；默认情况，显示手柄会水平移动，以便从开头（左）到结尾（右）指示播放。垂直摆放控件时，播放滑块从下往上移动。当指示器手柄从左向右移动时，它会突出显示上一个显示区，以表明此内容已播放或已选中。在指示器手柄前面的显示区会保持不突出显示状态，直到指示器移过。用户可以拖动指示器手柄，以改变媒体内容的播放位置。如果媒体正在播放，会从鼠标松开的位置点开始自动播放。如果媒体暂停，可以移动并松开滑块，且媒体仍然保持暂停。 还提供了一个音量滑块，可以在水平和垂直布局下从左（静音）向右（最大音量）移动。
播放控制器导航 | Tab 键，Shift+Tab 键 | 将焦点在控制器组件内的按钮之间移动，获得焦点的元素将突出显示。此导航适用于“暂停”/“播放”、“转到开头”、“转到结尾”、“静音”和“最大音量”控件。当用户按 tab 键在元素之间移动时，焦点会从左到右、从上到下移动。按 Shift+Tab 键会将焦点从右到左、从下到上移动。通过 Tab 键接收焦点后，控件立即将焦点传给“播放”/“暂停”按钮。当焦点位于“最大音量”按钮上且按下 Tab 键时，控件会向舞台上 Tab 键索引中的下一个控件提供焦点。
给定的控件按钮 | 空格键或 Enter/Return 键 | 选择具有焦点的元素。按下后，按钮会显示为被其按下状态。松开后，按钮会回复其具有焦点、鼠标移过的状态。


了解媒体组件（仅限 Flash Professional）

在开始使用媒体组件之前，最好是了解一下它们是如何工作的。本节提供了有关媒体组件如何进行工作的概述。本节中列出的大多数属性可以通过“组件检查器”面板直接设置。请参阅使用“组件检查器”面板设置媒体组件。

除了本节稍后讨论的布局属性，可以为 MediaDisplay 和 MediaPlayback 组件设置以下属性：

  • 媒体类型，可以设置为 MP3 或 FLV（请参阅 Media.mediaType 和 Media.setMedia()）。
  • 相对或绝对内容路径，它保存了要进行流式处理的媒体文件（请参阅 Media.contentPath）。
  • 线索点对象，以及其名称、时间和播放器属性（请参阅 Media.addCuePoint() 和 Media.cuePoints）。可以任意设置线索点的名称，但应将其设置为在使用侦听器和跟踪事件时有意义。在线索点的时间属性值等于它所关联的 MediaPlayback 或 MediaDisplay 组件的播放头位置值时，它将广播 cuePoint 事件。播放器属性是对其所关联的 MediaPlayback 实例的引用。线索点可以随后通过 Media.removeCuePoint() 和 Media.removeAllCuePoints() 删除。

媒体流组件广播许多相关事件。以下广播事件可以用于设置动画中的其他项目：

  • change 事件在播放媒体时由 MediaDisplay 和 MediaPlayback 组件连续广播。（请参阅 Media.change。）
  • progress 事件在加载媒体时由 MediaDisplay 和 MediaPlayback 组件连续广播。（请参阅 Media.progress。）
  • click 事件在每次单击“暂停”/“播放”按钮时由 MediaController 和 MediaPlayback 组件广播。在这种情况下，事件对象的 detail 属性会提供关于所单击按钮的信息。（请参阅 Media.click。）
  • volume 事件在用户调节音量控件时由 MediaController 和 MediaPlayback 组件广播。（请参阅 Media.volume。）
  • playheadChange 事件在用户移动播放滑块时由 MediaController 和 MediaPlayback 组件广播。（请参阅 Media.playheadChange。）

MediaDisplay 组件与 MediaController 组件配合使用。配合使用时，这两个组件的行为方式类似于 MediaPlayback 组件，但在布局方面更为灵活。因此，如果在播放媒体时需要灵活的外观和行为，请使用 MediaDisplay 和 MediaController 组件。否则，MediaPlayback 组件是最佳选择。

了解 MediaDisplay 组件

当将 MediaDisplay 组件放置到舞台上时，所绘制出的该组件没有可见的用户界面。它只是一个容纳和播放媒体的容器。在 MediaDisplay 组件中播放的任何视频媒体的外观受以下属性影响：

  • Media.aspectRatio
  • Media.autoSize
  • 高度
  • 宽度

注意：除非正在播放媒体，否则用户看不到任何内容。

Media.aspectRatio 属性优先于其他属性。当 Media.aspectRatio 设置为 true 时（默认值），此组件将始终在设置了组件大小后重新调整播放媒体的大小，以确保保持媒体的高宽比。

对于 FLV 文件，当 Media.autoSize 设置为 true 时，要播放的媒体将以其首选大小显示，而与组件的大小无关。这意味着，除非 MediaDisplay 实例大小与该媒体的大小相同，否则，该媒体将溢出实例边界或无法填充实例大小。当 Media.autoSize 设置为 false 时，将会尽可能地使用实例大小，同时保持高宽比。如果 Media.autoSize 和 Media.aspectRatio 都设置为 false，将使用该组件的准确大小。

注意：由于在播放 MP3 文件时不会显示图像，因此，设置 Media.autoSize 将无效。对于 MP3 文件，最小的可用大小是 60 像素高乘以 256 像素宽（在默认的方向中）。

MediaDisplay 组件还支持 Media.volume 属性。此属性为 0 至 100 之间的整数，0 为静音，100 为最大音量。默认设置为 75。

了解 MediaController 组件

MediaController 组件的界面取决于它的 Media.controllerPolicy 和 Media.backgroundStyle 属性。Media.controllerPolicy 属性确定媒体控件设置是始终可见、折叠还是仅当鼠标停留在组件的控件部分时可见。折叠时，控制器会绘制一个经修改的进度栏，它是加载栏和播放栏的组合。它在栏底部显示加载的字节进度，并在其上面显示播放头的进度。展开状态绘制增强版的播放栏/加载栏，包含以下项目：

  • 在左侧指示播放状态（正进行流式处理或暂停）的文本标签，以及在右侧指示播放头位置（以秒为单位）的文本标签。
  • 播放头位置指示器
  • 滑块，用户可以拖动它在媒体中导航

MediaController 组件还提供了以下项目：

  • “播放”/“暂停”状态按钮
  • 由两个按钮组成的组按钮：“转到开头”和“转到结尾”，分别导航到媒体的开头和结尾
  • 音量控件，由一个滑块、静音按钮和最大音量按钮组成

MediaController 组件的折叠和展开状态都使用 Media.backgroundStyle 属性。此属性确定控制器是绘制铬印染背景（默认值），还是允许从控件后面显示影片背景。

MediaController 组件有一个方向设置 (Media.horizontal)，可用于以水平方向（默认值）或垂直方向绘制组件。在水平方向下，播放栏从左到右跟踪播放的媒体。在垂直方向下，播放栏从下到上跟踪媒体。

MediaDisplay 和 MediaController 组件可以通过 Media.associateDisplay() 和 Media.associateController() 方法互相关联。调用这些方法时，它们使 MediaController 实例可以根据来自 MediaDisplay 实例的事件广播更新前者的控件，并使 MediaDisplay 组件可以响应用户通过 MediaController 进行的设置。

了解 MediaPlayback 组件

MediaPlayback 组件是 MediaController 和 MediaDisplay 控件的组合。两个子组件都包含在 MediaPlayback 内。MediaController 和 MediaDisplay 部分始终会根据 MediaPlayback 组件实例的整体大小进行缩放。

MediaPlayback 组件使用 Media.controlPlacement 确定控件的布局。可能的控件位置包括 top、bottom、left 和 right，它们指示控件相对于显示将绘制在哪个位置。例如，right 值使控件保持垂直并将其放在显示的右侧。


使用媒体组件（仅限 Flash Professional）

随着使用媒体向 Web 用户提供信息这些案例的迅速增多，向用户提供一种对媒体进行流式处理然后加以控制的方法成为了一种普遍的愿望。以下是媒体组件的用法方案范例：

  • 显示介绍公司的媒体
  • 对影片或影片预览进行流式处理
  • 对歌曲或歌曲片段进行流式处理
  • 提供媒体形式的学习材料

使用 MediaPlayback 组件

假设必须要为客户开发一个 Web 站点，使 Web 站点用户可以在丰富媒体环境下预览您销售的 DVD 和 CD。下面的范例显示了完成此过程的步骤，并假设您的 Web 站点已做好插入流组件的准备。

创建显示 CD 或 DVD 预览的 Flash 文档：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 文档”。
  2. 打开“组件”面板（“窗口”>“开发面板”>“组件”）并双击 MediaPlayback 组件，这会将该组件的一个实例放置到舞台上。
  3. 选择此 MediaPlayback 组件实例并在属性检查器中输入实例名称 myMedia。
  4. 在“组件检查器”面板（“窗口”>“开发面板”>“组件检查器”）中，根据要进行流式处理的媒体类型设置媒体类型（MP3 或 FLV）。
  5. 如果选择 FLV，请在“视频长度”文本框中输入视频的持续时间；请使用 HH:MM:SS 格式。
  6. 在“URL”文本框中输入预览视频的位置。例如，您可以输入 http://my.web.com/videopreviews/AMovieName.flv。
  7. 为“自动播放”、“使用首选媒体大小”和“保持高宽比”复选框设置所需选项。
  8. 将控件位置设置到所需的 MediaPlayback 组件一侧。
  9. 向媒体结尾添加一个线索点，它将与侦听器一起使用，用于打开一个通知用户该影片出售的弹出式窗口。将线索点的名称指定为 cuePointName，然后设置线索点时间，使其接近剪辑的结尾（在几秒钟内）。要达到此目的，请执行以下步骤：
    1. 双击某个 Window 组件，使其在舞台上显示。
    2. 删除此 Window 组件。这会将一个名为 Window 的项目放置到库中。
    3. 创建一个文本框并写入一些文本，以通知用户此影片出售。
    4. 通过选择“修改”>“转换为元件”，然后指定名称 mySale_mc，将此文本框转换为影片剪辑。
    5. 右键单击库中的 mySale_mc 影片剪辑，选择“链接”，然后选择“为动作脚本导出”选项。这会将影片剪辑放置到您的运行时库中。
  10. 将以下动作脚本添加到第 1 帧。此代码会创建一个侦听器，用于打开一个通知用户此影片出售的弹出式窗口。
    // 导入动态创建弹出式窗口所需的类

import mx.containers.Window;
import mx.managers.PopUpManager;

// 创建一个打开销售弹出式窗口的侦听器对象
var saleListener = new Object();

saleListener.cuePoint = function(evt){

var saleWin = PopUpManager.createPopUp(_root, Window, false, {closeButton:true, title:"Movie Sale ", contentPath:"mySale_mc"});

// 放大窗口以便使内容与之相适应

saleWin.setSize(80, 80);
var delSaleWin = new Object();
delSaleWin.click = function(evt){
saleWin.deletePopUp();
}
saleWin.addEventListener("click", delSaleWin);

}

myMedia.addEventListener("cuePoint", saleListener);

使用 MediaDisplay 和 MediaController 组件

假设您决定要在更大程度上控制媒体播放的外观和行为。为此，需要同时使用 MediaDisplay 和 MediaController 来提供所需的效果。下面的范例显示上例的等效步骤，创建一个显示 CD 和 DVD 预览媒体的 Flash 应用程序。

创建显示 CD 或 DVD 预览的 Flash 文档：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 文档”。
  2. 在“组件”面板（“窗口”>“开发面板”>“组件”）中，双击 MediaController 和 MediaDisplay 组件，这会将每个组件的一个实例放置到舞台上。
  3. 选择 MediaDisplay 实例并在属性检查器中输入实例名称 myDisplay。
  4. 选择 MediaController 实例并在属性检查器中输入实例名称 myController。
  5. 从属性检查器启动“组件检查器”面板，并根据要进行流式处理的媒体类型设置媒体类型（MP3 或 FLV）。
  6. 如果选择 FLV，请在“视频长度”文本框中输入视频的持续时间，格式为 HH:MM:SS。
  7. 在“URL”文本框中输入预览视频的位置。例如，您可以输入 http://my.web.com/videopreviews/AMovieName.flv。
  8. 为“自动播放”、“使用首选媒体大小”和“保持高宽比”复选框设置所需选项。
  9. 选择 MediaController 实例，并在“组件检查器”面板中将方向设置为垂直，方法是将 horizontal 属性设置为 false。
  10. 在“组件检查器”面板中，将 backgroundStyle 设置为 None。

    这样会指定 MediaController 实例不应绘制背景，而应在控件之间填充媒体。

  11. 使用一个行为关联 MediaController 和 MediaDisplay 实例，使 MediaController 实例准确地反映 MediaDisplay 实例中的播放头移动和其他设置，并使 MediaDisplay 实例响应用户的单击动作：
    1. 选择 MediaDisplay 实例，并在属性检查器中输入实例名称 myMediaDisplay。
    2. 选择将触发该行为的 MediaController 实例。
    3. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮并选择“媒体”>“关联显示”。
    4. 在“关联显示”窗口中，选择 _root 下的 myMediaDisplay，然后单击“确定”。

有关使用行为控制媒体组件的详细信息，请参阅通过使用行为控制媒体组件。

使用“组件检查器”面板设置媒体组件

“组件检查器”面板使用户能轻松地设置媒体组件的参数、属性等。要使用此面板，请在舞台上单击所需的组件，并在属性检查器打开的情况下，单击“启动组件检查器”。“组件检查器”面板可用于以下用途：

  • 自动播放媒体（请参阅 Media.activePlayControl 和 Media.autoPlay）
  • 保持或忽略媒体的高宽比（请参阅 Media.aspectRatio）
  • 确定媒体是否将自动调整大小以适应组件实例（请参阅 Media.autoSize）
  • 启用或禁用铬印染背景（请参阅 Media.backgroundStyle）
  • 以 URL 的形式指定媒体的路径（请参阅 Media.contentPath）
  • 指定播放控件的可见性（请参阅 Media.controllerPolicy）
  • 添加线索点对象（请参阅 Media.addCuePoint()）
  • 删除线索点对象（请参阅 Media.removeCuePoint()）
  • 设置 MediaController 实例的方向（请参阅 Media.horizontal）
  • 设置所播放的媒体的类型（请参阅 Media.setMedia()）
  • 设置 FLV 媒体的播放时间（请参阅 Media.totalTime）
  • 设置时间显示的最后几位数，以指示毫秒数或每秒帧数 (fps)

在使用“组件检查器”面板时，了解一些概念很重要：

  • 当选择 MP3 视频类型时，视频时间控件会被删除，原因是此信息会在使用 MP3 文件时自动读入。对于 FLV 文件，必须输入媒体的总时间 (Media.totalTime)，以便使 MediaPlayback 组件（或任何侦听的 MediaController 组件）的播放栏准确地反映播放进度。
  • 文件类型设置为 FLV 时，您将观察到一个“毫秒数”选项和（如果取消选择“毫秒数”）“每秒的帧”(FPS) 弹出式菜单。当选择“毫秒数”选项时，FPS 控件不可见。在此模式下，运行时在播放栏显示的时间为 HH:MM:SS.mmm 格式（H = 小时、M = 分钟、S = 秒、m = 毫秒），而且线索点以秒为单位设置。当取消选择“毫秒数”时，FPS 控件即会启用，且播放栏时间为 HH:MM:SS.FF 格式（F = 每秒的帧），而线索点以帧为单位设置。

    注意：只能使用“组件检查器”面板设置 FPS 属性。使用动作脚本设置 fps 值无效且将被忽略。

通过使用行为控制媒体组件

行为是预先编写的动作脚本，为了控制对象而添加到对象实例（例如 MediaDisplay 组件）中。行为可让您为文档增添动作脚本编码的功能、控制能力和灵活性，而无需自己创建动作脚本代码。

要通过行为控制媒体组件，请使用“行为”面板将行为应用到给定的媒体组件实例。请指定将会触发行为的事件（例如到达指定的线索点）、选择目标对象（将受行为影响的媒体组件），并在必要时选择行为的设置（例如要导航到的媒体内的影片剪辑）。

以下行为随附在 Flash MX Professional 2004 中，用于控制嵌入的媒体组件。

行为 | 用途 | 参数
关联控制器 | 将 MediaController 组件与 MediaDisplay 组件关联 | 目标 MediaController 组件的实例名称
关联显示 | 将 MediaDisplay 组件与 MediaController 组件关联 | 目标 MediaController 组件的实例名称
标签帧线索点导航 | 将动作放到 MediaDisplay 或 MediaPlayback 实例上，通知指定的影片剪辑导航到与给定的线索点名称相同的帧 | 帧的名称和线索点的名称（它们的名称应该相同）
幻灯片线索点导航 | 使基于幻灯片的 Flash 文档导航到与给定的线索点名称相同的幻灯片 | 幻灯片的名称和线索点的名称（它们的名称应该相同）

将 MediaDisplay 组件与 MediaController 组件关联：

  1. 将 MediaDisplay 实例和 MediaController 实例放置于舞台上。
  2. 选择 MediaDisplay 实例，并使用属性检查器输入实例名称 myMediaDisplay。
  3. 选择将触发该行为的 MediaController 实例。
  4. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮并选择“媒体”>“关联显示”。
  5. 在“关联显示”窗口中，选择 _root 下的 myMediaDisplay，然后单击“确定”。

注意：如果已将 MediaDisplay 组件与 MediaController 组件关联，则不需要将 MediaController 组件与 MediaDisplay 组件关联。

将 MediaController 组件与 MediaDisplay 组件关联：

  1. 将 MediaDisplay 实例和 MediaController 实例放置于舞台上。
  2. 选择 MediaController 实例，并使用属性检查器输入实例名称 myMediaController。
  3. 选择将触发该行为的 MediaDisplay 实例。
  4. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮并选择“媒体”>“关联控制器”。
  5. 在“关联控制器”窗口中，选择 _root 下的 myMediaController，然后单击“确定”。

使用“标签帧线索点导航”行为：

  1. 将 MediaDisplay 或 MediaPlayback 组件实例放置于舞台上。
  2. 选择希望媒体导航到的帧，并使用属性检查器输入帧的名称 myLabeledFrame。
  3. 选择 MediaDisplay 或 MediaPlayback 实例。
  4. 在“组件检查器”面板中，单击“增加”(+) 按钮并以 HH:MM:SS:mmm 或 HH:MM:SS:FF 格式输入线索点时间，然后为线索点指定名称 myLabeledFrame。

    线索点指示在导航到选定的帧之前应经过的时间量。例如，如果要跳至 myLabeledFrame（影片中的第 5 秒位置），请在 SS 文本框中输入 5，并在“名称”文本框中输入 myLabeledFrame。

  5. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮并选择“媒体”>“标签帧线索点导航”。
  6. 在“标签帧线索点导航”窗口中，选择 _root 剪辑并单击“确定”。

使用“幻灯片线索点导航”行为：

  1. 打开新的 Flash 幻灯片演示文稿文档。
  2. 将 MediaDisplay 或 MediaPlayback 组件实例放置于舞台上。
  3. 在舞台左侧的“屏幕大纲”窗格中，单击“插入屏幕”(+) 按钮以添加第二张幻灯片，然后选择第二张幻灯片并重命名为 mySlide。
  4. 选择 MediaDisplay 或 MediaController 实例。
  5. 在“组件检查器”面板中，单击“增加”(+) 按钮并以 HH:MM:SS:mmm 或 HH:MM:SS:FF 格式输入线索点时间，然后为线索点指定名称 MySlide。

    线索点指示在导航到选定的幻灯片之前应经过的时间量。例如，如果要跳至 mySlide（影片中的第 5 秒位置），请在 SS 文本框中输入 5，并在“名称”文本框中输入 mySlide。

  6. 在“行为”面板（“窗口”>“开发面板”>“行为”）中，单击“增加”(+) 按钮并选择“媒体”>“幻灯片线索点导航”。
  7. 在“幻灯片线索点导航”窗口中，选择 _root 剪辑下的 Presentation，然后单击“确定”。


媒体组件参数（仅限 Flash Professional）

以下表格列出了可以在属性检查器中为给定的媒体组件实例设置的创作参数：

MediaDisplay 组件参数

名称 | 类型 | 默认值 | 描述
自动播放 (Media.autoPlay>) | Boolean | Selected | 确定是否在加载媒体后立刻播放该媒体。
使用首选媒体大小 (Media.autoSize>) | Boolean | Selected | 确定与 MediaDisplay 实例关联的媒体是符合组件大小，还是仅使用其默认的大小。
FPS | 整数 | 30 | 指示每秒的帧数。当选择了“毫秒数”选项时，此控件禁用。
线索点 (Media.cuePoints>) | Array | Undefined | 线索点对象的一个数组，这些对象各自具有一个名称和时间位置，时间格式为有效的 HH:MM:SS:FF（选择了“毫秒数”选项时）或 HH:MM:SS:mmm。
FLV 或 MP3 (Media.mediaType>) | “FLV”或“MP3” | “FLV” | 指定要播放的媒体类型。
毫秒 | Boolean | Unselected | 确定播放条是使用帧还是毫秒，以及线索点是使用秒还是帧。当选择此选项时，FPS 控件不可见。
URL (Media.contentPath>) | String | Undefined | 一个字符串，保存要播放的媒体的路径和文件名。
视频长度 (Media.totalTime>) | 整数 | Undefined | 播放 FLV 媒体所需的总时间。此设置是确保播放条正常工作所必需的。此控件仅在媒体类型设置为 FLV 时可见。

MediaController 组件参数

名称 | 类型 | 默认值 | 描述
activePlayControl (Media.activePlayControl>) | 字符串：“pause”或“play” | “pause” | 确定播放栏在实例化时是处于播放模式还是暂停模式。
backgroundStyle (Media.backgroundStyle>) | 字符串：“default”或“none” | “default” | 确定是否为 MediaController 实例绘制铬印染背景。
controllerPolicy (Media.controllerPolicy>) | “auto”、“on”、或“off” | “auto” | 确定控制器是根据鼠标位置打开或关闭，还是锁定在打开或关闭状态。
horizontal (Media.horizontal>) | Boolean | true | 确定实例的控制器部分为垂直方向还是水平方向。true 值表示组件将为水平方向。
enabled | Boolean | true | 确定此控件是否可由用户修改。true 值表示可修改此控件。
visible | Boolean | true | 确定此控件是否对用户可见。true 值表示此控件可见。
minHeight | 整数 | 0 | 此实例的允许最小高度，以像素为单位。
minWidth | 整数 | 0 | 此实例的允许最小宽度，以像素为单位。

MediaPlayback 组件参数

名称 | 类型 | 默认值 | 描述
控件位置 (Media.controlPlacement>) | “top”、“bottom”、“left”、“right” | “bottom” | 控制器的位置。值与方向有关。
Media.controllerPolicy> | Boolean | true | 确定控制器是否根据鼠标的位置而打开或关闭。
自动播放 (Media.autoPlay>) | Boolean | Selected | 确定是否在加载媒体后立刻播放该媒体。
使用首选媒体大小 (Media.autoSize>) | Boolean | Selected | 确定 MediaController 实例大小是与媒体相适应还是使用其他设置。
FPS | 整数 | 30 | 每秒的帧数。当选择了“毫秒数”选项时，此控件禁用。
线索点 (Media.cuePoints>) | Array | Undefined | 线索点对象的一个数组，这些对象各自具有一个名称和时间位置，时间格式为有效的 HH:MM:SS:mmm（选择了“毫秒数”选项时）或 HH:MM:SS:FF。
FLV 或 MP3 (Media.mediaType>) | “FLV”或“MP3” | “FLV” | 指定要播放的媒体类型。
毫秒 | Boolean | Unselected | 确定播放条是使用帧还是毫秒，以及线索点是使用秒还是帧。当选择此选项时，FPS 控件禁用。
URL (Media.contentPath>) | String | Undefined | 一个字符串，保存要播放的媒体的路径和文件名。
视频长度 (Media.totalTime>) | 整数 | Undefined | 播放 FLV 媒体所需的总时间。此设置是确保播放条正常工作所必需的。


使用媒体组件创建应用程序（仅限 Flash Professional）

使用媒体组件创建 Flash 内容非常简单，通常只需要几个步骤。

此范例显示如何创建一个播放公开提供的小型媒体文件的应用程序。

要将媒体组件添加到应用程序：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 文档”。
  2. 在“组件”面板（“窗口”>“开发面板”>“组件”）中，双击 MediaPlayback 组件以将其添加到舞台上。
  3. 在属性检查器中，输入实例名称 myMedia。
  4. 在属性检查器中，单击“启动组件检查器”。
  5. 在“组件检查器”面板中，在 URL 文本框内输入 http://www.cathphoto.com/c.flv。
  6. 选择“控制”>“测试影片”，查看媒体播放。


自定义媒体组件（仅限 Flash Professional）

如果要更改媒体组件的外观，可以使用外观设置。有关组件自定义的完整指南，请参阅 自定义组件。

在媒体组件中使用样式

媒体组件不支持样式。

在媒体组件中使用外观

尽管可以打开媒体组件源文档并更改其资源以获得需要的外观，但媒体组件不支持动态外观设置。最好对此文件制作一份副本并使用该副本，这样即可始终拥有可恢复的已安装的源文件。可以在以下位置找到媒体组件源文档：

  • Windows：C:\Documents and Settings\用户\Local Settings\Application Data\Macromedia\ Flash MX 2004\语言\Configuration\ComponentFLA.fla
  • Macintosh：HD Drive:Users:用户名:Library:Application Support:Macromedia:Flash MX 2004:语言:Configuration:ComponentFLA.fla

有关组件外观的详细信息，请参阅关于设置组件外观。


Media 类（仅限 Flash Professional）

继承 mx.core.UIComponent

动作脚本类名称 mx.controls.MediaController、mx.controls.MediaDisplay、mx.controls.MediaPlayback

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.MediaPlayback.version);

注意：代码 trace(myMediaInstance.version); 返回 undefined。

Media 类的方法摘要

方法 | 组件 | 描述
Media.addCuePoint()> | MediaDisplay、MediaPlayback | 向组件实例添加线索点对象。
Media.associateController()> | MediaDisplay | 将 MediaDisplay 实例与 MediaController 实例关联。
Media.associateDisplay()> | MediaController | 将 MediaController 实例与 MediaDisplay 实例关联。
Media.displayFull()> | MediaPlayback | 将组件实例转换为全屏播放模式。
Media.displayNormal()> | MediaPlayback | 将组件实例转换回其原始屏幕大小。
Media.getCuePoint()> | MediaDisplay、MediaPlayback | 返回线索点对象。
Media.play()> | MediaDisplay、MediaPlayback | 在给定的开始点播放与组件实例关联的媒体。
Media.pause()> | MediaDisplay、MediaPlayback | 在媒体时间轴中的播放头当前位置暂停播放头。
Media.removeAllCuePoints()> | MediaDisplay、MediaPlayback | 删除与给定的组件实例关联的所有线索点对象。
Media.removeCuePoint()> | MediaDisplay、MediaPlayback | 删除与给定的组件实例关联的指定线索点。
Media.setMedia()> | MediaDisplay、MediaPlayback | 将媒体类型和路径设置为指定的媒体类型。
Media.stop()> | MediaDisplay、MediaPlayback | 停止播放头并将其移到位置 0，即媒体的开头。

Media 类的属性摘要

属性 | 组件 | 描述
Media.activePlayControl> | MediaController | 确定组件在运行时加载时的状态。
Media.aspectRatio> | MediaDisplay、MediaPlayback | 确定组件实例是否保持其视频高宽比。
Media.autoPlay> | MediaDisplay、MediaPlayback | 确定组件实例是否立即开始缓冲和播放。
Media.autoSize> | MediaDisplay、MediaPlayback | 确定 MediaDisplay 或 MediaPlayback 组件的媒体观看部分如何调整其自身的大小。
Media.backgroundStyle> | MediaController | 确定组件实例是否绘制其铬印染背景。
Media.bytesLoaded> | MediaDisplay、MediaPlayback | 已加载且可以播放的字节数。
Media.bytesTotal> | MediaDisplay、MediaPlayback | 要加载到组件实例中的字节数。
Media.contentPath> | MediaDisplay、MediaPlayback | 一个字符串，保存要进行流式处理并播放的媒体的相对路径和文件名。
Media.controllerPolicy> | MediaController、MediaPlayback | 确定组件内的控件在播放时是隐藏（仅在触发鼠标移过事件时显示），还是始终可见或始终隐藏。
Media.controlPlacement> | MediaPlayback | 确定组件的控件是否相对于组件定位。
Media.cuePoints> | MediaDisplay、MediaPlayback | 已指定到给定的组件实例的线索点对象数组。
Media.horizontal> | MediaController | 确定组件实例的方向。
Media.mediaType> | MediaDisplay、MediaPlayback | 确定要播放的媒体类型。
Media.playheadTime> | MediaDisplay、MediaPlayback | 对于正在播放的媒体时间轴，保存播放头的当前位置（以秒为单位）。
Media.playing> | MediaDisplay、MediaPlayback | 返回一个布尔值，指示给定的组件实例是否正在播放媒体。
Media.preferredHeight> | MediaDisplay、MediaPlayback | FLV 媒体文件的默认高度值。
Media.preferredWidth> | MediaDisplay、MediaPlayback | FLV 媒体文件的默认宽度值。
Media.totalTime> | MediaDisplay、MediaPlayback | 一个整数，指示媒体的总长度（以秒为单位）。
Media.volume> | MediaDisplay、MediaPlayback | 一个介于 0（最小值）和 100（最大值）之间的整数，代表音量级别。.

Media 类的事件摘要

事件 | 组件 | 描述
Media.change> | MediaDisplay、MediaPlayback | 当媒体播放时连续广播。
Media.click> | MediaController、MediaPlayback | 当用户单击“播放”/“暂停”按钮时进行广播。
Media.complete> | MediaDisplay、MediaPlayback | 播放头已到达媒体结尾的通知。
Media.cuePoint> | MediaDisplay、MediaPlayback | 播放头已到达给定的线索点的通知。
Media.playheadChange> | MediaController、MediaPlayback | 当用户移动播放滑块或单击“转到开头”或“转到结尾”按钮时，由组件实例进行广播。
Media.progress> | MediaDisplay、MediaPlayback | 连续生成，直到媒体完全下载。
Media.volume> | MediaController、MediaPlayback | 当用户调整音量时进行广播。


Media.activePlayControl

适用于

MediaController

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.activePlayControl

描述

属性；一个布尔值，确定 MediaController 组件在运行时加载时的状态。true 值指示 MediaController 组件在运行时应处于播放状态，false 值指示它在运行时处于暂停状态。此属性应该与 autoPlay 属性一起设置，这样两者在运行时同时为暂停或播放状态。默认值为 true。

范例

下面的范例指示当在运行时首次加载时，控件为暂停状态：

myMedia.activePlayControl = false;

另请参见

Media.autoPlay


Media.addCuePoint()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.addCuePoint(cuePointName, cuePointTime)

参数

cuePointName 一个字符串，可以用于对线索点命名。

cuePointTime 一个以秒数表示的数字，指示何时广播 cuePoint 事件。

返回

无。

说明

方法；向 MediaPlayback 或 MediaDisplay 组件实例添加线索点对象。当播放头时间等于线索点时间时，即会广播 cuePoint 事件。

示例

以下代码将名为 Homerun 的线索点添加到 myMedia 中时间 = 16 秒的位置。

myMedia.addCuePoint("Homerun", 16);

另请参见

Media.cuePoint、Media.cuePoints、Media.getCuePoint()、Media.removeAllCuePoints()、Media.removeCuePoint()


Media.aspectRatio

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.aspectRatio

描述

属性；一个布尔值，确定 MediaDisplay 或 MediaPlayback 实例在播放时是否保持视频高宽比。true 值指示应保持高宽比；false 值指示高宽比可以在播放时变化。默认值为 true。

范例

下面的范例指示高宽比可以在播放时变化：

myMedia.aspectRatio = false;


Media.associateController()

适用于

MediaDisplay

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.associateController(instanceName)

参数

instanceName 一个字符串，指示要关联的 MediaController 组件的实例名称。

返回

无。

说明

方法；将 MediaDisplay 组件实例与给定的 MediaController 实例关联。

如果已经使用 Media.associateDisplay() 将 MediaController 实例与 MediaDisplay 实例关联，则无需使用 Media.associateController()。

示例

以下代码将 myMedia 与 myController 关联：

myMedia.associateController(myController);

另请参见

Media.associateDisplay()


Media.associateDisplay()

适用于

MediaController

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.associateDisplay(instanceName)

参数

instanceName 一个字符串，指示要关联的 MediaDisplay 组件的实例名称。

返回

无。

说明

方法；将 MediaController 组件实例与给定的 MediaDisplay 实例关联。

如果已经使用 Media.associateController() 将 MediaDisplay 实例与 MediaController 实例关联，则无需使用 Media.associateDisplay()。

示例

以下代码将 myMedia 与 myDisplay 关联：

myMedia.associateDisplay(myDisplay);

另请参见

Media.associateController()


Media.autoPlay

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.autoPlay

描述

属性；一个布尔值，确定 MediaPlayback 或 MediaDisplay 实例是否立即开始尝试缓冲和播放。true 值指示控件将在运行时进行缓冲和播放；false 值指示控件将在运行时停止。此属性取决于 contentPath 和 mediaType 属性。如果未设置 contentPath 和 mediaType，则在运行时不会进行播放。默认值为 true。

范例

下面的范例指示当在运行时首次加载时，控件不会启动：

myMedia.autoPlay = false;

另请参见

Media.contentPath、Media.mediaType


Media.autoSize

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.autoSize

描述

属性；一个布尔值，确定 MediaDisplay 或 MediaPlayback 组件的媒体观看部分如何调整其自身的大小。

对于 MediaDisplay 组件，此属性的作用如下所示：

  • 如果将此属性设置为 true，Flash 将以媒体的首选大小显示媒体，而与组件大小无关。这意味着，除非 MediaDisplay 实例大小与该媒体的大小相同，否则，该媒体将溢出实例边界或无法填充实例大小。
  • 如果将此属性设置为 false，Flash 将尽可能用实例的大小，同时保持高宽比。如果 Media.autoSize 和 Media.aspectRatio 都设置为 false，将使用该组件的准确大小。

对于 MediaPlayback 组件，此属性的作用如下所示：

  • 如果将此属性设置为 true，Flash 将以媒体的首选大小显示媒体，除非播放媒体区小于首选的大小。在这种情况下，Flash 将缩小媒体以适应实例的内部大小，并保持高宽比。如果首选大小小于实例的媒体区，则将不使用部分媒体区。
  • 如果将此属性设置为 false，Flash 将尽可能用实例的大小，同时保持高宽比。如果 Media.autoSize 和 Media.aspectRatio 都设置为 false，则将填充组件的媒体区。此区域定义为控件上面的区域（在默认的布局下），周围有 8 个像素的边距，组成了组件的边缘。

默认值为 true。

范例

下面的范例指示控件不会根据其媒体大小进行播放：

myMedia.autoSize = false;

另请参见

Media.aspectRatio


Media.backgroundStyle

适用于

MediaController

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.backgroundStyle

描述

属性；"default" 值指示将为 MediaController 实例绘制铬印染背景，而 "none" 值指示将不会绘制铬印染背景。默认值为 "default"。

它不是样式属性，因此不受样式设置影响。

范例

下面的范例指示将不会为控件绘制铬印染背景：

myMedia.backgroundStyle = "none";


Media.bytesLoaded

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.bytesLoaded

描述

只读属性；已加载到组件且可以播放的字节数。默认值是 undefined。

范例

以下代码创建名为 PlaybackLoad 的变量，并将在 for 循环中利用加载的字节数设置该变量。

// 创建一个变量，用于保存所加载的字节数
var PlaybackLoad = myMedia.bytesLoaded;
// 执行 some 函数，直到准备好播放
for (PlaybackLoad < 150) {
  someFunction();
}


Media.bytesTotal

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.bytesTotal

描述

属性；要加载到 MediaPlayback 或 MediaDisplay 组件的字节数。默认值是 undefined。

范例

下面的范例告知用户要进行流式处理的媒体大小：

myTextField.text = myMedia.bytesTotal;


Media.change

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.change = function(eventObject){
  // 此处插入您的代码
}
myMedia.addEventListener("change", listenerObject)

描述

事件；当播放媒体时由 MediaDisplay 和 MediaPlayback 组件进行广播。完成的百分比可以从组件实例中获取。请参阅下面的范例。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Media.change 事件的事件对象有两个附加属性：

target 对广播中的对象的引用。

type 指示事件类型的字符串 "change"。

有关事件对象的详细信息，请参阅事件对象。

示例

下面的范例使用对象侦听器确定播放头位置 (Media.playheadTime)，从中可计算出完成的百分比：

var myPlayerListener = new Object();
myPlayerListener.change = function(eventObject){
  var myPosition = myPlayer.playheadTime;
  var myPercentPosition = (myPosition/totalTime);
}
myPlayer.addEventListener("change", myPlayerListener);

另请参见

Media.playing、Media.pause()


Media.click

适用于

MediaController、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

var myMediaListener = new Object()
myMediaListener.click = function(){
  // 此处插入您的代码
}
myPlayer.addEventListener("click", myMediaListener);

描述

事件；当用户单击“播放”/“暂停”按钮时进行广播。detail 字段将用于确定所单击的按钮。Media.click 事件对象具有以下属性：

detail 字符串 "pause" 或 "play"。

target 对 MediaController 或 MediaPlayback 组件实例的引用。

type 字符串 "click"。

范例

下面的范例会在用户单击“播放”时打开一个弹出式窗口：

var myMediaListener = new Object()
myMediaListener.click = function(){
  PopUpManager.createPopup(_root, mx.containers.Window, false, {contentPath:movieSale});
}
myMedia.addEventListener("click", myMediaListener);


Media.complete

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.complete = function(eventObject){
  // 此处插入您的代码
}
myMedia.addEventListener("complete", listenerObject)

描述

事件；播放头已到达媒体结尾的通知。Media.complete 事件对象具有以下属性：

target 对 MediaDisplay 或 MediaPlayback 组件实例的引用。

type 字符串 "complete"。

范例

下面的范例使用对象侦听器确定媒体何时结束播放：

var myListener = new Object();
myListener.complete = function(eventObject) {
    trace("media is Finished");
};
myMedia.addEventListener("complete", myListener);


Media.contentPath

适用于

MediaController

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.contentPath

描述

属性；一个字符串，保存要进行流式处理和/或播放的媒体的相对路径和文件名。Media.setMedia()方法是通过动作脚本设置此属性的唯一受支持的方法。默认值是 undefined。

范例

下面的范例在文本框中显示播放中影片的名称：

myTextField.text = myMedia.contentPath;

另请参见

Media.setMedia()


Media.controllerPolicy

适用于

MediaController、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.controllerPolicy

描述

属性；确定 MediaController 组件（或 MediaPlayback 组件内的控制器子组件）是否在实例化时隐藏，而仅当用户将鼠标移过控制器的折叠状态时显示。

此属性的可能值如下：

  • "on" 指示控件始终是展开的。
  • "off" 指示控件始终是折叠的。
  • "auto" 指示控件将保持折叠状态，直到用户将鼠标移过点击区。点击区与在其中绘制折叠的控件的区域匹配。控件将保持展开状态，直到鼠标移离点击区。

注意：点击区会随着控制器扩展和收缩。

范例

下面的范例将使控制器始终保持打开：

myMedia.controllerPolicy = "on";


Media.controlPlacement

适用于

MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.controlPlacement

描述

属性；确定 MediaPlayback 组件的控制器部分相对于其显示的位置。可能的值有 "top"、"bottom"、"left" 和 "right"。默认值为 "bottom"。

范例

在下面的范例中，MediaPlayback 组件的控制器部分将位于右侧：

myMedia.controlPlacement = "right";


Media.cuePoint

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.cuePoint = function(eventObject){
  // 此处插入您的代码
}
myMedia.addEventListener("cuePoint", listenerObject)

描述

事件；播放头已到达线索点的通知。Media.cuePoint 事件对象具有以下属性：

name 一个字符串，指示线索点的名称。

time 一个数字，以帧数或秒数表示，指示何时到达线索点。

target 对线索点对象的引用。

type 字符串 "cuePoint"。

范例

下面的范例使用对象侦听器确定何时到达线索点：

var myCuePointListener = new Object();
myCuePointListener.cuePoint = function(eventObject){
  trace("heard " + eventObject.type + ", " + eventObject.target);
}
myPlayback.addEventListener("cuePoint", myCuePointListener);

另请参见

Media.addCuePoint()、Media.cuePoints、Media.getCuePoint()


Media.cuePoints

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.cuePoints[N]

描述

属性；已指定给 MediaPlayback 或 MediaDisplay 组件实例的线索点对象数组。在数组内，每个线索点对象可以具有名称、以秒或帧数表示的时间，以及一个播放器属性（即对象所关联的组件的实例名称）。默认值为空数组 []。

范例

如果正在播放动作预览，下面的范例会删除第三个线索点：

if(myVariable == actionPreview) {
  myMedia.removeCuePoint(myMedia.cuePoints[2]);
}

另请参见

Media.addCuePoint()、Media.getCuePoint()、Media.removeCuePoint()


Media.displayFull()

适用于

MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.displayFull()

参数

无。

返回

无。

说明

方法；将 MediaPlayback 组件实例设置为全屏模式。也就是说，组件进行扩展以填充整个舞台。要将组件返回到正常大小，请使用 Media.displayNormal()。

示例

以下代码使组件进行扩展以填满舞台：

myMedia.displayFull();

另请参见

Media.displayNormal()


Media.displayNormal()

适用于

MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.displayNormal()

参数

无。

返回

无。

说明

方法；在使用 Media.displayFull() 方法之后，将 MediaPlayback 实例设置回正常大小。

示例

以下代码会使 MediaPlayback 组件回复为其原始大小：

myMedia.displayNormal();

另请参见

Media.displayFull()


Media.getCuePoint()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.getCuePoint(cuePointName)

参数

无。

返回

cuePointName 在使用 Media.addCuePoint() 时提供的字符串。

说明

方法；根据其线索点名称返回线索点对象。

示例

以下代码会获取名为 myCuePointName 的线索点。

myMedia.removeCuePoint(myMedia.getCuePoint("myCuePointName"));

另请参见

Media.addCuePoint()、Media.cuePoint、Media.cuePoints、Media.removeCuePoint()


Media.horizontal

适用于

MediaController

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.horizontal

描述

属性；确定 MediaController 组件是以垂直方向显示还是以水平方向显示。true 值指示组件将以水平方向显示；false 值指示以垂直方向显示。设置为 false 时，播放头和加载进度指示器从下往上移动。默认值为 true。

范例

下面的范例将以垂直方向显示 MediaController 组件：

myMedia.horizontal = false;


Media.mediaType

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.mediaType

描述

属性；保存要播放的媒体的类型值。可以选择 FLV 和 MP3 格式。默认值为 "FLV"。请参阅导入 Macromedia Flash 视频 (FLV) 文件。

范例

下面的范例确定当前播放的媒体类型：

var currentMedia = myMedia.mediaType;

另请参见

Media.setMedia()


Media.pause()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.pause()

参数

无。

返回

无，

说明

方法；在当前位置暂停播放头。

示例

以下代码会暂停播放。

myMedia.pause();


Media.play()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.play(startingPoint)

参数

startingPoint 一个非负整数值，指示媒体应开始播放的开始点（以秒为单位）。

返回

无。

说明

方法；在给定的开始点播放与组件实例关联的媒体。默认值为 playheadTime 的当前值。

示例

以下代码指示媒体组件应在 120 秒处开始播放：

myMedia.play(120);

另请参见

Media.pause()


Media.playheadChange

适用于

MediaController、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.playheadChange = function(eventObject){
  // 此处插入您的代码
}
myMedia.addEventListener("playheadChange", listenerObject)

描述

事件；当用户移动播放滑块或单击“转到开头”或“转到结尾”按钮时，由 MediaController 或 MediaPlayback 组件进行广播。Media.playheadChange 事件对象具有以下属性：

detail 一个数字，指示已播放的媒体的百分比。

type 字符串 "playheadChange"。

范例

下面的范例在用户停止拖动播放头时将已播放的百分比发送到“输出”面板：

var controlListen = new Object();
controlListen.playheadChange = function(eventObject){
  trace(eventObject.detail);
}
myMedia.addEventListener("playheadChange", controlListen);


Media.playheadTime

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.playheadTime

描述

属性；对于正在播放的媒体时间轴，保存播放头的当前位置（以秒为单位）。默认值设置为播放头的位置。

范例

下面的范例为播放头位置设置一个变量，以秒为单位表示：

var myPlayhead = myMedia.playheadTime;


Media.playing

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.playing

说明

只读属性；返回一个布尔值，指示媒体是否正在播放。true 值指示媒体正在播放；false 指示媒体由用户暂停。

示例

以下代码确定媒体是正在播放还是暂停：

if(myMedia.playing == true){
  some function;
}

另请参见

Media.change


Media.preferredHeight

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.preferredHeight

描述

属性；根据 FLV 的默认高度值设置。此属性仅适用于 FLV 媒体，因为高度对于 MP3 文件是固定的。此属性可以用于设置高度和宽度参数（加上组件自身的边距）。如果未设置 FLV 媒体，默认值为 undefined。

范例

下面的范例根据正在播放的实例调整 MediaPlayback 实例大小，并说明了组件实例所需的边距像素：

if(myPlayback.contentPath = !undefined){
  var mediaHeight = myPlayback.preferredHeight;
  var mediaWidth = myPlayback.preferredWidth;
  myPlayback.setSize((mediaWidth + 20), (mediaHeight + 70));
  }


Media.preferredWidth

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.preferredWidth

描述

属性；根据 FLV 的默认宽度值设置。默认值是 undefined。

范例

下面的范例设置变量 mediaWidth 的所需宽度：

var mediaWidth = myMedia.preferredWidth;


Media.progress

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.progress = function(eventObject){
  // 此处插入您的代码
}
myMedia.addEventListener("progress", listenerObject)

描述

事件；连续生成，直到媒体已完全下载。Media.progress 事件对象具有以下属性：

target 对 MediaDisplay 或 MediaPlayback 组件实例的引用。

type 字符串 "progress"。

范例

下面的范例会侦听进程：

var myProgressListener = new Object();
myProgressListener.progress = function(){
  // 使 lightMovieClip 在出现进程时闪烁
  var lightVisible = lightMovieClip.visible;
  lightMovieClip.visible = !lightVisible;
}


Media.removeAllCuePoints()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.removeAllCuePoints()

参数

无。

返回

无。

说明

方法；删除与组件实例关联的所有线索点对象。

示例

以下代码会删除所有线索点对象：

myMedia.removeAllCuePoints();

另请参见

Media.addCuePoint()、Media.cuePoints、Media.removeCuePoint()


Media.removeCuePoint()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.removeCuePoint(cuePoint)

参数

cuePoint 对先前已通过 Media.addCuePoint() 指定的线索点对象的引用。

返回

无。

说明

方法；删除与组件实例关联的特定线索点。

示例

以下代码会删除名为 myCuePoint 的线索点：

myMedia.removeCuePoint(getCuePoint("myCuePoint"));

另请参见

Media.addCuePoint()、Media.cuePoints、Media.removeAllCuePoints()


Media.setMedia()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.setMedia(contentPath, mediaType)

参数

contentPath 一个字符串，指示要播放的媒体的路径和文件名。

mediaType 一个字符串，用于将媒体类型设置为 FLV 或 MP3。此参数是可选的。

返回

无。

说明

方法；使用 URL 参量将媒体类型和路径设置为指定的媒体类型。contentPath 的默认值未定义。

此方法提供了设置 MediaPlayback 和 MediaDisplay 组件的内容路径和媒体类型的唯一受支持的方法。

示例

以下代码为要播放的组件实例提供了新媒体。

myMedia.setMedia("http://www.RogerMoore.com/moonraker.flv", "FLV");


Media.stop()

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.stop()

参数

无。

返回

无。

说明

方法；停止播放头并将其移到位置 0，即媒体的开头。

示例

以下代码停止播放头，并将其移至时间 = 0 处。

myMedia.stop()


Media.totalTime

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.totalTime

描述

属性；媒体的总长度（以秒为单位）。由于 FLV 文件格式在完全加载之前不向媒体组件提供播放时间，因此需要手动输入 Media.totalTime，以便播放滑块可以准确地反映媒体的实际播放时间。MP3 文件的默认值为媒体的播放时间。对于 FLV 文件，默认值为 undefined。

不能为 MP3 文件设置此属性，因为信息包含在 Sound 对象内。

范例

下面的范例为 FLV 媒体设置播放时间（以秒为单位）：

myMedia.totalTime = 151;


Media.volume

适用于

MediaDisplay、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

myMedia.volume

描述

属性；存储音量设置整数值，范围为 0 到 100。此属性的默认值为 75。

范例

下面的范例为媒体播放设置最大音量：

myMedia.volume = 100;

另请参见

Media.volume、Media.pause()


Media.volume

适用于

MediaController、MediaPlayback

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.volume = function(eventObject){
  // 此处插入您的代码
}
myMedia.addEventListener("volume", listenerObject)

描述

事件；当音量值由用户调整时进行广播。Media.volume 事件对象具有以下属性：

detail 0 到 100 之间的一个整数值，指示音量级别。

type 字符串 "volume"。

范例

下面的范例将通知用户音量已被调整：

var myVolListener = new Object();
myVolListener.volume = function(){
   mytextfield.text = "Volume adjusted!";
}
myMedia.addEventListener("volume", myVolListener);

另请参见

Media.volume


关于 Menu 组件（仅限 Flash Professional）

Menu 组件使用户可以从弹出式菜单中选择一个项目，这与大多数软件应用程序的“文件”或“编辑”菜单很相似。

通常在用户滑过或单击一个像按钮的菜单激活器时，会在应用程序中打开 Menu。还可以对 Menu 组件编写脚本，使其在用户按下特定的键时打开。

Menu 组件始终在运行时动态创建。必须将组件从“组件”面板添加到文档，然后删除它以将其添加到库中。然后，使用以下代码通过动作脚本创建菜单：

var myMenu = mx.controls.Menu.createMenu(parent, menuDataProvider);

使用以下代码在应用程序中打开菜单：

myMenu.show(x, y);

menuShow 事件在菜单呈现的前一刻对所有 Menu 实例的侦听器进行广播，从而可以更新菜单项的状态。类似地，在 Menu 实例隐藏后，会立即广播 menuHide 事件。

菜单中的项目是以 XML 进行描述的。有关详细信息，请参阅了解 Menu 组件：视图和数据。

无法使用屏幕阅读器来访问 Menu 组件。


与 Menu 组件进行交互（仅限 Flash Professional）

可以使用鼠标和键盘与 Menu 组件进行交互。

Menu 打开后会保持可见，直到它由脚本关闭，或者用户在菜单外部或启用的菜单项内部单击鼠标。

进行单击即会选中菜单项，但以下菜单项类型除外：

  • 禁用的菜单项或分隔符 滚动和单击不起作用（菜单仍保持可见）。
  • 子菜单的锚记 滚动会激活子菜单；单击无效；滚动到子菜单的项目以外的任何项目会关闭子菜单。

选中一个项目时，Menu.change 事件会发送到菜单的所有侦听器、菜单会被隐藏，而且发生以下动作（取决于项目类型）：

  • check 切换该项目的 selected 属性。
  • radio 该项目成为其单选按钮组的当前选项。

移动鼠标会触发 Menu.rollOut 和 Menu.rollOver 事件。

在菜单外部按鼠标会关闭菜单并触发 Menu.menuHide 事件。

在启用的项目内部松开鼠标会按以下方式影响项目类型：

  • check 切换该项目的 selected 属性。
  • radio 项目的 selected 属性设置为 true，而且上次在单选按钮组中所选项目的 selected 属性设置为 false。会设置相应单选按钮组对象的 selection 属性，以引用选中的菜单项。
  • 未定义和分层菜单的父项 切换分层菜单的可见性。

当 Menu 实例从单击或 Tab 键切换中获得焦点时，您可以使用以下按键来控制它：

按键 | 描述
向下箭头 向上箭头 | 在菜单行中向下和向上移动选区。选区在顶部或底部行循环。
右箭头 | 打开子菜单，或者将选区移动到菜单栏（如果存在菜单栏）中的下一个菜单。
左箭头 | 关闭子菜单并将焦点返回到父菜单（如果存在父菜单），或者将选区移动到菜单栏（如果存在菜单栏）中的上一个菜单。
Enter 键 | 打开子菜单，或者如果不存在子菜单，在某一行单击并松开。

注意：如果打开了某个菜单，可以按 Tab 键移出该菜单。必须要进行选择，或者按 Escape 键退出菜单。


使用 Menu 组件（仅限 Flash Professional）

可以使用 Menu 组件创建具有可分别选择的选项的菜单，就像大多数软件应用程序的“文件”和“编辑”菜单。还可以使用 Menu 组件创建上下文关联菜单，这些菜单在用户按下热点或组合键时出现。与 MenuBar 组件一起使用 Menu 组件来创建水平菜单栏，它带有在每个菜单栏项目下扩展的菜单。

与标准的桌面菜单一样，Menu 组件支持功能属于以下一般类别的菜单项：

命令激活器 这些项目会触发事件；可以编写代码处理这些事件。

子菜单锚记 这些项目是用于打开子菜单的锚记。

单选按钮 这些项目成组使用；一次只能选择一个项目。

复选框项目 这些项目代表一个布尔值（true 或 false）。

分隔符 这些项目提供简单的水平线，将菜单中的项目在外观上分为不同的组。

了解 Menu 组件：视图和数据

从概念上来说，Menu 组件由数据模型和显示数据的视图组成。Menu 类就是这种视图，并且包含可视的配置方法。MenuDataProvider 类向全局 XML 原型对象添加方法（很类似于 DataProvider 类对 Array 对象所作的操作）；这些方法使您可以在外部构建数据提供程序并将其添加到多个菜单实例中。数据提供程序会向其所有客户端视图广播所有更改。（请参阅MenuDataProvider 类。）

Menu 实例是与各个菜单项对应的 XML 元素的分层集合。属性定义相应的菜单项在屏幕上的行为和外观。集合与 XML 之间可以方便地来回转换，它用于描述菜单（menu 标签）和项目（menuitem 标签）。内置的动作脚本 XML 类是 Menu 组件底层模型的基础。

具有两个项目的简单菜单可在 XML 中以两个菜单项子元素进行描述：

<menu>
  <menuitem label="Up" />
  <menuitem label="Down" />
</menu>

注意：XML 节点的标签名称（menu 和 menuitem）不重要；属性及其嵌套关系在菜单中使用。

关于分层菜单

要创建分层菜单，应在父 XML 元素中嵌入 XML 元素，如下所示：

<menu>
    <menuitem label="MenuItem A" >
      <menuitem label="SubMenuItem 1-A" />
      <menuitem label="SubMenuItem 2-A" />
    </menuitem>
    <menuitem label="MenuItem B" >
      <menuitem label="SubMenuItem 1-B" />
      <menuitem label="SubMenuItem 2-B" />
    </menuitem>
</menu>

注意：这会将父菜单项转换为弹出式菜单锚记，因此在选中时不会生成事件。

关于菜单项 XML 属性

菜单项 XML 元素的属性确定显示的内容、菜单项的行为，以及如何向动作脚本揭示此菜单项。下表描述了 XML 菜单项的属性：

属性名称 | 类型 | 默认值 | 描述
label | String | undefined | 代表菜单项的显示文本。此属性对所有项目类型是必需的，除了 separator 类型。
type | separator、check、radio、normal 或 undefined | undefined | 菜单项类型：separator、check box、radio button 或 normal（命令或子菜单激活器）。如果此属性不存在，则默认值为 normal。
icon | String | undefined | 图像资源的链接标识符。该属性不是必需的属性。此属性不适用于 check、radio 或 separator 类型。
instanceName | String | undefined | 一个标识符，可以用于引用根菜单实例中的菜单项实例。例如，名为 yellow 的菜单项可以引用为 myMenu.yellow。该属性不是必需的属性。
groupName | String | undefined | 一个标识符，可以用于关联单选按钮组中的几个单选按钮项，并显示根菜单实例中的单选按钮组的状态。例如，名为 colors 的单选按钮组可以引用为 myMenu.colors。只有类型 radio 才需要此属性。
selected | false、true 或 false 或 true（字符串或布尔值） | false | 一个布尔值，指示 check 或 radio 项是处于开启 (true) 还是关闭状态 (false)。该属性不是必需的属性。
enabled | false、true 或 false 或 true（字符串或布尔值） | true | 一个布尔值，指示是 (true) 否 (false) 可以选择此菜单项。该属性不是必需的属性。


关于菜单项类型

有四种菜单项，由 type 属性指定：

<menu>
    <menuitem label="Normal Item" />
    <menuitem type="separator" />
    <menuitem label="Checkbox Item" type="check" instanceName="check_1"/>
    <menuitem label="RadioButton Item" type="radio" groupName="radioGroup_1" />
</menu>

普通菜单项

Normal Item 菜单项不具有 type 属性，这意味着 type 属性默认为 normal。Normal 项目可以是命令激活器或子菜单激活器，这取决于它们是否具有嵌套的子项目。

分隔符菜单项

type 属性设置为 separator 的菜单项用作菜单中的外观分隔符。下面的 XML 会创建三个菜单项：Top、Middle 和 Bottom，各项之间带有分隔符：

<menu>
    <menuitem label="Top" />
    <menuitem type="separator" />
    <menuitem label="Middle" />
    <menuitem type="separator" />
    <menuitem label="Bottom" />
</menu>

所有 separator 项目被禁用。单击或滑过分隔符不起作用。

复选框菜单项

type 属性设置为 check 的菜单项用作菜单中的复选框项目；当 selected 属性设置为 true 时，在菜单项的标签旁边会出现一个复选标记。当选中某个复选框时，其状态会自动切换，而且会对根菜单上的所有侦听器广播 change 事件。下面的范例定义三个复选框菜单项：

<menu>
    <menuitem label="Apples" type="check" instanceName="buyApples" selected="true" />
    <menuitem label="Oranges" type="check" instanceName="buyOranges" selected="false" />
    <menuitem label="Bananas" type="check" instanceName="buyBananas" selected="false" />
</menu>

可以在动作脚本中使用实例名称直接从菜单本身访问菜单项，如下例所示：

myMenu.setMenuItemSelected(myMenu.buyapples, true);
myMenu.setMenuItemSelected(myMenu.buyoranges, false);

注意：selected 属性只能使用 setMenuItemSelected(item, b) 方法修改。可以直接检查 selected 属性，但它返回 true 或 false 的 String 值。

单选按钮菜单项

可以将 type 属性设置为 radio 的菜单项分到一组，使得一次只能选择其中一个项目。通过为菜单项指定与其 groupName 属性相同的值，可以创建单选按钮组，如下例所示：

<menu>
    <menuitem label="Center" type="radio" groupName="alignment_group"
      instanceName="center_item"/>
    <menuitem type="separator" />
    <menuitem label="Top"    type="radio" groupName="alignment_group" />
    <menuitem label="Bottom" type="radio" groupName="alignment_group" />
    <menuitem label="Right"  type="radio" groupName="alignment_group" />
    <menuitem label="Left"   type="radio" groupName="alignment_group" />
</menu>

当用户选择一个项目时，当前的选项会自动改变，而且会对根菜单上的所有侦听器广播 change 事件。在动作脚本中，使用 selection 属性可访问单选按钮组中当前选中的项目，如下所示：

var selectedMenuItem = myMenu.alignment_group.selection;
myMenu.alignment_group = myMenu.center_item;

每个 groupName 值在根菜单实例的范围内必须唯一。

注意：selected 属性只能使用 setMenuItemSelected(item, b) 方法修改。可以直接检查 selected 属性，但它返回 true 或 false 的 String 值。

向动作脚本揭示菜单项

可以在 instanceName 属性中为每个菜单项指定唯一的标识符，从而能从根菜单直接访问菜单项。例如，以下 XML 代码为每个菜单项提供了 instanceName 属性：

<menu>
    <menuitem label="Item 1" instanceName="item_1" />
    <menuitem label="Item 2" instanceName="item_2" >
      <menuitem label="SubItem A" instanceName="sub_item_A" />
      <menuitem label="SubItem B" instanceName="sub_item_B" />
    </menuitem>
</menu>

可以使用动作脚本直接从 Menu 组件访问相应的对象实例及其属性，如下所示：

var aMenuItem = myMenu.item_1;
myMenu.setMenuItemEnabled(item_2, true);
var aLabel = myMenu.sub_item_A.label;

注意：每个 instanceName 在根菜单组件实例（包括根菜单的所有子菜单）的范围内必须是唯一的。


关于初始化对象属性

initObject（初始化对象）参数是关于创建 Menu 组件的布局的一个基本概念。initObject 参数是具有属性的一个对象。每个属性代表菜单项的一个可能 XML 属性。（有关 initObject 参数中所允许属性的说明，请参阅关于菜单项 XML 属性。）

initObject 参数用于以下方法：

  • Menu.addMenuItem()
  • Menu.addMenuItemAt()
  • MenuDataProvider.addMenuItem()
  • MenuDataProvider.addMenuItemAt()

下面的范例创建 initObject 参数，它带有两个属性 - label 和 instanceName：

var i = myMenu.addMenuItem({label:"myMenuItem", instanceName:"myFirstItem"});

几个属性可以协同工作来创建特定的菜单项类型。通过指定特定的属性来创建特定类型的菜单项（普通、分隔符、复选框或单选按钮）。

例如，可以使用以下 initObject 参数对普通菜单项进行初始化：

myMenu.addMenuItem({label:"myMenuItem", enabled:true, icon:"myIcon", instanceName:"myFirstItem"});

可以使用以下 initObject 参数对分隔符菜单项进行初始化：

myMenu.addMenuItem({type:"separator"});

可以使用以下 initObject 参数对复选框菜单项进行初始化：

myMenu.addMenuItem({type:"check", label:"myMenuCheck", enabled:false, selected:true, instanceName:"myFirstCheckItem"})

可以使用以下 initObject 参数对单选按钮菜单项进行初始化：

myMenu.addMenuItem({type:"radio", label:"myMenuRadio1", enabled:true, selected:false, groupName:"myRadioGroup" instanceName:"myFirstRadioItem"})

请注意，应该将菜单项的 instanceName、groupName 和 type 属性当作只读，这很重要。应该仅在创建项目（例如，在对 addMenuItem() 的调用中）时设置这些属性。在创建后修改这些属性可能会产生不可预料的结果。


Menu 组件参数

Menu 组件没有创作参数。

可以使用 Menu 组件的属性、方法和事件编写动作脚本来控制 Menu 组件。有关详细信息，请参阅Menu 类（仅限 Flash Professional）。


创建具有 Menu 组件的应用程序

在下面的范例中，应用程序开发人员正构建一个应用程序，并使用 Menu 组件显示一些用户可以发出的命令，例如“打开”、“关闭”、“保存”等。

创建具有 Menu 组件的应用程序：

  1. 选择“文件”>“新建”，然后创建 Flash 文档。
  2. 将 Menu 组件从“组件”面板拖到舞台上并将其删除。

    此操作会将 Menu 组件添加到库中，并且不会将其添加到应用程序中。菜单是使用动作脚本动态创建的。

  3. 将 Button 组件从“组件”面板拖到舞台上。

    单击按钮会激活菜单。

  4. 在属性检查器中，为按钮指定实例名称 commandBtn，然后将其文本属性更改为命令。
  5. 在第一帧上的“动作”面板中，输入以下代码以添加事件侦听器，从而侦听 commandBtn 实例上的 click 事件：
    var listener = new Object();
listener.click = function(evtObj){
    var button = evtObj.target;
  if(button.menu == undefined) {
        // 创建 Menu 实例并添加一些项目
        button.menu = mx.controls.Menu.createMenu();
        button.menu.addMenuItem("Open");
        button.menu.addMenuItem("Close");
        button.menu.addMenuItem("Save");
        button.menu.addMenuItem("Revert");

        // 添加更改侦听器以捕获项目选择
        var changeListener = new Object();
        changeListener.change = function(event) {
      var item = event.menuItem;
      trace("Item selected:" + item.attributes.label);
        }
        button.menu.addEventListener("change", changeListener);
    }
  button.menu.show(button.x, button.y + button.height);
}
commandBtn.addEventListener("click", listener);
  6. 选择“控制”>“测试影片”。

    单击“命令”按钮以查看菜单是否出现。选择菜单项，以查看 trace 动作在“输出”窗口中报告选中了哪个项目。

使用服务器中的 XML 数据创建并填充菜单：

  1. 选择“文件”>“新建”，然后创建 Flash 文档。
  2. 将 Menu 组件从“组件”面板拖到舞台上并将其删除。

    此操作会将 Menu 组件添加到库中，并且不会将其添加到应用程序中。菜单是使用动作脚本动态创建的。

  3. 在“动作”面板中，将以下代码添加到第一帧，以创建菜单和添加一些项目：
    var myMenu = mx.controls.Menu.createMenu();
// 导入 XML 文件
var loader = new XML();
loader.menu = myMenu;
loader.ignoreWhite = true;
loader.onLoad = function(success) {
  // 当数据到达时，传给菜单
  if(success) {
    this.menu.dataProvider = this.firstChild;
  }
};
loader.load(url);

    注意：菜单项由 XML 文档的第一个子项的子项进行描述。

  4. 选择“控制”>“测试影片”。

使用良构的 XML 字符串创建并填充菜单：

  1. 选择“文件”>“新建”，然后创建 Flash 文档。
  2. 将 Menu 组件从“组件”面板拖到舞台上并将其删除。

    此操作会将 Menu 组件添加到库中，并且不会将其添加到应用程序中。菜单是使用动作脚本动态创建的。

  3. 在“动作”面板中，将以下代码添加到第一帧，以创建菜单和添加一些项目：
    // 创建包含菜单定义的 XML 字符串
var s = "";
s += "<menu>";
s += "<menuitem label='Undo' />";
s += "<menuitem type='separator' />";
s += "<menuitem label='Cut' />";
s += "<menuitem label='Copy' />";
s += "<menuitem label='Paste' />";
s += "<menuitem label='Clear' />";
s += "<menuitem type='separator' />";
s += "<menuitem label='Select All' />";
s += "</menu>";

// 通过字符串创建 XML 对象
var xml = new XML(s);
xml.ignoreWhite = true;

// 通过 XML 对象的第一个子项创建菜单
var myMenu = mx.controls.Menu.createMenu(_root, xml.firstChild);
  4. 选择“控制”>“测试影片”。

使用 MenuDataProvider 类创建并填充菜单：

  1. 选择“文件”>“新建”，然后创建 Flash 文档。
  2. 将 Menu 组件从“组件”面板拖到舞台上并将其删除。

    此操作会将 Menu 组件添加到库中，并且不会将其添加到应用程序中。菜单是使用动作脚本动态创建的。

  3. 在“动作”面板中，将以下代码添加到第一帧，以创建菜单和添加一些项目：
      // 创建用作出厂设置的 XML 对象
  var xml = new XML();

  // 接下来创建的项目不会出现在菜单中。
  // 'createMenu' 方法调用（见以下）预期会
  // 接收到根元素，其子对象将成为
  // 项目。这只是一个创建该
  // 根元素并为其指定一个便利名称
  // 的简单方法。
  var theMenuElement = xml.addMenuItem("Edit");

  // 添加菜单项
  theMenuElement.addMenuItem({label:"Undo"});
  theMenuElement.addMenuItem({type:"separator"});
  theMenuElement.addMenuItem({label:"Cut"});
  theMenuElement.addMenuItem({label:"Copy"});
  theMenuElement.addMenuItem({label:"Paste"});
  theMenuElement.addMenuItem({label:"Clear", enabled:"false"});
  theMenuElement.addMenuItem({type:"separator"});
  theMenuElement.addMenuItem({label:"Select All"});
  // 创建 Menu 对象
  var theMenuControl = mx.controls.Menu.createMenu(_root, theMenuElement);
  4. 选择“控制”>“测试影片”。


自定义 Menu 组件

菜单会调整其自身的大小，以在水平方向适合其最宽的文本。还可以调用 setSize() 方法调整组件大小。图标应调整到 16 个像素乘 16 个像素的最大大小。

在 Menu 组件中使用样式

可以调用 setStyle() 方法来更改菜单、其项目和子菜单的样式。Menu 组件支持下列光晕样式：

样式 | 描述
themeColor | 菜单背景色。这是唯一不继承样式值的颜色样式。
color | 菜单项的文本标签的颜色。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；normal 或 italic。
fontWeight | 字体粗细；normal 或 bold。
rollOverColor | 菜单项的转滚颜色。
selectionColor | 选中的项目和包含子菜单的项目。
selectionDisabledColor | 选中的项目和包含子菜单且禁用的项目。
textRollOverColor | 滑过项目时文本的颜色。
textDecoration | 文本修饰；none 或 underline。
textDisabledColor | 禁用文本的颜色。
textSelectedColor | 选定菜单项的文本颜色。
popupDuration | 当菜单打开时，过渡的持续时间。值为 0 表示没有过渡。

在 Menu 组件中使用外观

有关此功能的最新信息，请单击“帮助”选项卡顶部的“更新”按钮。


Menu 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > ScrollView > ScrollSelectList > Menu

动作脚本类名称 mx.controls.Menu

Menu 类的方法摘要

方法 | 描述
Menu.addMenuItem()> | 向 Menu 添加菜单项。
Menu.addMenuItemAt()> | 将菜单项添加到 Menu 的特定位置。
Menu.createMenu()> | 创建 Menu 类的实例。这是静态方法。
Menu.getMenuItemAt()> | 获取对指定位置的菜单项的引用。
Menu.hide()> | 关闭菜单。
Menu.indexOf()> | 返回给定菜单项的索引。
Menu.removeAll()> | 删除菜单中的所有项目。
Menu.removeMenuItemAt()> | 删除 Menu 中特定位置处的菜单项
Menu.setMenuItemEnabled()> | 指示菜单项是 (true) 否 (false) 启用。
Menu.setMenuItemSelected()> | 指示菜单项是 (true) 否 (false) 被选中。
Menu.show()> | 在特定的位置或上次的位置打开菜单。

继承 UIObject、UIComponent、ScrollView 和 ScrollSelectList 的所有方法。

Menu 类的属性摘要

属性 | 描述
Menu.dataProvider> | 菜单的数据源。

继承 UIObject、UIComponent、ScrollView 和 ScrollSelectList 的所有属性。

Menu 类的事件摘要

事件 | 描述
Menu.change> | 当用户选择项目时进行广播。
Menu.menuHide> | 当菜单关闭时进行广播。
Menu.menuShow> | 当菜单打开时进行广播。
Menu.rollOut> | 当指针滑离项目时进行广播。
Menu.rollOver> | 当指针滑过项目时进行广播。

继承 UIObject、UIComponent、ScrollView 和 ScrollSelectList 的所有事件


Menu.addMenuItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myMenu.addMenu(initObject)

用法 2：

myMenu.addMenu(childMenuItem)

参数

initObject 一个对象，它包含对菜单项的属性进行初始化的属性。请参阅关于菜单项 XML 属性。

childMenuItem 一个 XML 节点对象。

返回

对添加的 XML 节点的引用。

说明

方法；用法 1 在菜单末尾添加菜单项。该菜单项是根据在 initObject 参数中提供的值构建的。用法 2 在菜单末尾添加菜单项，该菜单项是预先建立的 XML 节点（为 XML 对象形式）。添加预先存在的节点会将该节点从其先前的位置上删除。

示例

用法 1：下面的范例将菜单项加到菜单中：

myMenu.addMenuItem({ label:"Item 1", type:"radio", selected:false, enabled:true, instanceName:"radioItem1", groupName:"myRadioGroup" } );

用法 2：下面的范例将一个菜单中的某个节点移到另一个菜单的根：

myMenu.addMenuItem(mySecondMenu.getMenuItemAt(mySecondMenu, 3));


Menu.addMenuItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myMenu.addMenuItemAt(index, initObject)

用法 2：

myMenu.addMenuItemAt(index, childMenuItem)

参数

index 一个整数，指示项目的添加顺序（在多个子节点之间）。

initObject 一个对象，它包含对菜单项的属性进行初始化的属性。请参阅关于菜单项 XML 属性。

childMenuItem 一个 XML 节点对象。

返回

对添加的 XML 节点的引用。

说明

方法；用法 1 在菜单中的指定位置添加菜单项（子节点）。该菜单项是根据在 initObject 参数中提供的值构建的。用法 2 在菜单中的指定位置添加菜单项，该菜单项是预先建立的 XML 节点（为 XML 对象形式）。添加预先存在的节点会将该节点从其先前的位置上删除。

示例

用法 1：以下范例将一个新节点添加为菜单根的第二个子项：

myMenu.addMenuItemAt(1, { label:"Item 1", instanceName:"radioItem1", type:"radio", selected:false, enabled:true, groupName:"myRadioGroup" } );

用法 2：下面的范例将一个菜单中的某个节点移到另一个菜单的根的第四个子项：

myMenu.addMenuItemAt(3, mySecondMenu.getMenuItemAt(mySecondMenu, 3));


Menu.change

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.change = function(eventObject){
  // 此处插入您的代码
}
myMenu.addEventListener("change", listenerObject)

描述

事件；每当用户造成菜单更改时对所有注册的侦听器进行广播。

V2 组件使用调度程序-侦听器事件模型。在 Menu 组件广播 change 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Menu.change 事件的事件对象具有以下附加属性：

  • menuBar 对作为目标 Menu 的父级的 MenuBar 实例的引用。当作为目标的 Menu 不属于 Menu 时，此值为未定义。
  • menu 对目标项目所在的 Menu 实例的引用。
  • menuItem 一个 XML 节点，是选中的菜单项。
  • groupName 一个字符串，指示项目所属的单选按钮组的名称。如果项目未位于单选按钮组中，此值为未定义。

有关事件对象的详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 listener 的处理函数，并将其传递到 myMenu.addEventListener() 方法，作为第二个参数。change 处理函数在 event 参数中捕获事件对象。在广播 change 事件时，trace 语句被发送到“输出”面板，如下所示：

listener = new Object();
listener.change = function(evt){
    trace("Menu item chosen:"+evt.menuItem.attributes.label);
}
myMenu.addEventListener("change", listener);


Menu.createMenu()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

Menu.createMenu(parent, mdp)

参数

parent MovieClip 实例。影片剪辑是包含新 Menu 实例的父组件。此参数是可选的。

mdp 描述此 Menu 实例的 MenuDataProvider 实例。此参数是可选的。

返回

对新的 Menu 实例的引用。

说明

方法（静态）；对 Menu 实例进行实例化，并且选择性地将其附加到指定的父项，以指定的 MenuDataProvider 作为菜单项的数据源。

如果 parent 参量被省略或为 null，则 Menu 被附加到 _root 时间轴。

如果 mdp 参量被省略或为 null，则菜单没有菜单项；必须调用 addMenu() 或 setDataProvider() 方法来填充菜单。

示例

在下面的范例中，第 1 行创建一个 MenuDataProvider，它是用 MenuDataProvider 类的方法修饰的 XML 对象。下一行添加带有子菜单（“文件”、“项目”和“资源”）的菜单项（“新建”）。下一个代码块向主菜单添加更多项目。第三个代码块创建附加到 myParentClip 的空菜单，并用数据源 myMDP 填充该菜单，然后在坐标 100, 20 处打开它，如下所示：

var myMDP = new XML();

var newItem = myMDP.addMenuItem({label:"New"});
    newItem.addMenuItem({label:"File..."});
    newItem.addMenuItem({label:"Project..."});
    newItem.addMenuItem({label:"Resource..."});

myMDP.addMenuItem({label:"Open", instanceName:"miOpen"});
myMDP.addMenuItem({label:"Save", instanceName:"miSave"});
myMDP.addMenuItem({type:"separator"});
myMDP.addMenuItem({label:"Quit", instanceName:"miQuit"});

var myMenu = mx.controls.Menu.createMenu(myParentClip, myMDP);

myMenu.show(100, 20);

要测试此代码，将其放到主时间轴的第 1 帧上的“动作”面板中。将 Menu 组件从“组件”面板拖到舞台上并将其删除。这会将其添加到库中，而不放到文档中。


Menu.dataProvider

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.dataProvider

描述

属性；Menu 组件中项目的数据源。

Menu.dataProvider 是 XML 节点对象。设置此属性会替换 Menu 的现有数据源。

默认值未定义。

注意：所有 XML 或 XMLNode 实例在与 Menu 组件一起使用时，会自动接收 MenuDataProvider API 的方法和属性。

范例

下面的范例导入 XML 文件，并将其指定给 Menu.dataProvider 属性：

var myMenuDP = new XML();
myMenuDP.load("http://myServer.myDomain.com/source.xml");
myMenuDP.onLoad = function(){
  myMenuControl.dataProvider = myMenuDP;
}


Menu.getMenuItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.getMenuItemAt(index)

参数

index 一个整数，指示菜单中节点的索引。

返回

对指定节点的引用。

说明

方法；返回对菜单的指定子节点的引用。

示例

下面的范例获取对 myMenu 中的第二个子节点的引用，并将值复制到变量 myItem 中：

var myItem = myMenu.getMenuItemAt(1);


Menu.hide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.hide()

参数

index Menu 项的索引。

返回

无。

说明

方法；关闭具有可选过渡效果的菜单。

示例

下面的范例回缩展开的菜单：

myMenu.hide();

另请参见

Menu.show()


Menu.indexOf()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.indexOf(item)

参数

item 对描述菜单项的 XML 节点的引用。

返回

指定的菜单项的索引，或者如果项目不属于此菜单，则为未定义。

说明

方法；返回此菜单实例中的指定菜单项的索引。

示例

下面的范例向父项目添加菜单项，然后获取此项目在其父项目中的索引：

var myItem = myMenu.addMenuItem({label:"That item"});
var myIndex = myMenu.indexOf(myItem);


Menu.menuHide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.menuHide = function(eventObject){
  // 此处插入您的代码
}
myMenu.addEventListener("menuHide", listenerObject)

描述

事件；每当菜单关闭时，向所有已注册的侦听器广播。

V2 组件使用调度程序-侦听器事件模型。在 Menu 组件调度 menuHide 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法，并将处理函数的名称和侦听器对象的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Menu.menuHide 事件的事件对象具有两个附加属性：

  • menuBar对作为目标 Menu 的父项的 MenuBar 实例的引用。当作为目标的 Menu 不属于 MenuBar 时，此值为未定义。
  • menu 对隐藏的 Menu 实例的引用。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例定义了名为 form 的处理函数，并将其作为第二个参数传递到 myMenu.addEventListener() 方法。menuHide 处理函数在 event 参数中捕获事件对象。在广播 menuHide 事件时，trace 语句被发送到“输出”面板，如下所示：

form = new Object();
form.menuHide = function(evt){
    trace("Menu closed:"+evt.menu);
}
myMenu.addEventListener("menuHide", form);

另请参见

Menu.menuShow


Menu.menuShow

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.menuShow = function(eventObject){
  // 此处插入您的代码
}
myMenu.addEventListener("menuShow", listenerObject)

描述

事件；当菜单打开时，向所有已注册的侦听器广播。所有父节点打开菜单以显示其子项。

V2 组件使用调度程序-侦听器事件模型。在 Menu 组件调度 menuShow 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法，并将处理函数的名称和侦听器对象作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Menu.menuShow 事件的事件对象具有两个附加属性：

  • menuBar 对作为目标 Menu 的父级的 MenuBar 实例的引用。当作为目标的 Menu 不属于 Menu 时，此值为未定义。
  • menu 对显示的 Menu 实例的引用。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例定义了名为 form 的处理函数，并将其作为第二个参数传递到 myMenu.addEventListener() 方法。menuShow 处理函数在 evtObject 参数中捕获事件对象。在广播 menuShow 事件时，trace 语句被发送到“输出”面板，如下所示：

form = new Object();
form.menuShow = function(evt){
    trace("Menu opened:"+evt.menu);
}
myMenu.addEventListener("menuShow", form);

另请参见

Menu.menuHide


Menu.removeAll()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.removeAll()

参数

无。

返回

无。

说明

方法；删除所有项目并刷新菜单。

示例

下面的范例删除菜单中的所有节点：

myMenu.removeAll();


Menu.removeMenuItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.removeMenuItemAt(index)

参数

index 要删除的菜单项的索引。

返回

对返回的菜单项（XML 节点）的引用。如果在该位置不存在任何项目，则该值是未定义的。

说明

方法；删除指定索引处的菜单项及其所有子项。如果在该索引不存在任何菜单项，则调用此方法没有效果。

示例

下面的范例删除索引为 3 的菜单项：

var item = myMenu.removeMenuItemAt(3);


Menu.rollOut

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.rollOut = function(eventObject){
  // 此处插入您的代码
}
myMenu.addEventListener("rollOut", listenerObject)

描述

事件；当指针滑离菜单项时，向所有已注册的侦听器广播。

V2 组件使用调度程序-侦听器事件模型。在 Menu 组件广播 rollOut 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Menu.rollOut 事件的事件对象具有一个附加属性：

  • menuItem 对指针滑离的菜单项（XML 节点）的引用。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例定义了名为 form 的处理函数，并将其作为第二个参数传递到 myMenu.addEventListener() 方法。rollOut 处理函数在 event 参数中捕获事件对象。在广播 rollOut 事件时，trace 语句被发送到“输出”面板，如下所示：

form = new Object();
form.rollOut = function(evt){
    trace("Menu rollOut:"+evt.menuItem.attributes.label);
}
myMenu.addEventListener("rollOut", form);


Menu.rollOver

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.rollOver = function(eventObject){
  // 此处插入您的代码
}
myMenu.addEventListener("rollOver", listenerObject)

描述

事件；当指针滑过菜单项时，向所有已注册的侦听器广播。

V2 组件使用调度程序-侦听器事件模型。在 Menu 组件广播 change 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Menu.rollOver 事件的事件对象具有一个附加属性：

menuItem 对指针滑过的菜单项（XML 节点）的引用。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例定义了名为 form 的处理函数，并将其作为第二个参数传递到 myMenu.addEventListener() 方法。rollOver 处理函数在 event 参数中捕获事件对象。在广播 rollOver 事件时，trace 语句被发送到“输出”面板，如下所示：

form = new Object();
form.rollOver = function(evt){
    trace("Menu rollOver:"+evt.menuItem.attributes.label);
}
myMenu.addEventListener("rollOver", form);


Menu.setMenuItemEnabled()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.setMenuItemEnabled(item, enable)

参数

item 一个 XML 节点。数据提供程序内目标菜单项的节点。

enable 一个布尔值，它表明项目是 (true) 否 (false) 启用。

返回

无。

说明

方法；将目标项目的 enabled 属性更改为 enable 参数给定的状态。如果此调用导致状态更改，则用新状态重绘此项目。

示例

下面的范例禁用 myMenu 的第二个子对象：

var myItem = myMenu.getMenuItemAt(1);
myMenu.setMenuItemEnabled(myItem, false);

另请参见

Menu.setMenuItemSelected()


Menu.setMenuItemSelected()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.setMenuItemSelected(item, select)

参数

item 一个 XML 节点。数据提供程序内目标菜单项的节点。

select 一个布尔值，它表明项目是 (true) 否 (false) 被选中。如果项目是复选框，则其复选框为可见或不可见。如果项目为单选按钮，则项目成为单选按钮组中的当前选中项。

返回

无。

说明

方法；将项目的 selected 属性更改为 select 参数所指定的状态。如果此调用导致状态更改，则用新状态重绘此项目。这仅对 type 属性设置为 "radio" 或 "check" 的项目有意义，原因是这会使它们的点或复选标记出现或消失。对 type 为 "normal" 或 "separator" 的项目调用此方法是无效的。

示例

下面的范例取消选中 myMenu 的第二个子项：

var myItem = myMenu.getMenuItemAt(1);
myMenu.setMenuItemSelected(myItem, false);


Menu.show()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.show(x, y)

参数

x x 坐标。

y y 坐标。

返回

无。

说明

方法；打开指定位置的菜单。菜单会自动重新调整大小，使其所有顶层项目都可见，而且左上角放在由组件的父项提供的坐标系中的给定位置。

如果省略了 x 和 y 参数，则菜单在其上次的位置显示。

示例

下面的范例会扩展菜单：

myMenu.show(10, 10);

另请参见

Menu.hide()


MenuDataProvider 类

MenuDataProvider 类是修饰器（混合）API，它向 XMLNode 全局类添加功能。此功能使指定给 Menu dataProvider 属性的 XML 实例可通过 MenuDataProvider API 处理其数据以及关联的 Menu 视图。

重要概念：

  • MenuDataProvider 是修饰器（混合）API。无需对其实例化即可使用。
  • 菜单以本机方式将 XML 作为 dataProvider 属性接收。
  • 如果实例化 Menu 类，SWF 文件中的所有 XML 实例会由 MenuDataProvider API 进行修饰。
  • 只有 MenuDataProvider API 方法向 Menu 控件广播事件。您仍然可以使用本机 XML 方法，但它们不是刷新 Menu 视图的广播事件。
    • 使用 MenuDataProvider API 方法可控制数据模型。
    • 将 XML 方法用于只读操作，例如在 Menu 层次结构中移动。
  • Menu 中的所有项目是用 MenuDataProvider API 修饰的 XML 对象。
  • 对项目属性的更改在重绘之前不会在屏幕菜单中反映出来。

MenuDataProvider 类的方法摘要

方法 | 描述
MenuDataProvider.addMenuItem()> | 添加子项目。
MenuDataProvider.addMenuItemAt()> | 在指定的位置添加子项目。
MenuDataProvider.getMenuItemAt()> | 获取对指定位置的菜单项的引用。
MenuDataProvider.indexOf()> | 返回指定菜单项的索引。
MenuDataProvider.removeMenuItem()> | 删除菜单项。
MenuDataProvider.removeMenuItemAt()> | 删除指定位置处的菜单项。


MenuDataProvider.addMenuItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myMenu.addMenuItem(initObject)

用法 2：

myMenu.addMenuItem(childMenuItem)

参数

initObject 一个对象，包含初始化菜单项的属性的特定属性。有关详细信息，请参阅关于菜单项 XML 属性。

childMenuItem 一个 XML 节点。

返回

对 XMLNode 对象的引用。

说明

方法；用法 1 将子项目添加到父菜单项（可以是菜单本身）的末尾。该菜单项根据在 initObject 参数中传递的值构建。用法 2 将在指定的 XML childMenuItem 参数中定义的子项目添加到父菜单项的末尾。

示例

下面的范例将新节点添加到菜单中的指定节点处：

myMenuDP.firstChild.addMenuItem("Inbox", { label:"Item 1", icon:"radioItemIcon", type:"radio", selected:false, enabled:true, instanceName:"radioItem1", groupName:"myRadioGroup" } );


MenuDataProvider.addMenuItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myMenu.addMenuItemAt(index, initObject)

用法 2：

myMenu.addMenuItemAt(index, childMenuItem)

参数

index 一个整数。

initObject 一个对象，包含初始化菜单项的属性的特定属性。有关详细信息，请参阅关于菜单项 XML 属性。

childMenuItem 一个 XML 节点。

返回

对添加的 XML 节点的引用。

说明

方法；用法 1 将子项目添加到父菜单项（可以是菜单本身）中的指定索引位置。该菜单项根据在 initObject 参数中传递的值构建。用法 2 将在指定的 XML childMenuItem 参数中定义的子项目添加到父菜单项的指定索引处。

示例

用法 1：以下范例将一个新节点添加为菜单根的第二个子项：

myMenu.addMenuItemAt(1, { label:"Item 1", type:"radio", selected:false, enabled:true, instanceName:"radioItem1", groupName:"myRadioGroup" } );


MenuDataProvider.getMenuItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.getMenuItemAt(index)

参数

index 一个整数，指明菜单的位置。

返回

对指定的 XML 节点的引用。

说明

方法；返回对当前菜单项的指定子菜单项的引用。

示例

下面的范例查找要获取的节点，然后获取 myMenuItem 的第二个子项：

var myMenuItem = myMenuDP.firstChild.firstChild;
myMenuItem.getMenuItemAt(1);


MenuDataProvider.indexOf()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.indexOf(item)

参数

item 对描述菜单项的 XML 节点的引用。

返回

指定的菜单项的索引；如果项目不属于此菜单，则返回未定义。

说明

方法；返回此父菜单项中的指定菜单项的索引。

示例

下面的范例向父项目添加菜单项，并获取该项目的索引：

var myItem = myParentItem.addMenuItem({label:"That item"});
var myIndex = myParentItem.indexOf(myItem);


MenuDataProvider.removeMenuItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.removeMenuItem()

参数

无。

返回

对删除的菜单项（XML 节点）的引用；如果出错则返回未定义。

说明

方法；删除目标项目和任何子节点。

示例

下面的范例将 myMenuItem 从其父项中删除：

myMenuItem.removeMenuItem();


MenuDataProvider.removeMenuItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenu.removeMenuItemAt(index)

参数

index Menu 项的索引。

返回

对删除的菜单项的引用。如果在该位置不存在任何项目，则该值是未定义的。

说明

方法；删除 index 参数指定的菜单项的子项目。如果在该索引不存在任何菜单项，则调用此方法没有效果。

示例

下面的范例删除第四个项目：

myMenuDP.removeMenuItemAt(3);


关于 MenuBar 组件（仅限 Flash Professional）

MenuBar 组件使您可以创建带有弹出式菜单和命令的水平菜单栏，就像最常见的软件应用程序（例如 Macromedia Flash）中的“文件”和“编辑”菜单栏一样。菜单栏对 Menu 组件进行了补充，方法是通过提供可单击的界面来显示和隐藏菜单，而这些菜单起到了组合鼠标和键盘交互性操作的作用。

菜单栏使您可以通过几个步骤创建应用程序菜单。要构建菜单栏，可以向描述一系列菜单的菜单栏指定 XML 数据提供程序，或者使用 MenuBar.addMenu() 方法一次添加一个菜单实例。

菜单栏中的每个菜单都由两部分组成：菜单和使菜单打开的按钮（称为菜单激活器）。这些可单击的菜单激活器作为文本标签出现在菜单栏中，并带有边框凹下和凸起的突出显示状态，这些状态响应来自鼠标和键盘的交互操作。

按下菜单激活器之后，相应的菜单会在其下面打开。菜单会保持活动状态，直到再次按下激活器，或选择了某个菜单项或者在菜单区域外进行了单击。

除了创建显示和隐藏菜单的菜单激活器外，菜单栏还在一系列菜单之间创建组行为。这使用户可以浏览许多命令选项，方法是滑过一系列激活器或使用箭头键在列表中移动。鼠标和键盘交互性操作协同工作，使用户可以在 MenuBar 组件内的菜单之间跳转。

用户不能在菜单栏上的菜单之间滚动。如果菜单超过了菜单栏的宽度，则会被遮盖。

不能使用屏幕阅读器访问 MenuBar 组件。


与 MenuBar 组件进行交互（仅限 Flash Professional）

可以使用鼠标和键盘与 MenuBar 组件进行交互。

滑过菜单激活器会在激活器标签周围显示凸起的边框高亮区。

当 MenuBar 实例从单击或 Tab 键切换中获得焦点时，您可以使用以下按键来控制它：

按键 | 描述
向下箭头 | 将选区下移一个菜单行。
向上箭头 | 将选区上移一个菜单行。
右箭头 | 将选区移到下一个按钮。
左箭头 | 将选区移到上一个按钮。
Enter/Escape 键 | 关闭打开的菜单。

注意：如果菜单打开，不能通过按 Tab 键关闭它。必须要进行选择，或者按 Escape 键关闭菜单。


使用 MenuBar 组件（仅限 Flash Professional）

可以使用 MenuBar 组件将一组菜单（例如，“文件”、“编辑”、“特殊”、“窗口”等）添加到应用程序的顶部。

MenuBar 组件参数

以下列出了一些创作参数，您可以在属性检查器或“组件检查器”面板中为每个 MenuBar 组件实例设置这些参数：

labels 一个数组，将菜单激活器添加到带有给定标签的 MenuBar。默认值为 []（空数组）。

您可以编写动作脚本，以便使用 MenuBar 组件的属性、方法和事件来控制该组件的这些和其他选项。有关详细信息，请参阅MenuBar 类。

创建具有 MenuBar 组件的应用程序

在本例中，您会将 MenuBar 组件拖到舞台上，添加代码以便用菜单填充实例，并将侦听器附加到菜单以便响应菜单项选择。

在应用程序中使用 MenuBar 组件：

  1. 选择“文件”>“新建”，创建新的 Flash 文档。
  2. 将 MenuBar 组件从“组件”面板拖到舞台中。
  3. 将菜单放置在舞台的顶部，形成标准布局。
  4. 选择 MenuBar，并在属性检查器中输入实例名称 myMenuBar。
  5. 在“动作”面板中的第 1 帧上，输入以下代码：
    var menu = myMenuBar.addMenu("File");
menu.addMenuItem({label:"New", instanceName:"newInstance"});
menu.addMenuItem({label:"Open", instanceName:"openInstance"});
menu.addMenuItem({label:"Close", instanceName:"closeInstance"});

    此代码向菜单栏实例添加“文件”菜单。然后，它使用 Menu API 添加三个菜单项：“新建”、“打开”和“关闭”。

  6. 在“动作”面板中的第 1 帧上，输入以下代码：
    var listen = new Object();
listen.change = function(evt){
  var menu = evt.menu;
  var item = evt.menuItem
  if (item == menu.newInstance){
    myNew();
    trace(item);
  }else if (item == menu.openInstance){
    myOpen()
    trace(item);
  }
}
menu.addEventListener("change",listen);

    此代码创建侦听器对象 listen，此对象使用事件对象 evt 捕获菜单项选择。

    注意：您必须调用 addEventListener 方法将侦听器注册到菜单实例（而不是菜单栏实例）。

  7. 选择“控制”>“测试影片”，测试 MenuBar 组件。


自定义 MenuBar 组件（仅限 Flash Professional）

此组件根据通过 dataProvider 属性提供的激活器标签或 MenuBar 类的方法调整自身的大小。当激活器按钮在菜单栏中时，它会保持固定的大小（取决于字体样式和文本长度）。

在 MenuBar 组件中使用样式

MenuBar 为组中的每个菜单创建一个激活器标签。可以使用样式更改激活器标签的外观。MenuBar 组件支持下列光晕样式：

样式 | 描述
themeColor | 选区突出显示颜色。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“常规”或“斜体”。
fontWeight | 字体粗细；“常规”或“粗体”。
textDecoration | 文本修饰；“无”或“下划线”。
popupDuration | 弹出菜单所用的时间量（以毫秒为单位）。默认值为 0。

MenuBar 组件还在用户与其交互时使用 RectBorder 类在标签周围绘制凹下和凸起的加亮区。您可以使用 setStyle() 方法（请参阅 UIObject.setStyle()）来更改下列 RectBorder 样式属性：

RectBorder 样式 | 边框位置
borderColor | a
highlightColor | b
borderColor | c
shadowColor | d
borderCapColor | e
shadowCapColor | f
shadowCapColor | g
borderCapColor | h

这些样式属性设置边框上的下列位置：

在 MenuBar 组件中使用外观

MenuBar 组件使用 Menu 组件的外观来表示其外观状态。有关 Menu 组件外观的详细信息，请参阅在 Menu 组件中使用外观。


MenuBar 类

继承 UIObject > UIComponent > MenuBar

动作脚本类名称 mx.controls.MenuBar

MenuBar 类的方法摘要

方法 | 描述
MenuBar.addMenu()> | 将菜单添加到菜单栏。
MenuBar.addMenuAt()> | 将菜单添加到菜单栏的特定位置。
MenuBar.getMenuAt()> | 获取对位于指定位置的菜单的引用。
MenuBar.getMenuEnabledAt()> | 返回一个布尔值，指示菜单是 (true) 否 (false) 启用。
MenuBar.removeMenuAt()> | 删除位于菜单栏特定位置的菜单。
MenuBar.setMenuEnabledAt()> | 一个布尔值，指示菜单是 (true) 否 (false) 启用。

继承 UIObject 和 UIComponent 中的所有方法。

MenuBar 类的属性摘要

属性 | 描述
MenuBar.dataProvider> | 菜单栏的数据模型。
MenuBar.labelField> | 一个字符串，确定将各个 XMLNode 的哪个属性用作菜单栏项目的标签文本。
MenuBar.labelFunction> | 一个函数，确定显示什么内容来作为每个菜单栏项目的标签。

继承 UIObject 和 UIComponent 中的所有方法。


MenuBar.addMenu()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myMenuBar.addMenu(label)

用法 2：

myMenuBar.addMenu(label, menuDataProvider)

参数

label 一个字符串，指明新菜单的标签。

menuDataProvider 描述菜单及其项目的 XML 或 XMLNode 实例。如果该值是 XML 实例，则使用该实例的 firstChild。

返回

指向新的 Menu 对象的引用。

说明

方法；用法 1 使用在 label 参数中指定的值将一个菜单和菜单激活器添加到菜单栏末尾。用法 2 添加在指定的 XML menuDataProvider 参数中定义的一个菜单和菜单激活器。

示例

用法 1：下面的范例添加“文件”菜单，然后使用 Menu.addMenuItem() 方法添加菜单项“新建”和“打开”：

menu = myMenuBar.addMenu("File");
menu.addMenuItem({label:"New", instanceName:newInstance"});
menu.addMenuItem("{label:"Open", instanceName:"openInstance"}");

用法 2：下面的范例添加“字体”菜单，该菜单具有在 menuDataProvider myMenuDP2 中定义的菜单项“粗体”和“斜体”：

var myMenuDP2 = new XML();
myMenuDP2.addMenuItem({type:"check", label:"Bold", instanceName:"check1"});
myMenuDP2.addMenuItem({type:"check", label:"Italic", instanceName:"check2"});
menu = myMenuBar.addMenu("Font",myMenuDP2);


MenuBar.addMenuAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myMenuBar.addMenuAt(index, label)

用法 2：

myMenuBar.addMenuAt(index, label, menuDataProvider)

参数

index 一个整数，指示菜单应插入的位置。第一个位置为 0。要加到菜单的末尾，请调用 MenuBar.addMenu(label)。

label 一个字符串，指明新菜单的标签。

menuDataProvider 描述菜单的 XML 或 XMLNode 实例。如果该值是 XML 实例，则使用该实例的 firstChild。

返回

指向新的 Menu 对象的引用。

说明

方法；用法 1 将一个菜单和菜单激活器添加到指定的 index 处，而值在 label 参数中指定。用法 2 在指定的索引处添加一个菜单和带标签的菜单激活器。菜单的内容在 menuDataProvider 参数中定义。

示例

用法 1：下面的范例在所有 MenuBar 菜单的左侧放置一个菜单：

menu = myMenuBar.addMenuAt(0,"Toreador");
menu.addMenuItem("About Macromedia Flash", instanceName:"aboutInst");
menu.addMenuItem("Preferences", instanceName:"PrefInst");

用法 2：下面的范例添加“编辑”菜单，该菜单具有在 menuDataProvider myMenuDP 中定义的菜单项“撤消”、“重做”、“剪切”和“复制”。

var myMenuDP = new XML();
myMenuDP.addMenuItem({label:"Undo", instanceName:"undoInst"});
myMenuDP.addMenuItem({label:"Redo", instanceName:"redoInst"});
myMenuDP.addMenuItem({type:"separator"});
myMenuDP.addMenuItem({label:"Cut", instanceName:"cutInst"});
myMenuDP.addMenuItem({label:"Copy", instanceName:"copyInst"});

myMenuBar.addMenuAt(0,"Edit",myMenuDP);


MenuBar.dataProvider

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.dataProvider

描述

属性；MenuBar 组件中的项目的数据模型。

menuBar.dataProvider 是 XML 节点对象。设置此属性会替换 MenuBar 组件的现有数据模型。数据提供程序可能具有的任何子节点用作菜单栏自身的项目；这些子节点的任何子节点用作其相应菜单的项目。

默认值未定义。

注意：所有 XML 或 XMLNode 实例在与 MenuBar 组件一起使用时，会自动接收 MenuDataProvider API 的方法和属性。

范例

下面的范例导入 XML 文件，并将其指定给 MenuBar.dataProvider 属性：

var myMenuBarDP = new XML();
myMenuBarDP.load("http://myServer.myDomain.com/source.xml");
myMenuBarDP.onLoad = function(success){
  if(success) {
    myMenuBar.dataProvider = myMenuBarDP;
  } else {
  trace("error loading XML file");
  }
}


MenuBar.getMenuAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.getMenuAt(index)

参数

index 一个整数，指明菜单的位置。

返回

对指定索引处的菜单的引用。如果该位置没有菜单，此值为未定义。

说明

方法；返回对指定索引处的菜单的引用。

示例

因为 getMenuAt() 方法返回一个实例，所以可以将项目添加到菜单的指定索引处。在下面的范例中，在使用 Label 创作参数创建菜单激活器“文件”、“编辑”和“视图”之后，以下代码会在运行时将“新建”和“打开”菜单项添加到“文件”菜单：

menu = myMenuBar.getMenuAt(0);
menu.addMenuItem({label:"New",instanceName:"newInst"});
menu.addMenuItem({label:"Open",instanceName:"openInst"});


MenuBar.getMenuEnabledAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.getMenuEnabledAt(index)

参数

index MenuBar 项的索引。

返回

一个布尔值，指示是 (true) 否 (false) 可以选择此菜单。

说明

方法；返回一个布尔值，指示是 (true) 否 (false) 可以选择此菜单。

示例

下面的范例对 myMenuBar 的第一个位置中的菜单调用此方法：

myMenuBar.getMenuEnabledAt(0);


MenuBar.labelField

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.labelField

描述

属性；一个字符串，确定将每个 XML 节点的哪个属性用作菜单的标签文本。此属性还会传递到从菜单栏创建的任何菜单。默认值为 "label"。

在设置 dataProvider 属性后，此属性为只读。

范例

下面的范例使用每个节点的 name 属性作为标签文本：

myMenuBar.labelField = "name";


MenuBar.labelFunction

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.labelFunction

描述

属性；一个函数，确定在每个菜单的标签文本中显示什么内容。此函数接收与项目关联的 XML 节点作为参数，并返回要用作标签文本的字符串。此属性会传递到从菜单栏创建的任何菜单。默认值为未定义。

在设置 dataProvider 属性后，此属性为只读。

范例

下面的范例通过节点属性构建自定义的标签：

myMenuBar.labelFunction = function(node){
var a = node.attributes;
return "The Price for " + a.name + " is " + a.price;
};


MenuBar.removeMenuAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.removeMenuAt(index)

参数

index MenuBar 项的索引。

返回

对返回的 MenuBar 项的引用。如果在该位置不存在任何项目，则该值为未定义。

说明

方法；删除指定索引处的菜单。如果在该索引不存在任何菜单项，则调用此方法没有效果。

示例

下面的范例删除索引为 4 的菜单：

myMenuBar.removeMenuAt(4);


MenuBar.setMenuEnabledAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myMenuBar.setMenuEnabledAt(index, boolean)

参数

index 要设置的 MenuBar 项的索引。

boolean 一个布尔值，指示指定索引处的菜单项是 (true) 否 (false) 启用。

返回

无。

说明

方法；启用给定索引处的菜单。如果在该索引处不存在任何菜单，则调用此方法无效。

示例

下面的范例获取索引为 3 的 MenuBarColumn 对象：

myMenuBar.setMenuEnabledAt(3);


关于 NumericStepper 组件

NumericStepper 组件允许用户逐个通过一组经过排序的数字。该组件由显示在小上下箭头按钮旁边的数字组成。用户按下这些按钮时，数字将逐渐增大或减小。如果用户单击其中任一箭头按钮，数字将根据 stepSize 参数的值增大或减小，直到用户松开鼠标按钮或达到最大/最小值为止。

NumericStepper 只处理数值数据。此外，要显示两个以上的数值位置（例如，数字 5246 或 1.34），您在创作时必须调整步进器的大小。

在应用程序中，可以启用或禁用步进器。在禁用状态下，步进器不接收鼠标或键盘输入。如果您单击或按 Tab 键切换到启用的步进器，则它将接收焦点并且其内部焦点会设置为文本框。当 NumericStepper 实例有焦点时，您可以使用以下按键来控制它：

按键 | 描述
向下箭头 | 值一次变化一个单位。
向左箭头 | 在文本框中将插入点移动到左侧。
向右箭头 | 在文本框中将插入点移动到右侧。
Shift + Tab | 将焦点移到前一个对象。
Tab 键 | 将焦点移到下一个对象。
向上箭头 | 值一次变化一个单位。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个步进器实例的实时预览会反映创作过程中属性检查器或“组件检查器”面板指明的值参数的值。但是，在实时预览中，鼠标或键盘与步进器按钮之间不能进行交互操作。

将 NumericStepper 组件添加到应用程序时，可以使用“辅助功能”面板使其可由屏幕读取器访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.NumericStepperAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 NumericStepper 组件

NumericStepper 可用于任何您想让用户选择数值的场合。例如，您可以在表格中使用 NumericStepper 组件来允许用户设置信用卡到期时间。另一个范例是可以使用 NumericStepper 组件来允许用户改变字体大小。

NumericStepper 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 NumericStepper 组件设置的创作参数：

value 设置当前步进的值。默认值为 0。

minimum 设置步进的最小值。默认值为 0。

maximum 设置步进的最大值。默认值为 10。

stepSize 设置步进的变化单位。默认值为 1。

您可以编写动作脚本，通过利用 NumericStepper 的属性、方法和事件来控制它的这些选项以及其他选项。有关详细信息，请参阅 NumericStepper 类。

创建具有 NumericStepper 组件的应用程序

以下过程解释了如何在创作时将 NumericStepper 组件添加到应用程序。在该范例中，步进器允许用户从 0-5 星级的影片中选择一个影片，增量为半个星。

要创建具有 Button 组件的应用程序，请执行以下操作：

  1. 将 NumericStepper 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 starStepper。
  3. 在属性检查器中，执行以下操作：
    • 输入 0 作为最小参数。
    • 输入 5 作为最大参数。
    • 输入 .5 作为 stepSize 参数。
    • 输入 0 作为参数的值。
  4. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    movieRate = new Object();
movieRate.change = function (eventObject){
  starChart.value = eventObject.target.value;
}
starStepper.addEventListener("change", movieRate);

    最后一行代码将 change 事件处理函数添加到 starStepper 实例。该处理函数会设置 starChart 影片剪辑，以显示由 starStepper 实例指明的星级。（要查看此代码的运行效果，您必须创建一个具有 value 属性（该属性显示星级）的 starChart 影片剪辑。）


自定义 NumericStepper 组件

在创作过程中以及在运行时，您都可以在水平和垂直方向上改变 NumericStepper 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅 UIObject.setSize()）或任何适用的 NumericStepper 类的属性和方法。请参阅 NumericStepper 类。

调整 NumericStepper 组件的大小不会改变上下箭头按钮的大小。如果将步进器的大小调整为大于默认的高度，则该步进器的按钮将被固定在组件的顶部和底部。步进器按钮会始终出现在文本框的右侧。

对 NumericStepper 组件使用样式

您可以设置样式属性以更改步进器实例的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

NumericStepper 组件支持下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“常规”或“斜体”。
fontWeight | 字体粗细；“常规”或“粗体”。
textDecoration | 文本修饰；“无”或“下划线”。
textAlign | 文本对齐方式；“左”、“右”或“居中”。

对 NumericStepper 组件使用外观

NumericStepper 组件会使用外观来表现其视觉效果。要在创作时设置 NumericStepper 组件的外观，请在库中修改外观元件并将组件作为 SWC 重新导出。外观元件位于库中的 Flash UI Components 2/Themes/MMDefault/Stepper Elements/states 文件夹中。有关详细信息，请参阅关于设置组件外观。

如果启用了步进器，当指针移到向上按钮和向下按钮的上方时，这些按钮会显示其悬停状态。这些按钮在被单击后时，会显示为按下状态。当松开鼠标后，这些按钮又会返回其悬停状态。如果鼠标按下时指针移离按钮，按钮会恢复到其原始状态。

如果禁用了步进器，不论用户进行什么交互操作，它都会显示其禁用状态。

NumericStepper 组件使用以下外观属性：

属性 | 描述
upArrowUp | 向上箭头的弹起状态。默认值为 StepUpArrowUp。
upArrowDown | 向上箭头的按下状态。默认值为 StepUpArrowDown。
upArrowOver | 向上箭头的悬停状态。默认值为 StepUpArrowOver。
upArrowDisabled | 向上箭头的禁用状态。默认值为 StepUpArrowDisabled。
downArrowUp | 向下箭头的弹起状态。默认值为 StepDownArrowUp。
downArrowDown | 向下箭头的按下状态。默认值为 StepDownArrowDown。
downArrowOver | 向下箭头的悬停状态。默认值为 StepDownArrowOver。
downArrowDisabled | 向下箭头的禁用状态。默认值为 StepDownArrowDisabled。


NumericStepper 类

继承 UIObject > UIComponent > NumericStepper

动作脚本类名称 mx.controls.NumericStepper

NumericStepper 类属性允许您添加最大或最小的步长值、每一步长的单位数量以及运行时该步长的当前值。

使用“动作脚本”设置 NumericStepper 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

NumericStepper 组件会使用 FocusManager 覆盖默认的 Flash Player 焦点矩形，并画出一个带有圆角的自定义焦点矩形。有关详细信息，请参阅创建自定义焦点导航。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.NumericStepper.version);

注意：下面的代码返回未定义的：trace(myNumericStepperInstance.version);。

NumericStepper 类的方法摘要

继承 UIObject和 UIComponent中的所有方法。

NumericStepper 类的属性摘要

属性 | 描述
NumericStepper.maximum> | 一个指明最大范围值的数字。
NumericStepper.minimum> | 一个指明最小范围值的数字。
NumericStepper.nextValue> | 一个指明下一个连续值的数字。该属性为只读。
NumericStepper.previousValue> | 一个指明前一个连续值的数字。该属性为只读。
NumericStepper.stepSize> | 一个显示每一步长的变化单位的数字。
NumericStepper.value> | 一个显示步进器当前值的数字。

继承 UIObject和 UIComponent的所有属性。

NumericStepper 类的事件摘要

事件 | 描述
NumericStepper.change> | 当步长的值更改时触发。

继承 UIObject和 UIComponent的所有事件。


NumericStepper.change

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(click){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  ...
}
stepperInstance.addEventListener("change", listenerObject)

描述

事件；当步进器的值更改时向所有已注册的侦听器广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到一个 NumericStepper 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，如果把下列代码附加到步进器 myStepper，它将把“_level0.myStepper”发送到“输出”面板：

on(click){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (stepperInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

此范例是在时间轴上的某一帧上编写的，它会在一个名为 myNumericStepper 的步进器发生更改时向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象的 change 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件，在这个范例中是 myNumericStepper。从事件对象的 target 属性中可以访问 NumericStepper.value 属性。最后一行从 myNumericStepper 调用 UIEventDispatcher.addEventListener() 方法，并把 change 事件和 form 侦听器对象作为参数传递给该方法，如下所示：

form = new Object();
form.change = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即，“数字步进器”。
  trace("Value changed to " + eventObj.target.value);
}
myNumericStepper.addEventListener("change", form);


NumericStepper.maximum

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

stepperInstance.maximum

描述

属性；步进器的最大范围值。此属性可能包含一个最多可达三位的十进制数字。默认值为 10。

范例

下面的范例设置步进器范围的最大值为 20：

myStepper.maximum = 20;

另请参见

NumericStepper.minimum


NumericStepper.minimum

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

stepperInstance.minimum

描述

属性；步进器的最小范围值。此属性可能包含一个最多可达三位的十进制数字。默认值为 0。

范例

下面的范例设置步进器范围的最小值为 100：

myStepper.minimum = 100;

另请参见

NumericStepper.maximum


NumericStepper.nextValue

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

stepperInstance.nextValue

描述

属性（只读），下一个连续的值。此属性可能包含一个最多可达三位的十进制数字。

范例

以下范例将 stepSize 属性设置为 1，将初始值设置为 4，这样就会使 previousValue 的值为 5：

myStepper.stepSize = 1;
myStepper.value = 4;
trace(myStepper.nextValue);

另请参见

NumericStepper.previousValue


NumericStepper.previousValue

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

stepperInstance.previousValue

描述

属性（只读），前一个连续的值。此属性可能包含一个最多可达三位的十进制数字。

范例

以下范例将 stepSize 属性设置为 1，将初始值设置为 4，这样就会使 previousValue 的值为 3：

myStepper.stepSize = 1;
myStepper.value = 4;
trace(myStepper.previousValue);

另请参见

NumericStepper.nextValue


NumericStepper.stepSize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

stepperInstance.stepSize

描述

属性；要从当前值改变的单位数量。默认值为 1，该值不能为 0。该属性可以包含一个带最多三位十进制的数字。

范例

下面的范例将当前的 value 设置为 2，stepSize 单位设置为 2，则 nextValue 的值为 4：

myStepper.value = 2;
myStepper.stepSize = 2;
trace(myStepper.nextValue);


NumericStepper.value

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

stepperInstance.value

描述

属性；步进器的文本区域显示的当前值。如果该值与 stepSize 属性中定义的步进器的范围和步进增量不符，将不被赋值。此属性可能包含一个最多可达三位的十进制数字。

范例

下面的范例将步进器的当前 value 设置为 10，并将该值发送到“输出”面板：

myStepper.value = 10;
trace(myStepper.value);


关于 PopUpManager 类

动作脚本类名称 mx.managers.PopUpManager

PopUpManager 类允许您创建模式的或非模式的重叠窗口。（模式窗口在处于活动状态时不允许与其他窗口进行交互操作。）您可以调用 PopUpManager.createPopUp() 来创建重叠窗口，也可以对窗口实例调用 PopUpManager.deletePopUp() 来破坏弹出窗口。

PopUpManager 类的方法摘要

事件 | 描述
PopUpManager.createPopUp()> | 创建弹出窗口。
PopUpManager.deletePopUp()> | 删除由对 PopUpManager.createPopUp()> 的调用创建的弹出窗口。


PopUpManager.createPopUp()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004

用法

PopUpManager.createPopUp(parent, class, modal [, initobj, outsideEvents])

参数

parent 一个引用，引用弹出窗口所基于的窗口。

class 一个引用，引用要创建的对象的类。

modal 一个布尔值，它表明该窗口是 (true) 否 (false) 是模式的。

initobj 一个包含初始化属性的对象。此参数是可选的。

outsideEvents 一个布尔值，指明在用户单击窗口以外的区域时是 (true) 否 (false) 触发事件。此参数是可选的。

返回

一个引用，引用所创建的窗口。

说明

方法；如果为模式窗口，对 createPopUp() 的调用会找到以父级开始的最顶层的父窗口，然后创建一个类的实例。如果是非模式的，对 createPopUp() 的调用会创建一个类的实例作为父窗口的子窗口。

示例

下面的代码在单击按钮时创建一个模式窗口：

lo = new Object();
lo.click = function(){
  mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true);
}
button.addEventListener("click", lo);


PopUpManager.deletePopUp()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004

用法

windowInstance.deletePopUp();

参数

无。

返回

无。

说明

方法；删除一个弹出窗口并移除模式状态。当窗口被破坏时，被重叠的窗口负责调用 PopUpManager.deletePopUp()。

示例

下面的代码创建一个名为 win 的模式窗口，该窗口具有一个关闭按钮，当单击该关闭按钮时删除该窗口：

import mx.managers.PopUpManager
import mx.containers.Window
win = PopUpManager.createPopUp(_root, Window, true, {closeButton:true});
lo = new Object();
lo.click = function(){
  win.deletePopUp();
}
win.addEventListener("click", lo);


关于 ProgressBar 组件

ProgressBar 组件在用户等待加载内容时，会显示加载进程。加载进程可以是确定的也可以是不确定的。确定的进程栏是一段时间内任务进程的线性表示，当要载入的内容量已知时使用。不确定的进程栏在不知道要加载的内容量时使用。您可以添加标签来显示加载内容的进程。

默认情况下，组件被设置为在第一帧导出。这意味着这些组件在第一帧呈现前被加载到应用程序中。如果要为应用程序创建预加载器，则需要在每个组件的“链接属性”对话框（该对话框的访问路径为：“库”面板选项 >“链接”）中取消选中“在第一帧导出”。但是对于 ProgressBar 应设置为“在第一帧导出”，因为 ProgressBar 必须在其他内容流进入 Flash Player 之前首先显示。

每个 ProgressBar 实例的实时预览都会反映在创作过程中对属性检查器或“组件检查器”面板中的参数所做的更改。实时预览中会反映以下参数：conversion、direction、label、labelPlacement、mode 和 source。


使用 ProgressBar 组件

进程栏允许您在内容加载过程中显示内容的进程。当用户与应用程序交互操作时，这是必需的反馈信息。

使用 ProgressBar 组件有几种模式；您可以使用模式参数来设置模式。最常用的模式是“事件”和“轮询”。这些模式使用 source 参数来指定一个加载进程，该进程发出 progress 和 complete 事件（事件模式）或公开 getBytesLoaded 和 getsBytesTotal 方法（轮询模式）。您也可以在手动模式下使用 ProgressBar 组件，方法是：手动设置 maximum、minimum 和 indeterminate 属性，并调用 ProgressBar.setProgress() 方法。

ProgressBar 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 ProgressBar 组件实例设置的创作参数：

mode 进度栏运行的模式此值可以是下列之一：事件、轮询或手动。默认值为事件。

source 一个要转换为对象的字符串，它表示源的实例名。

direction 进度栏填充的方向。该值可以在右侧或左侧，默认值为右侧。

label 指明加载进度的文本。该参数是一个字符串，其格式是“已加载 %2 的 %1 (%3%%)”；%1 是当前已加载字节数的占位符，%2 是加载的总字节数，%3 是当前加载的百分比的占位符。字符“%%”是字符“%”的占位符。如果某个 %2 的值未知，它将被替换为“??”。如果某个值未定义，则不显示标签。

labelPlacement 与进度栏相关的标签位置。此参数可以是下列值之一：顶部、底部、左侧、右侧、中间。默认值为底部。

conversion 一个数字，在显示标签字符串中的 %1 和 %2 的值之前，用这些值除以该数字。默认值为 1。

您可以编写“动作脚本”，通过利用其属性、方法和事件来控制 ProgressBar 组件的这些选项以及其他选项。有关详细信息，请参阅 ProgressBar 类。

创建具有 ProgressBar 组件的应用程序

以下过程解释了如何在创作时将 ProgressBar 组件添加到应用程序。在该范例中，进程栏用于事件模式。在事件模式中，加载内容必须发出 progress 事件和 complete 事件，进度栏使用这些事件来显示进度。Loader 组件会发出这些事件。有关详细信息，请参阅Loader 组件。

要创建带有事件模式 ProgressBar 组件的应用程序，请执行以下操作：

  1. 将 ProgressBar 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，执行以下操作：
    • 输入实例名称 pBar。
    • 对于 mode 参数，选择事件。
  3. 将 Loader 组件从“组件”面板上拖到舞台上。
  4. 在属性检查器中，输入实例名称 loader。
  5. 在舞台上选择进度栏，并在属性检查器中为 source 参数输入 loader。
  6. 在时间轴上选择第一帧，打开“动作”面板，输入以下代码，该代码会将一个 JPEG 文件加载到 Loader 组件中：
    loader.autoLoad = false;
loader.contentPath = "http://imagecache2.allposters.com/images/86/017_PP0240.jpg";
pBar.source = loader;
// 直到调用加载方法，才开始加载。
loader.load();

在下面的范例中，在轮询模式下使用进度栏。在轮询模式中，ProgressBar 使用源对象的 getBytesLoaded 和 getBytesTotal 方法来显示其进度。

要在轮询模式中创建具有 ProgressBar 组件的应用程序，请执行以下操作：

  1. 将 ProgressBar 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，执行以下操作：
    • 输入实例名称 pBar。
    • 对于 mode 参数，选择轮询。
    • 为 source 参数输入 loader。
  3. 在时间轴上选择第一帧，打开“动作”面板，然后输入以下代码，该代码会创建一个名为 loader 的 Sound 对象，并调用 loadSound() 方法，以便将一个声音加载到 Sound 对象中：
    var loader:Object = new Sound();
loader.loadSound("http://soundamerica.com/sounds/sound_fx/A-E/air.wav", true);

在下面的范例中，在手动模式下使用进度栏。在手动模式中，您必须设置 maximum、minimum 和 indeterminate 属性，并使用 setProgress() 方法来显示进度。在手动模式中不需设置 source 属性。

要创建具有手动模式 ProgressBar 组件的应用程序，请执行以下操作：

  1. 将 ProgressBar 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，执行以下操作：
    • 输入实例名称 pBar。
    • 对于 mode 参数，选择手动。
  3. 在时间轴中选择帧 1，打开“动作”面板，然后输入以下代码，该代码会通过调用 setProgress() 方法，对每个文件下载过程手动更新进度栏：
    for(var:Number i=1; i <= total; i++){
  // 插入代码以加载文件
  // 插入代码以加载文件
pBar.setProgress(i, total);
}


自定义 ProgressBar 组件

在创作过程中和运行时，您都可以在水平方向上改变 ProgressBar 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 UIObject.setSize()。

进程栏的左右两端以及跟踪图形是固定大小的。当您重新调整进程栏的大小时，进程栏的中间部分会重新调整大小，以便能在它们之间放下。如果进程栏太小，则可能会无法正确呈现。

对 ProgressBar 组件使用样式

您可以设置样式属性来改变进程栏实例的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

ProgressBar 组件支持下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“常规”或“斜体”。
fontWeight | 字体粗细；“常规”或“粗体”。
textDecoration | 文本修饰；“无”或“下划线”。

对 ProgressBar 组件使用外观

进程栏组件使用以下影片剪辑元件来显示其状态：TrackMiddle、TrackLeftCap、TrackRightCap 和 BarMiddle、BarLeftCap、BarRightCap 和 IndBar。IndBar 元件用于不确定的进程栏。要在创作过程中设计 ProgressBar 组件的外观，请在库中修改元件并将组件作为 SWC 重新导出。这些元件位于 HaloTheme.fla 文件或 SampleTheme.fla 文件中，这些文件位于库中的 Flash UI Components 2/Themes/MMDefault/ProgressBar Elements 文件夹下。有关详细信息，请参阅关于设置组件外观。

如果您使用 UIObject.createClassObject() 方法动态（在运行时）创建 ProgressBar 组件实例，则也可以动态设计其外观。要在运行时设计组件的外观，请设置传递给 createClassObject() 方法的 initObject 参数的外观属性。这些外观属性设置用作进度栏状态的元件的名称。

ProgressBar 组件使用以下外观属性：

属性 | 描述
progTrackMiddleName | 轨道的可扩展的中部。默认值为 ProgTrackMiddle。
progTrackLeftName | 固定大小的左端。默认值为 ProgTrackLeft。
progTrackRightName | 固定大小的右端。默认值为 ProgTrackRight。
progBarMiddleName | 可扩展的中间栏图形。默认值为 ProgBarMiddle。
progBarLeftName | 固定大小的左栏端。默认值为 ProgBarLeft。
progBarRightName | 固定大小的右栏端。默认值为 ProgBarRight。
progIndBarName | 不确定的栏图形。默认值为 ProgIndBar。


ProgressBar 类

继承 UIObject > ProgressBar

动作脚本类名称 mx.controls.ProgressBar

使用“动作脚本”设置 ProgressBar 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.ProgressBar.version);

注意：下面的代码返回未定义的：trace(myProgressBarInstance.version);。

ProgressBar 类的方法摘要

方法 | 描述
ProgressBar.setProgress()> | 在手动模式中设置栏的进程。

继承 UIObject的所有方法。

ProgressBar 类的属性摘要

属性 | 描述
ProgressBar.conversion> | 一个数字，用于转换当前所加载字节的值和所加载字节总值。
ProgressBar.direction> | 进程栏填充的方向。
ProgressBar.indeterminate> | 指明源的总字节数为未知。
ProgressBar.label> | 进程栏随附的文本。
ProgressBar.labelPlacement> | 与进程栏相关的标签位置。
ProgressBar.maximum> | 手动模式中进程的最大值。
ProgressBar.minimum> | 手动模式中进程的最小值。
ProgressBar.mode> | 进程栏加载内容的模式。
ProgressBar.percentComplete> | 指明加载百分比的数字。
ProgressBar.source> | 要加载的内容，其进度由进度栏监视。
ProgressBar.value> | 指明已建立的进程的数量。该属性为只读。

继承 UIObject的所有属性。

ProgressBar 类的事件摘要

事件 | 描述
ProgressBar.complete> | 加载完成时触发。
ProgressBar.progress> | 在事件模式或轮询模式中加载内容时触发。

继承 UIObject的所有事件。


ProgressBar.complete

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(complete){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.complete = function(eventObject){
  ...
}
pBar.addEventListener("complete", listenerObject)

事件对象

除了标准的事件对象属性之外，还为 ProgressBar.complete 事件定义了另外两个属性：current（加载的值等于总计）和 total（总值）。

描述

事件；内容加载结束时，向所有已注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 ProgressBar 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码附加到实例 pBar，它将“_level0.pBar”发送到“输出”面板：

on(complete){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (pBar) 调度一个事件（在本例中为 complete），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

本范例创建一个带有 complete 回调函数的 form 侦听器对象，该回调函数将一条消息发送到“输出”面板，其中有 pBar 实例的值，如下所示：

form.complete = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Progress Bar。
  trace("Value changed to " + eventObj.target.value);
}
pBar.addEventListener("complete", form);

另请参见

UIEventDispatcher.addEventListener()


ProgressBar.conversion

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.conversion

描述

属性；一个数字，设置进入值的转换值。它除当前值和总值，将它们向下取整，然后在 label 属性中显示转换后的值。默认值为 1。

范例

以下代码显示加载进程的值（字节）：

pBar.conversion = 1024;


ProgressBar.direction

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.direction

描述

属性；指明进程栏的填充方向。默认值为 "right"。

范例

以下代码使进程栏从右向左填充：

pBar.direction = "left";


ProgressBar.indeterminate

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.indeterminate

描述

属性；一个布尔值，指明进度栏是填充条纹图案并且加载源的大小未知 (true)，还是实心填充且加载源大小已知 (false)。

范例

以下代码创建一个确定的进度栏，该进度栏为实心填充、从左向右移动：

pBar.direction = "right";
pBar.indeterminate = false;


ProgressBar.label

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.label

描述

属性；指明加载进程的文本。该属性是一个字符串，其格式为“已加载 %2 中的 %1（%3%%）”；%1 是当前所加载字节数的占位符，%2 是总加载字节数的占位符，%3 是当前加载内容百分比的占位符。字符“%%”是字符“%”的占位符。如果某个 %2 的值未知，它将被替换为“??”。如果某个值未定义，则不显示标签。默认值为 "LOADING %3%%"

范例

以下代码将进程栏旁边显示的文字设置为“已加载 4 个文件”格式：

pBar.label = "已加载 %1 个文件";

另请参见

ProgressBar.labelPlacement


ProgressBar.labelPlacement

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.labelPlacement

描述

属性；设置标签相对于进程栏的位置。可能的值有 "left"、"right"、"top"、"bottom" 和 "center"。

范例

以下代码设置标签在进程栏上方显示：

pBar.label = "%1 out of %2 loaded (%3%%)";
pBar.labelPlacement = "top";

另请参见

ProgressBar.label


ProgressBar.maximum

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.maximum

描述

属性；ProgressBar.mode 属性设置为 "manual" 时进度栏的最大值。

范例

以下代码将最大值属性设置为要加载的 Flash 应用程序的总帧数：

pBar.maximum = _totalframes;

另请参见

ProgressBar.minimum、ProgressBar.mode


ProgressBar.minimum

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.minimum

描述

属性；ProgressBar.mode 属性设置为 "manual" 时进度栏的最小进度值。

范例

以下代码设置进程栏的最小值：

pBar.minimum = 0;

另请参见

ProgressBar.maximum、ProgressBar.mode


ProgressBar.mode

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.mode

描述

属性；进程栏加载内容的模式。此值可以是下列之一："event"、"polled" 或 "manual"。最常用的模式为 "event" 和 "polled"。这些模式使用 source 参数指定加载进程是发出 progress 和 complete 事件，像 Loader 组件（事件模式），还是公开 getBytesLoaded 和 getsBytesTotal 方法，像 MovieClip 对象（轮询模式）。您也可以在手动模式下使用 ProgressBar 组件，方法是：手动设置 maximum、minimum 和 indeterminate 属性，并调用 ProgressBar.setProgress() 方法。

在事件模式中，Loader 对象应该用作源。在轮询模式中，任何公开 getBytesLoaded() 和 getBytesTotal() 方法的对象都可用作源。（包括自定义对象或 _root 对象）

范例

以下代码将进度栏设置为事件模式：

pBar.mode = "event";


ProgressBar.percentComplete

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.percentComplete

描述

属性（只读）；返回进程完成的百分比。该值已向下取整。以下是用于计算百分比的公式：

100*（值-最小值）/（最大值-最小值）

范例

以下代码将 percentComplete 属性的值发送到“输出”面板：

trace("percent complete = " + pBar.percentComplete);


ProgressBar.progress

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(progress){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.progress = function(eventObject){
  ...
}
pBarInstance.addEventListener("progress", listenerObject)

事件对象

除了标准的事件对象属性外，还为 ProgressBar.progress 事件定义了另外两个属性：current（加载的值等于总计）和 total（总值）。

描述

事件；当进程栏的值更改时向所有已注册的侦听器广播。事件仅在 ProgressBar.mode 设置为 "manual" 或 "polled" 时广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 ProgressBar 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码附加到实例 myPBar，它将“_level0.myPBar”发送到“输出”面板：

on(progress){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (pBarInstance) 调度一个事件（在本例中为 progress），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

本范例创建一个侦听器对象 form，并且在其上定义一个 progress 事件处理函数。在最后一行代码中，form 侦听器注册到 pBar 实例。progress 事件触发时，pBar 向 form 侦听器广播该事件，该侦听器调用 progress 回调函数，如下所示：

var form:Object = new Object();
form.progress = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Progress Bar。
  trace("Value changed to " + eventObj.target.value);
}
pBar.addEventListener("progress", form);

另请参见

UIEventDispatcher.addEventListener()


ProgressBar.setProgress()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.setProgress(completed, total)

参数

completed 一个数字，指明已完成的进度量。您可以使用 ProgressBar.label 和 ProgressBar.conversion 属性以百分比形式或所选择的任何单位来显示该数字，这具体取决于进度栏的源。

total 一个数字，指明要达到百分之百必须完成的总进度。

返回

一个数字，指明已完成的进度。

描述

方法；ProgressBar.mode 属性设置为 "manual" 时，设置栏的状态以反映完成的进度量。您可以调用该方法，使栏除了反映加载的状态外还反映进度的状态。参数 completed 被分配给 value 值属性，参数 total 被分配给 maximum 属性。minimum 属性不变。

范例

以下代码基于 Flash 应用程序时间轴的进度调用 setProgress() 方法：

pBar.setProgress(_currentFrame, _totalFrames);


ProgressBar.source

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.source

描述

属性；对要加载的实例的引用，该实例的加载进程将会显示。加载内容应该发出一个 progress 事件，从其中可以检索当前值和总值。只是在 ProgressBar.mode 设置为 "event" 或 "polled" 时才使用该属性。默认值未定义。

ProgressBar 可与应用程序（包括 _root）内的内容一起使用。

范例

本范例设置 pBar 实例，以显示实例名为 loader 的加载器组件的加载进度。

pBar.source = loader;

另请参见

ProgressBar.mode


ProgressBar.value

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

pBarInstance.value

描述

属性（只读）；指明已完成的进度。该属性为介于 ProgressBar.minimum 和 ProgressBar.maximum 之间的一个数字。默认值为 0。


关于 RadioButton 组件

使用 RadioButton 组件可以强制用户只能选择一组选项中的一项。RadioButton 组件必须用于至少有两个 RadioButton 实例的组。在任何给定的时刻，都只有一个组成员被选中。选择组中的一个单选按钮将取消选择组内当前选定的单选按钮。您可以设置 groupName 参数，以指明单选按钮属于哪个组。

可以启用或禁用单选按钮。用户按 Tab 键切换到单选按钮组时，只有选中的单选按钮会接收焦点。用户可以通过按箭头键来改变组内的焦点。在禁用状态下，单选按钮不接收鼠标或键盘输入。

如果您单击或按 Tab 键切换到 RadioButton 组件组，它就会接收焦点。当 RadioButton 组有焦点时，您可以使用下列按键来控制它：

按键 | 描述
向上箭头键/向右箭头键 | 所选项会移至单选按钮组内的前一个单选按钮。
向下箭头键/向左箭头键 | 选择将移到单选按钮组的下一个单选按钮。
Tab 键 | 将焦点从单选按钮组移动到下一个组件。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 RadioButton 实例在舞台上的实时预览会反映在创作过程中对属性检查器或“组件检查器”面板中的参数所做的更改。但是，实时预览中不会显示互斥的所选项。如果将同组的两个单选按钮的 selected 参数设置为 true，它们都会显示为选中状态，尽管在运行时将只显示最后创建的实例。有关详细信息，请参阅RadioButton 参数。

将 RadioButton 组件添加到应用程序时，您可以使用“辅助功能”面板，以便让屏幕读取器能够访问到该组件。 首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.RadioButtonAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 RadioButton 组件

单选按钮是任何表单或 Web 应用程序中的一个基础部分。如果您需要让用户从一组选项中做出一个选择，可以使用单选按钮。例如，在表单上询问客户要使用哪种信用卡付款时，您就可以使用单选按钮。

RadioButton 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 RadioButton 组件设置的创作参数：

label 设置按钮上的文本值，默认值是“单选按钮”。

data 是与单选按钮相关的值。没有默认值。

groupName 是单选按钮的组名称。默认值为 radioGroup。

selected 将单选按钮的初始值设置为被选中 (true) 或取消选中 (false)。被选中的单选按钮中会显示一个圆点。一个组内只有一个单选按钮可以有被选中的值 true。如果组内有多个单选按钮被设置为 true，则会选中最后实例化的单选按钮。默认值为 false。

labelPlacement 确定按钮上标签文本的方向。该参数可以是下列四个值之一：left、right、top 或 bottom，默认值是 right。有关详细信息，请参阅 RadioButton.labelPlacement。

您可以编写“动作脚本”，通过利用 RadioButton 类的方法、属性和事件来设置 RadioButton 实例的其他选项。有关详细信息，请参阅 RadioButton 类。

创建具有 RadioButton 组件的应用程序

以下过程解释了如何在创作时将 RadioButton 组件添加到应用程序。在该范例中，单选按钮用于显示是非问题，如“您是一个 Flashist 吗？”。单选按钮组的数据和实例名称 Verdict 一起显示在 TextArea 组件中。

要创建具有 RadioButton 组件的应用程序，请执行以下操作：

  1. 将两个 RadioButton 组件从“组件”面板拖到舞台上。
  2. 选择一个单选按钮，然后在“组件检查器”中执行以下操作：
    • 为 label 参数输入 Yes。
    • 为 data 参数输入 Flashist。
  3. 选择另一个单选按钮，然后在“组件检查器”中执行以下操作：
    • 为 label 参数输入 No。
    • 为 data 参数输入 Anti-Flashist。
  4. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    flashistListener = new Object();
flashistListener.click = function (evt){
    theVerdict.text = evt.target.selection.data
}
radioGroup.addEventListener("click", flashistListener);

    代码最后一行将一个 click 事件处理函数添加到 radioGroup 单选按钮组。处理函数会将 TextArea 组件实例 theVerdict 的 text 属性设置为 radioGroup 单选按钮组中被选定的单选按钮的 data 属性值。有关详细信息，请参阅 RadioButton.click。


自定义 RadioButton 组件

在创作过程中和运行时，您都可以在水平和垂直方向上改变 RadioButton 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅UIObject.setSize()）。

RadioButton 组件的边框是不可见的，它同时也指定了组件的点击区。如果您增加组件的大小，也就增加了点击区的大小。

如果组件边框太小而无法容纳组件标签，标签将被裁剪以适合边框。

对 RadioButton 组件使用样式

您可以设置样式属性以更改 RadioButton 的外观。如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

RadioButton 组件使用下列光晕样式：

样式 | 描述
themeColor | 组件的背景。这是唯一不继承样式值的颜色样式。可能的值包括“haloGreen”、“haloBlue”和“haloOrange”。
color | 组件标签的文本。
disabledColor | 禁用的文本颜色。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式；“常规”或“斜体”。
fontWeight | 字体粗细；“常规”或“粗体”。

对 RadioButton 组件使用外观

通过修改库中的组件元件，可以在创作时设置 RadioButton 组件的外观。RadioButton 组件的外观位于 HaloTheme.fla 或 SampleTheme.fla 中，这些文件位于库中的下列文件夹中：Flash UI Components 2/Themes/MMDefault/RadioButton Assets/States。请参阅关于设置组件外观。

如果单选按钮已启用但未被选中，当用户将指针移到它上方时，它会显示其滑过状态。当用户单击未被选中的单选按钮时，该单选按钮将接收输入焦点并显示其“false”按下状态。当用户松开鼠标时，单选按钮显示其“true”状态，组内先前被选中的单选按钮显示其“false”状态。如果用户在按下鼠标时将指针移离单选按钮，单选按钮的外观会恢复到其“false”状态并保留输入焦点。

如果单选按钮或单选按钮组被禁用，则不论用户进行什么交互操作，它都会显示禁用状态。

如果您使用 UIObject.createClassObject() 方法动态创建 RadioButton 组件实例，那么，您也可以动态设置组件外观。要动态设置 RadioButton 组件的外观，请将外观属性传递给 UIObject.createClassObject() 方法。有关详细信息，请参阅关于设置组件外观。外观属性指明使用哪个元件显示组件。

RadioButton 组件使用以下外观属性：

名称 | 描述
falseUpIcon | 未选中状态。默认值为 radioButtonFalseUp。
falseDownIcon | 按下且未选中的状态。默认值为 radioButtonFalseDown。
falseOverIcon | 悬停而未选中的状态。默认值为 radioButtonFalseOver。
falseDisabledIcon | 禁用而未选中的状态。默认值为 radioButtonFalseDisabled。
trueUpIcon | 选中状态。默认值为 radioButtonTrueUp。
trueDisabledIcon | 禁用的选中状态。默认值为 radioButtonTrueDisabled。


RadioButton 类

继承 UIObject > UIComponent > SimpleButton > Button > RadioButton

动作脚本包名称 mx.controls.RadioButton

RadioButton 类的属性允许您在运行时创建文字标签并确定它相对于单选按钮的位置。您还可以为单选按钮指定数据值，将单选按钮分组，并根据数据值或实例名称进行选择。

使用“动作脚本”设置 RadioButton 类的属性将覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

RadioButton 组件使用 FocusManager 来覆盖默认的 Flash Player 焦点矩形并绘制一个带圆角的自定义焦点矩形。有关创建焦点导航的信息，请参阅创建自定义焦点导航。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.RadioButton.version);

注意：下面的代码返回未定义的：trace(myRadioButtonInstance.version);。

RadioButton 类的方法摘要

继承 UIObject、UIComponent、SimpleButton 和 Button 类的所有方法。

RadioButton 类的属性摘要

属性 | 描述
RadioButton.data> | 与单选按钮实例相关的值。
RadioButton.groupName> | 单选按钮组的组名或单选按钮实例。
RadioButton.label> | 单选按钮旁边显示的文本。
RadioButton.labelPlacement> | 标签文本相对于单选按钮的方向。
RadioButton.selected> | 将单选按钮实例的状态设置为选中，并取消选中先前选中的单选按钮。
RadioButton.selectedData> | 选择具有指定数据值的单选按钮组中的单选按钮。
RadioButton.selection> | 对单选按钮组中当前选中的单选按钮的引用。

继承 UIObject、UIComponent、SimpleButton 和 Button 类的所有属性。

RadioButton 类的事件摘要

事件 | 描述
RadioButton.click> | 在按钮实例上按下鼠标时触发。

继承 UIObject、UIComponent、SimpleButton 和 Button 类的所有事件。


RadioButton.click

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(click){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.click = function(eventObject){
  ...
}
radioButtonGroup.addEventListener("click", listenerObject)

描述

事件；在单选按钮上单击鼠标（按下然后松开）或使用箭头键选中单选按钮时，向所有已注册的侦听器广播。当单选按钮组具有焦点，但组内没有单选按钮被选中时，如果按空格键或箭头键，该事件也会广播。

第一个用法范例使用 on() 处理函数，必须直接附加到 RadioButton 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，附加到单选按钮 myRadioButton 的以下代码将“_level0.myRadioButton”发送到“输出”面板：

on(click){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (radioButtonInstance) 调度一个事件（在本例中为 click），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。该事件对象有一组属性，这些属性包含有关事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

本范例是在时间轴的某帧上编写的，当 radioGroup 中的某个单选按钮被单击时向“输出”面板发送一条消息。代码的第一行创建一个名为 form 的侦听器对象。第二行代码为侦听器对象上的 click 事件定义一个函数。该函数内部有一个 trace 动作，它使用自动传递到该函数的事件对象（在本例中是 eventObj）来生成消息。事件对象的 target 属性是生成该事件的组件。您可以从 target 属性访问实例属性（本例中访问 RadioButton.selection 属性）。最后一行从 radioGroup 调用 UIEventDispatcher.addEventListener() 方法并将 click 事件和 form 侦听器对象作为参数传递给它，如下所示：

form = new Object();
form.click = function(eventObj){
  trace("The selected radio instance is " + eventObj.target.selection);
}
radioGroup.addEventListener("click", form);

下列代码还会在单击 radioButtonInstance 时向“输出”面板发送一条消息。on() 处理函数必须直接附加到 radioButtonInstance，如下所示：

on(click){
  trace("radio button component was clicked");
}


RadioButton.data

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonInstance.data

描述

方法；指定与单选按钮实例关联的数据。设置该属性覆盖创作过程中在属性检查器或“组件检查器”面板中设置的数据参数值。data 属性可以为任何数据类型。

范例

以下范例将数据值 "#FF00FF" 指定给 radioOne 单选按钮实例：

radioOne.data = "#FF00FF";


RadioButton.groupName

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonInstance.groupName
radioButtonGroup.groupName

描述

属性；为单选按钮实例或单选按钮组设置组名。您可以使用该属性来获取或设置单选按钮实例的或单选按钮组的组名。调用此方法会覆盖在创作过程中设置的组件名参数值。默认值为 "radioGroup"。

范例

以下范例将单选按钮实例的组名设置为“colorChoice”，然后将组名更改为“sizeChoice”。要测试此范例，请将单选按钮放在舞台上，实例名为 myRadioButton，然后在帧 1 中输入下列代码：

myRadioButton.groupName = "colorChoice";
trace(myRadioButton.groupName);
colorChoice.groupName = "sizeChoice";
trace(colorChoice.groupName);


RadioButton.label

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonInstance.label

描述

属性；为单选按钮指定文字标签。默认情况下，标签出现在单选按钮的右侧。调用此方法会覆盖在创作中指定的 label 参数。如果标签文字太长无法匹配组件的边界框，则缩短文字。

范例

下面的范例设置实例 radioButton 的标签属性：

radioButton.label = "Remove from list";


RadioButton.labelPlacement

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonInstance.labelPlacement
radioButtonGroup.labelPlacement

描述

属性；一个字符串，它指明该标签相对于某个单选按钮的位置。您可以为某个单独的实例或为某个单选按钮组设置此属性。如果您为一个组设置该属性，标签就会放置在组中各个单选按钮的相应的位置。

以下是四个可能的值：

  • "right" 单选按钮固定于边界区域的左上角。标签设置在单选按钮的右边。
  • "left" 单选按钮固定于边界区域的右上角。标签设置在单选按钮的左边。
  • "bottom" 标签放置在单选按钮的下方。单选按钮和标签组合在水平和垂直方向上居中。如果单选按钮的边界框不够大，标签就会被裁剪。
  • "top" 标签放置在单选按钮的上方。单选按钮和标签组合在水平和垂直方向上居中。如果单选按钮的边界框不够大，标签就会被裁剪。

范例

以下代码将标签放置在 radioGroup 中的每个单选按钮的左边：

radioGroup.labelPlacement = "left";


RadioButton.selected

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonInstance.selected
radioButtonGroup.selected

描述

属性；一个布尔值，它将单选按钮的状态设置为被选中 (true)，并取消选中先前被选中的单选按钮，或者，它将单选按钮的状态设置为取消选中 (false)。

范例

代码的第一行将 mcButton 实例的状态设置为 true。代码的第二行返回所选属性的值，如下所示：

mcButton.selected = true;
trace(mcButton.selected);


RadioButton.selectedData

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonGroup.selectedData

描述

属性；选中具有指定数据值的单选按钮，并取消选中先前被选中的单选按钮。如果选中的实例没有指定 data 属性，则会选择并返回所选实例的标签值。selectedData 属性可以是任何数据类型。

范例

以下范例从单选按钮组 colorGroup 中选择具有 "#FF00FF" 值的单选按钮，并把该值发送到“输出”面板：

colorGroup.selectedData = "#FF00FF";
trace(colorGroup.selectedData);


RadioButton.selection

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

radioButtonInstance.selection
radioButtonGroup.selection

描述

属性；在您获取或设置该属性时行为会有所不同。如果您获取该属性，它会返回单选按钮组中当前被选单选按钮的对象引用。如果您设置该属性，它会选择单选按钮组中指定的单选按钮（传递为对象引用），并取消选中先前被选中的单选按钮。

范例

以下范例选择实例名为 color1 的单选按钮，并将其实例名发送到“输出”面板：

colorGroup.selection = color1;
trace(colorGroup.selection._name)


关于 RDBMSResolver 组件（仅限 Flash Professional）

请将解析程序组件与 DataSet 组件（Macromedia Flash 数据结构中的数据管理功能的一部分）组合使用。通过解析程序组件，您能够将对应用程序内的数据进行的更改转换为适合于您所更新的外部数据源的格式。这些组件在运行时没有可视外观。

如果在应用程序中使用 DataSet 组件，则会生成一组优化的说明 (DeltaPacket)，它们描述了在运行时对数据所作的更改。这组说明会由解析程序组件转换为适当的格式（更新包）。在将更新发送到服务器后，服务器会发送一个响应（结果包），响应中包含由该更新操作导致的附加更新或错误。解析程序组件可以将此信息转换回 DeltaPacket，DeltaPacket 可应用于 DataSet 组件以使其与外部数据源保持同步。通过解析程序组件，您不必编写额外的动作脚本代码，就能够令应用程序和外部数据源保持同步。

RDBMSResolver 组件对 Web 服务、JavaBean、servlet 或 ASP 页可接收并分析的 XML 进行翻译。XML 包含在更新任何标准的 SQL 关系数据库时所需的信息和格式。可以使用并行解析程序组件 XupdateResolver（请参阅XUpdateResolver 组件（仅限 Flash Professional））将数据返回到基于 XML 的服务器。有关 DataSet 组件的详细信息，请参阅 DataSet 组件（仅限 Flash Professional）。有关连接器的详细信息，请参阅 WebServiceConnector（仅限 Flash Professional） 和XMLConnector 组件（仅限 Flash Professional）。有关 Flash 数据结构的详细信息，请参阅解析程序组件（仅限于 Flash Professional）。

RDBMSResolver 组件将在应用程序中对数据所作的更改转换为可以发送到外部数据源的 XML 包。

注意：可以使用 RDBMSResolver 将数据更新发送到可以分析 XML 并针对数据库生成 SQL 语句的任何外部数据源；例如，ASP 页、Java servlet 或 ColdFusion 组件。

RDBMSResolver 组件的更新以 XML 更新包的形式发送，而该更新包通过连接器对象与数据库进行通信。解析程序组件连接到 DataSet 组件的 DeltaPacket 属性，将其自己的更新包发送到连接器，从连接器接收服务器错误，并且将这些错误传送回 DataSet 组件 - 全都使用可绑定的属性。


使用 RDBMSResolver 组件（仅限 Flash Professional）

仅当 Flash 应用程序包含 DataSet 组件且必须将更新发送回数据源时，才使用此 RDBMSResolver 组件。此组件对您要返回到关系数据库的数据进行解析。

有关使用 RDBMSResolver 组件的详细信息，请参阅解析程序组件（仅限于 Flash Professional）。

RDBMSResolver 组件参数

TableName 一个字符串，在 XML 中表示要更新的数据库表的表名称。它应该与要更新的 Resolver.fieldInfo 项目的输入值相同。如果不存在对此字段的更新，此值应该为空（默认值）。

UpdateMode 一个枚举数，确定在生成 XML 更新包的过程中标识关键字段的方式。默认值为 umUsingKey。可能值如下：

  • umUsingAll 使用修改的所有字段的旧值标识要更新的记录。这是用于更新的最安全的值，原因是，它确保了其他用户在您检索记录后没有修改过该记录。然而，这种方法很耗时，而且会生成较大的更新包。
  • umUsingModified 使用修改的所有字段的旧值标识要更新的记录。该值确保其他用户在您获取记录后不修改记录中的相同字段。
  • umUsingKey 这是此属性的默认值。此设置使用关键字段的旧值。这意味着“乐观并发”模型（当今的大部分数据库系统都采用该模型），并确保您正在修改的记录是在数据库中检索的记录。您的更改会覆盖任何其他用户对相同数据的更改。

NullValue 一个字符串，代表空字段值。此值可自定义，以防止与空字符串 ("") 或另一个有效值混淆。默认值为 {_NULL_}。

FieldInfo 一个集合，代表唯一标识记录的一个或多个关键字段。如果数据源是数据库表，则应该有一个或多个字段唯一地标识其中的记录。另外，可能已通过其他表计算或联接了一些字段。必须标识这些字段，以便可以在 XML 更新包中设置关键字段，而且在 XML 更新包中忽略任何不应更新的字段。

RDBMSResolver 组件包含了一个用于此用途的 FieldInfo 属性。此集合属性使您可以定义不限数量的字段，这些字段具有标识需要特殊处理的字段的属性。集合中的每个 FieldInfo 项目都包含三个属性：

  • FieldName 字段的名称。此名称应该映射到 DataSet 组件中的字段。
  • OwnerName 一个可选值，用于标识不“属于”在解析程序组件的 TableName 参数中定义的同一个表的字段。如果此值与 TableName 参数的值相同或为空，则字段通常会包含在 XML 更新包中。如果值不相同，则此字段会被排除在更新包之外。
  • IsKey 一个布尔值属性，应将其设置为 true，以便更新表的所有关键字段。

以下范例显示为了更新客户表中的字段而创建的 FieldInfo 项目。必须标识客户表中的关键字段。客户表具有一个关键字段 - id，因此，您应该创建具有以下值的字段项目：

FieldName = "id"
OwnerName = <--! 将此值保留为空 -->
IsKey = "true"

另外，在查询中使用联接操作来添加 custType 字段。此字段应被排除在更新之外，因此，创建具有以下值的字段项目：

FieldName = "custType"
OwnerName = "JoinedField"
IsKey = "false"

定义了字段项目之后，Flash Player 可以使用它们自动生成用于更新表的完整 XML。

RDBMSResolver 组件的属性摘要

属性 | 描述
RDBMSResolver.deltaPacket> | DataSet 组件的 DeltaPacket 属性的副本。
RDBMSResolver.fieldInfo> | 不限数量的字段，这些字段具有将需要特殊处理的 DataSet 字段标识为关键字段或不可更新字段的属性。
RDBMSResolver.nullValue> | 指示字段值为空的指示符。
RDBMSResolver.tableName> | 放入 XML 中的表名称，指示要更新的数据库表。
RDBMSResolver.updateMode> | 在生成 XML 更新包时，确定如何标识关键字段的值。
RDBMSResolver.updatePacket> | 连接器 updatePacket 属性的副本，包含最新的 XML 格式数据。在服务器收到此应用程序的更新请求后，会将这些数据从连接器返回到 DataSet 组件。
RDBMSResolver.updateResults> | 连接器的 Results 属性的副本，它返回 DataSet 组件的任何 XML 格式错误或更新。

RDBMSResolver 组件的方法摘要

方法 | 描述
RDBMSResolver.addFieldInfo()> | 向 fieldInfo 集合中添加新项目，用于在运行时动态设置解析程序组件，而不使用创作环境中的“组件检查器”。

RDBMSResolver 组件的事件摘要

事件 | 描述
RDBMSResolver.beforeApplyUpdates> | 在应用程序中定义；由解析程序组件调用，以便在将 updatePacket 属性的 XML 绑定到连接器之前对其进行自定义修改。
RDBMSResolver.reconcileResults> | 在应用程序中定义；由解析程序组件调用，以便对发送到服务器的 updatePacket 属性和从服务器返回的 updatePacket 属性之间的更新进行协调。
RDBMSResolver.reconcileUpdates> | 在应用程序中定义；由解析程序组件调用，以便协调服务器接收的更新和未决的更新。


RDBMSResolver.addFieldInfo()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.addFieldInfo("fieldName", "ownerName", "isKey")

参数

fieldName 字符串；提供此信息对象描述的字段的名称。

ownerName 字符串；提供拥有此字段的表的名称。如果此参数与解析程序实例的 tablename 属性相同，则可将其留空 ("")。

isKey 布尔值；指示此字段是否是关键字段。

返回

无。

描述

方法；将新项目添加到更新包中的 XML fieldInfo 集合。如果您必须在运行时动态设置解析程序组件，请使用此方法，而不使用创作环境中的“组件检查器”。

范例

下面的范例创建了一个解析程序组件，并提供了表的名称、关键字段的名称，而且防止 personTypeName 字段被更新：

var myResolver:RDBMSResolver = new RDBMSResolver();
myResolver.tableName = "Customers";
// 将 id 字段设置为关键字段
// 并设置 personTypeName 字段，使其不会被更新。
myResolver.addFieldInfo("id", "", true);
myResolver.addFieldInfo("personTypeName", "JoinedField", false);
// 设置数据绑定
//...


RDBMSResolver.beforeApplyUpdates

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.beforeApplyUpdates(eventObject)

参数

eventObject 解析程序事件对象；描述在通过连接器将更新发送到数据库之前对 XML 包进行的自定义。此解析程序事件对象应包含以下属性：

属性 | 描述
target | 对象；触发此事件的解析程序。
type | 字符串；事件的名称。
updatePacket | XML 对象；将要应用的 XML 对象。

返回

无。

描述

属性；deltaPacket 类型的属性，它接收将要转换为 xupdatePacket 的 deltaPacket，并根据放置于 updateResults 属性中的任何服务器结果输出 deltaPacket。此事件处理函数提供一个方法，您可以通过此方法在将更新的数据发送到连接器前对 XML 进行自定义修改。

updateResults 属性中的消息视作错误。这意味着，具有消息的增量被再次添加到 deltaPacket 中，这样，下次将 deltaPacket 发送到服务器时可以重新发送它。您必须编写代码以处理具有消息的增量，以便在将消息添加到下一个 deltaPacket 前将这些消息提供给用户并进行修改。

范例

以下范例将用户身份验证数据添加到 XML 包：

on (beforeApplyUpdates) {
   // 添加用户身份验证数据
   var userInfo = new XML( ""+getUserId()+ ""+getPassword()+"" );
   updatePacket.firstChild.appendChild( userInfo );
}


RDBMSResolver.deltaPacket

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

属性；deltaPacket 类型的属性，它接收将要转换为 updatePacket 的 deltaPacket，并从放在 updateResults 属性中的任何服务器结果中输出 deltaPacket。

updateResults 属性中的消息视作错误。这意味着，具有消息的增量被再次添加到 deltaPacket 中，这样，下次将 deltaPacket 发送到服务器时可以重新发送它。您必须编写代码以处理具有消息的增量，以便在将消息添加到下一个 deltaPacket 前将这些消息提供给用户并进行修改。


RDBMSResolver.fieldInfo

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.fieldInfo

描述

属性；Collection 类型的属性，它指定不限数量的字段的集合，这些字段具有标识需要特殊处理（由于字段是关键字段或不可更新字段）的 DataSet 字段的属性。集合中的每个 FieldInfo 项目都包含三个属性：

属性 | 描述
FieldName | 需特殊处理的字段的名称。此字段名称应该映射到 DataSet 中的字段名称。
OwnerName | 如果此字段不“属于”在组件的 TableName 参数中定义的同一个表，则此可选属性是此字段的所有者的名称。如果此属性中填入了与该参数相同的值或者留空，则此字段通常会包含在 XML 更新包中。如果填入了不同的值，则此字段会被排除在更新包之外。
IsKey | 布尔值，对于要更新的表的所有关键字段设置为 true。


RDBMSResolver.nullValue

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

属性；String 类型属性，用于为字段的值提供空值。此值可自定义，以防止与空字符串 ("") 或另一个有效值混淆。默认字符串为 {_NULL_}。


RDBMSResolver.reconcileResults

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.reconcileResults(eventObject)

参数

eventObject 解析程序事件对象；描述用于比较两个 updatePacket 的事件对象。 此解析程序事件对象应包含以下属性：

属性 | 描述
target | 对象；触发此事件的解析程序。
type | 字符串；事件的名称。

返回

无。

描述

事件；由解析程序组件调用，用于在从服务器接收到结果并应用到 deltaPacket 后比较两个包。

一个 updateResults 包可能包含 deltaPacket 中的操作结果以及有关其他客户端所执行更新的信息。接收到新的 updatePacket 时，操作结果和数据库更新被分为两个 updatePacket，并分别放入到 deltaPacket 属性中。reconcileResults 事件在使用数据绑定发送包含操作结果的 deltaPacket 之前激发。

范例

下面的范例会协调两个 updatePacket，并在成功后返回和清除更新：

on (reconcileResults) {
     // 检查结果
     if( examine( updateResults ))
       myDataSet.purgeUpdates();
     else
       displayErrors( results );
}


RDBMSResolver.reconcileUpdates

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.reconcileResults(eventObject)

参数

eventObject 解析程序事件对象；描述在将更新通过连接器发送到数据库之前对 XML 包进行的自定义。此解析程序事件对象应包含以下属性：

属性 | 描述
target | 对象；触发此事件的解析程序。
type | 字符串；事件的名称。

返回

无。

描述

事件；在应用 deltaPacket 中的更新后从服务器接收到结果时，由解析程序组件调用。一个 updateResults 包可能包含 deltaPacket 中的操作结果以及有关其他客户端所执行更新的信息。接收到新的 updatePacket 时，操作结果和数据库更新被分为两个 deltaPacket，并分别放入到 deltaPacket 属性中。reconcileUpdates 事件在使用数据绑定发送包含任何数据库更新的 deltaPacket 之前激发

示例

下面的范例会协调两个结果并在成功后清除更新：

on (reconcileUpdates) {
     // 检查结果
     if( examine( updateResults ))
       myDataSet.purgeUpdates();
     else
       displayErrors( results );


RDBMSResolver.tableName

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

属性；String 类型属性，用于在 XML 中表示要更新的数据库表的表名称。它还确定在 updatePacket 中发送哪个字段。为了进行此确定，解析程序组件会将此属性的值与为 fieldInfo.ownerName 属性提供的值进行比较。如果某个字段在 fieldInfo 集合属性中没有条目，则此字段会放入到 updatePacket 中。如果某个字段在 fieldInfo 集合属性中有条目，且 ownerName 属性值为空或者与解析程序组件的 tableName 属性相同，则此字段会放入到 updatePacket 中。如果某个字段在 fieldInfo 集合属性中有条目，且 ownerName 属性值不为空或者与解析程序组件的 tableName 属性不相同，则此字段不会放入到 updatePacket 中。


RDBMSResolver.updateMode

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

属性；此属性包含一些值，这些值在生成 XML 更新包时，确定如何标识关键字段。以下三个字符串是此属性的值：

值 | 描述
umUsingAll | 使用修改过的所有字段的旧值以标识要更新的记录。这是用于更新的最安全的值，原因是，它确保了其他用户在您检索记录后，没有修改过所有这些记录。然而，这种方法较为耗时，而且会生成较大的更新包。
umUsingModified | 使用修改过的所有字段的旧值以标识要更新的记录。该值确保其他用户在您获取记录后不修改记录中的相同字段。
umUsingKey | 这是此属性的默认值。使用关键字段的旧值。这意味着“乐观并发”模型（当今的大部分数据库系统都采用该模型），并确保您正在修改的记录是在数据库中检索的记录。您的更改会覆盖任何其他用户对相同数据的更改。


RDBMSResolver.updatePacket

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

描述

属性；XML 类型属性，用于绑定到某个连接器属性，后者将更改的已转换更新包传送回服务器，以便可以更新数据源。这是包含 DataSet 更改的包的 XML 文档。


RDBMSResolver.updateResults

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

属性；deltaPacket 类型属性，包含通过连接器从服务器返回的更新的结果。使用此属性可将错误和更新的数据从服务器传送到 DataSet；例如，当服务器为自动分配的字段分配新 ID 时。将此属性绑定到连接器的 Results 属性，以便它可以接收更新的结果并将结果传送回 DataSet。

updateResults 属性中的消息视作错误。这意味着，具有消息的增量被再次添加到 deltaPacket 中，这样，下次将 deltaPacket 发送到服务器时可以重新发送它。您必须编写代码以处理具有消息的增量，以便在将消息添加到下一个 deltaPacket 前将这些消息提供给用户并进行修改。


关于远程过程调用 (RPC) 组件 API

动作脚本类名称 mx.datacomponents.RPC

远程过程调用 (RPC) 组件 API 是一种接口（一组方法、属性和事件），它可以由 Flash MX 2004 v2 组件执行。RPC 组件 API 定义了一种轻松地向外部资源（例如 Web 服务）发送参数或通过它接收结果的方法。

执行 RPC API 的组件包括 WebServiceConnector 和 XMLConnector 组件。这些组件充当外部数据源（例如 Web 服务或 XML 文件）之间的连接器，以及充当应用程序中的 UI 组件。

RPC 组件能够调用一个外部函数、传入参数以及接收结果。组件可以多次调用同一个函数。要调用多个函数，必须使用多个组件。

RPC 组件类的属性摘要

属性 | 描述
RPC.multipleSimultaneousAllowed> | 指明是否可以同时进行多个调用。
RPC.params> | 指定在执行下一个 Trigger() 操作时要发送到服务器的数据。
RPC.results> | 标识作为 Trigger() 操作的结果从服务器接收的数据。
RPC.suppressInvalidCalls> | 指明在参数无效的情况下是否禁止调用。

RPC 组件类的方法摘要

方法 | 描述
RPC.trigger()> | 启动远程过程调用。

RPC 组件类的事件摘要

事件 | 描述
RPC.result> | 远程过程调用成功完成后广播。
RPC.send> | 当 Trigger 函数执行时（在收集了参数数据之后，但在验证这些数据且启动“远程调用”之前）进行广播。
RPC.status> | 在远程过程调用启动时广播，以通知用户操作状态。


RPC.multipleSimultaneousAllowed

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.multipleSimultaneousAllowed;

描述

属性；指明是否可以同时进行多个调用。如果为 false，则 Trigger() 函数将在另一个调用已在执行时执行一个调用。将发出 status 事件，并且具有代码 CallAlreadyInProgress。如果值为 true，将发生调用。

当同时进行多个调用时，不保证这些调用的完成顺序与触发它们的顺序相同。此外，Flash Player 可能会对同时发生的网络操作的数目加以限制。该限制将因版本和平台而异。


RPC.params

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.params;

描述

属性；指定在执行下一个 Trigger() 操作时要发送到服务器的数据。每个 RPC 组件均定义使用此数据的方式以及有效的类型。


RPC.result

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("result", myListenerObject);

描述

事件；在远程过程调用操作成功完成后广播。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“result”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）

您可以使用 results 属性获取实际结果值。


RPC.results

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.results;

描述

属性；标识作为 Trigger() 操作的结果从服务器接收的数据。每个 RPC 组件均定义获取此数据的方式以及有效的类型。这些数据在 RPC 操作成功完成后出现，由 result 事件通知。它在该组件卸载前或执行下一个 RPC 操作前可用。

返回的数据可能会非常大。您可以通过以下两种方式管理这些数据：

  • 选择适当的影片剪辑、时间轴或屏幕作为 RPC 组件的父级。在父级退出后该组件的存储区将可用于垃圾回收。
  • 在动作脚本中，您可以随时将空值分配给该属性。


RPC.send

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("send", myListenerObject);

描述

事件；在处理 Trigger() 操作期间（在收集了参数数据后，但在验证这些数据和启动远程过程调用前）广播。此位置适合于存放将在调用前修改参数数据的代码。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“send”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）

您可以使用 params 属性获取或修改实际参数值。


RPC.status

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("status", myListenerObject);

描述

事件；在远程过程调用启动时广播，以通知用户操作状态。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“status”
  • target：对发出该事件的对象的引用；例如，WebServiceConnector 组件
  • code：一个字符串，提供已发生的特定情况的名称。
  • data：一个对象，其内容取决于代码。

下面是可用于状态事件的代码和关联数据：

代码 | 数据 | 描述
StatusChange | {callsInProgress:nnn} | 只要 Web 服务调用开始或结束就发出该事件。“nnn”项提供当前正发生的调用的数目。
CallAlreadyInProgress | 无数据 | 如果：(a) 调用了 Trigger 函数，且 (b) multipleSimultaneousAllowed 为 false，同时 (c) 调用已在执行中，则会发出此事件。在发生此事件后，则认为尝试的调用已完成，并且不会发生“result”或“send”事件。
InvalidParams | 无数据 | 如果 Trigger 函数发现“params”属性不包含有效数据，则会发出此事件。如果“suppressInvalidCalls”属性为 true，则认为尝试的调用已完成，并且不会发生“result”或“send”事件。


RPC.suppressInvalidCalls

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.suppressInvalidCalls;

描述

属性；指明在参数无效的情况下是否禁止调用。如果为 true，则 Trigger() 函数在绑定的参数未通过验证的情况下将不执行调用。将发出“status”事件，并且具有代码 InvalidParams。如果为 false，将进行该调用，并且根据需要使用无效数据。


RPC.trigger()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

componentInstance.trigger();

描述

方法；启动远程过程调用。每一 RPC 组件均精确定义此操作涉及的内容。如果该操作成功，则操作结果将出现在 RPC 组件的 results 属性中。

trigger() 方法执行以下步骤：

  1. 如果任何数据绑定到 params 属性，则该方法执行所有绑定以确保提供最新数据。这样做还会导致发生数据验证。
  2. 如果数据无效且 suppressInvalidCalls 设置为 true，则操作将停止。
  3. 如果操作继续，则发出 send 事件。
  4. 使用指示的连接方法（例如 HTTP）启动实际远程调用。


关于 Screen 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > Loader> Screen

动作脚本类名称 mx.screens.Screen

Screen 类是在 Flash MX Professional 2004 的“屏幕大纲”窗格中创建的屏幕的基类。屏幕是用于创建应用程序和演示文稿的高级容器。有关使用屏幕的概述，请参阅使用屏幕（仅限于 Flash Professional）。

Screen 类有两个主要的子类：Slide 和 Form。

Slide 类提供幻灯片演示文稿的运行时行为。Slide 类具有内置的导航和排序功能，并能够使用“行为”轻松地在幻灯片之间附加过渡。幻灯片对象含有“状态”概念，因此用户可以进入到下一或上一幻灯片/状态：显示下一张幻灯片时，上一张幻灯片即会隐藏。有关使用 Slide 类控制幻灯片演示文稿的详细信息，请参阅Slide 类（仅限 Flash Professional）。

Form 类为窗体应用程序提供运行时环境。窗体能够覆盖其他组件、作为其他组件的容器或者被其他组件包含。与幻灯片不同，窗体不提供任何排序或导航功能。有关使用 Form 类的详细信息，请参阅Form 类（仅限 Flash Professional）。

Screen 类提供幻灯片和窗体共有的功能。

屏幕知道如何管理其子项 每个屏幕都附带一种内置的属性（该属性是作为子项的屏幕的集合）。此集合由“屏幕窗格”中的屏幕层次结构布局确定。屏幕可以具有任意数量（包括零）的子项，这些子项自身也可以有子项。

屏幕可以隐藏/显示其子项 因为屏幕本质上是嵌套的影片剪辑的集合，所以屏幕可以控制其子项的可见性。对于窗体应用程序，在默认情况下，屏幕的所有子项同时可见；对于幻灯片演示文稿，通常是一次显示一个屏幕。

屏幕广播事件 例如，当特定的屏幕可见时，可以触发声音的播放或者开始播放一段视频。


将外部内容加载到屏幕（仅限 Flash Professional）

Screen 类扩展了 Loader 类（请参阅Loader 组件），从而提供了轻松管理和加载外部 SWF（和 JPEG）的能力。Loader 类包含一个名为 contentPath 的属性，此属性指定外部 SWF 或 JPEG 的 URL，或者“库”中的影片剪辑的链接标识符。

使用此功能，可以将外部屏幕树（或任何外部 SWF）作为任何屏幕节点的子项加载。这提供了一种有用的方法，利用此方法可将基于屏幕的影片模块化，并将这些影片分为多个单独的 SWF。

例如，假如您有一个幻灯片演示文稿，有三个人各自提供了其中的一个部分。您可以要求每个演示者各自创建一个单独的幻灯片演示文稿 (SWF)。然后，您可以创建一个“主幻灯片演示文稿”，其中包含三个占位符幻灯片，分别用于演示者创建的各个幻灯片演示文稿。对于每个占位符幻灯片，可以将它的 contentPath 属性指向每个 SWF。

例如，可以按下图所示安排“主”幻灯片演示文稿：

“主”SWF 幻灯片演示文稿结构

假设演示者提供了三个 SWF：speaker_1.swf、speaker_2.swf 和 speaker_3.swf。通过指定每个占位符幻灯片的 contentPath 属性（方法是使用动作脚本，或者为每张幻灯片设置属性检查器的 contentPath 属性），即可轻松地组合整个演示文稿。

Speaker_1.contentPath = speaker_1.swf;
Speaker_2.contentPath = speaker_2.swf;
Speaker_3.contentPath = speaker_3.swf;

也可以使用属性检查器设置每张幻灯片的 contentPath 属性。请注意，在默认情况下，当您在属性检查器中（或使用以上所示的代码）设置幻灯片的 contentPath 后，只要加载了“主演示文稿”SWF，即会加载指定的 SWF。为了缩短最初加载时间，可以考虑设置附加到每张幻灯片的 on(reveal) 处理函数中的 contentPath 属性。

// 附加到 Speaker_1 幻灯片
on(reveal) {
  this.contentPath="speaker_1.swf";
}

或者，您可以将幻灯片的 autoLoad 属性（从 Loader 类继承）设置为 false，然后在幻灯片显示出来时调用幻灯片上的 load() 方法（也是从 Loader 类继承）。

// 附加到 Speaker_1 幻灯片
on(reveal) {
  this.load();
}

使用动作脚本引用加载的屏幕

Loader 类创建一个名为 contentNode 的内部影片剪辑，它将 contentPath 属性指定的 SWF 或 JPEG 加载到其中。实际上，该影片剪辑会在“占位符”幻灯片（在上面的“主”演示文稿中创建）和加载的幻灯片演示文稿中的第一张幻灯片之间添加额外的屏幕节点。

例如，假设为上图所示的 Speaker_1 幻灯片占位符创建的 SWF 具有以下结构（如“屏幕大纲”窗格中所示）：

“Speaker 1”SWF 幻灯片演示文稿结构

在运行时，当 Speaker 1 SWF 加载到占位符幻灯片中时，整个幻灯片演示文稿将会具有以下结构：

“主”演示文稿和“speaker”演示文稿的结构（运行时）

Screen、Slide 和 Form 类的属性和方法会尽可能地“忽略”此 contentHolder 节点。也就是说（请参考上面的图示），名为 MyPresentation 的幻灯片（及其子幻灯片）是以 Presentation 幻灯片为根的连续幻灯片树的一部分，而且不被视为单独的子树。

Screen 类的方法摘要

方法 | 描述
Screen.getChildScreen()> | 返回此屏幕位于特定索引处的子屏幕。

继承 UIObject、UIComponent、View 和 Loader 组件的所有方法。

Screen 类的属性摘要

属性 | 描述
Screen.currentFocusedScreen> | 返回包含全局当前焦点的屏幕。
Screen.indexInParent> | 返回该屏幕在其父屏幕的子屏幕列表中的索引（从零开始）。
Screen.numChildScreens> | 返回屏幕包含的子屏幕数量。
Screen.parentIsScreen> | 返回一个布尔值（true 或 false），指示屏幕的父对象本身是否是屏幕。
Screen.rootScreen> | 返回包含此屏幕的（子）树的根屏幕。

继承 UIObject、UIComponent、View 和 Loader 组件的所有属性。

Screen 类的事件摘要

事件 | 描述
Screen.allTransitionsInDone> | 当应用到屏幕的所有“进入”过渡结束时进行广播。
Screen.allTransitionsOutDone> | 当应用到屏幕的所有“退出”过渡结束时进行广播。
Screen.mouseDown> | 当在直接属于屏幕的对象（形状或影片剪辑）上按下鼠标按钮时进行广播。
Screen.mouseDownSomewhere> | 当在舞台上的某处（不一定要在属于此屏幕的对象上）按下鼠标按钮时进行广播。
Screen.mouseMove> | 当鼠标在屏幕上移动时进行广播。
Screen.mouseOut> | 当鼠标从屏幕内移出时进行广播。
Screen.mouseOver> | 当鼠标从屏幕外移入时进行广播。
Screen.mouseUp> | 当在直接属于屏幕的对象（形状或影片剪辑）上松开鼠标按钮时进行广播。
Screen.mouseUpSomewhere> | 当在舞台上的某处（不一定要在属于此屏幕的对象上）松开鼠标按钮时进行广播。

继承 UIObject、UIComponent、View 和 Loader 组件的所有事件。


Screen.allTransitionsInDone

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(allTransitionsInDone) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.allTransitionsInDone = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("allTransitionsInDone", listenerObject)

说明

事件；当应用到此屏幕的所有“进入”过渡结束时进行广播。allTransitionsInDone 事件由与 myScreen 关联的过渡管理器广播。

示例

在下面的范例中，当应用到名为 mySlide 的幻灯片的所有“进入”过渡结束后，mySlide 所包含的按钮 (nextSlide_btn) 即可见。

// 附加到 mySlide：
on(allTransitionsInDone) {
  this.nextSlide_btn._visible = true;
}

另请参见

Screen.allTransitionsOutDone


Screen.allTransitionsOutDone

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(allTransitionsOutDone) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.allTransitionsOutDone = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("allTransitionsOutDone", listenerObject)

说明

事件；当应用到此屏幕的所有“退出”过渡结束时进行广播。allTransitionsOutDone 事件由与 myScreen 关联的过渡管理器广播。

另请参见

Screen.currentFocusedScreen


Screen.currentFocusedScreen

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mx.screens.Screen.currentFocusedScreen

描述

静态属性（只读）；返回对包含全局当前焦点的“最低叶”屏幕对象的引用。焦点可以在屏幕自身上，或者在影片剪辑、文本对象或者该屏幕内的组件上。如果没有当前焦点，则默认为 null。

范例

下面的范例在“输出”面板中显示当前具有焦点的屏幕的名称。

var currentFocus:mx.screens.Screen = mx.screens.Screen.currentFocusedScreen;
trace("Current screen is:" + currentFocus._name);


Screen.getChildScreen()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myScreen.getChildScreen(index)

参数

childIndex 指示要返回的子屏幕索引的一个数字（从零开始）。

返回

屏幕对象。

说明

方法；返回 myScreen 的子屏幕对象（其索引为 childIndex）。

示例

下面的范例在“输出”面板中显示了属于名为 Presentation 的根屏幕的所有子屏幕名称。

for (var i:Number = 0; i < _root.Presentation.numChildScreens; i++) {
    var childScreen:mx.screens.Screen = _root.Presentation.getChildScreen(i);
    trace(childScreen._name);
}


Screen.indexInParent

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myScreen.indexInParent

说明

属性（只读）；包含 myScreen 在其父屏幕的子屏幕列表中的索引（从零开始）。

示例

下面的范例显示了屏幕 myScreen 在其父屏幕的子屏幕列表中的相对位置。

var numChildren:Number = myScreen._parent.numChildScreens;
var myIndex:Number = myScreen.indexInParent;
trace("I’m child slide # " + myIndex + " out of " + numChildren + " screens.");


Screen.mouseDown

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseDown) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseDown = function(eventObj){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseDown", listenerObject)

说明

事件；当在直接属于屏幕的对象（例如，形状或影片剪辑）上按下鼠标按钮时进行广播。

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

示例

下面的代码在“输出”面板中显示了曾捕获鼠标事件的屏幕的名称。

on(mouseDown) {
  trace("Mouse down event on:" + eventObj.target._name);
}


Screen.mouseDownSomewhere

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseDown) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseDownSomewhere = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseDownSomewhere", listenerObject)

说明

事件；当按下鼠标按钮（但不一定在指定的屏幕上）时进行广播。

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。


Screen.mouseMove

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseDown) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseMove = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseMove", listenerObject)

说明

事件；当鼠标在屏幕上移动时进行广播。此事件仅当鼠标移到此屏幕的边框上时才发送。

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

注意：使用此事件可能会影响系统性能，因此使用时应小心。


Screen.mouseOut

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseOut) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseOut = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseOut", listenerObject)

说明

事件；当鼠标从屏幕的边框内移到边框外时进行广播。

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

注意：使用此事件可能会影响系统性能，因此使用时应小心。


Screen.mouseOver

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseDown) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseOver = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseOver", listenerObject)

说明

事件；当鼠标从屏幕的边框外移到边框内时进行广播。

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。

注意：使用此事件可能会影响系统性能，因此使用时应小心。


Screen.mouseUp

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseUp) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseUP = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseUp", listenerObject)

说明

事件；在屏幕上松开鼠标时进行广播。

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。


Screen.mouseUpSomewhere

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(mouseUpSomewhere) {
  // 此处是您的代码
}
listenerObject = new Object();
listenerObject.mouseUpSomewhere = function(eventObject){
  // 此处插入您的代码
}
screenObj.addEventListener("mouseUpSomewhere", listenerObject)

说明

事件；当按下鼠标按钮（但不一定在指定的屏幕上）时进行广播

该事件被触发时，它会自动将一个事件对象 (eventObj) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。有关事件对象的详细信息，请参阅事件对象。


Screen.numChildScreens

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myScreen.numChildScreens

说明

属性（只读）；返回 myScreen 包含的子屏幕数量。

示例

下面的范例显示属于 myScreen 的所有子屏幕的名称。

var howManyKids:Number = myScreen.numChildScreens;
for(i=0; i<howManyKids; i++) {
  var childScreen = myScreen.getChildScreen(i);
  trace(childScreen._name);
}

另请参见

Screen.getChildScreen()


Screen.parentIsScreen

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myScreen.parentIsScreen

说明

属性（只读）：返回一个布尔值（true 或 false），指示所指定屏幕的父对象是 (true) 否 (false) 也是屏幕。如果为 false，则 myScreen 位于其屏幕层次结构的根位置。

示例

下面的代码确定屏幕 myScreen 的父对象是否也是屏幕。如果是，则假设 myScreen 为演示文稿中的根幻灯片或主幻灯片，因而没有同辈幻灯片。否则，如果 myScreen.parentIsScreen 为 true，则在“输出”面板中显示 myScreen 的同辈幻灯片数量。

if (myScreen.parentIsScreen) {
  trace("I have "+myScreen._parent.numChildScreens+" sibling screens");
} else {
  trace("I am the root screen and have no siblings");
}


Screen.rootScreen

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myScreen.rootScreen

说明

属性（只读）；返回位于屏幕层次结构顶层的包含 myScreen 的屏幕。

示例

下面的范例显示名称

var myRoot:mx.screens.Screen = myScreen.rootScreen;


关于 ScrollPane 组件

“滚动窗格”组件在一个可滚动区域中显示影片剪辑、JPEG 文件和 SWF 文件。您可以让滚动条能够在一个有限的区域中显示图像。您可以显示从本地位置或 Internet 加载的内容。在创作过程中以及在运行时，您都可以使用“动作脚本”来设置滚动窗格的内容。

一旦滚动窗格具有焦点，如果滚动窗格的内容具有有效的制表位，那些标记将接收焦点。在内容中的最后一个制表位之后，焦点将切换到下一个组件。滚动窗格中的垂直和水平滚动条从不接收焦点。

如果用户单击或切换到 ScrollPane 实例，该实例将接收焦点。当 ScrollPane 实例具有焦点时，您可以使用下列按键来控制它：

按键 | 描述
向下箭头 | 内容向上移动一垂直滚动行。
End 键 | 内容移动到滚动窗格的底部。
向左箭头 | 内容向右移动一水平滚动行。
Home 键 | 内容移动到滚动窗格的顶部。
Page Down 键 | 内容向上移动一垂直滚动页。
Page Up 键 | 内容向下移动一垂直滚动页。
向右箭头 | 内容向左移动一水平滚动行。
向上箭头 | 内容向下移动一垂直滚动行。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 ScrollPane 实例的实时预览反映了创作时在属性检查器或“组件检查器”面板中对参数所做的更改。


使用 ScrollPane 组件

如果某些内容对于它们要加载到其中的区域而言过大，您可以使用滚动窗格来显示这些内容。例如，如果您有一幅大图像，而在应用程序中只有很小的空间来显示它，则可以将其加载到滚动窗格中。

您可以通过将 scrollDrag 参数设为 true 来允许用户在窗格中拖动内容；一个手形光标会出现在内容上。与其他大多数组件不同的是，当按下鼠标按键时，事件开始广播，一直到松开按键才结束。如果滚动窗格的内容具有有效的 Tab 键停靠位，您必须将 scrollDrag 设为 false，否则每次鼠标与内容进行的交互操作都将会调用滚动拖动。

ScrollPane 参数

下面是您可以在属性检查器或“组件检查器”面板中为每个 ScrollPane 组件实例设置的创作参数：

contentPath 指明要加载到滚动窗格中的内容。该值可以是本地 SWF 或 JPEG 文件的相对路径，或 Internet 上的文件的相对或绝对路径。它也可以是设置为“为动作脚本导出”的库中的影片剪辑元件的链接标识符。

hLineScrollSize 指明每次按下箭头按钮时水平滚动条移动多少个单位。默认值为 5。

hPageScrollSize 指明每次按轨道时水平滚动条移动多少个单位。默认值为 20。

hScrollPolicy 显示水平滚动条。该值可以为“on”、“off”或“auto”。默认值为“auto”。

scrollDrag 是一个布尔值，它允许 (true) 或不允许 (false) 用户在滚动窗格中滚动内容。默认值为 false。

vLineScrollSize 指明每次按下箭头按钮时垂直滚动条移动多少个单位。默认值为 5。

vPageScrollSize 指明每次按轨道时垂直滚动条移动多少个单位。默认值为 20。

vScrollPolicy 显示垂直滚动条。该值可以为“on”、“off”或“auto”。默认值为“auto”。

您可以编写“动作脚本”，通过利用其属性、方法和事件来控制 ScrollPane 组件的这些选项以及其他选项。有关详细信息，请参阅 ScrollPane 类。

创建具有 ScrollPane 组件的应用程序

以下过程解释了如何在创作时将 ScrollPane 组件添加到应用程序。在此范例中，滚动窗格加载一个包含徽标的 SWF 文件。

要创建具有 ScrollPane 组件的应用程序，请执行以下操作：

  1. 将 ScrollPane 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 myScrollPane。
  3. 在属性检查器中，为 contentPath 参数输入 logo.swf。
  4. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    scrollListener = new Object();
scrollListener.scroll = function (evt){
  txtPosition.text = myScrollPane.vPosition;
}
myScrollPane.addEventListener("scroll", scrollListener);

completeListener = new Object;
completeListener.complete = function() {
  trace("logo.swf has completed loading.");
}
myScrollPane.addEventListener("complete", completeListener);

    第一块代码是 myScrollPane 实例上的一个 scroll 事件处理函数，它显示一个名为 txtPosition 的 TextField 实例（该实例已经置于舞台上）中的 vPosition 属性的值。第二块代码为 complete 事件创建一个事件处理函数，它向“输出”面板发送一条消息。


自定义 ScrollPane 组件

在创作过程中和运行时，您都可以在水平和垂直方向上改变 ScrollPane 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅 UIObject.setSize()）或任何适用的 ScrollPane 类的属性和方法。请参阅 ScrollPane 类。如果 ScrollPane 太小，则内容可能无法正确显示。

ScrollPane 将其内容的注册点设置在窗格的左上角。

当关闭水平滚动条时，垂直滚动条沿滚动窗格右侧从上到下显示。当关闭垂直滚动条时，水平滚动条沿滚动窗格底部从左到右显示。也可以同时关闭两个滚动条。

当重新调整滚动窗格的大小时，按钮会保持相同的大小，而滚动轨道和滑块会扩展或收缩，其点击区也会重新调整大小。

对 ScrollPane 组件使用样式

ScrollPane 不支持样式，但它使用的滚动条支持样式。有关此主题的最新信息，请单击“帮助”选项卡顶部的“更新”按钮。

对 ScrollPane 组件使用外观

ScrollPane 组件本身没有任何外观，但它使用的滚动条有外观。有关此主题的最新信息，请单击“帮助”选项卡顶部的“更新”按钮。


ScrollPane 类

继承 UIObject > UIComponent > View > ScrollView > ScrollPane

动作脚本类名称 mx.containers.ScrollPane

ScrollPane 类的属性允许您设置内容、监视加载进程以及在运行时调整滚动量。

使用“动作脚本”设置 ScrollPane 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

您可以通过将 scrollDrag 属性设为 true 来允许用户在窗格中拖动内容；一个手形光标会出现在内容上。与其他大多数组件不同的是，当按下鼠标按键时，事件开始广播，一直到松开按键才结束。如果滚动窗格的内容具有有效的 Tab 键停靠位，您必须将 scrollDrag 设为 false，否则每次鼠标与内容进行的交互操作都将会调用滚动拖动。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.containers.ScrollPane.version);

注意：下面的代码返回未定义的：trace(myScrollPaneInstance.version);。

ScrollPane 类的方法摘要

方法 | 描述
ScrollPane.getBytesLoaded()> | 返回已加载的内容的字节数。
ScrollPane.getBytesTotal()> | 返回要加载的内容的总字节数。
ScrollPane.refreshPane()> | 重新加载滚动窗格的内容。

继承 UIObject和 UIComponent中的所有方法。

ScrollPane 类的属性摘要

方法 | 描述
ScrollPane.content> | 对加载到滚动窗格中的内容的引用。
ScrollPane.contentPath> | 加载到滚动窗格中的 SWF 或 JPEG 文件的绝对 URL 或相对 URL。
ScrollPane.hLineScrollSize> | 箭头按钮被按下时要水平滚动的内容量。
ScrollPane.hPageScrollSize> | 按轨道时要水平滚动的内容量。
ScrollPane.hPosition> | 滚动窗格的水平像素位置。
ScrollPane.hScrollPolicy> | 水平滚动条的状态。它可以为始终打开 ("on")、始终关闭 ("off")，或者只是在需要时才打开 ("auto")。默认值为 "auto"。
ScrollPane.scrollDrag> | 指明当用户在 ScrollPane 中按下并拖动内容时，是否会出现滚动。为 true，则滚动，为 false，则不滚动。默认值为 false。
ScrollPane.vLineScrollSize> | 箭头按钮被按下时要垂直滚动的内容量。
ScrollPane.vPageScrollSize> | 轨道被按下时要垂直滚动的内容数量。
ScrollPane.vPosition> | 滚动窗格的垂直像素位置。
ScrollPane.vScrollPolicy> | 垂直滚动条的状态。它可以为始终打开 ("on")、始终关闭 ("off")，或者只是在需要时才打开 ("auto")。默认值为 "auto"。

继承 UIObject和 UIComponent的所有属性。

ScrollPane 类的事件摘要

方法 | 描述
ScrollPane.complete> | 加载了滚动窗格内容时广播。
ScrollPane.progress> | 在加载滚动条内容时广播。
ScrollPane.scroll> | 滚动条被按下时广播。

继承 UIObject和 UIComponent的所有事件。


ScrollPane.complete

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(complete){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.complete = function(eventObject){
  ...
}
scrollPaneInstance.addEventListener("complete", listenerObject)

描述

事件；当加载完内容时向所有已注册的侦听器广播。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到 ScrollPane 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码附加到 ScrollPane 组件实例 myScrollPaneComponent，它将“_level0.myScrollPaneComponent”发送到“输出”面板：

on(complete){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (scrollPaneInstance) 调度一个事件（在本例中为 complete），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例为 scrollPane 实例创建一个具有 complete 事件处理函数的侦听器对象：

form.complete = function(eventObj){
  // 插入代码以便处理事件
}
scrollPane.addEventListener("complete",form);


ScrollPane.content

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.content

描述

属性（只读）；对滚动窗格内容的引用。到加载开始时才会定义该值。

范例

该范例将 mcLoaded 变量设为 content 属性的值：

var mcLoaded = scrollPane.content;

另请参见

ScrollPane.contentPath


ScrollPane.contentPath

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.contentPath

描述

属性；一个字符串，它指明加载到滚动窗格中的 SWF 或 JPEG 文件的绝对 URL 或相对 URL。相对路径必须相对于加载内容的 SWF。

如果使用相对 URL 加载内容，加载的内容必须相对于包含滚动窗格的 SWF 文件的位置。例如，使用位于 /scrollpane/nav/example.swf 目录中的 ScrollPane 组件的应用程序可从具有以下 contentPath 属性的目录 /scrollpane/content/flash/logo.swf 加载内容："../content/flash/logo.swf"

范例

下面的范例是让滚动窗格显示来自 Internet 的图像的内容：

scrollPane.contentPath ="http://imagecache2.allposters.com/images/43/033_302.jpg";

下面的范例通知滚动窗格显示来自库的元件的内容：

scrollPane.contentPath ="movieClip_Name";

下面的范例是让滚动窗格显示本地文件“logo.swf”的内容：

scrollPane.contentPath = "logo.swf";

另请参见

ScrollPane.content


ScrollPane.getBytesLoaded()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.getBytesLoaded()

参数

无。

返回

滚动窗格中已加载的字节数。

描述

方法；返回 ScrollPane 实例中已加载的字节数。加载内容时可按固定时间间隔调用该方法以查看其进度。

范例

该范例创建名为 scrollPane 的 ScrollPane 类实例。然后定义一个名为 loadListener 的侦听器对象，该对象带有一个 progress 事件处理函数，它调用 getBytesLoaded() 方法以帮助确定加载进度：

createClassObject(mx.containers.ScrollPane, "scrollPane", 0);
loadListener = new Object();
loadListener.progress = function(eventObj){
  // eventObj.target 为生成更改事件的组件
  var bytesLoaded = scrollPane.getBytesLoaded();
  var bytesTotal = scrollPane.getBytesTotal();
  var percentComplete = Math.floor(bytesLoaded/bytesTotal);

  if (percentComplete < 5 )  // 加载开始
  {
    trace(“开始从 Internet 加载内容”);
  }
  else if(percentComplete = 50) //50% complete
  {
    trace(“已下载 50% 的内容”);
  }
}
scrollPane.addEventListener("progress", loadListener);
scrollPane.contentPath = "http://www.geocities.com/hcls_matrix/Images/homeview5.jpg";


ScrollPane.getBytesTotal()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.getBytesTotal()

参数

无。

返回

一个数字。

描述

方法；返回要加载到 ScrollPane 实例中的总字节数。

另请参见

ScrollPane.getBytesLoaded()


ScrollPane.hLineScrollSize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.hLineScrollSize

描述

属性；水平滚动条中的向左箭头或向右箭头被按下时内容要移动的像素数。默认值为 5。

范例

该范例将水平滚动单位增加到 10：

scrollPane.hLineScrollSize = 10;


ScrollPane.hPageScrollSize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.hPageScrollSize

描述

属性；水平滚动条中的轨道被按下时内容要移动的像素数。默认值为 20。

范例

该范例将水平页滚动单位增加到 30：

scrollPane.hPageScrollSize = 30;


ScrollPane.hPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.hPosition

描述

属性；水平滚动条的像素位置。位置 0 表示滚动条的左端。

范例

该范例将滚动条的位置设为 20：

scrollPane.hPosition = 20;


ScrollPane.hScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.hScrollPolicy

描述

属性；确定水平滚动条是始终存在 ("on")、从不存在 ("off")，还是根据图像大小自动出现 ("auto")。默认值为 "auto"。

范例

下列代码将滚动条设置为一直启用：

scrollPane.hScrollPolicy = "on";


ScrollPane.progress

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(progress){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.progress = function(eventObject){
  ...
}
scrollPaneInstance.addEventListener("progress", listenerObject)

描述

事件；在加载内容时向所有已注册的侦听器广播。progress 事件并不会始终广播；complete 事件可能在未调度任何 progress 事件的情况下广播。如果加载的内容是本地文件，尤其会出现这种情况。当通过设置 contentPath 属性的值开始加载内容时会触发此事件。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到 ScrollPane 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，以下附加到 ScrollPane 组件实例 mySPComponent 的代码将“_level0.mySPComponent”发送到“输出”面板：

on(progress){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (scrollPaneInstance) 调度一个事件（在本例中为 progress），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的代码创建一个名为 scrollPane 的 ScrollPane 实例，然后创建一个侦听器对象，该对象具有一个用于 progress 事件的事件处理函数，它将一条有关已加载内容的字节数的消息发送到“输出”面板：

createClassObject(mx.containers.ScrollPane, "scrollPane", 0);
loadListener = new Object();
loadListener.progress = function(eventObj){
  // eventObj.target 为生成进程事件的组件
  // 在本例中为 scrollPane
  trace("logo.swf has loaded " + scrollPane.getBytesLoaded() + " Bytes.");
  // 跟踪加载进程
}
scrollPane.addEventListener("complete", loadListener);
scrollPane.contentPath = "logo.swf";


ScrollPane.refreshPane()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.refreshPane()

参数

无。

返回

无。

描述

方法；加载内容以后刷新滚动窗格。该方法会重新加载内容。例如，如果您已经将一个表单加载到 ScrollPane 中，并且已经使用“动作脚本”更改了一个输入属性（例如，在一个文本字段中），那么，您就可以使用该方法。调用 refreshPane() 来重新加载具有这些输入属性的新值的同一个表单。

范例

下面的范例会刷新滚动窗格实例 sp：

sp.refreshPane();


ScrollPane.scroll

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(scroll){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.scroll = function(eventObject){
  ...
}
scrollPaneInstance.addEventListener("scroll", listenerObject)

事件对象

除了标准的事件对象属性之外，还有一个为 scroll 事件定义的 type 属性，其值为 "scroll"。另外还有一个 direction 属性，其可能值为 "vertical" 和 "horizontal"。

描述

事件；当用户按下滚动条按钮、滑块或轨道时，向所有已注册的侦听器广播。与其他事件不同的是，当用户按下滚动条时，scroll 事件开始持续广播，直到用户松开滚动条。

第一个用法范例使用一个 on() 处理函数，并且必须直接附加到 ScrollPane 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下面附加到实例 sp 的代码将“_level0.sp”发送到“输出”面板：

on(scroll){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (scrollPaneInstance) 调度一个事件（在本例中为 scroll），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

该范例创建一个具有 scroll 回调函数的 form 侦听器对象，该侦听器对象注册到 spInstance 实例：您必须为 spInstance 填写内容，如下所示：

spInstance.contentPath = "mouse3.jpg";
form = new Object();
form.scroll = function(eventObj){
  trace("ScrollPane scrolled");
}
spInstance.addEventListener("scroll", form);

另请参见

UIEventDispatcher.addEventListener()


ScrollPane.scrollDrag

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.scrollDrag

描述

属性；一个布尔值，指明当用户在 ScrollPane 中按下并拖动内容时，是否会滚动内容，为 true 则滚动，为 false 则不滚动。默认值为 false。

范例

该范例在滚动窗格内启用鼠标滚动：

scrollPane.scrollDrag = true;


ScrollPane.vLineScrollSize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.vLineScrollSize

描述

属性；当按下垂直滚动条中的向上或向下箭头按钮时，显示区域移动的像素数。默认值为 5。

范例

该代码会将显示区域在垂直滚动条箭头按钮被按下时的移动量增加到 10：

scrollPane.vLineScrollSize = 10;


ScrollPane.vPageScrollSize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

scrollPaneInstance.vPageScrollSize

描述

属性；当按下垂直滚动条中的轨道时显示区域移动的像素数。默认值为 20。

范例

该代码会将显示区域在垂直滚动条箭头按钮被按下时的移动量增加到 30：

scrollPane.vPageScrollSize = 30;


ScrollPane.vPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.vPosition

描述

属性；垂直滚动条的像素位置。默认值为 0。


ScrollPane.vScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

scrollPaneInstance.vScrollPolicy

描述

属性；确定垂直滚动条是始终显示 ("on")、从不显示 ("off") 还是根据图像尺寸自动出现 ("auto")。默认值为 "auto"。

范例

下列代码将垂直滚动条设为始终打开：

scrollPane.vScrollPolicy = "on";


关于 Slide 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > Loader > Screen > Slide

动作脚本类名称 mx.screens.Slide

Slide 类对应于分层的幻灯片演示文稿中的节点。在 Flash MX Professional 2004 中，可以使用“屏幕大纲”窗格创建幻灯片演示文稿。有关使用屏幕的概述，请参阅使用屏幕（仅限于 Flash Professional）。

Slide 类扩展了 Screen 类（请参阅Screen 类（仅限 Flash Professional）），并提供在幻灯片之间导航和排序的内置功能，它还能够使用“行为”轻松地在幻灯片之间附加过渡。幻灯片含有“状态”概念，因此用户可以进入到演示文稿中的下一张或上一张幻灯片，而且当显示演示文稿中的下一张幻灯片时，上一张幻灯片会隐藏。

请注意，您只可以导航到（或“停止于”）不包含任何子幻灯片的幻灯片（也称为“叶”幻灯片）。例如，以下图示显示幻灯片演示文稿范例的“屏幕大纲”窗格的内容。

当此演示文稿开始后，默认情况下，将在名为 Finance 的幻灯片（即演示文稿中第一张不包含任何子幻灯片的幻灯片）处“停止”。

还应注意，子幻灯片会“继承”其父幻灯片的可视外观（图形和其他内容）。例如，在上面的图示中，除了 Finance 幻灯片上的内容，用户还会看到 Intro 和 Presentation 幻灯片上的任何内容。

注意：Slide 类继承 Loader 类（请参阅Loader 类），从而可让您轻松地将外部 SWF（或 JPEG）加载到给定的幻灯片中。这就提供了一种模块化幻灯片演示文稿并降低初始下载时间的方法。有关详细信息，请参阅将外部内容加载到屏幕（仅限 Flash Professional）。


使用 Slide 类（仅限 Flash Professional）

使用 Slide 类的方法和属性来控制您使用“屏幕大纲”窗格（“窗口”>“屏幕”）创建的幻灯片演示文稿，以便获取有关幻灯片演示文稿的信息（例如，确定父幻灯片所包含的子幻灯片的数量），或者在幻灯片演示文稿中的幻灯片之间导航（例如，创建“下一张幻灯片”和“上一张幻灯片”按钮）。

也可以使用“行为”面板（“窗口”>“开发面板”>“行为”）中可用的一种内置行为控制幻灯片演示文稿。有关对幻灯片使用行为的详细信息，请参阅使用行为将控件添加到屏幕（仅限于 Flash Professional）。

幻灯片参数

以下是您可以在属性检查器或“组件检查器”面板中为每张幻灯片设置的创作参数：

autoKeyNav 确定幻灯片如何或是否响应默认的键盘导航。有关详细信息，请参阅 Slide.autoKeyNav。

autoload 指示 contentPath 参数指定的内容是应该自动加载 (true)，还是应该等到调用 Loader.load() 方法时再进行加载 (false)。默认值为 true。

contentPath 指定幻灯片的内容。该参数可以是一个影片剪辑的链接标识符，也可以是要加载到幻灯片中的 SWF 或 JPG 文件的绝对或相对 URL。默认情况下，加载的内容会进行剪辑以适合幻灯片的大小。

overlayChildren 指定在从一张子幻灯片导航到下一张子幻灯片时，幻灯片的子幻灯片是保持可见 (true) 还是不可见 (false)。

playHidden 指定幻灯片在隐藏时是继续播放 (true) 还是停止播放 (false)。

使用 Slide 类创建幻灯片演示文稿

使用 Slide 类的方法和属性来控制您在 Flash 创作环境的“屏幕大纲”窗格（“窗口”>“屏幕”）中创建的幻灯片演示文稿。请注意，“行为”面板（“窗口”>“开发面板”>“行为”）包含一些用于创建幻灯片导航的行为。在本例中，您将编写自己的动作脚本，以便为幻灯片演示文稿创建“下一张”和“上一张”按钮。

要创建带有导航的幻灯片演示文稿：

  1. 在 Flash 中，选择“文件”>“新建”。
  2. 单击“常规”选项卡并在“类型”下选择“Flash 幻灯片演示”。
  3. 在“屏幕大纲”窗格中，单击“插入屏幕”按钮 (+) 两次，以在 Presentation 幻灯片下面创建两张新幻灯片。

    “屏幕大纲”窗格应如下所示：

  4. 在“屏幕大纲”窗格中选择 Slide1，并使用“文本”工具添加一个文本字段，内容为“这是第一张幻灯片”。
  5. 对 Slide2 和 Slide3 重复上述步骤，分别在每张幻灯片上创建内容为“这是第二张幻灯片”和“这是第三张幻灯片”的文本字段。
  6. 选择 Presentation 幻灯片并打开“组件”面板（“窗口”>“开发面板”>“组件”）。
  7. 将 Button 组件从“组件”面板拖到舞台底部。
  8. 在属性检查器（“窗口”>“属性”）中，为 Button 组件的 Label 属性输入“下一张幻灯片”。
  9. 如果仍未打开“动作”面板，选择“窗口”>“开发面板”>“动作”以将其打开。
  10. 在“动作”面板中输入以下代码：
    on(click){
  _parent.currentSlide.gotoNextSlide();
}
  11. 测试 SWF（“控制”>“测试影片”）并单击“下一张幻灯片”按钮进入到下一张幻灯片。

Slide 类的方法摘要

属性 | 描述
Slide.getChildSlide()> | 返回此幻灯片位于给定的索引处的子幻灯片。
Slide.gotoFirstSlide()> | 导航到幻灯片的子幻灯片层次结构中的第一个叶节点。
Slide.gotoLastSlide()> | 导航到幻灯片的子幻灯片层次结构中的最后一个叶节点。
Slide.gotoNextSlide()> | 导航到下一个幻灯片。
Slide.gotoPreviousSlide()> | 导航到下一个幻灯片。
Slide.gotoSlide()> | 导航到任意一张幻灯片。

继承 UIObject、UIComponent、View、Loader 组件和 Screen 类（仅限 Flash Professional）的所有方法。

Slide 类的属性摘要

属性 | 描述
Slide.autoKeyNav> | 确定幻灯片是否使用默认的键盘处理来导航到下一张/上一张幻灯片。
Slide.currentSlide> | 返回包含当前活动幻灯片的幻灯片的直接子幻灯片。
Slide.currentSlide> | 返回当前活动的幻灯片。
Slide.currentFocusedSlide> | 返回包含全局当前焦点的“最低叶”幻灯片。
Slide.defaultKeydownHandler> | 一种回调处理函数，它覆盖默认的按键幻灯片导航（向左和向右箭头）。
Slide.firstSlide> | 返回幻灯片的第一张没有子幻灯片的子幻灯片。
Slide.getChildSlide()> | 返回指定索引处的子幻灯片。
Slide.indexInParentSlide> | 返回幻灯片在其父幻灯片的子幻灯片列表中的索引（从零开始）。
Slide.lastSlide> | 返回幻灯片的最后一张没有子幻灯片的子幻灯片。
Slide.nextSlide> | 返回下一张叶节点幻灯片。
Slide.numChildSlides> | 返回幻灯片所包含的子幻灯片的数量。
Slide.overlayChildren> | 确定当控制从一张子幻灯片转到下一张子幻灯片时，幻灯片的子幻灯片是否可见。
Slide.parentIsSlide> | 返回一个布尔值，指示幻灯片的父对象也是 (true) 或不是 (false) 幻灯片。
Slide.playHidden> | 确定当幻灯片隐藏时是否继续播放。
Slide.previousSlide> | 返回上一个叶节点幻灯片。
Slide.revealChild> | 返回包含此幻灯片的幻灯片树的根。

继承 UIObject、UIComponent、View、Loader 组件和 Screen 类（仅限 Flash Professional）的所有属性。

Slide 类的事件摘要

事件 | 描述
Slide.hideChild> | 当幻灯片的所有子幻灯片从可见变为不可见时进行广播。
Slide.revealChild> | 当幻灯片的所有子幻灯片从不可见变为可见时进行广播。

继承 UIObject、UIComponent、View、Loader 组件和 Screen 类（仅限 Flash Professional） 的所有事件。


Slide.autoKeyNav

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.autoKeyNav

说明

属性；确定当 mySlide 具有焦点时，幻灯片是否使用默认的键盘处理来导航到下一张/上一张幻灯片。该属性接受下列字符串值之一："true"、"false" 或 "inherit"。您也可以使用 Slide.defaultKeydownHandler 属性覆盖此默认的键盘处理行为。

也可以使用属性检查器设置该属性。

如果设置为 "true"，则在 mySlide 具有焦点时按向右箭头 (Key.RIGHT) 或空格键 (Key.SPACE) 会进入到下一张幻灯片；按向左箭头 (Key.Left) 会移到上一张幻灯片。

如果设置为 "false"，则在 mySlide 具有焦点时不发生默认的键盘处理。

如果设置为 "inherit"，则 mySlide 会检查其父幻灯片的 autoKeyNav 属性。如果 mySlide 的父幻灯片也设置为 "inherit"，则会检查 mySlide 的父幻灯片的父幻灯片，依此类推，直到找到 autoKeyNav 属性设置为 "true" 或 "false" 的父幻灯片为止。

如果 mySlide 没有父幻灯片（也即如果 (mySlide.parentIsSlide == false) 为 true），则它会表现出仿佛 autoKeyNav 设置为 true 的行为。

示例

此范例为名为 loginSlide 的幻灯片关闭自动键盘导航。

_root.Presentation.loginSlide.autoKeyNav = "false";

另请参见

Slide.defaultKeydownHandler


Slide.currentSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.currentSlide

说明

属性（只读）；返回当前活动的幻灯片。返回的始终是“叶”幻灯片，即不包含子幻灯片的幻灯片。

示例

以下代码附加到 Presentation 根幻灯片上的一个按钮，并会在每次按下此按钮时进入到幻灯片演示文稿的下一张幻灯片。

// 附加到 Presentation 幻灯片所包含的按钮实例：
on(press) {
  _parent.currentSlide.gotoNextSlide();
}

另请参见

Slide.gotoNextSlide()


Slide.currentChildSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.currentChildSlide

说明

属性（只读）；返回包含当前活动幻灯片的 mySlide 的直接子幻灯片；如果 mySlide 包含的子幻灯片都不具有当前焦点，则返回 null。

示例

考虑以下屏幕大纲：

Presentation
  Slide_1
    Bullet1_1
      SubBullet1_1_1
    Bullet1_2
      SubBullet1_2_1
  Slide_2

假设 SubBullet1_1_1 为当前幻灯片，则以下语句全部为 true：

Presentation.currentChildSlide == Slide_1;
Slide_1.currentChildSlide == Bullet_1_1;
SubBullet_1_1_1.currentChildSlide == null;
Slide_2.currentChildSlide == null;

另请参见

Slide.currentSlide


Slide.currentFocusedSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mx.screens.Slide.currentFocusedSlide

说明

属性（只读）；返回包含当前全局焦点的“最低叶”幻灯片。实际的焦点可能在幻灯片自身上，或者在该幻灯片内的影片剪辑、文本对象或组件上；如果没有当前焦点，则返回 null。

示例

var focusedSlide = mx.screens.Slide.currentFocusedSlide;


Slide.defaultKeydownHandler

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.defaultKeyDownHandler = function (eventObj) {
  // 此处是您的代码
}

参数

eventObj 具有以下属性的事件对象：

  • type 一个指示事件类型的字符串。可能值为 "keyUp" 和 "keyDown"
  • ascii 一个整数，表示上次按下的按键的 ASCII 值；与 Key.getAscii() 返回的值对应。
  • code 一个整数，表示上次按下的按键的按键代码；与 Key.getCode() 所返回的值对应。
  • shiftKey 一个布尔值（true 或 false），表示当前是按下了 (true) 还是没按下 (false) Shift 键。
  • ctrlKey 一个布尔值（true 或 false），表示当前是按下了 (true) 还是没按下 (false) Control 键。

返回

无。

说明

回调处理函数；可让您用所创建的自定义键盘处理函数覆盖默认的键盘导航。例如，您可以不使用向左和向右箭头键分别导航到演示文稿中的上一张和下一张幻灯片，而使用向上和向下箭头键执行这些功能。有关默认的键盘处理行为的论述，请参阅 Slide.autoKeyNav。

在以下情况中会启用自动键盘处理：当前幻灯片的 Slide.autoKeyNav 属性设置为 "true"；或者该属性设置为 "inherit"，且非 "inherit" 的当前幻灯片的最直接始祖幻灯片是演示文稿的根幻灯片，或者其 autoKeyNav 值设置为 "true"。

如果为当前幻灯片启用了自动键盘处理，

示例

在该范例中，对于 on(load) 处理函数所附加到的幻灯片的子幻灯片，默认的键盘处理发生了改变。此处理函数使用向上/向下箭头而不是向左/向右箭头进行导航。

on(load){
  this.defaultKeyDownHandler = function(eventObj:Object) {
    switch (eventObj.code) {
    case Key.DOWN :
      this.currentSlide.gotoNextSlide();
      break;
    case Key.UP :
      this.currentSlide.gotoPreviousSlide();
      break;
    default :
      break;
    }
  };
}

另请参见

Slide.autoKeyNav


Slide.firstSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.firstSlide

说明

属性（只读）；返回 mySlide 的第一个没有子幻灯片的子幻灯片。

示例

例如，在下面显示的幻灯片层次结构中，以下语句全部为 true：

Presentation.Intro.firstSlide == Intro_bullet_1_1;
Presentation.Intro_bullet_1.firstSlide == Intro_bullet_1-1;


Slide.getChildSlide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.getChildSlide(childIndex)

参数

childIndex 要返回的子幻灯片的索引（从零开始）。

返回

一个幻灯片对象。

说明

方法；返回 mySlide 的子幻灯片（其索引为 childIndex）。此方法在重复一组已知索引的子幻灯片时很有用，如以下范例所示。

示例

此范例在“输出”面板中显示 Presentation 根幻灯片的所有子幻灯片的名称。

var numSlides = _root.Presentation.numChildSlides;
for(var slideIndex=0; slideIndex < numSlides; slideIndex++) {
  var childSlide = _root.Presentation.getChildSlide(slideIndex);
  trace(childSlide._name);
}

另请参见

Slide.numChildSlides


Slide.gotoSlide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.gotoSlide(newSlide)

参数

newSlide 要导航到的幻灯片。

返回

一个布尔值（true 或 false），指示导航是成功 (true) 还是不成功 (false)。

说明

方法；导航到由 newSlide 指定的幻灯片。要使导航成功，必须满足以下条件：

  • 当前幻灯片必须是 mySlide 的子幻灯片。
  • 由 newSlide 指定的幻灯片和当前幻灯片必须具有共同的始祖幻灯片，也即当前幻灯片和 newSlide 必须位于同一个幻灯片子树中。

如果任何一个条件不满足，导航就会失败，且方法返回 false；否则，方法就会导航到指定的幻灯片并返回 true。

例如，考虑以下幻灯片层次结构：

Presentation
  Slide1
    Slide1_1
    Slide1_2
 Slide2
    Slide2_1
    Slide2_2

如果当前幻灯片为 Slide1_2，则下面的 gotoSlide() 方法调用将会失败，原因是当前幻灯片不是 Slide2 的子代。

Slide2.gotoSlide(Slide2_1);

也请考虑下面的屏幕层次结构，在该结构中，窗体对象是两个单独的幻灯片树的父屏幕。

Form_1
  Slide1
    Slide1_1
    Slide1_2
  Slide2
    Slide2_1
    Slide2_2

如果当前幻灯片是 Slide1_2，则下面的方法调用也会失败，原因是 Slide1 和 Slide2 位于不同的幻灯片子树中。

Slide1_2.gotoSlide(Slide2_2);

示例

以下附加到 Button 组件的代码使用 Slide.currentSlide 属性和 gotoSlide() 方法进入到演示文稿中的下一张幻灯片。

on(click){
  _parent.gotoSlide(_parent.currentSlide.nextSlide);
}

请注意，这段代码与以下使用 Slide.gotoNextSlide() 方法的代码等效。

on(click){
  _parent.currentSlide.gotoNextSlide();
}

另请参见

Slide.currentSlide, Slide.gotoNextSlide()


Slide.gotoFirstSlide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.gotoFirstSlide()

返回

无。

说明

方法；导航到 mySlide 下面的子幻灯片树中的第一张叶幻灯片。从某张幻灯片的 on(hide) 或 on(reveal) 事件处理函数内进行调用时，如果该事件是幻灯片导航的结果，则会忽略此方法。

要转到演示文稿中的第一张幻灯片，请调用 mySlide.rootSlide.gotoFirstSlide()。有关 rootSlide 的详细信息，请参阅 Slide.revealChild

示例

在下面显示的幻灯片层次结构中，下面的方法调用都会导航到名为 Intro_bullet_1_1 的幻灯片。

Presentation.gotoFirstSlide();
Presenation.Intro.gotoFirstSlide();
Presentation.Intro.Intro_bullet_1.gotoFirstSlide();

此方法调用将导航到名为 Intro_bullet_2_1 的幻灯片。

Presentation.Intro.Intro_bullet_2.gotoFirstSlide();

另请参见

Slide.firstSlide、Slide.revealChild


Slide.gotoLastSlide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.gotoLastSlide()

返回

无。

说明

方法；导航到 mySlide 下面的子幻灯片树中的最后一张叶幻灯片。从某张幻灯片的 on(hide) 或 on(reveal) 事件处理函数内进行调用时，如果该事件是另一个幻灯片导航的结果，则会忽略此方法。

示例

在下面显示的幻灯片层次结构中，下面的方法调用都会导航到名为 Intro_bullet_1_2 的幻灯片。

Presenation.Intro.gotoLastSlide();
Presentation.Intro.Intro_bullet_1.gotoLastSlide();

这些方法调用将导航到名为 Intro_bullet_2_1 的幻灯片。

Presentation.gotoLastSlide();
Presentation.Intro.gotoLastSlide();

另请参见

Slide.gotoSlide()、Slide.lastSlide


Slide.gotoNextSlide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.gotoNextSlide()

返回

一个布尔值（true 或 false），或 null；如果方法成功地导航到下一张幻灯片，则返回 true；如果在调用方法时，演示文稿已经处于最后一张幻灯片（也即如果 currentSlide.nextSlide 为 null），则返回 false；如果在不包含当前幻灯片的幻灯片上调用，则返回 null。

说明

方法；导航到幻灯片演示文稿中的下一张幻灯片。当控制从一张幻灯片传到下一张幻灯片时，会隐藏传出的幻灯片并显示传入的幻灯片。如果传出和传入幻灯片位于不同的幻灯片子树中，则所有始祖幻灯片（从传出幻灯片开始，一直到传入和传出幻灯片的公共始祖）都被隐藏起来并接收 hide 事件。紧接着，从传入幻灯片的所有始祖幻灯片一直到传出和传入幻灯片的公共始祖都会可见，并且接收 reveal 事件。

通常，gotoNextSlide() 是在代表当前幻灯片的叶节点上调用的。如果在非叶节点 someNode 上调用，则 someNode.gotoNextSlide() 会进入到下一张幻灯片或“部分”中的第一个叶节点。有关详细信息，请参阅下面的范例。

在不包含当前幻灯片的幻灯片上调用时此方法没有效果（请参见下面的范例）。

另外，从附加到幻灯片的 on(hide) 或 on(reveal) 事件处理函数中调用此方法时，如果该处理函数是作为幻灯片导航的结果调用的，则此方法无效。

示例

假设在下面的幻灯片层次结构中，名为 Intro_bullet_1_1 的幻灯片是当前查看的幻灯片（即 _root.Presentation.currentSlide._name == Intro_bullet_1_1）。

在这种情况下，调用 Intro_bullet_1_1.gotoNextSlide() 将导航到 Intro_bullet_1_2，它是 Intro_bullet_1_1 的同辈幻灯片。

然而，调用 Intro_bullet_1.gotoNextSlide() 将导航到 Intro_bullet_2_1，它是 Intro_bullet_2 包含的第一张叶幻灯片，而 Intro_bullet_2 是 Intro_bullet_1 的下一张同辈幻灯片。类似地，调用 Intro.gotoNextSlide() 将导航到 Results_bullet_1，它是 Results 幻灯片所包含的第一张叶幻灯片。

另外，仍然假设当前幻灯片是 Intro_bullet_1_1，调用 Results.gotoNextSlide() 将无效，原因是 Results 不包含当前幻灯片（即 Results.currentSlide 为 null）。

另请参见

Slide.currentSlide、Slide.gotoPreviousSlide()、Slide.nextSlide


Slide.gotoPreviousSlide()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.gotoPreviousSlide()

返回

一个布尔值（true 或 false），或 null；如果方法成功地导航到上一张幻灯片，则返回 true；如果在调用方法时，演示文稿处于第一张幻灯片（也即如果 currentSlide.nextSlide 为 null），则返回 false；如果在不包含当前幻灯片的幻灯片上调用，则返回 null。

说明

方法；导航到幻灯片演示文稿中的上一张幻灯片。当控制从一张幻灯片传到上一张幻灯片时，会隐藏传出的幻灯片并显示传入的幻灯片。如果传出和传入幻灯片位于不同的幻灯片子树中，则所有始祖幻灯片（从传出幻灯片开始，一直到传入和传出幻灯片的公共始祖）都被隐藏起来并接收 hide 事件。紧接着，从传入幻灯片的所有始祖幻灯片一直到传出和传入幻灯片的公共始祖都会可见，并且接收 reveal 事件。

通常，gotoPreviousSlide() 是在代表当前幻灯片的叶节点上调用的。如果在非叶节点 someNode 上调用，则 someNode.gotoPreviousSlide() 会进入到下一张幻灯片或“部分”中的第一个叶节点。有关详细信息，请参阅下面的范例。

在不包含当前幻灯片的幻灯片上调用时此方法没有效果（请参见下面的范例）。

另外还应注意，从附加到幻灯片的 on(hide) 或 on(reveal) 事件处理函数中调用此方法时，如果该处理函数是作为幻灯片导航的结果调用的，则此方法无效。

示例

假设在下面的幻灯片层次结构中，名为 Intro_bullet_1_2 的幻灯片是当前查看的幻灯片（即 _root.Presentation.currentSlide._name == Intro_bullet_1_2）。

在这种情况下，调用 Intro_bullet_1_2.gotoPreviousSlide() 将导航到 Intro_bullet_1_1，它是 Intro_bullet_1_2 的上一张同辈幻灯片。

然而，调用 Intro_bullet_2.gotoPreviousSlide() 将导航到 Intro_bullet_1_1，它是 Intro_bullet_1 包含的第一张叶幻灯片，而后者是 Intro_bullet_2 的上一张同辈幻灯片。类似地，调用 Results.gotoPreviousSlide() 将导航到 Intro_bullet_1_1，它是 Intro 幻灯片包含的第一张叶幻灯片。

另外，如果当前幻灯片是 Intro_bullet_1_1，则调用 Results.gotoPreviousSlide() 将无效，原因是 Results 不包含当前幻灯片（即 Results.currentSlide 为 null）。

另请参见

Slide.currentSlide、Slide.gotoNextSlide()、Slide.previousSlide


Slide.hideChild

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(hideChild) {
  // 此处是您的代码
}

说明

事件；每次当幻灯片对象的子幻灯片从可见变为不可见时进行广播。此事件仅由幻灯片对象（而不由窗体对象）广播。hideChild 事件的主要用途是将“退出”过渡应用到给定幻灯片的所有子幻灯片。

示例

当附加到根幻灯片（例如，Presentation 幻灯片）时，以下代码将在属于根幻灯片的每张子幻灯片出现时显示其名称。

on(revealChild) {
  var child = eventObj.target._name;
  trace(child + " has just appeared");
}

另请参见

Slide.revealChild


Slide.indexInParentSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.indexInParent

说明

属性（只读）；返回 mySlide 在其父幻灯片的子幻灯片列表中的索引（从零开始）。

示例

以下代码使用 indexInParent 和 Slide.numChildSlides 属性显示当前正在查看的幻灯片的索引，以及其父幻灯片所包含的幻灯片总数。要使用这段代码，请将其附加到包含一张或多张子幻灯片的父幻灯片。

on(revealChild) {
  trace("Displaying "+(currentSlide.indexInParentSlide+1)+" of "+currentSlide._parent.numChildSlides);
}

请注意，因为此属性是从零开始的索引，所以其值以一为增量 (currentSlide.indexInParent+1) 以显示更多有意义的值。

另请参见

Slide.numChildSlides、Slide.revealChild


Slide.lastSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.lastSlide

说明

属性（只读）；返回 mySlide 的最后一张没有子幻灯片的子幻灯片。

示例

对于下面显示的幻灯片层次结构，以下语句全部为 true：

Presentation.lastSlide._name == Results_bullet_1;
Intro.lastSlide._name == Intro_bullet_1_2;
Intro_bullet_1.lastSlide._name == Intro_bullet_1_2;
Results.lastSlide._name = Results_bullet_1;


Slide.nextSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.nextSlide

说明

属性（只读）；返回在调用 mySlide.gotoNextSlide() 时会导航到但实际并未导航到的幻灯片。例如，您可以使用此属性显示演示文稿中的下一张幻灯片的名称，并让用户选择是否要导航到该幻灯片。

示例

在此例中，名为 nextButton 的 Button 组件的标签会显示演示文稿中的下一张幻灯片的名称。如果没有下一张幻灯片，也即如果 myslide.nextSlide 为 null，则该按钮的标签会被更新，以指示用户位于此幻灯片演示文稿的末尾。

if (mySlide.nextSlide != null) {
    nextButton.label = "Next slide:" + mySlide.nextSlide._name + " > ";
} else {
  nextButton.label = "End of this slide presentation.";
}

另请参见

Slide.gotoNextSlide()、Slide.previousSlide


Slide.numChildSlides

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.numChildSlides

说明

属性（只读）；返回 mySlide 包含的子幻灯片的数量。请注意，幻灯片可以包含窗体或其他幻灯片。如果 mySlide 既包含幻灯片又包含窗体，则此属性仅返回幻灯片的数量，而不对窗体计数。

示例

本例使用 Slide.numChildSlide 和 Slide.getChildSlide() 方法重复 Presentation 根幻灯片的所有子幻灯片，并在“输出”面板中显示它们的名称。

var numSlides = _root.Presentation.numChildSlides;
for(var slideIndex=0; slideIndex < numSlides; slideIndex++) {
  var childSlide = _root.Presentation.getChildSlide(slideIndex);
  trace(childSlide._name);
}

另请参见

Slide.getChildSlide()


Slide.overlayChildren

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.overlayChildren

说明

属性；确定在从一张子幻灯片导航到下一张时，mySlide 的子幻灯片是否保持可见。如果设置为 true，则当控制传到下一张同辈幻灯片时，上一张幻灯片保持可见；如果设置为 false，则当控制传到下一张同辈幻灯片时，上一张幻灯片不可见。

在下面的情况下，将此属性设置为 true 很有用：给定的幻灯片包含几张分别显示的子“项目符号”幻灯片（可能使用过渡），但都需要在新项目符号出现时保持可见。

注意：此属性仅适用于 mySlide 的直接子代，而并不适用于所有（嵌套的）子幻灯片。

示例

例如，以下图示中的 Intro_bullets 幻灯片包含三张子幻灯片（Finance、Human resources 和 Operations），而每张子幻灯片均显示一个单独的项目符号。通过将 Intro_bullets.overlayChildren 设置为 true，每张项目符号幻灯片将在其他项目符号出现时仍保留在舞台上。


Slide.parentIsSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.parentIsSlide

说明

属性（只读）；一个布尔值（true 或 false），指示 mySlide 的父对象是否也是幻灯片。如果 mySlide 的父对象是幻灯片或者幻灯片的子类，则此属性将返回 true，否则返回 false。

如果 mySlide 是演示文稿中的根幻灯片，则此属性将返回 false，原因是 Presentation 幻灯片的父对象是主时间轴 (_level0)，不是幻灯片。如果 mySlide 的父对象是窗体，此属性也会返回 false。

示例

下面的代码确定幻灯片 mySlide 的父对象本身是否也是幻灯片。如果是，则假设 mySlide 为演示文稿中的根幻灯片或主幻灯片，因而没有同辈幻灯片。否则，如果 mySlide.parentIsSlide 为 true，则会在“输出”面板中显示 mySlide 的同辈幻灯片数量。

if (mySlide.parentIsSlide) {
  trace("I have " + mySlide._parent.numChildSlides+" sibling slides");
} else {
  trace("I am the root slide and have no siblings");
}

另请参见

Slide.numChildSlides


Slide.playHidden

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.playHidden

说明

属性；一个布尔值，指定 mySlide 在隐藏时是否应继续播放。当此属性为 true 时，mySlide 将在隐藏时继续播放。设置为 false 时，mySlide 将在隐藏时停止播放；当显示时在 mySlide 的第 1 帧处重新开始播放。

也可以在 Flash 创作环境的属性检查器中设置此属性。


Slide.previousSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.previousSlide

说明

属性（只读）；返回在调用 mySlide.gotoPreviousSlide() 时会导航到但实际不导航到的幻灯片。例如，您可以使用此属性显示演示文稿中的上一张幻灯片的名称，并让用户选择是否要导航到该幻灯片。

示例

在此例中，名为 previousButton 的 Button 组件的标签会显示演示文稿中的上一张幻灯片的名称。如果没有上一张幻灯片，也即如果 mySlide.previousSlide 为 null，则该按钮的标签会被更新，以指示用户位于此幻灯片演示文稿的最开始处。

if (mySlide.previousSlide != null) {
    previousButton.label = "Previous slide:" + mySlide.previous._name + " > ";
} else {
  previousButton.label = "You’re at the beginning of this slide presentation.";

另请参见

Slide.gotoPreviousSlide()、Slide.nextSlide


Slide.revealChild

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

on(revealChild) {
  // 此处是您的代码
}

说明

事件；每次当幻灯片对象的子幻灯片从不可见变为可见时进行广播。此事件主要用于将“进入”过渡附加到给定幻灯片的所有子幻灯片。

示例

当附加到根幻灯片（例如，Presentation 幻灯片）时，以下代码将在每张子幻灯片出现时显示其名称。

on(revealChild) {
  var child = eventObj.target._name;
  trace(child + " has just appeared");
}

另请参见

Slide.hideChild


Slide.rootSlide

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

mySlide.rootSlide

说明

属性（只读）；返回包含 mySlide 的幻灯片树或幻灯片子树的根幻灯片。

示例

假设在幻灯片上有一个影片剪辑，单击它时会转到演示文稿中的第一张幻灯片。要达到此目的，可将以下代码附加到影片剪辑：

on(press) {
  _parent.rootSlide.gotoFirstSlide();
}

在本例中，_parent 是指包含影片剪辑对象的幻灯片。


关于 StyleManager 类

动作脚本类名称 mx.styles.StyleManager

StyleManager 类会跟踪已知的继承样式和颜色。只有在您要创建组件并希望添加新的继承样式或颜色时，才需要使用该类。

要确定哪些样式是继承样式，请参考 W3C Web 站点。

StyleManager 类的方法摘要

方法 | 描述
StyleManager.registerColorName()> | 使用 StyleManager 注册新的颜色名称。
StyleManager.registerColorStyle()> | 使用 StyleManager 注册新的颜色样式。
StyleManager.registerInheritingSyle()> | 使用 StyleManager 注册新的继承样式。


StyleManager.registerColorName()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

StyleManager.registerColorName(colorName, value)

参数

colorName 指明颜色名称的字符串（例如，"gray"、"darkGrey" 等等）。

value 指明颜色的十六进制数（例如，0x808080、0x404040 等等）。

返回

无。

描述

方法；将颜色名称与十六进制数值相关联并使用 StyleManager 注册颜色名称。

范例

下面的范例将“gray”注册为颜色的名称，该颜色是以十六进制数值 0x808080 表示的颜色：

StyleManager.registerColorName("gray", 0x808080 );


StyleManager.registerColorStyle()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

StyleManager.registerColorStyle(colorStyle)

参数

colorStyle指明颜色名称的字符串（例如，"highlightColor"、"shadowColor"、"disabledColor" 等等）。

返回

无。

描述

方法；将新的颜色样式添加到 StyleManager。

范例

下面的范例将“highlightColor”注册为颜色样式：

StyleManager.registerColorStyle("highlightColor");


StyleManager.registerInheritingSyle()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

StyleManager.registerInheritingStyle(propertyName)

参数

propertyName 指明样式属性名称的字符串（例如，"newProp1"、"newProp2" 等等）。

返回

无。

描述

方法；将此样式属性标记为继承。使用该方法注册未在 CSS 规范中列出的样式属性。请不要使用该方法将非继承样式属性更改为继承。

范例

下面的范例将 newProp1 注册为继承样式：

StyleManager.registerInheritingStyle("newProp1");


关于 TextArea 组件

TextArea 组件环绕着本机“动作脚本”TextField 对象。您可以使用样式自定义 TextArea 组件；当实例被禁用时，其内容以“disabledColor”样式所代表的颜色显示。TextArea 组件也可以采用 HTML 格式，或者作为掩饰文本的密码字段。

在应用程序中可以启用或禁用 TextArea 组件。在禁用状态下，它不接收鼠标或键盘输入。当启用时，它遵循与“动作脚本”TextField 对象相同的焦点、选择和导航规则。当 TextArea 实例具有焦点时，您可以使用下列按键对其进行控制：

按键 | 描述
箭头键 | 将插入点向上、向下、向左或向右移动一行。
Page Down 键 | 向下移动一屏。
Page Up 键 | 向上移动一屏。
Shift + Tab | 将焦点移到前一个对象。
Tab 键 | 将焦点移到下一个对象。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 TextArea 实例的实时预览都会反映创作时在属性检查器或“组件检查器”面板中对参数所做的更改。如果需要滚动条，它会出现在实时预览中，但并不起作用。在实时预览中，文本是不可选定的，并且无法在舞台上的组件实例中输入文本。

在将 TextArea 组件添加到应用程序中时，您可以使用“辅助功能”面板使其可由屏幕读取器访问。


使用 TextArea 组件

在需要多行文本字段的任何地方都可使用 TextArea 组件。如果需要单行文本字段，请使用TextInput 组件。例如，您可以在表单中使用 TextArea 组件作为注释字段。您可以设置侦听器来检查当用户切换到字段外时，字段是否为空。侦听器可能会显示错误信息，以指明必须在该字段中输入注释。

TextArea 组件参数

下列是您可以在属性检查器中或在“组件检查器”面板中为每个 TextArea 组件设置的创作参数：

text 指明 TextArea 的内容。您无法在属性检查器或“组件检查器”面板中输入回车。默认值为 ""（空字符串）。

html 指明文本是 (true) 否 (false) 采用 HTML 格式。默认值为 false。

editable 指明 TextArea 组件是 (true) 否 (false) 可编辑。默认值为 true。

wordWrap 指明文本是 (true) 否 (false) 自动换行。默认值为 true。

您可以编写“动作脚本”，通过利用其属性、方法和事件来控制 TextArea 组件这些选项及其他选项。有关详细信息，请参阅 TextArea 类。

创建具有 TextArea 组件的应用程序

以下过程解释了如何在创作时将TextArea 组件添加到应用程序。在该范例中，组件为一个具有事件侦听器的“注释”字段，该侦听器确定用户是否输入了文本。

要创建具有 TextArea 组件的应用程序，请执行以下步骤：

  1. 将 TextArea 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 comment。
  3. 在属性检查器中，按照需要设置参数。但是，请将文本参数保留为空，将可编辑参数设为 true，将密码参数设为 false。
  4. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    textListener = new Object();
textListener.handleEvent = function (evt){
  if (comment.length < 1)  {
  Alert(_root, "错误", "您必须在此字段中至少输入一个注释", mxModal | mxOK);
  }
}
comment.addEventListener("focusOut", textListener);

    该代码在 TextArea 实例 comment 上设置了一个 focusOut 事件处理函数，该事件处理函数用来验证用户是否在文本字段中键入了内容。

  5. 在注释实例中输入文本之后，您可以获取文本的值，如下所示：
    var login = comment.text;


自定义 TextArea 组件

您可以在创作时或在运行时，在水平和垂直方向上改变 TextArea 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 UIObject.setSize() 或 TextArea 类中任何适用的属性和方法。

调整了 TextArea 组件的大小后，边框大小就会调整到新的边框。如果需要滚动条，它们会被放置在下边缘和右边缘。然后，文本字段的大小会在其余区域内调整；TextArea 组件中没有大小固定的元素。如果 TextArea 组件太小不能显示文本，文本就会被裁剪。

对 TextArea 组件使用样式

对于字段中的所有文本来说，TextArea 组件支持一组组件样式。但是，您也可以显示与 Flash Player 的 HTML 呈现兼容的 HTML。要显示 HTML 文本，请将 TextArea.html 设为 true。

TextArea 组件在类样式声明中定义了它的 backgroundColor 和 borderStyle 样式属性。类样式覆盖 _global 样式，因此，如果要设置 backgroundColor 和 borderStyle 样式属性，必须在实例上创建一个不同的自定义样式声明。

如果样式属性的名称以“Color”结尾，则它是颜色样式属性，并且行为与非颜色样式属性不同。有关详细信息，请参阅使用样式自定义组件的颜色和文本。

TextArea 组件支持下列样式：

样式 | 描述
color | 文本的默认颜色。
embedFonts | 文档中嵌入的字体。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式，“常规”或“斜体”。
fontWeight | 字体粗细，“常规”或“粗体”。
textAlign | 文本对齐方式：“左”、“右”或“居中”。
textDecoration | 文本修饰，“无”或“下划线”。

对 TextArea 组件使用外观

TextArea 组件使用 RectBorder 类来绘制其边框。您可以使用 setStyle() 方法（请参阅 UIObject.setStyle()）来更改下列 RectBorder 样式属性：

RectBorder 样式 | 字母
borderColor | a
highlightColor | b
borderColor | c
shadowColor | d
borderCapColor | e
shadowCapColor | f
shadowCapColor | g
borderCapColor | h

这些样式属性设置边框上的下列位置：


TextArea 类

继承 UIObject > UIComponent > View > ScrollView > TextArea

动作脚本类名称 mx.controls.TextArea

TextArea 类的属性允许您在运行时设置文本内容、格式以及水平和垂直位置。您也可以指明该字段是否可编辑，以及该字段是否为“密码”字段。您还可以限制用户可以输入的字符。

使用“动作脚本”设置 TextArea 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

TextArea 组件会覆盖默认的 Flash Player 焦点矩形，并绘制一个带圆角的自定义焦点矩形。

TextArea 组件支持 CSS 样式和 Flash Player 所支持的任何其他 HTML 样式。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.TextArea.version);

注意：下面的代码返回未定义的：trace(myTextAreaInstance.version);。

TextArea 类的属性摘要

属性 | 描述
TextArea.editable> | 一个布尔值，指明该字段是 (true) 否 (false) 可编辑。
TextArea.hPosition> | 定义滚动窗格中文本的水平位置。
TextArea.hScrollPolicy> | 指明水平滚动条是始终打开 ("on")、从不打开 ("off") 还是在需要时打开 ("auto")。
TextArea.html> | 一个标记，指明文本字段是否可以采用 HTML 格式。
TextArea.length> | 文本字段中的字符数。该属性为只读。
TextArea.maxChars> | 文本字段最多可以容纳的字符数。
TextArea.maxHPosition> | TextArea.hPosition> 的最大值。
TextArea.maxVPosition> | TextArea.vPosition> 的最大值。
TextArea.password> | 一个布尔值，指明字段是密码字段 (true) 还是非密码字段 (false)。
TextArea.restrict> | 用户可在文本字段中输入的字符集。
TextArea.text> | TextArea 组件的文本内容。
TextArea.vPosition> | 一个数字，指明垂直滚动位置
TextArea.vScrollPolicy> | 指明垂直滚动条是始终打开 ("on")、从不打开 ("off") 还是在需要时打开 ("auto")。
TextArea.wordWrap> | 一个布尔值，指明文本是 (true) 否 (false) 自动换行。

TextArea 类的事件摘要

事件 | 描述
TextArea.change> | 通知侦听器文本已更改。


TextArea.change

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(change){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  ...
}
textAreaInstance.addEventListener("change", listenerObject)

描述

事件；通知侦听器文本已更改。在文本更改后广播该事件。不能使用该事件防止某些字符添加到组件的文本字段，而应使用 TextArea.restrict。

第一个用法范例使用 on() 处理函数，并且必须直接附加到 TextArea 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码附加到 myTextArea 实例，它将“_level0.myTextArea”发送到“输出”面板：

on(change){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (textAreaInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

该范例跟踪文本字段已更改的总次数：

myTextArea.changeHandler = function(obj) {
  this.changeCount++;
  trace(obj.target);
  trace("text has changed " + this.changeCount + " times now! it now contains " +
this.text);
}

另请参见

UIEventDispatcher.addEventListener()


TextArea.editable

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.editable

描述

属性；一个布尔值，指明组件是 (true) 否 (false) 可编辑。默认值为 true。


TextArea.hPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.hPosition

描述

属性；定义文本在字段中的水平位置。默认值为 0。

范例

以下代码显示字段中最左边的字符：

myTextArea.hPosition = 0;


TextArea.hScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.hScrollPolicy

描述

属性；确定水平滚动条是始终显示 ("on")、从不显示 ("off")，还是根据字段大小自动显示 ("auto")。默认值为 "auto"。

范例

以下代码使水平滚动条始终打开：

text.hScrollPolicy = "on";


TextArea.html

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.html

描述

属性；一个布尔值，指明该文本字段是 (true) 否 (false) 采用 HTML 格式。如果 html 属性为 true，则文本字段为 HTML 文本字段。如果 html 为 false，则文本字段为非 HTML 文本字段。默认值为 false。

范例

以下范例使 myTextArea 字段成为 HTML 文本字段，然后使用 HTML 标记设置文本格式：

myTextArea.html = true;
myTextArea.text = "The <b>Royal</b> Nonesuch"; // 显示“The Royal Nonesuch”


TextArea.length

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.length

描述

属性（只读）；指明文本字段中的字符数。此属性与动作脚本 text.length 属性都返回相同的值，但速度更快。制表符（“\t”）这样的字符会被算作一个字符。默认值为 0。

范例

以下范例获取文本字段的长度并将它复制到 length 变量中：

var length = myTextArea.length; // 查明文本字符串的长度


TextArea.maxChars

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.maxChars

描述

属性；该文本字段最多可容纳的字符数。脚本插入的文本可能会比 maxChars 属性允许的字符数多；maxChars 属性只是指明用户可以输入多少文本。如果此属性的值为 null，则对用户可以输入的文本量没有限制。默认值为空。

范例

以下范例将用户可以输入的字符数限制为 255：

myTextArea.maxChars = 255;


TextArea.maxHPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.maxHPosition

描述

属性（只读）；TextArea.hPosition 的最大值。默认值为 0。

范例

以下代码将文本滚动到最右侧：

myTextArea.hPosition = myTextArea.maxHPosition;

另请参见

TextArea.vPosition


TextArea.maxVPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.maxVPosition

描述

属性（只读）；指明 TextArea.vPosition 的最大值。默认值为 0。

范例

以下代码将文本滚动到组件的底部：

myTextArea.vPosition = myTextArea.maxVPosition;

另请参见

TextArea.hPosition


TextArea.password

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.password

描述

属性；一个布尔值，指明文本字段是 (true) 否 (false) 为密码字段。如果 password 的值为 true，则此文本字段为密码文本字段并且会隐藏输入字符。如果为 false，则此文本字段不是密码文本字段。默认值为 false。

范例

以下代码使文本字段为密码字段，该字段将所有字符显示为星号 (*)：

myTextArea.password = true;


TextArea.restrict

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.restrict

描述

属性；指明用户可输入到文本字段中的字符集。默认值未定义。如果 restrict 属性的值为空，用户就可以输入任何字符。如果 restrict 属性的值为空字符串，则不能输入任何字符。如果 restrict 属性的值为一个字符串，则只能向文本字段中输入该字符串中的字符；系统将从左向右扫描该字符串。可以使用短划线 (-) 指定范围。

restrict 属性只限制用户交互；脚本可将任何文本放入文本字段中。此属性与属性检查器中的“嵌入字体轮廓”复选框不同步。

如果此字符串以“^”开头，则先接受所有字符，然后从已接受的字符集中排除字符串中 ^ 之后的字符。如果此字符串不以“^”开头，则最初不接受任何字符，然后将字符串中的字符包括在接受字符集中。

范例

在以下范例中，第一行代码将文本字段限定为大写字母、数字和空格。第二行代码允许除小写字母之外的所有字符。

my_txt.restrict = "A-Z 0-9"; // 将控件限定为大写字母、数字和空格。
my_txt.restrict = "^a-z"; // 允许除小写字母之外的所有字符。


TextArea.text

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.text

描述

属性；TextArea 组件的文本内容。默认值为 ""（空字符串）。

范例

以下代码在 myTextArea 实例中放置一个字符串，然后用 trace 命令将该字符串发送到“输出”面板：

myTextArea.text = "The Royal Nonesuch";
trace(myTextArea.text); // 跟踪“The Royal Nonesuch”


TextArea.vPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.vPosition

描述

属性；定义文本在文本字段中的垂直位置。scroll 属性很有用，该属性可以帮助用户定位到长篇文章的特定段落，还可用于创建滚动文本字段。您可以获取并设置该属性。默认值为 0。

范例

以下代码会使字段中最顶端的字符显示出来：

myTextArea.vPosition = 0;


TextArea.vScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.vScrollPolicy

描述

属性；确定垂直滚动条是始终显示 ("on")、从不显示 ("off")，还是根据字段大小自动出现 ("auto")。默认值为 "auto"。

范例

以下代码使垂直滚动条始终关闭：

text.vScrollPolicy = "off";


TextArea.wordWrap

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textAreaInstance.wordWrap

描述

属性；一个布尔值，指明文本是 (true) 否 (false) 自动换行。默认值为 true。


关于 TextInput 组件

TextInput 是一个环绕本机“动作脚本”TextField 对象的单行组件。您可以使用样式自定义 TextInput 组件；当实例被禁用时，它的内容会显示为“disabledColor”样式表示的颜色。TextInput 组件也可以采用 HTML 格式，或作为掩饰文本的密码字段。

在应用程序中，TextInput 组件可以被启用或者禁用。在禁用状态下，它不接收鼠标或键盘输入。当启用时，它遵循与“动作脚本”TextField 对象相同的焦点、选择和导航规则。当一个 TextInput 实例有焦点时，您还可以使用以下按键来控制它：

按键 | 描述
箭头键 | 向左和向右移动一个字符的距离。
Shift + Tab | 将焦点移到前一个对象。
Tab 键 | 将焦点移到下一个对象。

有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

每个 TextInput 实例的实时预览都会反映在创作过程中对属性检查器或“组件检查器”面板中的参数所做的更改。在实时预览中，文本是不可选定的，并且无法在舞台上的组件实例中输入文本。

在将 TextInput 组件添加到应用程序时，您可以使用“辅助功能”面板来使其可由屏幕读取器访问。


使用 TextInput 组件

在任何需要单行文本字段的地方，都可以使用 TextInput 组件。如果您需要多行文本字段，请使用TextArea 组件。例如，您可以在表单中将 TextInput 组件用作密码字段。您可以设置一个侦听器，检查用户按 Tab 键切换到字段之外时，该字段是否有足够的字符。该侦听器可以显示一条错误信息，指明必须输入正确的字符数。

TextInput 组件参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 TextInput 组件设置的创作参数：

text 指定 TextInput 的内容。您无法在属性检查器或“组件检查器”面板中输入回车。默认值为 ""（空字符串）。

editable 指明 TextInput 组件是 (true) 否 (false) 可编辑。默认值为 true。

password 指明字段是 (true) 否 (false) 为密码字段。默认值为 false。

您可以编写“动作脚本”，通过利用其属性、方法和事件来处理 TextInput 组件的这些和其他选项。有关详细信息，请参阅 TextInput 类。

创建具有 TextInput 组件的应用程序

以下过程解释了如何在创作时将 TextInput 组件添加到应用程序。在本范例中，组件是带有事件侦听器的密码字段，事件侦听器确定输入的字符数是否正确。

要创建具有 TextInput 组件的应用程序，请执行以下操作：

  1. 将 TextInput 组件从“组件”面板拖到舞台上。
  2. 在属性检查器中，输入实例名称 passwordField。
  3. 在属性检查器中，执行以下操作：
    • 将 text 参数保留为空。
    • 将 editable 参数设置为 true。
    • 将 password 参数设置为 true。
  4. 在时间轴中选择第一帧，打开“动作”面板，然后输入以下代码：
    textListener = new Object();
textListener.handleEvent = function (evt){
  if (evt.type == "enter"){
    trace("You must enter at least 8 characters");
  }
}
passwordField.addEventListener("enter", textListener);

    该代码在 TextInput passwordField 实例上设置了一个 enter 事件处理函数，该事件处理函数用来验证用户输入的字符数是否正确。

  5. 在 passwordField 实例中输入文本后，您可以获取它的值，如下所示：
    var login = passwordField.text;


自定义 TextInput 组件

在创作过程中和在运行时，您都可以在水平方向上改变 TextInput 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 UIObject.setSize() 或 TextInput 类中任何适用的属性和方法。

在调整 TextInput 组件大小时，边框将相应调整为新边框。TextInput 组件不使用滚动条，但当用户与文本交互操作时插入点会自动滚动。然后在剩余区域中调整文本字段大小，在 TextInput 组件中没有固定大小的元素。如果 TextInput 组件太小而无法显示文本，则该文本将会被裁剪。

对 TextInput 组件使用样式

TextInput 组件在类样式声明中定义了它的 backgroundColor 和 borderStyle 样式属性。类样式覆盖 _global 样式，因此，如果要设置 backgroundColor 和 borderStyle 样式属性，必须在实例上创建一个不同的自定义样式声明。

TextInput 组件支持以下样式：

样式 | 描述
color | 文本的默认颜色。
embedFonts | 文档中嵌入的字体。
fontFamily | 文本的字体名称。
fontSize | 字体的磅值。
fontStyle | 字体样式，“常规”或“斜体”。
fontWeight | 字体粗细，“常规”或“粗体”。
textAlign | 文本对齐方式：“左”、“右”或“居中”。
textDecoration | 文本修饰，“无”或“下划线”。

使用具有 TextInput 组件的外观

TextArea 组件使用 RectBorder 类来绘制其边框。您可以使用 setStyle() 方法（请参阅 UIObject.setStyle()）来更改下列 RectBorder 样式属性：

RectBorder 样式 | 字母
borderColor | a
highlightColor | b
borderColor | c
shadowColor | d
borderCapColor | e
shadowCapColor | f
shadowCapColor | g
borderCapColor | h

这些样式属性设置边框上的下列位置：


TextInput 类

继承 UIObject > UIComponent > TextInput

动作脚本类名称 mx.controls.TextInput

使用 TextInput 类的属性，您可以在运行时设置文本内容、格式和水平位置。您也可以指明该字段是否可编辑，以及该字段是否为“密码”字段。您还可以限制用户可以输入的字符。

使用“动作脚本”设置 TextInput 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

TextInput 组件使用 FocusManager 来覆盖默认的 Flash Player 焦点矩形并绘制一个带圆角的自定义焦点矩形。有关详细信息，请参阅FocusManager 类。

TextInput 组件支持 CSS 样式和 Flash Player 支持的任何其他 HTML 样式。有关 CSS 支持的信息，请参阅 W3C 规范。

您可以通过使用由文本对象返回的字符串来操作文本字符串。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.TextInput.version);

注意：下面的代码返回未定义的：trace(myTextInputInstance.version);。

TextInput 类的方法摘要

继承 UIObject 和 UIComponent 中的所有方法。

TextInput 类的属性摘要

属性 | 描述
TextInput.editable> | 一个布尔值，指明该字段是 (true) 否 (false) 可编辑。
TextInput.hPosition> | 文本字段的水平滚动位置。
TextInput.length> | TextInput 文本字段中的字符数。该属性为只读。
TextInput.maxChars> | 用户可以在 TextInput 文本字段输入的最大字符数。
TextInput.maxHPosition> | TextField.hPosition 的最大可能值。该属性为只读。
TextInput.password> | 一个布尔值，指明该输入文本字段是否为隐藏所输入字符的密码字段。
TextInput.restrict> | 指明用户可以在文本字段输入哪些字符。
TextInput.text> | 设置 TextInput 文本字段的文本内容。

继承 UIObject 和 UIComponent 中的所有方法。

TextInput 类的事件摘要

事件 | 描述
TextInput.change> | 在输入字段更改时触发。
TextInput.enter> | 在按 Enter 键时触发。

继承 UIObject 和 UIComponent 中的所有方法。


TextInput.change

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(change){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.change = function(eventObject){
  ...
}
textInputInstance.addEventListener("change", listenerObject)

描述

事件；通知侦听器文本已更改。在文本更改后广播该事件。不能使用该事件防止某些字符添加到组件的文本字段，而应使用 TextInput.restrict。该事件只能通过用户输入触发，不能通过编程方式的更改来触发。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 TextInput 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，如果把下列代码附加到 myTextInput 实例，它将把“_level0.myTextInput”发送到“输出”面板：

on(change){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (textInputInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

该范例在应用程序中设置一个标记，该标记指明 TextInput 字段中的内容是否已更改：

form.change = function(eventObj){
  // eventObj.target 是生成 change 事件的组件，
  // 即 Input 组件。
  myFormChanged.visible = true;  // 如果内容已更改，设置一个更改指示符；
}
myInput.addEventListener("change", form);

另请参见

UIEventDispatcher.addEventListener()


TextInput.editable

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.editable

描述

属性；一个布尔值，指明组件是 (true) 否 (false) 可编辑。默认值为 true。


TextInput.enter

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(enter){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.enter = function(eventObject){
  ...
}
textInputInstance.addEventListener("enter", listenerObject)

描述

事件；通知侦听器 Enter 键已被按下。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 TextInput 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，如果把下列代码附加到 myTextInput 实例，它将把“_level0.myTextInput”发送到“输出”面板：

on(enter){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (textInputInstance) 调度一个事件（在本例中为 change），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

该范例在应用程序中设置一个标记，该标记指明 TextInput 字段中的内容是否已更改：

form.enter = function(eventObj){
  // eventObj.target 是生成 enter 事件的组件，
  // 即 Input 组件。
  myFormChanged.visible = true;
// 如果用户按下 Enter 键，则设置一个更改指示符；
}
myInput.addEventListener("enter", form);

另请参见

UIEventDispatcher.addEventListener()


TextInput.hPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.hPosition

描述

属性；定义文本在字段中的水平位置。默认值为 0。

范例

以下代码显示字段中最左边的字符：

myTextInput.hPosition = 0;


TextInput.length

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

inputInstance.length

描述

属性（只读）；一个数字，指明 TextInput 组件中的字符数。制表符（“\t”）这样的字符会被算作一个字符。默认值为 0。

范例

以下代码确定 myTextInput 字符串中的字符数，并将该数值复制到 length 变量中：

var length = myTextInput.length;


TextInput.maxChars

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.maxChars

描述

属性；该文本字段最多可容纳的字符数。脚本插入的文本可能会比 maxChars 属性允许的字符数多；maxChars 属性只是指明用户可以输入多少文本。如果此属性的值为 null，则对用户可以输入的文本量没有限制。默认值为空。

范例

以下范例将用户可以输入的字符数限制为 255：

myTextInput.maxChars = 255;


TextInput.maxHPosition

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.maxHPosition

描述

属性（只读）；指明 TextInput.hPosition 的最大值。默认值为 0。

范例

以下代码会滚动到最右边：

myTextInput.hPosition = myTextInput.maxHPosition;


TextInput.password

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.password

描述

属性；一个布尔值，指明文本字段是 (true) 否 (false) 为密码字段。如果 password 的值为 true，则此文本字段为密码文本字段并且会隐藏输入字符。如果为 false，则此文本字段不是密码文本字段。默认值为 false。

范例

以下代码使文本字段为密码字段，该字段将所有字符显示为星号 (*)：

myTextInput.password = true;


TextInput.restrict

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.restrict

描述

属性；指明用户可输入到文本字段中的字符集。默认值未定义。如果 restrict 属性的值为 null 或空字符串 ("")，则用户可以输入任意字符。如果 restrict 属性的值为一个字符串，则只能向文本字段中输入该字符串中的字符；系统将从左向右扫描该字符串。可以使用短划线 (-) 指定范围。

restrict 属性只限制用户交互；脚本可将任何文本放入文本字段中。此属性与属性检查器中的“嵌入字体轮廓”复选框不同步。

如果此字符串以“^”开头，则先接受所有字符，然后从已接受的字符集中排除字符串中 ^ 之后的字符。如果此字符串不以“^”开头，则最初不接受任何字符，然后将字符串中的字符包括在接受字符集中。

反斜线字符可以用于输入字符“-”、“^”和“\”，如下所示：

\^
\-
\\

在“动作”面板中，当在 ""（双引号）中输入 \ 字符时，对于“动作”面板的双引号解释器，该字符有特殊的含义。它表示 \ 之后的字符应被视为其本身的含义。例如，下列代码用于输入单个引号：

var leftQuote = "\"";

“动作”面板的 .restrict 解释器也将 \ 用作转义符。因此，您可能会认为下列代码应该起作用：

myText.restrict = "0-9\-\^\\";

但是，因为此表达式包含在双引号内，所以会将下面的值发送到 .restrict 解释器：0-9-^\，.restrict 解释器将不能识别此值。

因为必须在双引号中输入此表达式，所以不仅要为 .restrict 解释器提供表达式，而且还必须转义“动作”面板中双引号的内置解释器。若要将值 0-9\-\^\\ 发送到 .restrict 解释器，您必须输入下列代码：

myText.restrict = "0-9\\-\\^\\\\";

范例

在以下范例中，第一行代码将文本字段限定为大写字母、数字和空格。第二行代码允许除小写字母之外的所有字符。

my_txt.restrict = "A-Z 0-9";
my_txt.restrict = "^a-z";

以下代码允许用户在实例 myText 中输入字符“0 1 2 3 4 5 6 7 8 9 - ^ \”。您必须使用双反斜线使字符“-”、“^”和“\”转义。第一个“\”转义为“ ”，第二个“\”指示解释器不应将下一个字符视为特殊字符，如下所示：

myText.restrict = "0-9\\-\\^\\\\";


TextInput.text

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

textInputInstance.text

描述

属性；TextInput 组件的文本内容。默认值为 ""（空字符串）。

范例

以下代码将字符串放入 myTextInput 实例中，然后用 trace 命令将该字符串发送到“输出”面板：

myTextInput.text = "The Royal Nonesuch";
trace(myTextInput.text); // 跟踪“The Royal Nonesuch”


关于 TransferObject 接口

动作脚本类名称 mx.data.to.TransferObject

TransferObject 接口定义了 DataSet 组件所管理的项目必须实现的一组方法。DataSet.itemClassName 属性指定了在每次需要新项目时将实例化的传送对象类的名称。也可以使用属性检查器为所选的 DataSet 组件指定此属性。

TransferObject 接口的方法摘要

方法 | 描述
TransferObject.clone()> | 创建传送对象的新实例。
TransferObject.getPropertyData()> | 返回此传送对象的数据。
TransferObject.setPropertyData()> | 设置此传送对象的数据。


TransferObject.clone()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

class itemClass implements mx.data.to.TransferObject
  function clone() {
    // 此处是您的代码
  }
}

返回

传送对象的副本。

说明

方法；创建传送对象的实例。此方法的实现会创建现有传送对象及其属性的副本，然后返回该对象。

示例

class itemClass implements mx.data.to.TransferObject {
  function clone():Object {
    var b:ContactClass = new ContactClass();
    for (var p in this) {
      b[p] = this[p];
    }
    return b;
  }
}


TransferObject.getPropertyData()

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

class itemClass implements mx.data.to.TransferObject {
  function getPropertyData() {
  // 此处是您的代码
  }
}

返回

对象。

说明

方法；返回此传送对象的数据。此方法的实现可能会返回具有属性和相应值的匿名动作脚本对象。

示例

class Contact implements mx.data.to.TransferObject {
function getPropertyData():Object {
  var internalData:Object = { name:name, readOnly:_readOnly, phone:phone, zip:zip.zipPlus4 };
  return( internalData );
}


TransferObject.setPropertyData()

可用性

Flash Player 7。

版本

Flash MX 2004。

用法

class yourClass implements TransferObject {
  function setPropertyData(propData) {
  // 此处是您的代码
  }
}

参数

propData 一个包含分配给此传送对象的数据的对象。

返回

无。

说明

方法；设置此传送对象的数据。propData 参数是一个对象，其字段包含 DataSet 组件分配给此传送对象的数据。

示例

class Contact implements mx.data.to.TransferObject {

  function setPropertyData( data:Object ):Void {
    _readOnly = data.readOnly;
    phone = data.phone;
    zip = new mx.data.types.ZipCode( data.zip );
  }

  public var name:String;
  public var phone:String;
  public var zip:ZipCode;
  private var _readOnly:Boolean; // 指示是否不可改变
}


关于 Tree 组件（仅限 Flash Professional）

Tree 组件允许用户查看分层数据。树显示在类似 List 组件的框中，但树中的每个项目称为节点，并且可以是叶 或分枝。默认情况下，用旁边带有文件图标的文本字段表示叶，用旁边带有文件夹图标的文本字段表示分枝，并且文件夹图标带有展示三角形，用户可以打开它以显示子项。分枝的子项可以是叶或分枝。

必须通过 XML 数据源提供树组件的数据。有关详细信息，请参阅使用 Tree 组件（仅限 Flash Professional）。

当树实例从单击或 Tab 键切换中获得焦点时，您可以使用以下按键来控制它：

按键 | 描述
向下箭头 | 将选区向下移动一项。
向上箭头 | 将选区向上移动一项。
右箭头 | 打开所选的分枝节点。如果分枝已打开，则会移到第一个子节点。
左箭头 | 关闭所选的分枝节点。如果是在已关闭分枝节点的叶节点上，则会移到父节点。
空格键 | 打开或关闭所选的分枝节点。
End 键 | 将选区移到列表底端。
Home 键 | 将选区移到列表顶端。
Page Down 键 | 将选区向下移动一页。
Page Up 键 | 将选区向上移动一页。
Ctrl 键 | 允许选择多个不相邻的项目。
Shift 键 | 允许选择多个相邻的项目。

无法使用屏幕阅读器来访问 Tree 组件。


使用 Tree 组件（仅限 Flash Professional）

Tree 组件可用于表示分层数据，如电子邮件客户端文件夹、文件浏览器窗格或库存的类别浏览系统。绝大多数情况下，是通过服务器以 XML 的形式来获得树的数据的，但此数据也可以是在 Flash 中创作时所创建的良构 XML。为树创建 XML 的最好方法是使用 TreeDataProvider 接口（仅限 Flash Professional）。也可以使用动作脚本 XML 类或建立 XML 字符串。创建 XML 数据源（或通过外部源加载一个 XML 数据源）后，需将其指定给 Tree.dataProvider。

Tree 组件由两组 API 组成：Tree 类和 TreeDataProvider 接口。Tree 类包含可视的配置方法和属性。TreeDataProvider 接口允许您构建 XML 并将其添加到多个树实例中。TreeDataProvider 对象会向任何使用它的树广播更改。另外，存在于与树或菜单相同的帧上的任何 XML 或 XMLNode 对象会自动获得 TreeDataProvider 方法和属性。有关详细信息，请参阅TreeDataProvider 接口（仅限 Flash Professional）。

为 Tree 组件设置 XML 格式

Tree 组件专为显示分层数据结构而设计。XML 是 Tree 组件的数据模型。了解 XML 数据源与 Tree 组件的关系很重要。

请考虑以下的 XML 数据源范例：

<node>
  <node label="Mail">
       <node label="INBOX"/>
       <node label="Personal Folder">
           <node label="Business" isBranch="true" />
           <node label="Demo" isBranch="true" />
           <node label="Personal" isBranch="true" />
           <node label="Saved Mail" isBranch="true" />
           <node label="bar" isBranch="true" />
       </node>
       <node label="Sent" isBranch="true" />
       <node label="Trash"/>
  </node>
</node>

注意：isBranch 属性是只读属性；无法直接设置它。要设置此属性，请调用 Tree.setIsBranch()> 方法。

XML 数据源中的节点可以有任何名称。请注意，上例中的每个节点都以一般性名称“node”进行命名。树会通读 XML，并根据各节点的嵌套关系建立显示层次结构。

在树中，每个 XML 节点可以显示为两种类型之一：分枝或叶。分枝节点可以包含多个子节点，并显示为带有展示三角形的文件夹图标，此展示三角形使用户可以打开和关闭文件夹。叶节点显示为文件图标，并且不能包含子节点。叶和分枝都可以是根；根节点显示在树的最顶层，并且没有父节点。图标是可自定义的；有关详细信息，请参阅使用具有 Tree 组件的外观。

构建 XML 的方法有很多种。Tree 组件并非设计为可使用所有类型的 XML 结构，因此，使用 Tree 组件可以解释的 XML 非常重要。请勿在子节点中嵌套节点属性；每个节点应包含所有必需的属性。另外，每个节点的属性应一致，这样才实用。例如，要利用 Tree 组件描述信箱结构，请在每个节点上都使用相同的属性（消息、数据、时间、附件等）。这可让树知道它预期要呈现的内容，并可让您以循环方式遍历层次结构，以便比较数据。

当树显示节点时，默认情况下，它使用节点的 label 属性作为文本标签。如果存在任何其他属性，它们会成为树中节点属性的附加属性。

实际的根节点被解释为 Tree 组件本身。这意味着 firstChild（上例中的 <node label="Mail">）在树视图中显示为根节点。这表示树可以有多个根文件夹。在上例中，树中只显示一个根文件夹：“Mail”。但是，如果您将在 XML 中向该层添加同辈节点，则树中会显示多个根节点。

Tree 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 Tree 组件设置的创作参数：

multipleSelection 一个布尔值，它指明用户是 (true) 否 (false) 可以选择多个项目。默认值为 false。

rowHeight 每行的高度（以像素为单位）。默认值为 20。

您可以编写动作脚本，以便使用 Tree 组件的属性、方法和事件来控制该组件的这些和其他选项。有关详细信息，请参阅Tree 类（仅限 Flash Professional）。

对于 Tree 组件，您不能像其他组件那样在属性检查器或“组件检查器”面板中为其输入数据参数。有关详细信息，请参阅使用 Tree 组件（仅限 Flash Professional）和创建具有 Tree 组件的应用程序。

创建具有 Tree 组件的应用程序

在本例中，开发人员正在创建一个电子邮件应用程序，并选择使用 Tree 组件来显示信箱。

不能像其他组件那样在属性检查器或“组件检查器”面板中输入数据参数。由于数据结构比 Tree 组件更复杂，因此，您必须在运行时导入 XML 对象，或在创作时在 Flash 中建立一个 XML 对象。要在 Flash 中创建 XML，可以使用 TreeDataProvider、使用动作脚本 XML 对象或建立 XML 字符串。这些选择会在以下过程中逐一说明。

要将 Tree 组件添加到应用程序：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 文档”。
  2. 在“组件”面板中，双击 Tree 组件以将其添加到舞台上。
  3. 在属性检查器中，输入实例名称 myTree。
  4. 在第 1 帧的“动作”面板中，输入会创建 change 事件处理函数的以下代码：
    listenerObject = new Object();
listenerObject.change = function(evtObject){
  trace(evtObject.target.selectedItem.attributes.label + " was selected");
}
myTree.addEventListener("change", listenerObject);

    每次选定树中的项目时，处理函数中的 trace 动作会向“输出”面板发送一条消息。

  5. 完成以下其中一个过程，为树加载或创建一个 XML 数据源。

要从外部文件中加载 XML，请执行以下操作：

  1. 执行上述过程中的各步骤，将 Tree 组件添加到应用程序并创建 change 事件处理函数。
  2. 在“动作”面板中的第 1 帧上，输入以下代码：
    myTreeDP = new XML();
myTreeDP.ignoreWhite = true;
myTreeDP.load("http://myServer.myDomain.com/source.xml");
myTreeDP.onLoad = function(){
  myTree.dataProvider = myTreeDP;
}

    此代码创建一个称为 myTreeDP 的动作脚本 XML 对象，并调用 XML.load() 方法来加载 XML 数据源。然后，代码定义了 onLoad 事件处理函数，该函数在 XML 加载时将 myTree 实例的 dataProvider 属性设置为新的 XML 对象。有关 XML 对象的详细信息，请参阅它在“动作脚本字典”帮助中的条目。

  3. 选择“控制”>“测试影片”。

    在 SWF 文件中，您可以看到在 Tree 组件中显示的 XML 结构。单击 Tree 组件中的各项可以看到 change 事件处理函数中将数据值发送到“输出”面板的 trace 动作。

在创作时，要使用 TreeDataProvider 类在 Flash 中创建 XML，请执行以下操作：

  1. 执行上述第一个过程中的各步骤，将 Tree 组件添加到一个应用程序并创建 change 事件处理函数。
  2. 在“动作”面板中的第 1 帧上，输入以下代码：
    var myTreeDP = new XML();
myTreeDP.addTreeNode("Local Folders", 0);

// 使用 XML.firstChild 嵌套 Local Folders 下的子节点
var myTreeNode = myTreeDP.firstChild;
myTreeNode.addTreeNode("Inbox", 1);
myTreeNode.addTreeNode("Outbox", 2);
myTreeNode.addTreeNode("Sent Items", 3);
myTreeNode.addTreeNode("Deleted Items", 4);

// 利用 myTree 组件指定 myTreeDP 数据源
myTree.dataProvider = myTreeDP;

// 将 4 个子节点逐个设置为分枝
for(var i=0; i<myTreeNode.childNodes.length; i++){
    var node = myTreeNode.getTreeNodeAt(i);
    myTree.setIsBranch(node, true);
}

    此代码创建了一个名为 myTreeDP 的 XML 对象。在与 Tree 组件相同的帧上的任何 XML 对象会自动获得 TreeDataProvider API 的所有属性和方法。第二行代码创建了一个名为 Local Folders 的根节点。有关其余代码的详细信息，请参阅代码中的注释（以 // 开头的行）。

  3. 选择“控制”>“测试影片”。

    在 SWF 文件中，您可以看到在 Tree 组件中显示的 XML 结构。单击 Tree 组件中的各项可以看到 change 事件处理函数中将数据值发送到“输出”面板的 trace 动作。

要使用动作脚本 XML 类创建 XML，请执行以下操作：

  1. 执行上述第一个过程中的各步骤，将 Tree 组件添加到一个应用程序并创建 change 事件处理函数。
  2. 在“动作”面板中的第 1 帧上，输入以下代码：
    // 创建 XML 对象
var myTreeDP = new XML();

// 创建节点值
var myNode0 = myTreeDP.createElement("node");
myNode0.attributes.label = "Local Folders";
myNode0.attributes.data = 0;

var myNode1 = myTreeDP.createElement("node");
myNode1.attributes.label = "Inbox";
myNode1.attributes.data = 1;

var myNode2 = myTreeDP.createElement("node");
myNode2.attributes.label = "Outbox";
myNode2.attributes.data = 2;

var myNode3 = myTreeDP.createElement("node");
myNode3.attributes.label = "Sent Items";
myNode3.attributes.data = 3;

var myNode4 = myTreeDP.createElement("node");
myNode4.attributes.label = "Deleted Items";
myNode4.attributes.data = 4;

// 将节点指定到 XML 树中的层次结构
myTreeDP.appendChild(myNode0);
myTreeDP.firstChild.appendChild(myNode1);
myTreeDP.firstChild.appendChild(myNode2);
myTreeDP.firstChild.appendChild(myNode3);
myTreeDP.firstChild.appendChild(myNode4);

// 利用 Tree 控件指定 myTreeDP 数据源
myTree.dataProvider = myTreeDP;

    请阅读代码中的注释（以 // 开头的行），以了解代码的说明。有关 XML 对象的详细信息，请参阅它在“动作脚本字典”帮助中的条目。

  3. 选择“控制”>“测试影片”。

    在 SWF 文件中，您可以看到在 Tree 组件中显示的 XML 结构。单击 Tree 组件中的各项可以看到 change 事件处理函数中将数据值发送到“输出”面板的 trace 动作。

在创作时，要使用良构的字符串在 Flash 中创建 XML，请执行以下操作：

  1. 执行上述第一个过程中的各步骤，将 Tree 组件添加到一个应用程序并创建 change 事件处理函数。
  2. 在“动作”面板中的第 1 帧上，输入以下代码：
    myTreeDP = new XML("<node label='Local Folders'><node label='Inbox' data='0'/><node label='Outbox' data='1'/></node>");
myTree.dataProvider = myTreeDP;

    以上代码创建了一个 XML 对象 myTreeDP，并将其指定给 myTree 的 dataProvider 属性。

  3. 选择“控制”>“测试影片”。

    在 SWF 文件中，您可以看到在 Tree 组件中显示的 XML 结构。单击 Tree 组件中的各项可以看到 change 事件处理函数中将数据值发送到“输出”面板的 trace 动作。


自定义 Tree 组件（仅限 Flash Professional）

在创作过程中和运行时，您都可以在水平和垂直方向上改变 Tree 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅 UIObject.setSize()）。当树的宽度不足以显示节点的文本时，文本会缩短。

对 Tree 组件使用样式

有关此功能的最新信息，请单击“帮助”选项卡顶部的“更新”按钮。

使用具有 Tree 组件的外观

有关此功能的最新信息，请单击“帮助”选项卡顶部的“更新”按钮。


Tree 类（仅限 Flash Professional）

继承 UIObject > UIComponent > View > ScrollView > ScrollSelectList > List > Tree

动作脚本类名称 mx.controls.Tree

Tree 类的方法摘要

方法 | 描述
Tree.addTreeNode()> | 向树实例添加节点。
Tree.addTreeNodeAt()> | 在树实例中的特定位置添加节点。
Tree.getDisplayIndex()> | 返回给定节点的显示索引。
Tree.getIsBranch()> | 指定文件夹是否为分枝（具有文件夹图标和展开箭头）。
Tree.getIsOpen()> | 指示分枝是打开还是关闭。
Tree.getNodeDisplayedAt()> | 返回给定节点的显示索引。
Tree.getTreeNodeAt()> | 返回在树的根上的节点。
Tree.removeAll()> | 从树实例中删除所有节点并刷新树。
Tree.removeTreeNodeAt()> | 删除在指定位置的节点并刷新树。
Tree.setIsBranch()> | 指示节点是否为分枝（获得文件夹图标和展开箭头）。
Tree.setIcon()> | 指定节点是打开还是关闭。
Tree.setIsOpen()> | 指定将用作节点图标的元件。

继承 UIComponent、UIObject、View、ScrollView、ScrollSelectList 和 List 的所有方法。

Tree 类的属性摘要

属性 | 描述
Tree.dataProvider> | 指定 XML 数据源。
Tree.firstVisibleNode> | 指定显示在最顶层的第一个节点。
Tree.selectedNode> | 指定树实例中的一个选定节点。
Tree.selectedNodes> | 指定树实例中的多个选定节点。

继承 UIComponent、UIObject、View、ScrollView、ScrollSelectList 和 List 的所有属性。

Tree 类的事件摘要

事件 | 描述
Tree.nodeClose> | 在用户关闭节点时广播。
Tree.nodeOpen> | 在用户打开节点时广播。

继承 UIComponent、UIObject、View、ScrollView、ScrollSelectList 和 List 的所有事件。


Tree.addTreeNode()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myTree.addTreeNode(label [, data])

用法 2：

myTree.addTreeNode(child)

参数

label 一个显示节点或带有“label”字段的对象的字符串（或由 labelField 属性指定的标签字段名称）。

data 一个与该节点关联的任何类型的对象。此参数是可选的。

child 任何 XMLNode 对象。

返回

添加的 XML 节点。

说明

方法；将子节点添加到树。该节点或者是通过标签和数据参数中提供的信息构建的（用法 1)，或者是通过作为 XMLNode 对象的预先建立的子节点构建的（用法 2）。添加预先存在的节点会将该节点从其先前的位置上删除。

注意：调用此方法将刷新视图。

示例

以下代码向 myTree 的根添加一个新节点。第二行代码将节点从 mySecondTree 的根移到 myTree 的根：

myTree.addTreeNode("Inbox", 3);
myTree.addTreeNode(mySecondTree.getTreeNodeAt(3));


Tree.addTreeNodeAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myTree.addTreeNodeAt(index, label [, data])

用法 2：

myTree.addTreeNodeAt(index, child)

参数

index 应遵循的节点添加顺序（在多个子节点之间）。

label 一个显示该节点的字符串。

data 一个与该节点关联的任何类型的对象。此参数是可选的。

child 任何 XMLNode 对象。

返回

添加的 XML 节点。

说明

方法；在树的指定位置添加节点。该节点或者是通过标签和数据参数中提供的信息构建的（用法 1)，或者是通过预先建立的 XMLNode 对象构建的（用法 2）。添加预先存在的节点会将该节点从其先前的位置上删除。

注意：调用此方法将刷新视图。

示例

以下范例添加一个新节点，作为 myTree 的根的第二个子项。第二行移动 mySecondTree 中的节点，使其成为 myTree 的根的第四个子项：

myTree.addTreeNodeAt(1, "Inbox", 3);
myTree.addTreeNodeAt(3,mySecondTree.getTreeNodeAt(3));


Tree.dataProvider

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.dataProvider

描述

属性；dataProvider 属性可以是 XML 或字符串。如果 dataProvider 是 XML 对象，则直接将它添加到树。如果 dataProvider 是字符串，则它必须包含由树读取并被转换为 XML 对象的有效 XML。

可以在运行时从外部源加载 XML，或者在创作时在 Flash 中创建它。要创建 XML，可以使用 TreeDataProvider 的方法或内置的动作脚本 XML 类的方法和属性。也可以创建包含 XML 的字符串。

在与 Tree 组件相同的帧上的 XML 对象会自动包含 TreeDataProvider 的方法和属性。可以使用动作脚本 XML 或 XMLNode 对象。

范例

以下范例导入一个 XML 文件，并将其指定给 Tree 组件的 myTree 实例：

myTreeDP = new XML();
myTreeDP.ignoreWhite = true;
myTreeDP.load("http://myServer.myDomain.com/source.xml");
myTreeDP.onLoad = function(){
   myTree.dataProvider = myTreeDP;
}

注意：大多数 XML 文件都包含空白，而 Flash 不会忽略该空白，除非您将 ignoreWhite 属性设置为 true。


Tree.firstVisibleNode

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.firstVisibleNode

描述

属性；显示在最顶层的第一个节点。如果该节点在某个未展开的节点下，则对 firstVisibleNode 进行的设置将无效。默认值是第一个可见节点，或者，如果没有可见的节点，则默认值未定义。此属性的此值是 XMLNode 对象。

注意：设置此属性类似于设置 List.vPosition。

范例

以下范例将滚动位置设置为显示区的顶部：

myTree.firstVisibleNode = myTree.getTreeNodeAt(0);


Tree.getIsBranch()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.getIsBranch(node)

参数

node 一个 XMLNode 对象。

返回

一个布尔值，指示节点是 (true) 否 (false) 为分枝。

说明

方法；指示指定的节点是否具有文件夹图标和展开箭头（是否为分枝）。在向该节点添加子项时会自动设置此方法。只需调用 setIsBranch() 来创建空的文件夹即可。有关详细信息，请参阅 Tree.setIsBranch()。

示例

以下代码将节点状态指定给变量：

var open = myTree.getIsBranch(myTree.getTreeNodeAt(1));

另请参见

Tree.setIsBranch()


Tree.getIsOpen()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.getIsOpen(node)

参数

node 一个 XMLNode 对象。

返回

一个布尔值，指示树是 (true) 否 (false) 打开。

说明

方法；指示指定的节点是打开还是关闭。

示例

以下代码将节点状态指定给变量：

var open = myTree.getIsOpen(myTree.getTreeNodeAt(1));


Tree.getDisplayIndex()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.getDisplayIndex(node)

参数

node 一个 XMLNode 对象。

返回

指定节点的索引，或者，如果当前未显示该节点，则为未定义。

说明

方法；返回在 node 参数中指定的节点的显示索引。

显示索引是可以在树窗口中查看的项的数组。例如，任何未封闭项的子项都不在显示索引中。显示索引从 0 开始并继续到可见项，而与父项无关。换言之，显示索引是显示的行从 0 开始的行编号。

示例

以下代码获取 myNode 的显示索引：

var x = myTree.getDisplayIndex(myNode);


Tree.getNodeDisplayedAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.getNodeDisplayedAt(index)

参数

index 一个整数，表示树的可查看区中的显示位置。此数字从零开始；在第一个位置的节点为 0，第二个位置为 1，依此类推。

返回

指定的 XMLNode 对象。

说明

方法；将树的某个显示索引映射到在该索引处显示的节点上。例如，如果树的第五行显示了在层次结构中深居第八层的节点，则通过检查 getNodeDisplayedAt(4) 会返回该节点。

显示索引是可以在树窗口中查看的项的数组。例如，任何未封闭项的子项都不在显示索引中。显示索引从 0 开始并继续到可见项，而与父项无关。换言之，显示索引是显示的行从 0 开始的行编号。

注意：在每次节点打开和关闭时会显示索引的更改。

示例

以下代码获取对某个 XML 节点的引用，该节点是在 myTree 中显示的第二行：

myTree.getNodeDisplayedAt(1);


Tree.getTreeNodeAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.getTreeNodeAt(index)

参数

index 树的索引号。

返回

XMLNode 对象。

说明

方法；返回在 myTree 的根上的指定节点。

示例

以下代码获取在 myTree 树中位于第一层上的第二个节点：

myTree.getTreeNodeAt(1);


Tree.nodeClose

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.nodeClose = function(eventObject){
  // 此处插入您的代码
}
myTreeInstance.addEventListener("nodeClose", listenerObject)

说明

事件；在用户关闭 Tree 组件的节点时，向所有注册的侦听器广播。

V2 组件使用调度程序/侦听器事件模型。Tree 组件会在其一个节点被单击关闭时广播 nodeClose 事件，该事件由附加到您创建的侦听器对象 (listenerObject) 上的函数（也称为处理函数）进行处理。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Tree.nodeClose 事件的事件对象还有一个附加属性：node（已关闭的 XML 节点）。有关事件对象的详细信息，请参阅事件对象。

示例

在下面的范例中，定义了名为 myTreeListener 的处理函数，并且将该处理函数作为第二个参数传递到 myTree.addEventListener() 方法。nodeClose 处理函数在 evtObject 参数中捕获事件对象。在广播 nodeClose 事件时，trace 语句被发送到“输出”面板，如下所示：

myTreeListener = new Object();
myTreeListener.nodeClose = function(evtObject){
  trace(evtObject.node + " node was closed");
}
myTree.addEventListener("nodeClose", myTreeListener);


Tree.nodeOpen

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.nodeOpen = function(eventObject){
  // 此处插入您的代码
}
myTreeInstance.addEventListener("nodeOpen", listenerObject)

描述

事件；在用户打开 Tree 组件上的节点时，向所有注册的侦听器广播。

V2 组件使用调度程序/侦听器事件模型。Tree 组件会在用户单击打开一个节点时调度 nodeOpen 事件，该事件由附加到您创建的侦听器对象 (listenerObject) 上的函数（也称为处理函数）进行处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。Tree.nodeOpen 事件的事件对象还有一个附加属性：node（已打开的 XML 节点）。有关事件对象的详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myTreeListener 的处理函数，并且将该处理函数作为第二个参数传递到 myTree.addEventListener() 方法。nodeOpen 处理函数在 evtObject 参数中捕获事件对象。在广播 nodeOpen 事件时，trace 语句被发送到“输出”面板，如下所示：

myTreeListener = new Object();
myTreeListener.nodeOpen = function(evtObject){
  trace(evtObject.node + " node was opened");
}
myTree.addEventListener("nodeOpen", myTreeListener);


Tree.removeAll()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.removeAll()

参数

无。

返回

无。

说明

方法；删除所有节点并刷新树。

示例

以下代码清空 myTree：

myTree.removeAll();


Tree.removeTreeNodeAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.removeTreeNodeAt(index)

参数

index 树的子项的索引号。树的每个子项均按其创建顺序获得了一个从零开始的索引。

返回

XMLNode 对象，或者，如果出错，则为未定义。

说明

方法；删除树的根上的节点（由其索引位置指定）并刷新树。

示例

以下代码删除 myTree 树的根的第四个子项：

myTree.removeTreeNodeAt(3);


Tree.setIsBranch()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.setIsBranch(node, isBranch)

参数

node 一个 XML 节点。

isBranch 一个布尔值，它表明该节点是 (true) 否 (false) 是分枝。

返回

无。

说明

方法；指定节点是否具有文件夹图标和展开箭头，以及是否具有子项或者可能具有子项。如果节点具有子项，它会自动设置为分枝；在您想创建空的文件夹时，只需调用 setIsBranch() 即可。如果在用户打开文件夹时只希望加载子节点，则您可能要创建尚未拥有子项的分枝。

调用 setIsBranch() 方法会刷新所有视图。

示例

以下代码使 myTree 的一个节点变为一个分枝；

myTree.setIsBranch(myTree.getTreeNodeAt(1), true);


Tree.setIcon()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.setIcon(node, linkID[, linkID2])

参数

node 一个 XML 节点。

linkID 元件的链接标识符，该元件将被用作节点旁的图标。此参数用于叶节点和分枝节点的关闭状态。

linkID2 元件的链接标识符，该元件将被用作节点旁的图标。此参数用于表示分枝节点的打开状态的图标。

返回

无。

说明

方法；为指定的节点指定图标。对于叶节点，此方法使用一个参数 (linkID)，而对于分枝，此方法使用两个参数（linkID 和 linkID2）（关闭和打开图标）。对于叶（非分枝）节点，第二个参数会被忽略。而且，如果只为分枝节点指定了一个参数，则对于关闭和打开状态，它们都使用一个图标。

示例

以下代码指定在 myTree 的第二个节点旁使用带有链接标识符“imageIcon”的元件：

myTree.setIcon(myTree.getTreeNodeAt(1), "imageIcon");


Tree.setIsOpen()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.setIsOpen(node, isOpen[, noEvent])

参数

node 一个 XML 节点。

isOpen 一个布尔值，用于打开一个节点 (true) 或关闭它 (false)。

noEvent 一个布尔值，它确定是 (true) 否 (false) 将打开节点的过渡制成动画。此参数是可选的。

返回

无。

说明

方法；打开或关闭节点。

示例

以下代码打开 myTree 的一个节点：

myTree.setIsOpen(myTree.getTreeNodeAt(1), true);


Tree.selectedNode

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.selectedNode

描述

属性；指定树实例中的一个选定节点。

范例

以下范例指定 myTree 中的第一个子节点：

myTree.selectedNode = myTree.getTreeNodeAt(0);

另请参见

Tree.selectedNodes


Tree.selectedNodes

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myTree.selectedNodes

描述

属性；指定树实例中的多个选定节点。

范例

以下范例选择 myTree 中的第一和第三个子节点：

myTree.selectedNodes = [myTree.getTreeNodeAt(0), myTree.getTreeNodeAt(2)];

另请参见

Tree.selectedNode


关于 TreeDataProvider 接口（仅限 Flash Professional）

TreeDataProvider 是一个接口；无需对其实例化即可使用它。如果在 SWF 中打包了 Tree 类，则该 SWF 中的所有 XML 实例都包含 TreeDataProvider API。树中的所有节点都是包含 TreeDataProvider API 的 XML 对象。

最好是使用 TreeDataProvider API 的方法为 Tree.dataProvider 属性创建 XML，原因是，只有 TreeDataProvider 才向 Tree 组件广播刷新树的显示的事件。内置的 XML 类方法可用于创建 XML，但它们不会广播将刷新显示的事件。

可以使用 TreeDataProvider API 的方法来控制数据模型和数据显示。可以将内置的 XML 类方法用于只读的任务，如遍历树的层次结构。

对于保存将显示的文本的属性，可通过指定 labelField 或 labelFunction 属性来选择该属性。例如，code myTree.labelField = "fred"; 会致使系统为显示的文本查询属性 myTreeDP.attributes.fred 的值。

TreeDataProvider 接口的方法摘要

事件 | 描述
TreeDataProvider.addTreeNode()> | 在父节点的末尾添加一个子节点。
TreeDataProvider.addTreeNodeAt()> | 在父节点上的指定位置添加一个子节点。
TreeDataProvider.getTreeNodeAt()> | 返回节点的指定子项。
TreeDataProvider.removeTreeNode()> | 从节点的父项中删除节点和节点的所有后代。
TreeDataProvider.removeTreeNodeAt()> | 从子节点的索引位置处删除节点和节点的所有后代。

TreeDataProvider 接口的属性摘要

属性 | 描述
TreeDataProvider.attributes.data> | 指定与节点关联的数据。
TreeDataProvider.attributes.label> | 指定将在节点旁边显示的文本。


TreeDataProvider.addTreeNode()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

someNode.addTreeNode(label, data)

用法 2：

someNode.addTreeNode(child)

参数

label 一个显示该节点的字符串。

data 一个与该节点关联的任何类型的对象。

child 任何 XMLNode 对象。

返回

添加的 XML 节点。

说明

方法；在树的根添加子节点。该节点或者是根据标签和数据参数中提供的信息构建的（用法 1)，或者是根据作为 XMLNode 对象的预先生成的子节点构建的（用法 2）。添加预先存在的节点会将该节点从其先前的位置上删除。

调用此方法将刷新树实例的显示。

示例

在以下范例中，第一行代码确定将向其添加子项的节点的位置。第二行将一个新节点添加到指定的节点，如下所示：

var myTreeNode = myTreeDP.firstChild.firstChild;
myTreeNode.addTreeNode("Inbox", 3);

以下代码将一棵树中的某个节点移到另一棵树的根：

myTreeNode.addTreeNode(mySecondTree.getTreeNodeAt(3));


TreeDataProvider.addTreeNodeAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

someNode.addTreeNodeAt(index, label, data)

用法 2：

someNode.addTreeNodeAt(index, child)

参数

index 一个整数，它指示应将节点添加到的子节点中的索引位置。

label 一个显示该节点的字符串。

data 一个与该节点关联的任何类型的对象。

child 任何 XMLNode 对象。

返回

添加的 XML 节点。

说明

方法；在父节点中的指定位置添加子节点。该节点或者是根据标签和数据参数中提供的信息构建的（用法 1)，或者是根据作为 XMLNode 对象的预先生成的子节点构建的（用法 2）。添加预先存在的节点会将该节点从其先前的位置上删除。

调用此方法将刷新树实例的显示。

范例

以下代码确定将向其添加节点的节点的位置，并添加作为根的第二个子项的新节点：

var myTreeNode = myTreeDP.firstChild.firstChild;
myTreeNode.addTreeNodeAt(1, "Inbox", 3);

以下代码移动一棵树中的某个节点，使其成为另一棵树的根的第四个子项：

myTreeNode.addTreeNodeAt(3, mySecondTree.getTreeNodeAt(3));


TreeDataProvider.attributes.data

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

someNode.attributes.data

说明

属性；指定与节点关联的数据。这会将值作为 XML 节点对象中的属性添加。设置此属性不会刷新任何树显示。此属性可以是任何数据类型。

示例

以下代码确定要调整的节点的位置，并设置其 data 属性：

var myTreeNode = myTreeDP.firstChild.firstChild;
myTreeNode.attributes.data = "hi"; // <node data = "hi"> 中的结果；

另请参见

TreeDataProvider.attributes.label


TreeDataProvider.attributes.label

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

someNode.attributes.label

说明

属性；一个指定为节点显示的文本的字符串。此字符串会被写入到 XML 节点对象的一个属性。设置此属性不会刷新任何树显示。

示例

以下代码确定要调整的节点的位置，并设置其 label 属性。以下代码的结果是“<node label="Mail">”：

var myTreeNode = myTreeDP.firstChild.firstChild;
myTreeNode.attributes.label = "Mail";

另请参见

TreeDataProvider.attributes.data


TreeDataProvider.getTreeNodeAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

someNode.getTreeNodeAt(index)

参数

index 一个表示子节点在当前节点中的位置的整数。

返回

指定的节点。

说明

方法；返回节点的指定子节点。

示例

以下代码确定某个节点的位置，然后获取 myTreeNode 的第二个子项：

var myTreeNode = myTreeDP.firstChild.firstChild;
myTreeNode.getTreeNodeAt(1);


TreeDataProvider.removeTreeNode()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

someNode.removeTreeNode()

参数

无。

返回

删除的 XML 节点或未定义（如果发生错误）。

说明

方法；从指定节点的父项中删除该节点和任何后代。

示例

以下代码删除某个节点：

myTreeDP.firstChild.removeTreeNode();


TreeDataProvider.removeTreeNodeAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

someNode.removeTreeNodeAt(index)

参数

index 一个整数，指示将被删除的节点的位置。

返回

删除的 XML 节点或未定义（如果发生错误）。

说明

方法；删除由当前节点和子节点的索引位置指定的节点（和所有后代）。调用此方法将刷新视图。

示例

以下代码删除给定节点的第四个子项：

myTreeDP.firstChild.removeTreeNodeAt(3);


关于 UIComponent 类

继承 UIObject > UIComponent

动作脚本类名称 mx.core.UIComponent

所有 v2 组件均扩展 UIComponent；它不是可视组件。UIComponent 类包含的功能和属性使 Macromedia 组件能够共享一些常规行为。UIComponent 类允许您执行以下操作：

  • 接收焦点和键盘输入
  • 启用和禁用组件
  • 按布局调整大小

要使用 UIComponent 的方法和属性，您可以直接从您正在使用的任意一个组件中调用它们。例如，要从 RadioButton 组件调用 UIComponent.setFocus() 方法，您要编写以下代码：

myRadioButton.setFocus();

如果您要使用 Macromedia 组件 V2 结构创建新组件，只需创建 UIComponent 的实例即可。即使在这种情况下，其他子类（如 Button）通常仍会隐式创建 UIComponent。如果您确实需要创建 UIComponent 的实例，请使用以下代码：

class MyComponent extends UIComponent;

UIComponent 类的方法摘要

方法 | 描述
UIComponent.getFocus()> | 返回对具有焦点的对象的引用。
UIComponent.setFocus()> | 将焦点设置到组件实例中。

继承 UIObject 类的所有方法。

UIComponent 类的属性摘要

属性 | 描述
UIComponent.enabled> | 指明组件是否可以接收焦点和输入。
UIComponent.tabIndex> | 一个数字，指明文档中组件的 Tab 键顺序。

继承 UIObject 类的所有属性。

UIComponent 类的事件摘要

事件 | 描述
UIComponent.focusIn> | 当对象收到焦点时进行广播。
UIComponent.focusOut> | 当对象失去焦点时进行广播。
UIComponent.keyDown> | 当按下按键时进行广播。
UIComponent.keyUp> | 当松开按键时进行广播。

继承 UIObject 类的所有事件。


UIComponent.focusIn

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(focusIn){
  ...
}
listenerObject = new Object();
listenerObject.focusIn = function(eventObject){
  ...
}
componentInstance.addEventListener("focusIn", listenerObject)

描述

事件；通知侦听器对象已接收到键盘焦点。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 focusIn），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下代码在用户在文本字段 txt 中键入时禁用按钮：

txtListener.handleEvent = function(eventObj) {
  form.button.enabled = false;
}
txt.addEventListener("focusIn", txtListener);

另请参见

UIEventDispatcher.addEventListener()


UIComponent.focusOut

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(focusOut){
  ...
}
listenerObject = new Object();
listenerObject.focusOut = function(eventObject){
  ...
}
componentInstance.addEventListener("focusOut", listenerObject)

描述

事件；通知侦听器对象已丢失键盘焦点。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 focusOut），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下代码在用户离开文本字段 txt 时启用按钮：

txtListener.handleEvent = function(eventObj) {
  if (eventObj.type == focusOut){
       form.button.enabled = true;
  }
}
txt.addEventListener("focusOut", txtListener);

另请参见

UIEventDispatcher.addEventListener()


UIComponent.enabled

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.enabled

描述

属性；指明组件是否可以接受焦点和鼠标输入。如果值为 true，则组件可以接收焦点和输入；如果值为 false，则不能接收。默认值为 true。

范例

以下范例将 CheckBox 组件的 enabled 属性设置为 false：

checkBoxInstance.enabled = false;


UIComponent.getFocus()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.getFocus();

参数

无。

返回

对当前具有焦点的对象的引用。

描述

方法；返回对具有键盘焦点的对象的引用。

范例

下列代码返回对具有焦点的对象的引用，并将它分配给 tmp 变量：

var tmp = checkbox.getFocus();


UIComponent.keyDown

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(keyDown){
  ...
}
listenerObject = new Object();
listenerObject.keyDown = function(eventObject){
  ...
}
componentInstance.addEventListener("keyDown", listenerObject)

描述

事件；当某个按键被按下时通知侦听器。这是一个级别很低的事件，除非必要，否则不应使用，因为它可能会影响系统性能。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 keyDown），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下代码会在某个按键被按下时使图标闪烁：

formListener.handleEvent = function(eventObj)
{
  form.icon.visible = !form.icon.visible;
}
form.addEventListener("keyDown", formListener);


UIComponent.keyUp

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(keyUp){
  ...
}
listenerObject = new Object();
listenerObject.keyUp = function(eventObject){
  ...
}
componentInstance.addEventListener("keyUp", listenerObject)

描述

事件；当某个按键被松开时通知侦听器。这是一个级别很低的事件，除非必要，否则不应使用，因为它可能会影响系统性能。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 keyUp），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下代码在某个按键被松开时使图标闪烁：

formListener.handleEvent = function(eventObj)
{
  form.icon.visible = !form.icon.visible;
}
form.addEventListener("keyUp", formListener);


UIComponent.setFocus()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.setFocus();

参数

无。

返回

无。

描述

方法；设置此组件实例的焦点。具有焦点的实例接收所有的键盘输入。

范例

下列代码将 checkbox 实例设置为具有焦点：

checkbox.setFocus();


UIComponent.tabIndex

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

instance.tabIndex

描述

属性；指明文档中组件的 Tab 键顺序的值。

范例

下列代码将 tmp 的值设置为 checkbox 实例的 tabIndex 属性：

var tmp = checkbox.tabIndex;


关于 UIEventDispatcher

动作脚本类名称 mx.events.EventDispatcher；mx.events.UIEventDispatcher

通过事件可以了解用户何时与组件进行了交互操作，也可以了解组件的外观或生命周期何时发生了重要的更改，例如创建或破坏组件或者组件的大小发生更改。

每个组件都会播放不同的事件，而且这些事件会列在每个组件项目中。在“动作脚本”代码中使用组件事件的方法有若干种。有关详细信息，请参阅关于组件事件。

使用 UIEventDispatcher.addEventListener() 将侦听器注册到组件实例。触发组件事件时，侦听器会被调用。


UIEventDispatcher.addEventListener()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004 and Flash MX Professional 2004。

用法

componentInstance.addEventListener(event, listener)

参数

event 表示事件名称的字符串。

listener 对侦听器对象或函数的引用。

返回

无。

描述

方法；在播放事件的组件实例上注册侦听器对象。事件触发时，将通知侦听器对象或函数。您可以从任何组件实例调用此方法。例如，下列代码将侦听器注册到组件实例 myButton：

myButton.addEventListener("click", myListener);

在调用 addEventListener() 将侦听器注册到组件实例之前，您必须先将该侦听器定义为对象或函数。如果侦听器是对象，则必须定义一个回调函数，当触发该事件时，将会调用该回调函数。通常，回调函数与注册侦听器所使用的事件同名。如果侦听器是函数，则触发事件时，将调用该函数。有关详细信息，请参阅使用组件事件侦听器。

您可以将多个侦听器注册到一个组件实例，但必须为每个侦听器单独调用 addEventListener()。而且，也可以将一个侦听器注册到多个组件实例，但必须为每个实例单独调用 addEventListener()。例如，下列代码定义一个侦听器对象，并将它分配给两个 Button 组件实例：

lo = new Object();
lo.click = function(evt){
  if (evt.target == button1){
    trace("button 1 clicked");
  } else if (evt.target == button2){
    trace("button 2 clicked");
  }
}
button1.addEventListener("click", lo);
button2.addEventListener("click", lo);

不保证执行顺序。无法要求在调用一个侦听器之前先调用另一个侦听器。

事件对象作为参数传递给侦听器。事件对象具有包含有关所发生事件的信息的属性。您可以在侦听器回调函数内使用事件对象来访问有关所发生的事件类型的信息，以及哪个实例广播该事件的信息。在上面的范例中，事件对象是 evt（您可以将任何标识符用作事件对象名称），它在 if 语句内使用，用于确定单击了哪个按钮实例。有关详细信息，请参阅事件对象。

范例

下面的范例定义了一个侦听器对象 myListener，并定义了回调函数 click。然后，它调用 addEventListener() 将 myListener 侦听器对象注册到组件实例 myButton。要测试该代码，请将实例名为 myButton 的按钮组件放在舞台上，并将下列代码置于第一帧中：

myListener = new Object();
myListener.click = function(evt){
  trace(evt.type + " triggered");
}
myButton.addEventListener("click", myListener);


事件对象

事件对象作为参数传递到侦听器。事件对象是一种动作脚本对象，这种对象具有的属性中包含有关所发生的事件的信息。您可以在侦听器回调函数内使用事件对象来访问所广播的事件的名称，或者访问广播该事件的组件的实例名称。例如，下列代码使用 evtObj 事件对象的 target 属性来访问 myButton 实例的 label 属性，并将该属性的值发送到“输出”面板：

listener = new Object();
listener.click = function(evtObj){
  trace("The " + evtObj.target.label + " button was clicked");
}
myButton.addEventListener("click", listener);

一些事件对象的属性在 W3C 规范中进行了定义，但在 Macromedia Component Architecture 第 2 版 (v2) 中没有实现。下表中列出每个 v2 事件对象所具有的属性。一些事件还定义有其他属性，如果是这样的话，这些属性将在该事件的条目中列出。

事件对象的属性

属性 | 描述
type | 指明事件名称的字符串。
target | 对广播事件的组件实例的引用。


关于 UIObject 类

继承 MovieClip > UIObject

动作脚本类名称 mx.core.UIObject

UIObject 是所有第 2 版组件的基类；它是不可视组件。UIObject 类环绕“动作脚本”MovieClip 对象，并包含允许 Macromedia v2 组件共享某些常用行为的函数和属性。环绕 MovieClip 类允许 Macromedia 在将来无需中断内容即可添加新事件和扩展功能。同时，对于不熟悉传统的 Flash“影片”和“帧”概念的用户，环绕 MovieClip 类还允许他们无需了解这些概念即可使用 API 来创建基于组件的应用程序。

UIObject 类实现了以下内容：

  • 样式
  • 事件
  • 按缩放比例调整大小

要使用 UIObject 的方法和属性，请直接从正在使用的任何组件中调用它们。例如，要从 RadioButton 组件调用 UIObject.setSize() 方法，您要编写以下代码：

myRadioButton.setSize(30, 30);

如果您使用 Macromedia Component v2 Architecture 创建新组件，则只需创建一个 UIObject 实例。即使在这种情况下，UIObject 也经常由其他子类（例如 Button）隐式创建。如果您确实需要创建一个 UIObject 实例，请使用下列代码：

class MyComponent extends UIObject;

UIObject 类的方法摘要

方法 | 描述
UIObject.createObject()> | 创建对象的子对象。
UIObject.createClassObject()> | 创建指定类的对象。
UIObject.destroyObject()> | 破坏组件实例。
UIObject.invalidate()> | 标记对象以便在到达下一个帧间隔时进行重绘。
UIObject.move()> | 将对象移动到要求的位置。
UIObject.redraw()> | 迫使对象有效以便能在当前帧中绘制。
UIObject.setSize()> | 将对象调整为所要求的大小。
UIObject.setSkin()> | 设置对象的外观。

UIObject 类的属性摘要

属性 | 描述
UIObject.bottom> | 对象底边位置（相对于其父对象的底边）。只读。
UIObject.height> | 对象的高度（以像素为单位）。只读。
UIObject.left> | 对象的左侧位置（以像素为单位）。只读。
UIObject.right> | 对象的右侧位置（相对于其父对象的右边）。只读。
UIObject.scaleX> | 一个数字，指明对象相对于其父对象在 x 方向上的缩放系数。
UIObject.scaleY> | 一个数字，指明对象相对于其父对象在 y 方向上的缩放系数。
UIObject.top> | 对象上边缘的位置（相对于其父对象）。只读。
UIObject.visible> | 一个布尔值，指明对象是可见的 (true) 还是不可见的 (false)。
UIObject.width> | 对象的宽度（以像素为单位）。只读。
UIObject.x> | 对象的左侧位置（以像素为单位）。只读。
UIObject.y> | 返回对象上边缘的位置（相对于其父对象）。只读。

UIObject 类的事件摘要

事件 | 描述
UIObject.draw> | 当对象将要绘制它的图形时进行广播。
UIObject.hide> | 在对象的状态从可见变为不可见时广播。
UIObject.load> | 创建子对象时广播。
UIObject.move> | 移动了对象时广播。
UIObject.resize> | 卸载子对象时广播。
UIObject.reveal> | 在对象的状态从不可见变为可见时广播。
UIObject.unload> | 卸载子对象时广播。


UIObject.bottom

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.bottom

描述

属性（只读）；一个数字，指明对象底边相对于其父对象底边的位置（以像素为单位）。要设置此属性，请调用 UIObject.move() 方法。

范例

此范例移动复选框，使其对齐到列表框底边的下面：

myCheckbox.move(myCheckbox.x, form.height - listbox.bottom);


UIObject.createObject()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.createObject(linkageName, instanceName, depth, initObject)

参数

linkageName 一个字符串，指明“库”面板中元件的链接标识符。

instanceName 一个字符串，指明新实例的实例名称。

depth 一个数字，指明新实例的深度。

initObject 一个对象，它包含了新实例的初始化属性。

返回

UIObject，是一个元件的实例。

描述

方法；创建对象的子对象。通常只由组件或高级开发人员使用。

范例

下面的范例在 form 对象上创建了一个 CheckBox 实例：

form.createObject("CheckBox", "sym1", 0);


UIObject.createClassObject()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.createClassObject(className, instanceName, depth, initObject)

参数

className 一个对象，指明新实例的类。

instanceName 一个字符串，指明新实例的实例名称。

depth 一个数字，指明新实例的深度。

initObject 一个对象，它包含了新实例的初始化属性。

返回

一个 UIObject，它是所指定类的一个实例。

描述

方法；创建对象的子对象。通常只由组件或高级开发人员使用。使用该方法，您可以在运行时创建组件。

您需要指定类包名称。请执行以下操作之一：

import mx.controls.Button;
createClassObject(Button,"button2",5,{label:"Test Button"});

或者

createClassObject(mx.controls.Button,"button2",5,{label:"Test Button"});

范例

下面的范例创建了一个 CheckBox 对象：

form.createClassObject(CheckBox, "cb", 0, {label:"Check this"});


UIObject.destroyObject()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.destroyObject(instanceName)

参数

instanceName 一个字符串，指明要破坏的对象的实例名称。

返回

无。

描述

方法；破坏组件实例。


UIObject.draw

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(draw){
  ...
}
listenerObject = new Object();
listenerObject.draw = function(eventObject){
  ...
}
componentInstance.addEventListener("draw", listenerObject)

描述

事件；通知侦听器对象将要绘制它的图形。这是一个级别很低的事件，除非必要，否则不应使用，因为它可能会影响系统性能。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 draw），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下代码在 form 对象被绘制时，重绘对象 form2：

formListener.draw = function(eventObj){
  form2.redraw(true);
}
form.addEventListener("draw", formListener);

另请参见

UIEventDispatcher.addEventListener()


UIObject.height

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.height

描述

属性（只读）；指明对象高度的数字（以像素为单位）。要更改 height 属性，请调用 UIObject.setSize() 属性。

范例

以下范例增加了复选框的高度：

myCheckbox.setSize(myCheckbox.width, myCheckbox.height + 10);


UIObject.hide

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(hide){
  ...
}
listenerObject = new Object();
listenerObject.hide = function(eventObject){
  ...
}
componentInstance.addEventListener("hide", listenerObject)

描述

事件；在将对象的 visible 属性从 true 改为 false 时广播。

范例

以下处理函数在它所附加到的对象变为不可见时，在“输出”面板中显示一条消息。

on(hide){
  trace("I’ve become invisible.");
}

另请参见

UIObject.reveal


UIObject.getStyle()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.getStyle(propertyName)

参数

propertyName 一个字符串，它指明样式属性的名称（例如，"fontWeight"、"borderStyle"，等等）。

返回

样式属性的值。这些值可以是任何数据类型：

描述

方法；从 styleDeclaration 或对象中获取样式属性。如果样式属性是继承性样式，那么该对象的父级就可能会是样式值的源。

有关各组件所支持的样式的列表，请参阅其各自所属的条目。

范例

如果 cb 实例的 fontWeight 样式属性是粗体，下面的代码会将 ib 实例的 fontWeight 样式属性设置为粗体：

if (cb.getStyle("fontWeight") == "bold")
{
   ib.setStyle("fontWeight", "bold");
};


UIObject.invalidate()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.invalidate()

参数

无。

返回

无。

描述

方法；标记对象以便在下一帧时间间隔时进行重绘。

范例

下面的范例将标记 ProgressBar 实例 pBar 以便进行重绘：

pBar.invalidate();


UIObject.left

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.left

描述

属性（只读）；一个数字，指明对象的左边相对于其父对象的位置（以像素为单位）。要设置此属性，请调用 UIObject.move() 方法。


UIObject.load

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(load){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.load = function(eventObject){
  ...
}
componentInstance.addEventListener("load", listenerObject)

描述

事件；通知侦听器正在创建该对象的子对象。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 load），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例将在加载 form 实例后创建一个 MySymbol 实例。

formListener.handleEvent = function(eventObj)
{
  form.createObject("MySymbol", "sym1", 0);
}
form.addEventListener("load", formListener);


UIObject.move

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(move){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.move = function(eventObject){
  ...
}
componentInstance.addEventListener("move", listenerObject)

描述

事件；通知侦听器对象已移动。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 move），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

下面的范例调用 move() 方法，以使 form2 相对于 form1 向下和向右移动 100 个像素：

formListener.handleEvent = function(){
  form2.move(form1.x + 100, form1.y + 100);
}
form1.addEventListener("move", formListener);


UIObject.move()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.move(x, y)

参数

x 一个数字，指明对象的左上角相对于其父对象的位置。

y 一个数字，指明对象的左上角相对于其父对象的位置。

返回

无。

描述

方法；将对象移动到要求的位置。您应该只将整数值传递给 UIObject.move()，否则，组件可能会模糊不清。

范例

此范例将复选框向右移动 10 个像素：

myCheckbox.move(myCheckbox.x + 10, myCheckbox.y);


UIObject.redraw()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.redraw(always)

参数

always 一个布尔值。如果为 true，则即使未调用 invalidate()，也绘制对象。如果为 false，则只有在调用了 invalidate() 时才绘制对象。

返回

无。

描述

方法；迫使对象有效以便在当前帧中绘制。

范例

以下范例创建一个复选框和一个按钮并绘制它们，原因是未期望其他脚本修改窗体：

form.createClassObject(mx.controls.CheckBox, "cb", 0);
form.createClassObject(mx.controls.Button, "b", 1);
form.redraw(true)


UIObject.resize

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(resize){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.resize = function(eventObject){
  ...
}
componentInstance.addEventListener("resize", listenerObject)

描述

事件；通知侦听器对象的大小已被调整。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 resize），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

在以下范例中，当移动 form 时，将调用 setSize() 方法，以使 sym1 的宽度变为原来的二分之一，高度变为原来的四分之一：

formListener.handleEvent = function(eventObj) {
  form.sym1.setSize(sym1.width / 2, sym1.height / 4);
}
form.addEventListener("resize", formListener);


UIObject.reveal

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

on(reveal) {
  ...
}
listenerObject = new Object();
listenerObject.reveal = function(eventObject){
  ...
}
componentInstance.addEventListener("reveal", listenerObject)

描述

事件；在将对象的 visible 属性从 false 改为 true 时广播。

范例

以下处理函数在它所附加到的对象变为可见时，在“输出”面板中显示一条消息。

on(reveal) {
  trace("I’ve become visible.");
}

另请参见

UIObject.hide


UIObject.right

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.right

描述

属性（只读）；一个数字，指明对象的右侧相对于其父对象右侧的位置（以像素为单位）。要设置此属性，请调用 UIObject.move() 方法。

范例

以下范例移动复选框，使其对齐到列表框右边的下面：

myCheckbox.move(form.width - listbox.right, myCheckbox.y);


UIObject.scaleX

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.scaleX

描述

属性；一个数字，指明对象相对于其父对象在 x 方向上的缩放系数。

范例

以下范例将复选框的宽度放大两倍并将 tmp 变量设置为水平缩放系数：

checkbox.scaleX = 200;
var tmp = checkbox.scaleX;


UIObject.scaleY

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.scaleY

描述

属性；一个数字，指明对象相对于其父对象在 y 方向上的缩放系数。

范例

以下范例将复选框的高度放大两倍并将 tmp 变量设置为垂直缩放系数：

checkbox.scaleY = 200;
var tmp = checkbox.scaleY;


UIObject.setSize()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.setSize(width, height)

参数

width 一个数字，指明对象的宽度（以像素为单位）。

height 一个数字，指明对象的高度（以像素为单位）。

返回

无。

描述

方法；将对象调整到要求的大小。您应该只将整数值传递给 UIObject.setSize()，否则，组件可能会模糊不清。该方法（以及 UIObject 的所有方法和属性）可以从任何组件实例中使用。

对 ComboBox 的实例调用此方法时，将会调整组合框的大小，而且所包含列表的 rowHeight 属性也会更改。

范例

此范例将 pBar 组件实例的大小调整为宽 100 个像素，高 100 个像素：

pBar.setSize(100, 100);


UIObject.setSkin()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.setSkin(id, linkageName)

参数

id 一个数字，指明变量。该值通常为在类定义中定义的一个常数。

linkageName 一个字符串，指明库中的一个资源。

返回

无。

描述

方法；设置组件实例中的外观。在开发组件时可以使用此方法。在运行时不能使用此方法来设置组件的外观。

范例

本范例设置 checkbox 实例中的一个外观：

checkbox.setSkin(CheckBox.skinIDCheckMark, "MyCustomCheckMark");


UIObject.setStyle()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.setStyle(propertyName, value)

参数

propertyName 一个字符串，它指明样式属性的名称（例如，"fontWeight"、"borderStyle"，等等）。

value 属性的值。

返回

一个 UIObject，它是所指定类的一个实例。

描述

方法；设置样式声明或对象的样式属性。如果样式属性是继承的样式，则会将新值通知给该对象的子对象。

有关各组件所支持的样式的列表，请参阅其各自所属的条目。

范例

下面的代码将复选框实例 cb 的样式属性 fontWeight 设置为粗体：

cb.setStyle("fontWeight", "bold");


UIObject.top

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.top

描述

属性（只读）；一个数字，指明对象的上边缘相对于其父对象的位置（以像素为单位）。要设置此属性，请调用 UIObject.move() 方法。


UIObject.unload

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(unload){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.unload = function(eventObject){
  ...
}
componentInstance.addEventListener("unload", listenerObject)

描述

事件；通知侦听器正在卸载该对象的子对象。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个组件实例。

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (componentInstance) 调度一个事件（在本例中为 unload），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下范例会在 unload 事件被触发时删除 sym1：

formListener.handleEvent = function(eventObj) {
  // eventObj.target 是生成 change 事件的组件，
  form.destroyObject(sym1);
}
form.addEventListener("unload", formListener);


UIObject.visible

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.visible

描述

属性；一个布尔值，指明对象是可见的 (true) 还是不可见的 (false)。

范例

下面的范例使 myLoader 加载器实例可见：

myLoader.visible = true;


UIObject.width

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.width

描述

属性（只读）；一个数字，指明对象的宽度（以像素为单位）。要更改宽度，请调用 UIObject.setSize() 方法。

范例

以下范例增加了复选框的宽度：

myCheckbox.setSize(myCheckbox.width + 10, myCheckbox.height);


UIObject.x

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.x

描述

属性（只读）；一个数字，它指明对象的左边缘（以像素为单位）。要设置此属性，请调用 UIObject.move() 方法。

范例

以下范例将复选框向右移 10 个像素：

myCheckbox.move(myCheckbox.x + 10, myCheckbox.y);


ComboBox.dropdown

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.dropdown

描述

属性（只读）；返回对组合框所包含的 List 组件的引用。组合框中的 List 子组件在需要显示前不实例化。但是，当访问 dropdown 属性时，将创建该列表。

另请参见

ComboBox.dropdownWidth


UIObject.y

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

componentInstance.y

描述

属性（只读）；一个数字，指明对象的上边缘（以像素为单位）。要设置此属性，请调用 UIObject.move() 方法。

范例

以下范例将复选框向下移动 10 个像素：

myCheckbox.move(myCheckbox.x, myCheckbox.y + 10);


关于 DataGrid 组件（仅限 Flash Professional）

DataGrid 组件使您能够创建强大的数据驱动的显示和应用程序。可以使用 DataGrid 组件来实例化使用 Macromedia Flash Remoting 的记录集（从 ColdFusion、Java 或 .Net 中的数据库查询中检索），然后将其显示在列中。您也可以使用数据集或数组中的数据来填充 DataGrid 组件。第 2 版 DataGrid 组件已进行改进，包括了水平滚动、更好的事件支持（包括对可编辑单元格的事件支持）、增强的排序功能以及性能优化。

您可以调整和自定义诸如网格中的字体、颜色以及列边框等特征。对于网格中的任何列，您都可以使用自定义影片剪辑作为“单元格渲染器”。（单元格渲染器显示单元格的内容。）可以使用滚动条来浏览网格中的数据；也可以禁用滚动条并使用 DataGrid 方法来创建页面视图样式的显示。

将 DataGrid 组件添加到应用程序时，可以使用“辅助功能”面板使其可由屏幕读取器访问。首先，您必须添加以下代码行，以便为 DataGrid 组件启用辅助功能：

mx.accessibility.DataGridAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


与 DataGrid 组件进行交互（仅限 Flash Professional）

可以使用鼠标和键盘与 DataGrid 组件进行交互。

如果 DataGrid.sortableColumns 为 true 并且 DataGridColumn.sortOnHeaderRelease 为 true，在某个列标题内单击将会使网格根据列的单元格值进行排序。

如果 DataGrid.resizableColumns 为 true，在列之间的区域中单击将使您能够调整列的大小。

在某个可编辑单元格内单击会将焦点发送给该单元格；单击不可编辑的单元格不会影响焦点。如果某个单元格的 DataGrid.editable 和 DataGridColumn.editable 属性均为 true，则该单元格是可编辑的。

当 DataGrid 实例从单击或 Tab 键切换中获得焦点时，您可以使用以下按键来控制它：

按键 | 描述
向下箭头 | 如果正在编辑单元格，插入点将移到单元格文本的末尾。如果单元格不可编辑，则向下箭头处理选区的方式与 List 组件相同。
向上箭头 | 如果正在编辑单元格，插入点将移到单元格文本的开头。如果单元格不可编辑，则向上箭头处理选区的方式与 List 组件相同。
右箭头 | 如果正在编辑单元格，插入点将向右移动一个字符。如果单元格不可编辑，右箭头不会执行任何操作。
左箭头 | 如果正在编辑单元格，插入点将向左移动一个字符。如果单元格不可编辑，左箭头不会执行任何操作。
Return/Enter/Shift+Enter 键 | 如果单元格可编辑，则会提交更改，并且插入点将移到同一列中单元格的下一行（向上或向下，视 shift 切换而定）。
Shift+Tab/Tab 键 | 将焦点移到前一项。当按下 Tab 键时，焦点将从网格中的最后一列回绕到下一行上的第一列。当按下 Shift+Tab 键时，回绕将反向进行。


使用 DataGrid 组件（仅限 Flash Professional）

可以使用 DataGrid 组件作为许多种数据驱动应用程序的基础。您不但可以轻松地显示数据库查询（或其他数据）的格式化表格式视图，而且可以使用单元格渲染器功能建立更为复杂和可编辑的用户界面片段。以下是 DataGrid 组件的实际用途：

  • Webmail 客户端
  • 搜索结果页
  • 电子表格应用程序，如借贷计算器和纳税申请表应用程序。

DataGrid 组件由两组 API 组成：DataGrid 类和 DataGridColumn 类。

了解 DataGrid 组件：数据模型和视图

从概念上来说，DataGrid 组件由数据模型和显示数据的视图组成。数据模型包含以下三个主要部分：

  • DataProvider

    用于填充数据网格的项目列表。同一帧中作为 DataGrid 组件的任何数组都会自动（从 DataProvider API 中）获得一些方法，这些方法允许您处理数据并将更改广播给多个视图。可以将实现 DataProvider 界面的任何对象分配给 DataGrid.dataProvider 属性（其中包括记录集、数据集等）。以下代码将创建名为 myDP 的数据提供程序：

    myDP = new Array({name:"Chris", price:"Priceless"}, {name:"Nigel", price:"Cheap"});
  • 项

    用于在列的单元格中存储信息单元的动作脚本对象。数据网格实际上是一个可以显示多列数据的列表。可以将列表看作一个数组；列表的每个索引空间就是一个项。对于 DataGrid 组件，每个项均由多个字段组成。在以下代码中，大括号 ({}) 之间的内容就是一个项：

    myDP = new Array({name:"Chris", price:"Priceless"}, {name:"Nigel", price:"Cheap"});
  • 字段

    指明各项内列名称的标识符。它与列列表中的 columnNames 属性相对应。在 List 组件中，字段通常为 label 和 data，但在 DataGrid 组件中，字段可以是任何标识符。在以下代码中，字段为 name 和 price：

    myDP = new Array({name:"Chris", price:"Priceless"}, {name:"Nigel", price:"Cheap"});

视图包含以下三个主要部分：

  • 行

    负责通过布置单元格来呈现网格项目的视图对象。每一行都水平布置在前一行的下方。

  • 列

    列由负责显示每一列的视图对象（DataGridColumn 类的实例，例如宽度、颜色、大小等）组成。

    可以使用三种方式将列添加到数据网格中：将 DataProvider 对象分配给 DataGrid.dataProvider （此操作会自动为第一项中的每个字段生成一个列）；设置 DataGrid.columnNames 以指定将显示哪些字段；或者使用 DataGridColumn 类的构造函数来创建列，并调用 DataGrid.addColumn() 将它们添加到网格中。

    要设置列的格式，请为整个数据网格设置样式属性，或者定义 DataGridColumn 对象，单独设置它们的样式格式，然后将它们添加到数据网格中。

  • 单元格

    负责呈现每一项的个别字段的视图对象。要与数据网格通信，这些组件必须实现 CellRenderer 接口（请参阅CellRenderer API）。对于基本数据网格，单元格是内置的动作脚本 TextField 对象。

DataGrid 参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 DataGrid 组件实例设置的创作参数：

multipleSelection 一个布尔值，它指明是 (true) 否 (false) 可以选择多项。默认值为 false。

rowHeight 每行的高度（以像素为单位）。更改字体大小不会更改行高度。默认值为 20。

editable 一个布尔值，它指明网格是 (true) 否 (false) 可编辑。默认值为 false。

您可以编写动作脚本，以便使用其属性、方法和事件来控制 DataGrid 组件的这些和其他选项。有关详细信息，请参阅DataGrid 类（仅限 Flash Professional）。

创建具有 DataGrid 组件的应用程序

要创建具有 DataGrid 组件的应用程序，您必须首先确定数据的来源。网格的数据可以来源于使用 Flash Remoting 从 Macromedia ColdFusion、Java 或 .Net 内的数据库查询中馈入的记录集，也可以来源于数据集或数组。要将数据拉到网格中，您需要将 DataGrid.dataProvider 属性设置为记录集、数据集或数组。也可以使用 DataGrid 和 DataGridColumn 类的方法以本地方式创建数据。与 DataGrid 组件在同一帧中的任何 Array 对象均会复制 DataProvider 类的方法、属性和事件。

要使用 Flash Remoting 将 DataGrid 组件添加到应用程序：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 文档”。
  2. 在“组件”面板中，双击 DataGrid 组件以将其添加到舞台上。
  3. 在属性检查器中，输入实例名称 myDataGrid。
  4. 在“动作”面板中的第 1 帧上，输入以下代码：
    myDataGrid.dataProvider = recordSetInstance;

    Flash Remoting 记录集 recordSetInstance 即已分配给 myDataGrid 的 dataProvider 属性。

  5. 选择“控制”>“测试影片”。

要使用本地数据提供程序将 DataGrid 组件添加到应用程序：

  1. 在 Flash 中，选择“文件”>“新建”，然后选择“Flash 文档”。
  2. 在“组件”面板中，双击 DataGrid 组件以将其添加到舞台上。
  3. 在属性检查器中，输入实例名称 myDataGrid。
  4. 在“动作”面板中的第 1 帧上，输入以下代码：
    myDP = new Array({name:"Chris", price:"Priceless"}, {name:"Nigel", price:"Cheap"});
myDataGrid.dataProvider = myDP;

    name 和 price 字段被用作列标题，它们的值将填充每一行中的单元格。

  5. 选择“控制”>“测试影片”。


自定义 DataGrid 组件（仅限 Flash Professional）

在创作过程中和运行时，您都可以在水平和垂直方向上将 DataGrid 组件变形。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 setSize() 方法（请参阅UIObject.setSize()）。如果没有水平滚动条，列宽度将按比例进行调整。如果调整了列大小（并因此调整了单元格大小），则单元格中的文本可能会被裁剪。

对 DataGrid 组件使用样式

您可以设置样式属性以更改 DataGrid 组件的外观。DataGrid 组件从 List 组件继承“光晕”样式。（有关更多信息，请参阅对 List 组件使用样式。）DataGrid 组件还支持以下“光晕”样式：

样式 | 描述
backgroundColor | 可以为整个网格或每一列设置背景色。
labelStyle | 可以为整个网格或每一列设置字体样式。
headerStyle | 可以将列标题的 CSS 样式声明应用到网格或列。
vGridLines | 一个布尔值，指明是 (true) 否 (false) 显示垂直网格线。
hGridLines | 一个布尔值，指明是 (true) 否 (false) 显示水平网格线。
vGridLineColor | 垂直网格线的颜色。
hGridLineColor | 水平网格线的颜色。
headerColor | 列标题的颜色。

如果上表指明能够为列设置样式，则可以使用以下语法来设置样式：

grid.getColumnAt(3).setStyle("backgroundColor", 0xff00aa)

对 DataGrid 组件使用外观

DataGrid 组件用于表示其可视状态的外观包括在构成数据网格所依据的子组件内（ScrollPane 和 RectBorder）。有关这些子组件的外观的信息，请参阅对 ScrollPane 组件使用外观和在 List 组件中使用外观。

但是，变换图像和选区覆盖图使用动作脚本绘图 API。要在创作时为数据网格的这些部分设置外观，请在其中一个主题 FLA 文件的库中修改 Flash UI Components 2/Themes/MMDefault/datagrid/ skins states 文件夹中外观元件中的动作脚本代码。有关详细信息，请参阅关于设置组件外观。


DataGrid 类（仅限 Flash Professional）

继承 mx.core.UIObject > mx.core.UIComponent > mx.core.View > mx.core.ScrollView > mx.controls.listclasses.ScrollSelectList > mx.controls.List

动作脚本类名称 mx.controls.DataGrid

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.controls.DataGrid.version);

注意：下面的代码返回 undefined：trace(myDataGridInstance.version);.

DataGrid 类的方法摘要

方法 | 描述
DataGrid.addColumn()> | 将列添加到数据网格。
DataGrid.addColumnAt()> | 将列添加到数据网格的特定位置。
DataGrid.addItem()> | 将项目添加到数据网格。
DataGrid.addItemAt()> | 将项目添加到数据网格的特定位置。
DataGrid.editField()> | 替换位于指定位置的单元格数据。
DataGrid.getColumnAt()> | 获取对位于指定位置的列的引用。
DataGrid.getColumnIndex()> | 获取列的索引。
DataGrid.removeAllColumns()> | 从数据网格中删除所有列。
DataGrid.removeColumnAt()> | 从数据网格的指定位置删除列。
DataGrid.replaceItemAt()> | 使用另一项目替换位于指定位置的项目。
DataGrid.spaceColumnsEqually()> | 平均间隔所有列。

继承 UIObject 和 UIComponent 中的所有属性。

DataGrid 类的属性摘要

属性 | 描述
DataGrid.columnCount> | 只读。显示列数。
DataGrid.columnNames> | 显示为列的每个项目内的字段名数组。
DataGrid.dataProvider> | 数据网格的数据模型。
DataGrid.editable> | 一个布尔值，指明数据网格是 (true) 否 (false) 可编辑。
DataGrid.focusedCell> | 定义具有焦点的单元格。
DataGrid.headerHeight> | 列标题的高度（以像素为单位）。
DataGrid.hScrollPolicy> | 指明是显示 ("on")、不显示 ("off") 还是在必要时显示 ("auto") 水平滚动条。
DataGrid.resizableColumns> | 一个布尔值，它指明列是 (true) 否 (false) 可以调整大小。
DataGrid.selectable> | 一个布尔值，它指明数据网格是 (true) 否 (false) 可选择。
DataGrid.showHeaders> | 一个布尔值，它指明列标题是 (true) 否 (false) 可见。.
DataGrid.sortableColumns> | 一个布尔值，它指明列是 (true) 否 (false) 可排序。

DataGrid 类的事件摘要

事件 | 描述
DataGrid.cellEdit> | 在单元格值更改时广播。
DataGrid.cellFocusIn> | 在单元格获得焦点时广播。
DataGrid.cellFocusOut> | 在单元格失去焦点时广播。
DataGrid.cellPress> | 在单元格被按下时广播。
DataGrid.change> | 在选中项目时广播。
DataGrid.columnStretch> | 在用户调整列大小时广播。
DataGrid.headerRelease> | 在用户按下和松开标题时广播。


DataGrid.addColumn()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.addColumn(dataGridColumn)
myDataGrid.addColumn(name)

参数

dataGridColumn DataGridColumn 类的一个实例。

name 一个字符串，它指明要插入的新 DataGridColumn 对象的名称。

返回

对已添加的 DataGridColumn 对象的引用。

说明

方法；将新列添加到数据网格的结尾。有关详细信息，请参阅DataGridColumn 类（仅限 Flash Professional）。

示例

以下代码将添加名为 Purple 的新 DataGridColumn 对象：

import mx.controls.gridclasses.DataGridColumn;
myGrid.addColumn(new DataGridColumn("Purple"));


DataGrid.addColumnAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

用法 1：

myDataGrid.addColumnAt(index, name)

用法 2：

myDataGrid.addColumnAt(index, dataGridColumn)

参数

index 索引位置，DataGridColumn 对象将添加在该处。第一个位置是 0。

name 一个字符串，指明 DataGridColumn 对象的名称。必须指定 index 参数或 dataGridColumn 参数中的任意一个。

dataGridColumn DataGridColumn 类的一个实例。

返回

对已添加的 DataGridColumn 对象的引用。

描述

方法；在指定位置添加新列。列将向右移动，并且其索引值会增加。有关详细信息，请参阅DataGridColumn 类（仅限 Flash Professional）。

范例

以下范例将名为 "Green" 的新 DataGridColumn 对象添加到第二列和第四列：

import mx.controls.gridclasses.DataGridColumn;
myGrid.addColumnAt(1, "Green");
myGrid.addColumnAt(3, new DataGridColumn("Purple"));


DataGrid.addItem()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.addItem(item)

参数

item 要添加到网格的对象的实例。

返回

指向已添加实例的引用。

说明

方法；将项目添加到网格的结尾（最后一个项目索引之后）。

注意：此方法与 List.addItem() 方法（其中传递的是对象而不是字符串）不同。

示例

以下范例将一个新对象添加到 myGrid 网格：

var anObject= {name:"Jim!!", age:30};
var addedObject = myGrid.addItem(anObject);


DataGrid.addItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.addItemAt(index, item)

参数

index 应遵循的节点添加顺序（在多个子节点之间）。第一个位置是 0。

item 显示节点的字符串。

返回

指向已添加对象实例的引用。

说明

方法；将项目添加到网格的指定位置。

示例

以下范例将对象实例插入到网格的索引位置 4：

var anObject= {name:"Jim!!", age:30};
var addedObject = myGrid.addItemAt(4, anObject);


DataGrid.cellEdit

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.cellEdit = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("cellEdit", listenerObject)

描述

事件；在单元格值发生更改时广播到所有注册的侦听器。

V2 组件使用调度程序/侦听器事件模型。DataGrid 组件在单元格的值更改时发送 cellEdit 事件，而该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称为处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.cellEdit 事件的事件对象具有四个附加属性：

columnIndex 一个数字，指明目标列的索引。

itemIndex 一个数字，指明目标行的索引。

oldValue 单元格先前的值。

type 字符串 "cellEdit"。

有关详细信息，请参阅事件对象。

范例

在以下范例中，定义了名为 myDataGridListener 的处理函数并将其作为第二个参数传递给 myDataGrid.addEventListener() 方法。cellEdit 处理函数在 eventObject 参数中捕获事件对象。在广播 cellEdit 事件时，trace 语句被发送到“输出”面板，如下所示：

myDataGridListener = new Object();
myDataGridListener.cellEdit = function(event){
  var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")";
  trace("The value of the cell at " + cell + " has changed");
}
myDataGrid.addEventListener("cellEdit", myDataGridListener);

注意：要使上述代码正常运行，网格必须可编辑。


DataGrid.cellFocusIn

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.cellFocusIn = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("cellFocusIn", listenerObject)

描述

事件；在特定单元格获得焦点时向所有注册的侦听器广播。在广播了之前编辑的单元格的 editCell 和 cellFocusOut 事件后，将广播此事件。

V2 组件使用调度程序/侦听器事件模型。在 DataGrid 组件发送 cellFocusIn 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.cellFocusIn 事件的事件对象具有三个附加属性：

columnIndex 一个数字，指明目标列的索引。

itemIndex 一个数字，指明目标行的索引。

type 字符串 "cellFocusIn"。

有关详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myListener 的处理函数并将其作为第二个参数传递给 grid.addEventListener() 方法。cellFocusIn 处理函数在 eventObject 参数中捕获事件对象。在广播 cellFocusIn 事件时，trace 语句被发送到“输出”面板，如下所示：

var myListener = new Object();
myListener.cellFocusIn = function(event) {
    var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")";
    trace("The cell at " + cell + " has gained focus");
};
grid.addEventListener("cellFocusIn", myListener);

注意：要使上述代码正常运行，网格必须可编辑。


DataGrid.cellFocusOut

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.cellFocusOut = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("cellFocusOut", listenerObject)

描述

事件；在用户移离具有焦点的单元格时向所有注册的侦听器广播。可以使用事件对象属性来隔离留下的单元格。在广播了 cellEdit 事件之后，并在下一个单元格广播任何后续的 cellFocusIn 事件之前，将广播此事件。

V2 组件使用调度程序/侦听器事件模型。在 DataGrid 组件发送 cellFocusOut 事件时，该事件由附加到您创建的侦听器对象的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.cellFocusOut 事件的事件对象具有三个附加属性：

columnIndex 一个数字，指明目标列的索引。第一个位置是 0。

itemIndex 一个数字，指明目标行的索引。第一个位置是 0。

type 字符串 "cellFocusOut"。

有关详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myListener 的处理函数并将其作为第二个参数传递给 grid.addEventListener() 方法。cellFocusOut 处理函数在 eventObject 参数中捕获事件对象。在广播 cellFocusOut 事件时，trace 语句被发送到“输出”面板，如下所示：

var myListener = new Object();
myListener.cellFocusOut = function(event) {
    var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")";
    trace("The cell at " + cell + " has lost focus");
};
grid.addEventListener("cellFocusOut", myListener);

注意：要使上述代码正常运行，网格必须可编辑。


DataGrid.cellPress

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.cellPress = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("cellPress", listenerObject)

描述

事件；当用户在单元格上按下鼠标按钮时向所有注册的侦听器广播。

V2 组件使用调度程序/侦听器事件模型。在 DataGrid 组件广播 cellPress 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.cellPress 事件的事件对象具有三个附加属性：

columnIndex 一个数字，指明目标列的索引。第一个位置是 0。

itemIndex 一个数字，指明目标行的索引。第一个位置是 0。

type 字符串 "cellPress"。

有关详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myListener 的处理函数并将其作为第二个参数传递给 grid.addEventListener() 方法。cellPress 处理函数在 eventObject 参数中捕获事件对象。在广播 cellPress 事件时，trace 语句被发送到“输出”面板，如下所示：

var myListener = new Object();
myListener.cellPress = function(event) {
    var cell = "(" + event.columnIndex + ", " + event.itemIndex + ")";
    trace("The cell at " + cell + " has been clicked");
};
grid.addEventListener("cellPress", myListener);


DataGrid.change

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.change = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("change", listenerObject)

描述

事件；在选中项目时向所有注册的侦听器广播。

V2 组件使用调度程序/侦听器事件模型。在 DataGrid 组件发送 change 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.change 事件的事件对象具有一个附加属性 type，该属性的值为 "change"。有关详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myListener 的处理函数并将其作为第二个参数传递给 grid.addEventListener() 方法。change 处理函数在 eventObject 参数中捕获事件对象。在广播 change 事件时，trace 语句被发送到“输出”面板，如下所示：

var myListener = new Object();
myListener.change = function(event) {
    trace("The selection has changed to " + event.target.selectedIndex);
};
grid.addEventListener("change", myListener);


DataGrid.columnCount

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.columnCount

描述

属性（只读）；显示的列数。

范例

以下范例获取 DataGrid 实例 grid 中显示的列数：

var c = grid.columnCount;


DataGrid.columnNames

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.columnNames

描述

属性；显示为列的每个项目内的字段名数组。

范例

以下范例指示 grid 实例仅将三个字段显示为列：

grid.columnNames = ["Name", "Description", "Price"];


DataGrid.columnStretch

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.columnStretch = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("columnStretch", listenerObject)

描述

事件；当用户在水平方向调整列的大小时向所有注册的侦听器广播。

V2 组件使用调度程序/侦听器事件模型。在 DataGrid 组件发送 columnStretch 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.columnStretch 事件的事件对象具有两个附加属性：

columnIndex 一个数字，指明目标列的索引。第一个位置是 0。

type 字符串 "columnStretch"。

有关详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myListener 的处理函数并将其作为第二个参数传递给 grid.addEventListener() 方法。columnStretch 处理函数在 eventObject 参数中捕获事件对象。在广播 columnStretch 事件时，trace 语句被发送到“输出”面板，如下所示：

var myListener = new Object();
myListener.columnStretch = function(event) {
    trace("column " + event.columnIndex + " was resized");
};
grid.addEventListener("columnStretch", myListener);


DataGrid.dataProvider

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.dataProvider

描述

属性；在 DataGrid 组件中查看的项目的数据模型。

数据网格将方法添加到 Array 类的原型，以使每个 Array 对象都符合 DataProvider 接口（请参阅 Classes/mx/controls/listclasses 文件夹中的 DataProvider.as）。任何在相同帧或屏幕中作为数据网格存在的数组都会自动具有成为数据网格的数据模型所需的所有方法（addItem()、getItemAt() 等等），并可用于向多个组件广播数据模型更改。

在 DataGrid 组件中，您需要指定字段以便在 DataGrid.columnNames 属性中显示。

如果在设置 DataGrid.dataProvider 属性之前未定义列集（通过设置 DataGrid.columnNames 属性或调用 DataGrid.addColumn() 方法），一旦到达数据提供程序的第一个项目，数据网格将为该项目中的每个字段生成列。

可以使用任何实现 DataProvider 接口的对象作为数据网格的数据提供程序（包括 Flash Remoting 记录集、数据集和数组）。

范例

以下范例将创建要用作数据提供程序的数组，并将其直接分配给 dataProvider 属性：

grid.dataProvider = [{name:"Chris", price:"Priceless"}, {name:"Nigel", Price:"cheap"}];

以下范例将创建带有 DataProvider 类的新 Array 对象。它使用 for 循环将 20 个项目添加到网格。

myDP = new Array();
for (var i=0; i<20; i++)
  myDP.addItem({name:"Nivesh", price:"Priceless"});
list.dataProvider = myDP


DataGrid.editable

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.editable

描述

属性；确定用户是 (true) 否 (false) 能够编辑数据网格。要使单独的列可编辑并且任何单元格都能获得焦点，此属性必须为 true。默认值为 false。

范例

以下范例将滚动位置设置为显示区的顶部：

myDataGrid.editable = true;


DataGrid.editField()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.editField(index, colName, data)

参数

index 目标单元格的索引。该数值是从零开始的。

colName 一个字符串，指明包含目标单元格的列（字段）的名称。

data 要存储在目标单元格中的值。此参数可以是任何数据类型。

返回

单元格中的数据。

说明

方法；替换位于指定位置的单元格数据。

示例

以下示例将一个值放在网格中：

var prevValue = myGrid.editField(5, "Name", "Neo");


DataGrid.focusedCell

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.focusedCell

描述

属性；（仅适用于可编辑模式）定义具有焦点的单元格的对象实例。该对象必须具有字段 columnIndex 和 itemIndex，这两个字段均为整数，指明单元格的列和项目的索引。原点为 (0,0)。默认值未定义。

范例

以下范例将具有焦点的单元格设置为第三列第四行：

grid.focusedCell = {columnIndex:2, itemIndex:3};


DataGrid.getColumnAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index)

参数

index 要返回的 DataGridColumn 对象的索引。该数值是从零开始的。

返回

一个 DataGridColumn 对象。

说明

方法；获取对位于指定索引的 DataGridColumn 对象的引用。

示例

以下范例获取位于索引 4 处的 DataGridColumn 对象：

var aColumn = myGrid.getColumnAt(4);


DataGrid.getColumnIndex()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnIndex(index)

参数

index 要返回的 DataGridColumn 对象的索引。

返回

一个 DataGridColumn 对象。

说明

方法；获取对位于指定索引的 DataGridColumn 对象的引用。


DataGrid.headerHeight

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.headerHeight

描述

属性；数据网格的标题栏的高度。默认值为 20。

范例

以下范例将滚动位置设置为显示区的顶部：

myDataGrid.headerHeight = 30;


DataGrid.headerRelease

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

listenerObject = new Object();
listenerObject.headerRelease = function(eventObject){
  // 此处插入您的代码
}
myDataGridInstance.addEventListener("headerRelease", listenerObject)

描述

事件；在松开列标题时向所有注册的侦听器广播。可以将此事件与 DataGridColumn.sortOnHeaderRelease 属性一起使用，以便防止自动排序并允许您按所需方式进行排序。

V2 组件使用调度程序/侦听器事件模型。在 DataGrid 组件发送 headerRelease 事件时，该事件由附加到您创建的侦听器对象 (listenerObject) 的函数（也称作处理函数）处理。您调用 addEventListener() 方法并将处理函数的名称作为参数传递给它。

该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到处理函数。每个事件对象都有一组属性，这些属性包含有关该事件的信息。您可以使用这些属性来编写处理该事件的代码。DataGrid.headerRelease 事件的事件对象具有两个附加属性：

columnIndex 一个数字，指明目标列的索引。

type 字符串 "headerRelease"。

有关详细信息，请参阅事件对象。

范例

在下面的范例中，定义了名为 myListener 的处理函数并将其作为第二个参数传递给 grid.addEventListener() 方法。headerRelease 处理函数在 eventObject 参数中捕获事件对象。在广播 headerRelease 事件时，trace 语句被发送到“输出”面板，如下所示：

var myListener = new Object();
myListener.headerRelease = function(event) {
    trace("column " + event.columnIndex + " header was pressed");
};
grid.addEventListener("headerRelease", myListener);


DataGrid.hScrollPolicy

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.hScrollPolicy

描述

属性；指定数据网格是否具有水平滚动条。此属性可以具有以下三个值之一："on"、"off" 和"auto"。默认值为 "off"。

如果将 hScrollPolicy 设置为 "off"，则会按比例缩放列以适应限定的宽度。

范例

以下范例将水平滚动策略设置为自动：

myDataGrid.hScrollPolicy = "auto";


DataGrid.removeAllColumns()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.removeAllColumns()

参数

无。

返回

无。

说明

方法；从数据网格中删除所有 DataGridColumn 对象。调用此方法不会影响数据提供程序。

示例

以下范例将从 myDataGrid 中删除所有 DataGridColumn 对象：

myDataGrid.removeAllColumns();


DataGrid.removeColumnAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.removeColumnAt(index)

参数

index 要删除的列的索引。

返回

指向已删除 DataGridColumn 对象的引用。

说明

方法；删除位于指定索引处的 DataGridColumn 对象。

示例

以下范例将删除 myDataGrid 中位于索引 2 处的 DataGridColumn 对象：

myDataGrid.removeColumnAt(2);


DataGrid.replaceItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.replaceItemAt(index, item)

参数

index 要替换的项目的索引。

item 充当要用作替换项的项目值的对象。

返回

先前的值。

说明

方法；替换位于指定索引处的项目。

示例

以下范例将位于索引 4 处的项目替换为 aNewValue 中定义的项目：

var aNewValue = {name:"Jim", value:"tired"};
var prevValue = myGrid.replaceItemAt(4, aNewValue);


DataGrid.resizableColumns

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.resizableColumns

描述

属性；一个布尔值，它确定查看器是 (true) 否 (false) 能够伸展网格的列。此属性必须为 true 才能调整单独列的大小。默认值为 true。

范例

以下范例防止用户调整列的大小：

myDataGrid.resizableColumns = false;


DataGrid.selectable

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.selectable

描述

属性；一个布尔值，它指明用户是 (true) 否 (false) 能够选择数据网格。默认值为 true。

范例

以下范例防止网格被选中：

myDataGrid.selectable = false;


DataGrid.showHeaders

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.showHeaders

描述

属性；一个布尔值，它指明数据网格是 (true) 否 (false) 显示列标题。列标题将被加上阴影，以区别于网格中的其他行。如果 DataGrid.sortableColumns 设置为 true，用户将能够单击列标题对列的内容进行排序。默认值为 true。

范例

以下范例将隐藏列标题：

myDataGrid.showHeaders = false;

另请参见

DataGrid.sortableColumns


DataGrid.sortableColumns

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.sortableColumns

描述

属性；一个布尔值，它确定在用户单击列标题时是 (true) 否 (false) 能够对数据网格的列进行排序。此属性必须为 true 才能对单独的列进行排序。要广播 headerRelease 事件，此属性必须设置为 true。默认值为 true。

范例

以下范例将禁用排序：

myDataGrid.sortableColumns = false;

另请参见

DataGrid.headerRelease


DataGrid.spaceColumnsEqually()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.spaceColumnsEqually()

参数

无。

返回

无。

说明

方法；平均地重新间隔列。

示例

以下范例将在按下并松开任何列标题时重新间隔 myGrid 的列：

myGrid.showHeaders = true
myGrid.dataProvider = [{guitar:"Flying V", name:"maggot"}, {guitar:"SG", name:"dreschie"}, {guitar:"jagstang", name:"vitapup"}];
gridLO = new Object();
gridLO.headerRelease = function(){
  myGrid.spaceColumnsEqually();
}
myGrid.addEventListener("headerRelease", gridLO);


DataGridColumn 类（仅限 Flash Professional）

动作脚本类名称 mx.controls.gridclassesDataGridColumn

可以创建并配置 DataGridColumn 对象以用作数据网格的列。DataGrid 类的许多方法都专用于管理 DataGridColumn 对象。DataGridColumn 对象存储在数据网格中一个从零开始的数组内；0 是最左边的列。在添加或创建了列后，您可以调用 DataGrid.getColumnAt(index) 来访问它们。

可以通过三种方法在网格中添加或创建列。如果要配置列，请最好在将数据添加到数据网格之前使用第二种或第三种方法，以便不必创建列两次。

  • 如果将 DataProvider 或具有多个字段的项目添加到没有已配置 DataGridColumn 对象的网格，则会按 for..in 循环的反向顺序为每个字段自动生成列。
  • DataGrid.columnNames 接受所需项目字段的字段名，并按顺序为列出的每个字段生成 DataGridColumn 对象。此方法使您能够利用最少量的配置快速选择列并对列排序。此方法将删除所有以前的列信息。
  • 添加列的最灵活的方法是将它们预先建立为 DataGridColumn 对象，然后使用 DataGrid.addColumn() 将这些对象添加到数据网格。由于该方法使您能够在列无论何时到达网格之前使用适当的大小设置和格式设置添加列（这样减少了处理器需求），因此该方法特别有用。有关详细信息，请参阅DataGridColumn 类的构造函数。

DataGridColumn 类的属性摘要

属性 | 描述
DataGridColumn.cellRenderer> | 要用于在此列中显示单元格的元件的链接标识符。
DataGridColumn.columnName> | 只读。与列关联的字段的名称。
DataGridColumn.editable> | 一个布尔值，它指明列是 (true) 否 (false) 可编辑。
DataGridColumn.headerRenderer> | 要用于显示此列的标题的类的名称。
DataGridColumn.headerText> | 此列的标题文本。
DataGridColumn.labelFunction> | 确定显示项目的哪个字段的函数。
DataGridColumn.resizable> | 一个布尔值，它指明列是 (true) 否 (false) 能够调整大小。
DataGridColumn.sortable> | 一个布尔值，它指明列是 (true) 否 (false) 可排序。
DataGridColumn.sortOnHeaderRelease> | 一个布尔值，它指明在用户按下列标题时是 (true) 否 (false) 对列进行排序。
DataGridColumn.width> | 列的宽度（以像素为单位）。

DataGridColumn 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

new DataGridColumn(name)

参数

name 一个字符串，指明 DataGridColumn 对象的名称。此参数是要显示的每个项目的字段。

返回

无。

描述

构造函数；创建一个 DataGridColumn 对象。使用此构造函数来创建要添加到 DataGrid 组件的列。在创建 DataGridColumn 对象后，您可以通过调用 DataGrid.addColumn() 将它们添加到数据网格。

范例

以下范例将创建名为 Location 的 DataGridColumn 对象：

import mx.controls.gridclasses.DataGridColumn;
var column = new DataGridColumn("Location");


DataGridColumn.cellRenderer

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).cellRenderer

描述

属性；要用于在此列中显示单元格的元件的链接标识符。用于此属性的任何类必须实现 CellRenderer 接口（请参阅CellRenderer API）。默认值未定义。

范例

下面的范例使用链接标识符来设置一个新的单元格渲染器：

myGrid.getColumnAt(3).cellRenderer = "MyCellRenderer";


DataGridColumn.columnName

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).columnName

描述

属性（只读）；与此列关联的字段的名称。默认值是在 DataGridColumn 构造函数中调用的名称。

范例

以下范例将位于第三个索引位置的列的列名称分配给变量 name：

var name = myGrid.getColumnAt(3).columnName;

另请参见

DataGridColumn 类的构造函数


DataGridColumn.editable

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).editable

描述

属性；确定用户是 (true) 否 (false) 能编辑列。要使单独的列可编辑，DataGrid.editable 属性必须为 true（即使 DataGridColumn.editable 设置为 true）。默认值为 true。

范例

以下范例将使网格中的第一个列不可编辑：

myDataGrid.getColumnAt(0).editable = false;

另请参见

DataGrid.editable


DataGridColumn.headerRenderer

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).headerRenderer

描述

属性；一个字符串，它指明要用于显示此列的标题的类名称。用于此属性的任何类必须实现 CellRenderer 接口（请参阅CellRenderer API）。默认值未定义。

范例

以下范例使用链接标识符来设置一个新的标题渲染器：

myGrid.getColumnAt(3).headerRenderer = "MyHeaderRenderer";


DataGridColumn.headerText

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).headerText

描述

属性；列标题中的文本。默认值为列名称。

范例

以下范例将列标题文本设置为“The Price”：

var myColumn = new DataGridColumn("price");
myColumn.headerText = "The Price";


DataGridColumn.labelFunction

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).labelFunction

描述

属性；指定用于确定显示每个项目的哪个字段（或字段组合）的函数。此函数会接收一个参数 item（该参数指示所呈现的项目），并且必须返回一个表示要显示的文本的字符串。此属性可用于创建在项目中没有相应字段的虚拟列。

范例

以下范例将创建一个虚拟列：

var myCol = myGrid.addColumn("Subtotal");
myCol.labelFunction = function(item) {
  return "$" + (item.price + (item.price * salesTax));
};


DataGridColumn.resizable

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).resizable

描述

属性；一个布尔值，它指明用户是 (true) 否 (false) 能调整列的大小。要使此属性生效，DataGrid.resizableColumns 属性必须设置为 true。默认值为 true。

范例

以下范例防止调整位于索引 1 处的列的大小：

myGrid.getColumnAt(1).resizable = false;


DataGridColumn.sortable

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).sortable

描述

属性；一个布尔值，它指明用户是 (true) 否 (false) 能对列进行排序。要使此属性生效，DataGrid.sortableColumns 属性必须设置为 true。默认值为 true。

范例

以下范例防止对位于索引 1 处的列进行排序：

myGrid.getColumnAt(1).sortable = false;


DataGridColumn.sortOnHeaderRelease

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).sortOnHeaderRelease

描述

属性；一个布尔值，它指明在用户单击标题时是 (true) 否 (false) 自动对列进行排序。只有在 DataGridColumn.sortable 设置为 true 时，此属性才能设置为 true。如果 DataGridColumn.sortOnHeaderRelease 设置为 false，您可以捕获 headerRelease 事件并执行自己的排序。

默认值为 true。

范例

以下范例使您能够捕获 headerRelease 事件以执行自己的排序：

myGrid.getColumnAt(7).sortOnHeaderRelease = false;


DataGridColumn.width

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myDataGrid.getColumnAt(index).width

描述

属性；指明列宽度的数值（以像素为单位）。默认值为 50。

范例

以下范例使列的大小是默认值的一半：

myGrid.getColumnAt(4).width = 25;


关于 Web 服务类

在 mx.services 包中找到的类由用于访问使用简单对象访问协议 (SOAP) 的 Web 服务的类组成。此 WebService API 不同于 WebServiceConnector 组件 API。前者是只能在动作脚本代码中使用的一组类，在各种 Macromedia 产品中很常见。后者是 Flash MX 2004 所独有的 API，提供用于 WebServiceConnector 组件的直观创作工具的动作脚本接口。


使 Web 服务类在运行时可用（仅限 Flash Professional）

为了能够在运行时使用 Web 服务类，WebServiceClasses 组件必须位于 FLA 文件的库中。此组件包含运行时类，这些类可让您使用 Web 服务。有关将这些类添加到 FLA 的详细信息，请参阅在运行时处理数据绑定和 Web 服务（仅限于 Flash Professional）。

注意：当您将 WebServiceConnector 组件添加到 FLA 时，会自动使这些类对于 Flash 文档可用。


mx.services 包中的类（仅限 Flash Professional）

下表列出了 mx.services 包中的类。这些类紧密地集成在一起，因此当您初次了解这个包时，可能要按照下表中列出类的顺序来阅读信息。

类 | 描述
WebService 类（仅限 Flash Professional） | 通过使用定义了 Web 服务的 WSDL 文件，为调用 Web 服务的方法和处理 Web 服务的回调构建新的 WebService 对象。
PendingCall 类（仅限 Flash Professional） | 从 Web 服务的方法调用返回的对象，您实现该对象以处理调用的结果和错误。
Log 类（仅限 Flash Professional） | 用于记录与 WebService 对象相关的活动的可选对象。
SOAPCall 类（仅限 Flash Professional） | 高级的类，它包含有关 Web 服务操作的信息并提供对某些行为的控制。


Log 类（仅限 Flash Professional）

Log 类是 mx.services 包的一部分，并且计划与 WebService 类一起使用（请参阅WebService 类（仅限 Flash Professional））。有关 mx.data.services 包中的类的概述，请参阅Web 服务类（仅限 Flash Professional）。

可以创建新的 Log 对象，以记录与 WebService 对象相关的活动。要在向 Log 对象发送消息时执行代码，请使用 Log.onLog() 回调函数。并不存在日志文件；记录机制是您已在 onLog() 回调中使用的任何举措，例如向 trace 命令发送日志消息。

此对象的构造函数创建一个 Log 对象，该对象可作为可选的参量传递给 WebService 构造函数（请参阅WebService 类（仅限 Flash Professional））。

动作脚本类名称 mx.services.Log

Log 对象的回调摘要

回调 | 描述
Log.onLog()> | 向日志对象发送一条日志消息。

Log 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myWebSrvcLog = new Log([logLevel] [, logName]);

参数

logLevel 用于指示您想在日志中记录的信息类型的日志级别。在 Web 服务代码中，日志消息被细分为类别或级别。Log 对象构造函数的 logLevel 参数与这些类别相关。可使用三个 logLevel：

  • Log.BRIEF：日志记录主要的生命周期事件和错误通知。
  • Log.VERBOSE：日志记录所有的生命周期事件和错误通知。
  • Log.DEBUG：日志记录度量标准和优良纹理型的事件和错误。

默认的 logLevel 是 log.BRIEF。

logName 随附于每条日志消息的可选名称。如果您使用了多个日志对象，则可以使用 logName 来确定哪个日志记录了给定的消息。

返回

无。

描述

构造函数；创建一个 Log 对象。使用此构造函数创建日志。创建了 Log 对象后，可以将此对象传递给 Web 服务以获取消息。

范例

可以调用 new Log 构造函数，它返回一个传递给 Web 服务的日志对象：

// 创建新的日志对象
myWebSrvcLog = new Log();
myWebSrvcLog.onLog = function(txt)
{
  myTrace(txt)
}

然后，将此 Log 对象作为参数传递给 WebService 构造函数：

myWebSrvc = new WebService("http://www.myco.com/info.wsdl", myWebSrvcLog);

在 Web 服务代码执行以及向此日志对象发送消息时，会调用 Log 对象的 onLog() 函数。如果您想实时看到日志消息，这是唯一可以放置显示这些消息的代码的地方。

以下是日志消息的范例：

7/30 15:22:43 [INFO] SOAP:Decoding PendingCall response
7/30 15:22:43 [DEBUG] SOAP:Decoding SOAP response envelope
7/30 15:22:43 [DEBUG] SOAP:Decoding SOAP response body
7/30 15:22:44 [INFO] SOAP:Decoded SOAP response into result [16 millis]
7/30 15:22:46 [INFO] SOAP:Received SOAP response from network [6469 millis]
7/30 15:22:46 [INFO] SOAP:Parsed SOAP response XML [15 millis]
7/30 15:22:46 [INFO] SOAP:Decoding PendingCall response
7/30 15:22:46 [DEBUG] SOAP:Decoding SOAP response envelope
7/30 15:22:46 [DEBUG] SOAP:Decoding SOAP response body
7/30 15:22:46 [INFO] SOAP:Decoded SOAP response into result [16 millis]


Log.onLog()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myWebSrvcLog.onLog = function(message)

参数

message 传递给处理函数的日志消息。有关日志消息的详细信息，请参阅Log 类（仅限 Flash Professional）。

返回

无。

描述

日志回调函数；向日志文件发送日志消息时，Flash Player 调用此函数。对于记录或显示日志消息的代码（如 trace 命令），此处理函数是一个放置这种代码的好地方。Log 构造函数在Log 类（仅限 Flash Professional） 中介绍。

范例

以下范例创建一个新的日志对象，将其传递给新的 WebService 对象，并处理记录消息。

// 创建新的日志对象
myWebSrvcLog = new Log();

// 将此日志对象传递给 Web 服务
myWebService = new WebService(wsdlURI, myWebSrvcLog);

// 处理传入的日志消息
myWebSrvcLog.onLog = function(message)
{
  mytrace("Log Event:\r myWebSrvcLog.message="+message+);

}


PendingCall 类（仅限 Flash Professional）

PendingCall 类是 mx.services 包的一部分，并且计划与 WebService 类一起使用（请参阅WebService 类（仅限 Flash Professional））。有关 mx.data.services 包中的类的概述，请参阅Web 服务类（仅限 Flash Professional）。

对 WebService 对象调用方法时，WebService 对象会返回一个 PendingCall 对象。PendingCall 对象不是开发人员构建的。使用 PendingCall 对象的 onResult 和 onFault 回调来处理 Web 服务方法的异步响应。如果 Web 服务方法返回错误，则 Flash Player 会调用 PendingCall.onFault 回调，并传递 SOAPFault 对象，该对象代表由服务器/Web 服务返回的 XML SOAP 错误。如果成功调用 Web 服务，则 Flash Player 会调用 PendingCall.onResult 回调并传递结果对象。结果对象是来自在动作脚本中解码或反序列化的 Web 服务的 XML 响应。有关 WebService 对象的详细信息，请参阅WebService 类（仅限 Flash Professional）。

在输出参数多于一个时，PendingCall 对象还可让您访问这些参数。许多 Web 服务只返回一个结果，但有些 Web 服务会返回多个结果。在此 API 中，“返回值”只是指第一个（或唯一一个）结果。PendingCall.getOuptutXXX 函数可让您访问所有结果，而不只是访问第一个。因此，当您收到在 onResult() 回调的参量中的“返回值”时，如果有其他您想访问的输出参数，则可使用 getOutputValues()（返回一个数组）和 getOutputValue(index)（返回单个参数）来获取已解码的动作脚本值。

也可以直接访问 SOAPParameter 对象。SOAPParameter 对象是具有两个属性的动作脚本对象：value 和 element，前者包含输出参数的动作脚本值，而后者包含输出参数的 XML 值。以下函数返回一个 SOAPParameter 对象或 SOAPParameter 对象的一个数组，它们包含值 (param.value) 和 XML 元素 (param.element)：getOutputParameters()、getOutputParameterByName(name) 和 getOutputParameter(index)。

动作脚本类名称 mx.services.PendingCall

PendingCall 对象的函数摘要

函数 | 描述
PendingCall.getOutputParameter()> | 根据传入的 index 获取 SOAPParameter 对象。
PendingCall.getOutputParameterByName()> | 根据传入的 localName 获取 SOAPParameter 对象。
PendingCall.getOutputParameters()> | 获取 SOAPParameter 对象的一个数组。
PendingCall.getOutputValue()> | 根据传入的索引获取输出值。
PendingCall.getOutputValues()> | 获取所有输出值的一个数组。

PendingCall 对象的属性摘要

属性 | 描述
PendingCall.myCall> | 用于 PendingCall 操作的 SOAPCall 操作描述符。
PendingCall.request> | XML 原始格式的 SOAP 请求。
PendingCall.response> | XML 原始格式的 SOAP 响应。

PendingCall 对象的回调摘要

回调 | 描述
PendingCall.onFault()> | 在方法失败时由 Web 服务调用。
PendingCall.onResult()> | 在方法已获成功且返回结果时调用。

PendingCall 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

描述

PendingCall 对象不是开发人员构建的。相反，对 WebService 对象调用函数时，WebService 对象会返回一个 PendingCall 对象。


PendingCall.getOutputParameter()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCall.getOutputParameter(var index)

参数

index 参数的索引。

返回

具有以下元素的 SOAPParameter 对象：

元素 | 描述
值 | 该参数的动作脚本值。
元素 | 该参数在 SOAP 封套中的原始 XML。

描述

函数；获取 SOAPParameter 对象的另一个输出参数，包含值和 XML 元素。SOAP RPC 调用可以返回多个输出参数。您收到的第一个（或唯一一个）返回值总是在 onResult() 回调的结果参量中，但若要访问其他返回值，您必须使用类似本函数的函数或 getOutputValue()。getOutputParameter() 函数返回第 n 个 作为 SOAPParameter 对象的参数。

另请参阅 PendingCall.getOutputValue()、PendingCall.getOutputValues()、PendingCall.getOutputParameterByName() 和 PendingCall.getOutputParameters()。

范例

在给定以下 SOAP 描述符文件的情况下，getOutputParameter(1) 会返回一个 value="Hi there!" 和 element=the <outParam2> XMLNode 的 SOAPParameter 对象。

...
<SOAP:Body>
  <rpcResponse>
    <outParam1 xsi:type="xsd:int">54</outParam1>
    <outParam2 xsi:type="xsd:string">Hi there!</outParam2>
    <outParam3 xsi:type="xsd:boolean">true</outParam3>
  </rpcResponse>
</SOAP:Body>
...


PendingCall.getOutputParameterByName()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCall.getOutputParameterByName(var localName)

参数

localName 参数的本地名称，也就是去掉了所有命名空间信息的 XML 元素的名称。例如，以下两个元素的本地名称都是 bob：

<bob abc="123">
<xsd:bob def="ghi">

返回

具有以下元素的 SOAPParameter 对象：

元素 | 描述
值 | 该参数的动作脚本值。
元素 | 该参数在 SOAP 封套中的原始 XML。

描述

函数；获取作为 SOAPParameter 对象的任何输出参数，包含值和 XML 元素。SOAP RPC 调用可以返回多个输出参数。您收到的第一个（或唯一一个）返回值总是在 onResult() 回调的结果参量中，但若要访问其他返回值，您必须使用类似本函数的 API。getOutputParameterByName() 调用返回带有 localName 名称的输出参数。

另请参阅 PendingCall.getOutputValue()、PendingCall.getOutputValues()、PendingCall.getOutputParameter() 和 PendingCall.getOutputParameters()。

范例

在给定以下 SOAP 描述符文件的情况下，getOutputParameterByName("outParam2") 会返回一个 value="Hi there!" 和 element=the <outParam2> XMLNode 的 SOAPParameter 对象。

...
<SOAP:Body>
  <rpcResponse>
    <outParam1 xsi:type="xsd:int">54</outParam1>
    <outParam2 xsi:type="xsd:string">Hi there!</outParam2>
    <outParam3 xsi:type="xsd:boolean">true</outParam3>
  </rpcResponse>
</SOAP:Body>
...


PendingCall.getOutputParameters()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCall.getOutputParameterByName()

参数

无。

返回

具有以下元素的 SOAPParameter 对象的数组：

元素 | 描述
值 | 该参数的动作脚本值。
元素 | 该参数在 SOAP 封套中的原始 XML。

描述

函数；获取 SOAPParameter 对象的其他输出参数，包含值和 XML 元素。SOAP RPC 调用可以返回多个输出参数。您收到的第一个（或唯一一个）返回值总是在 onResult() 回调的结果参量中，但若要访问其他返回值，您必须使用类似本函数的 API 或 getOutputValues()。

另请参阅 PendingCall.getOutputValue()、PendingCall.getOutputValues()、PendingCall.getOutputParameterByName() 和 PendingCall.getOutputParameter()。


ComboBox.dropdownWidth

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

myComboBox.change

描述

属性；下拉列表的宽度限制（以像素为单位）。默认值是 ComboBox 组件（TextInput 实例加上 SimpleButton 实例）的宽度。

范例

下面的代码将 dropdownWidth 设置为 150 个像素：

myComboBox.dropdownWidth = 150;

另请参见

ComboBox.dropdown


PendingCall.getOutputValue()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCall.getOutputValue(var index)

参数

index 输出参数的索引。第一个参数的索引是 0。

返回

第 n 个 输出参数。

描述

函数；获取某个输出参数的已解码动作脚本值。SOAP RPC 调用可以返回多个输出参数。您收到的第一个（或唯一一个）返回值总是在 onResult() 回调的结果参量中，但若要访问其他返回值，您必须使用类似本函数的 API 或 getOutputParameter()。getOutputValue() 调用会返回第 n 个 输出参数。

另请参阅 PendingCall.getOutputParameter()、PendingCall.getOutputValues()、PendingCall.getOutputParameterByName() 和 PendingCall.getOutputParameters()。

范例

在给定以下 SOAP 描述符文件的情况下，getOutputValue(2) 会返回 true。

...
<SOAP:Body>
  <rpcResponse>
    <outParam1 xsi:type="xsd:int">54</outParam1>
    <outParam2 xsi:type="xsd:string">Hi there!</outParam2>
    <outParam3 xsi:type="xsd:boolean">true</outParam3>
  </rpcResponse>
</SOAP:Body>
...


PendingCall.getOutputValues()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCall.getOutputValues()

参数

无。

返回

所有输出参数的已解码值的数组。

描述

函数；获取所有输出参数的已解码动作脚本值。SOAP RPC 调用可以返回多个输出参数。您收到的第一个（或唯一一个）返回值总是在 onResult() 回调的结果参量中，但若要访问其他返回值，您必须使用类似本函数的 API 或 getOutputParameters()。

另请参阅 PendingCall.getOutputValue()、PendingCall.getOutputParameter()、PendingCall.getOutputParameterByName() 和 PendingCall.getOutputParameters()。


PendingCall.myCall

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

PendingCall.myCall

描述

属性；与 PendingCall 的操作对应的 SOAPCall 对象。此 SOAPCall 对象包含有关 Web 服务操作的信息并提供对某些行为的控制。有关详细信息，请参阅SOAPCall 类（仅限 Flash Professional）。

范例

以下的 onResult 回调通过 trace 命令发送 SOAPCall 操作的名称。

callback.onResult = function(result)
{
  // 检查我的操作名称
  trace("My operation name is " + this.myCall.name);
}


PendingCall.onFault()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCallObj.onFault = function(fault)
{
  // 处理所有错误，例如，通过
  // 通知用户服务器不可用或与技术
  // 支持部门联系

}

参数

fault 具有属性的错误的已解码动作脚本对象版本。如果 XML 形式的错误信息来自某一服务器，则 SOAPFault 对象将是该 XML 的已解码动作脚本版本。

返回到 PendingCall.onfault() 的错误对象的类型是 SOAPFault 对象。该对象不是由开发人员直接构建的，但作为失败的结果返回。它是 SOAP Fault XML 类型的动作脚本映射。

SOAPFault 属性 | 描述
faultcode | 字符串；一个描述错误的短字符串。
faultstring | 字符串；可由人直接读取的关于错误的说明。
detail | 字符串；与错误相关的特定于应用程序的信息，例如由 Web 服务引擎返回的堆栈跟踪或其它信息。
element | XML；表示错误的 XML 版本的 XML 对象。
faultactor | 字符串；错误的来源（如果未涉及中间项，则为可选）。

返回

无。

描述

PendingCall 对象回调函数；在 Web 服务方法失败并返回错误时，您提供这个由 Flash Player 调用的处理函数。错误参数是一个动作脚本 SOAPFault 对象。

范例

以下范例处理从 Web 服务方法返回的错误。

// 处理在使用 Web 服务方法时返回的所有错误
myPendingCallObj = myWebService.methodName(params)
myPendingCallObj.onFault = function(fault)
{
  // 捕获 SOAP 错误
  DebugOutputField.text = fault.faultstring;

  // 添加代码以处理任何错误，例如，通过
  // 通知用户服务器不可用或与技术
  // 支持部门联系

}


PendingCall.onResult()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myPendingCallObj.onResult = function(result)
{
  // 捕获结果并为此应用程序对其进行处理

}

参数

result 由 Web 服务方法利用 myPendingCallObj = myWebService.methodName(params) 调用时返回的 XML 结果（已解码的动作脚本对象版本）。

返回

无。

描述

PendingCall 对象回调函数；在 Web 服务方法成功并返回结果时，您提供这个由 Flash Player 调用的处理函数。结果是由操作返回的 XML 的已解码动作脚本对象版本。要获取返回的原始 XML 而不是已解码的结果，请访问 PendingCall.response 属性（请参阅 PendingCall.response）。

范例

以下范例处理从 Web 服务方法返回的结果。

// 处理在使用 Web 服务方法时返回的结果
myPendingCallObj = myWebService.methodName(params)
myPendingCallObj.onResult = function(result)
{
  // 捕获结果并为此应用程序对其进行处理
  ResultOutputField.text = result;
}


PendingCall.request

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

rawXML = myPendingCallback.request;

描述

PendingCall 属性；包含利用 myPendingCallback = myWebService.methodName() 发送的当前请求的原始 XML 格式。通常，您不会用到 PendingCall.request，但如果对通过线路发送的 SOAP 感兴趣，则可以使用该属性。使用此属性可访问请求的原始 XML。使用 myPendingCallback.onResult() 可获取请求结果的动作脚本版本。


PendingCall.response

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

rawXML = myPendingCallback.response;

描述

PendingCall 属性；包含对利用 myPendingCallback = myWebService.methodName() 发送的最新 Web 服务方法调用的响应的原始 XML 格式。通常，您不会用到 PendingCall.response，但如果对通过线路发送的 SOAP 感兴趣，则可以使用该属性。使用 myPendingCallback.onResult() 可获取请求结果的对应动作脚本版本。


SOAPCall 类（仅限 Flash Professional）

SOAPCall 类是 mx.services 包的一部分，并且计划作为高级功能与 WebService 类一起使用（请参阅WebService 类（仅限 Flash Professional））。有关 mx.data.services 包中的类的概述，请参阅Web 服务类（仅限 Flash Professional）。

创建新的 WebService 对象时，它包含与传入的 WSDL URL 中的操作对应的方法。另外，也会在后台为 WSDL 中的每个操作创建一个 SOAPCall 对象。SOAPCall 是该操作的描述符，因此包含与该特定操作有关的所有信息（该 XML 在网络上的外观和操作样式等）。它还提供对某些行为的控制。可以通过使用 getCall(operationName) 函数获取给定操作的 SOAPCall。对于每一操作只有一个 SOAPCall，由对该操作的所有活动调用共享。一旦获取 SOAPCall，即可通过执行以下操作自定义描述符：

  • 打开/关闭 XML 响应的解码。
  • 打开/关闭将 SOAP 数组转换为动作脚本对象的延迟。
  • 更改给定操作的并发性配置。
  • 向 SOAPCall 对象添加标题。

动作脚本类名称 mx.services.SOAPCall

SOAPCall 对象的函数摘要

函数 | 描述
SOAPCall.addHeader()> | 向 SOAPCall 对象添加标题。

SOAPCall 对象的属性摘要

属性 | 描述
SOAPCall.concurrency> | 更改给定操作的并发性配置。
SOAPCall.doDecoding> | 打开/关闭 XML 响应的解码。
SOAPCall.doLazyDecoding> | 打开/关闭将 SOAP 数组转换为动作脚本对象的延迟。

SOAPCall 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

描述

SOAPCall 对象不是开发人员构建的。相反，在对 WebService 对象调用方法时，WebService 对象会返回一个 PendingCall 对象。要访问关联的 SOAPCall 对象，请使用 myPendingCall.myCall。


SOAPCall.addHeader()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

SOAPCall.addHeader(var header)

参数

header 要添加的标题。

返回

无。

描述

函数；向 SOAPCall 对象添加标题。

范例

以下范例创建一个新的 SOAP 标题并将其附加到 SOAPCall。以下代码：

import mx.services.QName;

var qname = new QName("bar", "http://foo");
var value = "hi there!";
var header = new SOAPHeader(qname, value);
soapCall.addHeader(header);

创建以下 SOAP 标题：

...
<SOAP:Header>
  <ns1:bar
    xmlns:ns1="http://foo"
    xsi:type="xsd:string">hi there!</ns1:bar>
</SOAP:Header>
...


SOAPCall.concurrency

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

SOAPCall.concurrency

描述

属性；并发请求的数量。下表列出了可能的值：

值 | 描述
SOAPCall.MULTIPLE_CONCURRENCY | 允许多个活动的调用。
SOAPCall.SINGLE_CONCURRENCY | 一次只允许一个调用，且前提是某个调用在处于活动状态后出错。
SOAPCall.LAST_CONCURRENCY | 通过取消以前的调用，只允许一个调用。


SOAPCall.doDecoding

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

SOAPCall.doDecoding

描述

属性；打开/关闭 XML 响应的解码 - 默认情况下，XML 响应被转换（解码）为动作脚本对象。如果只想要 XML，可以设置 SOAPCall.doDecoding = false。


SOAPCall.doLazyDecoding

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

SOAPCall.doLazyDecoding

描述

属性；打开/关闭数组的“迟缓解码”。默认情况下，我们使用“迟缓的”解码算法将 SOAP 数组转换为动作脚本对象这一操作推迟到最后一刻，从而可大大加快操作在返回较大的数据集时的返回速度。这意味着您从远端取回的所有数组都是 ArrayProxy 对象。然后，当您访问特定的索引 (foo[5]) 时，该元素在必要时会自动解码。可通过设置 SOAPCall.doLazyDecoding = false 来关闭此行为（这将会导致所有数组全部解码）。


WebService 类（仅限 Flash Professional）

WebService 类是 mx.services 包的一部分，并且计划与以下类一起使用：

  • Log 类（仅限 Flash Professional）
  • PendingCall 类（仅限 Flash Professional）
  • SOAPCall 类（仅限 Flash Professional）

注意：此 WebService API 不同于 WebServiceConnector 组件 API。前者是只能在动作脚本代码中使用的一组类，在各种 Macromedia 产品中很常见。后者是 Flash MX 2004 所独有的 API，提供用于 WebServiceConnector 组件的直观创作工具的动作脚本接口。

有关 mx.services 包中的类的概述，请参阅Web 服务类（仅限 Flash Professional）。

WebServices 对象充当远程 Web 服务的本地引用。创建新的 WebService 对象时，会下载和分析定义 Web 服务的 WSDL 文件，并将其放在该对象中。然后，可以直接对该 WebService 对象调用 Web 服务的方法，并处理该 Web 服务的任何回调。当成功处理了 WSDL 且 WebService 对象准备就绪时，会调用 onLoad() 回调。如果在加载 WSDL 时遇到问题，会调用 onFault() 回调。

对 WebService 对象调用方法时，返回值是一个回调对象。从所有 Web 服务方法调用返回的回调的对象类型是 PendingCall。这些对象通常不是开发人员构建的，而是作为 webServiceObject.webServiceMethodName() 命令的结果自动构建的。这些对象并不是稍后进行的 WebService 调用的结果。而 PendingCall 对象表示正在进行的调用。当 WebService 操作完成时（通常是在进行方法调用后的几秒钟），会填写各种 PendingCall 数据字段，而且会调用您提供的 onResult 或 onFault 回调。有关 PendingCall 对象的详细信息，请参阅PendingCall 类（仅限 Flash Professional）。

Player 会在分析 WSDL 之前将您进行的所有调用进行排队，并尝试在分析 WSDL 之后执行这些调用。这是因为，WSDL 包含正确编码和发送 SOAP 请求所需的信息。您在分析 WSDL 后进行的函数调用无需排队；它们会立即进行。如果某个排队的调用与 WSDL 中定义的任何操作的名称都不匹配，Flash Player 会向您在初次进行该调用时被指定的回调对象返回一个错误。

动作脚本类名称 mx.services.WebService


使用 WebServices API

随附在 mx.services 包中的 WebServices API 由 WebService 类、Log 类和 PendingCall 类组成。


支持的类型

WebService 功能支持在以下表格中定义的 XML 架构类型的子集。

也支持复杂的类型和 SOAP 编码的数组类型，而这些类型可以由其他复杂的类型、数组或内置的 XML 架构类型组成：

数字简单类型

XML 架构类型 | 动作脚本绑定
decimal | Number
integer | Number
negativeInteger | Number
nonNegativeInteger | Number
positiveInteger | Number
long | Number
int | Number
short | Number
byte | Number
unsignedLong | Number
unsignedShort | Number
unsignedInt | Number
unsignedByte | Number
float | Number
double | Number

日期和时间简单类型

XML 架构类型 | 动作脚本绑定
date | Date 对象
datetime | Date 对象
duration | Date 对象
gDay | Date 对象
gMonth | Date 对象
gMonthDay | Date 对象
gYear | Date 对象
gYearMonth | Date 对象
time | Date 对象

名称和字符串简单类型

XML 架构类型 | 动作脚本绑定
string | 动作脚本字符串
normalizedString | 动作脚本字符串
QName | mx.services.Qname 对象

布尔型

XML 架构类型 | 动作脚本绑定
Boolean | Boolean

对象类型

XML 架构类型 | 动作脚本绑定
Any | XML 对象
Complex Type | 由任何支持的类型的属性组成的动作脚本对象
Array | 由任何支持的对象或类型组成的动作脚本数组

支持的 XML 架构对象元素

schema
     complexType
          complexContent
               限制
          sequence | simpleContent
               限制
     element
          complexType | simpleType


WebService 安全性

WebService API 符合 Flash Player 的安全性模型。

用户身份验证和授权

对于 WebService API，身份验证和授权规则与对于 Flash 的任何 XML 网络操作的规则相同。SOAP 本身并未指定任何身份验证和授权的方法。例如，当下层的 HTTP 传送在 HTTP 标题中返回 HTTP BASIC 响应时，浏览器会通过以下方式响应：为用户显示一个对话框，并随后将用户的输入附加到后续消息中的 HTTP 标题。此机制存在于比 SOAP 低的级别上，并且是 Flash HTTP 身份验证设计的一部分。

消息完整性

消息级的安全性包括：在网络包之上的传送 SOAP 消息的概念层对 SOAP 消息本身的加密。

传送安全性 Flash Player SOAP Web 服务的下层网络传送始终是 HTTP POST。因此，可以应用在 Flash HTTP 传送层上的任何安全性方式（例如 SSL）通过 Flash 中的 Web 服务调用获得支持。SSL/HTTPS 为 SOAP 消息传递提供最常用的传送安全性方式，而在传送层与 SSL 结合使用 HTTP BASIC 身份验证是当今最常用的 Web 站点安全性方式。

WebService 对象的函数摘要

函数 | 描述
WebService.myMethodName()> | 调用由 WSDL 定义的特定 Web 服务操作。
WebService.getCall()> | 获取给定操作的 SOAPCall

WebService 对象的回调摘要

回调 | 描述
WebService.onLoad()> | 当 Web 服务已成功加载并分析了其 WSDL 文件时调用。
WebService.onFault()> | 在 WSDL 分析的过程中出错时调用。

WebService 类的构造函数

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myWebServiceObject = new WebService(wsdlURI [, logObject]);

参数

构造函数的参数如下所示：

wsdlURI Web 服务 WSDL 文件的 URL。

logObject 为此 Web 服务指定 Log 对象名称的可选参数（请参阅Log 类（仅限 Flash Professional））。

返回

无。

描述

要创建 WebService 对象，请调用 new WebService() 并提供 WSDL URL。Flash Player 返回一个 WebService 对象。WebService 对象构造函数可以选择性地接受 Log 对象和代理 URL：

myWebServiceObject = new WebService(wsdlURI [, logObject]);

如果需要，可以对 WebService 对象使用两个回调。在 Flash Player 完成 WSDL 文件的分析并且对象完成时，它会调用 webServiceObject.onLoad(WSDLDocument) 函数。对于您只想在完全分析 WSDL 文件后才执行的代码，这是一个放置此代码的好地方。例如，您可能会选择将第一个 Web 服务方法调用放在此函数中。

如果在查找或分析 WSDL 文件时出错，Flash Player 会调用 webServiceObject.onFault(fault)。对于调试代码和那些告知用户“服务器不可用，请稍后重试”之类信息的代码，这是放置它们的好地方。有关详细信息，请参阅这些函数的各个条目。

调用 Web 服务操作： 将 Web 服务操作作为直接在 Web 服务上可用的方法进行调用。例如，如果 Web 服务具有方法 getCompanyInfo(tickerSymbol)，则按以下方式调用该方法：

myPendingCallObject = myWebServiceObject.getCompanyInfo(tickerSymbol);

在上例中，回调对象被命名为 myPendingCallObject。所有的方法调用都是异步的，并返回 PendingCall 类型的回调对象。异步表示不能立即获得 Web 服务调用的结果。

当您调用

x = stockService.getQuote("macr");

时，对象 x 不是 getQuote 的结果（它是 PendingCall 对象）。只能在稍后（通常是几秒钟后）Web 服务操作完成时获得实际结果。动作脚本代码由对 onResult 回调函数的调用进行通知。

处理 PendingCall 对象： 此回调对象是一个 PendingCall 对象，用于处理已调用的 Web 服务方法的结果和错误（请参阅PendingCall 类（仅限 Flash Professional））。例如：

MyPendingCallObject = myWebServiceObject.myMethodName(param1, ..., paramN);
MyPendingCallObject.onResult = function(result)
{
  OutputField.text = result
}
MyPendingCallObject.onFault = function(fault)
{
  DebugField.text = fault.faultCode + "," + fault.faultstring;

  // 添加代码以处理任何错误，例如，通过
  // 通知用户服务器不可用或与技术
  // 支持部门联系

}


WebService.getCall()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

getCall(var operationName)

参数

operationName 您想获取的相应 SOAPCall 的 Web 服务操作。

返回

SOAPCall 对象。

描述

创建新的 WebService 对象时，它包含与传入的 WSDL URL 中的操作对应的方法。另外，也会在后台为 WSDL 中的每个操作创建一个 SOAPCall 对象。SOAPCall 是该操作的描述符，因此包含与该特定操作有关的所有信息（该 XML 在网络上的外观和操作样式等）。它还提供对某些行为的控制。可以通过使用 getCall(operationName) 方法获取给定操作的 SOAPCall。对于每一操作只有一个 SOAPCall，由对该操作的所有活动调用共享。一旦获取了 SOAPCall，即可通过使用 SOAPCall API 更改操作符的描述符。有关详细信息，请参阅SOAPCall 类（仅限 Flash Professional）。

范例

有关使用此调用的范例，请参阅SOAPCall 类（仅限 Flash Professional）。


WebService.onFault()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

MyWebServiceObject.onFault

参数

fault 具有属性的错误的已解码动作脚本对象版本。如果 XML 形式的错误信息来自某一服务器，则 SOAPFault 对象将是该 XML 的已解码动作脚本版本。

返回给 webservice.onFault() 方法的错误对象类型是 SOAPFault 对象。该对象不是由开发人员直接构建的，但作为失败的结果返回。它是 SOAP Fault XML 类型的动作脚本映射。

SOAPFault 属性 | 描述
faultcode | 字符串；描述错误的标准短 QName。
faultstring | 字符串；可由人直接读取的关于错误的说明。
detail | 字符串；与错误相关的特定于应用程序的信息，例如由 Web 服务引擎返回的堆栈跟踪或其它信息。
element | XML；表示错误的 XML 版本的 XML 对象。
faultactor | 字符串；错误的来源（如果未涉及中间项，则为可选）。

返回

无。

描述

WebService 回调函数；当新的 webService(WSDLUrl) 方法已失败且返回错误时，Flash Player 会调用此函数。这可能发生在无法分析或找到 WSDL 文件的时候。错误参数是一个动作脚本 SOAPFault 对象。

范例

以下范例处理在 WebService 对象的创建中返回的任何错误。

MyWebServiceObject.onFault = function(fault)
{
  // 捕获错误
  DebugOutputField.text = fault.faultstring;

  // 添加代码以处理任何错误，例如，通过
  // 通知用户服务器不可用或与技术
  // 支持部门联系

}


WebService.onLoad()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

myService.onLoad

参数

wsdlDocument WSDL XML 文档。

返回

无。

描述

Webservice 回调函数；当 WebService 对象已成功加载并分析了其 WSDL 文件时，Flash Player 会调用此回调。在此事件发生之前，可以在应用程序中调用操作，但当此事件发生时，将在内部对这些操作进行排队，并在 WSDL 加载之前不会实际传送这些操作。

范例

以下范例指定 WSDL URL，创建新的 Web 服务对象，并在加载后接收 WSDL 文档。

// 指定 WSDL URL
var wsdlURI = "http://www.flash-db.com/services/ws/companyInfo.wsdl";

// 创建新的 Web 服务对象
stockService = new WebService(wsdlURI);

// 加载后接收 WSDL 文档
stockService.onLoad = function(wsdlDocument);
{
  // 当 WSDL 加载完成且
  // 对象已被创建时执行的代码
}


WebService.myMethodName()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

callbackObj = myWebServiceObject.myMethodName(param1, ... paramN);

参数

所需的参数取决于所调用的 Web 服务方法。

返回

callbackObj 可以将用于处理有关调用的结果和错误的函数附加到的 PendingCall 对象。有关详细信息，请参阅PendingCall 类（仅限 Flash Professional）。

在从 WebService 方法返回的响应是 PendingCall.onResult() 或 onFault() 时调用的回调。通过唯一地标识回调对象，可以管理多个 onResult 回调，如下例所示：

myWebService = new WebService("http://www.myCompany.com/myService.wsdl");
callback1 = myWebService.getWeather("02451");
callback1.onResult = function(result)
{
  //完成一些操作
}
callback2 = myWebService.getDetailedWeather("02451");
callback2.onResult = function(result)
{
  //完成另一些操作
}

描述

要调用 Web 服务操作，将其作为在 Web 服务上直接可用的方法进行调用。例如，如果 Web 服务具有方法 getCompanyInfo(tickerSymbol)，则调用：

myCallbackObject.myservice.getCompanyInfo(tickerSymbol);

所有调用都是异步的，并返回 PendingCall 对象类型的回调对象。


WebServiceConnector（仅限 Flash Professional）

WebServiceConnector 组件使您可以使用业界标准的 SOAP（简单对象访问协议）协议来访问服务器公开的远程方法。Web 服务可以接收参数和返回结果。使用 Flash MX Professional 2004 创作工具和 WebServiceConnector 组件，您可以内省、访问和绑定远程 Web 服务和 Flash 应用程序之间的数据。WebServiceConnector 组件的单个实例可用于对同一操作进行多个调用。您需要为想调用的每个不同操作使用不同的 WebServiceConnector 实例。

Web 服务定义一些方法（有时称为操作），它们可用于通过使用 Web 服务描述语言 (WSDL) 格式的 XML 进行的消耗。WSDL 文件指定由 Web 服务公开的操作、参数和结果（称为架构）的列表。

使用 URL 可访问 WSDL 文件。在 Flash MX Professional 2004 中，可以通过使用“Web 服务”面板输入 Web 服务的 WSDL 文件的 URL 查看该服务的架构。一旦标识了 WSDL 文件，则 Web 服务可用于您创建的任何应用程序。

只有 WSDL 文件的创作者可以更改 WSDL 文件或操作参数。每当创作者更改 WSDL 文件时，params 和结果架构会随之更新。这些更改将覆盖开发人员对架构所作的所有编辑。要获取更新的 WSDL 文件，您可以从“Web 服务”面板菜单中选择“刷新 Web 服务”。

WebServiceConnector 组件和 XMLConnector 组件实现了 RPC（远程过程调用）组件 API、一组方法、属性，以及用于定义向外部数据源发送参数和从其接收结果的便捷方法的事件。

WebServiceConnector 组件的单个实例可用于对同一操作进行多个调用。您需要为想调用的每个不同操作使用不同的 WebServiceConnector 实例。

开发人员可以编辑架构，以便为了在应用程序中使用而对其进行自定义（例如，提供其他的格式设置或验证设置）。请参阅在“架构”选项卡中处理架构（仅限于 Flash Professional）。


使用 WebServiceConnector（仅限 Flash Professional）

可以使用 WebServiceConnector 连接到 Web 服务，并使 Web 服务的属性可用于绑定到应用程序中的 UI 组件的属性。要连接到 Web 服务，您必须首先为该 Web 服务输入 Web 服务 URL。WebServiceConnector 在应用程序创作的过程中显示在舞台上，但在运行时应用程序中并没有可视的外观。

可以在“组件检查器”面板或“Web 服务”面板中为 Web 服务输入 URL。请参阅 WebServiceConnector 组件（仅限于 Flash Professional）。

有关使用 WebServiceConnector 组件的详细信息，请参阅数据绑定（仅限于 Flash Professional）。

WebServiceConnector 参数

以下列出了一些创作参数，您可以在“组件检查器”面板的“参数”选项卡中为每个 WebServiceConnector 组件实例设置这些参数：

multipleSimultaneousAllowed（布尔值类型）指明是否可以同时进行多个调用；默认值是 false。如果为 false，则当一个调用已在执行时，trigger() 函数将不执行调用。将发出 status 事件，并且具有代码 CallAlreadyInProgress。如果值为 true，将发生调用。

operation（字符串类型）是显示在 WSDL 文件中的 SOAP 端口内的操作名称。

suppressInvalidCalls（布尔型）指示在参数无效时是否禁止调用；默认值为 false。如果为 true，则 trigger() 函数在绑定数据的参数未通过验证的情况下将不执行调用。将发出 status 事件，并且具有代码 InvalidParams。如果为 false，将进行该调用，并且根据需要使用无效数据。

WSDLURL（字符串类型）是定义 Web 服务操作的 WSDL 文件的 URL。在创作期间设置此 URL 时，立即获取和分析该 WSDL 文件。可以在“组件检查器”面板的“架构”选项卡上看到产生的参数和结果信息。还会将服务描述添加到“Web 服务”面板。例如，请参阅 http://www.xmethods.net/sd/2001/TemperatureService.wsdl。


WebServiceConnector 类（仅限 Flash Professional）

继承 RPC > WebServiceConnector

动作脚本类名称mx.data.components.webServiceConnector

WebServiceConnector 类的属性摘要

属性 | 描述
webServiceConnector.multipleSimultaneousAllowed> | 指明是否可以同时进行多个调用。
webServiceConnector.multipleSimultaneousAllowed> | 指示显示在 WSDL 文件中的 SOAP 端口内的操作名称。
webServiceConnector.params> | 指定在执行下一个 trigger() 操作时要发送到服务器的数据。
webServiceConnector.results> | 标识作为 trigger() 操作的结果从服务器接收的数据。
webServiceConnector.suppressInvalidCalls> | 指明在参数无效的情况下是否禁止调用。
webServiceConnector.timeout> | 指定在结果未返回的情况下 Web 服务连接将在多少秒内失败。
webServiceConnector.WSDLURL> | 指定定义 Web 服务操作的 WSDL 文件的 URL。

WebServiceConnector 类的方法摘要

方法 | 描述
webServiceConnector.trigger()> | 启动远程过程调用。

WebServiceConnector 类的事件摘要

事件 | 描述
webServiceConnector.result> | 在对 Web 服务进行的调用成功完成时广播。
webServiceConnector.send> | 当 trigger() 函数执行时（在收集了参数数据之后，但在验证这些数据和启动对 Web 服务的调用之前）进行广播。
webServiceConnector.status> | 在启动对 Web 服务的调用时广播，以通知用户操作状态。


webServiceConnector.multipleSimultaneousAllowed

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.multipleSimultaneousAllowed;

描述

属性；指明是否可以同时进行多个调用。如果为 false，则 trigger() 函数将在另一个调用已在执行时执行一个调用。将发出 status 事件，并且具有代码 CallAlreadyInProgress。如果值为 true，将发生调用。

当同时进行多个调用时，不保证这些调用的完成顺序与触发它们的顺序相同。此外，Flash Player 可能会对同时发生的网络操作的数目加以限制。该限制将因版本和平台而异。

范例

以下范例允许同时发生对 myXmlUrl 进行的多个调用：

myXmlUrl.multipleSimultaneousAllowed = true;


webServiceConnector.operation

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.operation;

描述

属性；显示在 WSDL 文件中的 SOAP 端口内的操作名称。


webServiceConnector.params

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.params;

描述

属性；指定在执行下一个 trigger() 操作时要发送到服务器的数据。数据类型由 Web 服务的 WSDL 描述确定。

调用 Web 服务方法时，params 属性的数据类型必须是一个动作脚本对象或数组，如下所示：

如果 Web 服务为文档格式，则 params 的数据类型是某种 XML 文档。

如果您在创作过程中使用属性检查器或“组件检查器”面板来设置 WSDLURL 和操作，则可以按照 Web 服务方法所要求的同一顺序提供作为参数数组的 params，如 [1, "hello", 2432]。

范例

以下范例为名为 wsc 的 Web 服务组件设置 params 属性：

wsc.params = [param_txt.text];


webServiceConnector.result

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("result", myListenerObject);

描述

事件；在远程过程调用操作成功完成后广播。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“result”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）

您可以使用 results 属性获取实际结果值。

范例

以下范例为 result 事件定义 res 函数，并且将该函数分配给 addEventListener 事件处理函数：

var res = function (ev) {
trace(ev.target.results);
};
wsc.addEventListener("result", res);


webServiceConnector.results

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.results;

描述

属性；标识作为 trigger() 操作的结果从服务器接收的数据。每个 RPC 组件均定义获取此数据的方式以及有效的类型。这些数据在 RPC 操作成功完成后出现，由 result 事件通知。它在该组件卸载前或执行下一个 RPC 操作前可用。

返回的数据可能会非常大。您可以通过以下两种方式管理这些数据：

  • 选择适当的影片剪辑、时间轴或屏幕作为 RPC 组件的父级。在父级退出后该组件的存储区将可用于垃圾回收。
  • 在动作脚本中，您可以随时将空值分配给该属性。


webServiceConnector.send

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("send", myListenerObject);

描述

事件；在处理 trigger() 操作期间（在收集了参数数据后，但在验证这些数据和启动远程过程调用前）广播。此位置适合于存放将在调用前修改参数数据的代码。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“send”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）

您可以使用 params 属性获取或修改实际参数值。

范例

以下范例为 send 事件定义 sendFunction 函数，并且将该函数分配给 addEventListener 事件处理函数：

var sendFunction = function (sendEnv) {
sendEnv.target.params = [newParam_txt.text];
};
wsc.addEventListener("send", sendFunction);


webServiceConnector.status

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("status", myListenerObject);

描述

事件；在远程过程调用启动时广播，以通知用户操作状态。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“status”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）
  • code：一个字符串，提供已发生的特定情况的名称。
  • data：一个对象，其内容取决于代码。

下面是可用于状态事件的代码和关联数据：

代码 | 数据 | 描述
StatusChange | {callsInProgress:nnn} | 只要 Web 服务调用开始或结束就发出该事件。“nnn”项提供当前正发生的调用的数目。
CallAlreadyInProgress | 无数据 | 如果：(a) 调用了 trigger 函数，且 (b) multipleSimultaneousAllowed 为 false，同时 (c) 调用已在执行中，则会发出此事件。在发生此事件后，则认为尝试的调用已完成，并且不会发生“result”或“send”事件。
InvalidParams | 无数据 | 如果 trigger() 函数发现“params”属性不包含有效数据，则会发出此事件。如果“suppressInvalidCalls”属性为 true，则认为尝试的调用已完成，并且不会发生“result”或“send”事件。

以下是可能的 Web 服务值：

faultcode | faultstring | detail
Timeout | 调用方法 xxx 时的超时 |
MustUnderstand | 对于标题 xxx 无回调 |
Server.Connection | 无法连接到端点：xxx |
VersionMismatch | 请求实现版本：xxx 响应实现版本 yyy |
Client.Disconnected | 无法加载 WSDL | 无法加载 WSDL，如果当前在线，请验证 WSDL xxx 的 URI 和/或格式。
Server | 出错的 WSDL 格式 | 定义必须是 WSDL 文档中的第一个元素
Server.NoServicesInWSDL | 无法加载 WSDL | 在 xxx 处找不到 WSDL 中的元素
WSDL.UnrecognizedNamespace | WSDL 分析器没有用于命名空间 xxxx 的注册文档 |
WSDL.UnrecognizedBindingName | WSDL 分析器在命名空间 yyy 中无法找到命名为 xxx 的绑定 |
WSDL.UnrecognizedPortTypeName | WSDL 分析器在命名空间 yyy 中无法找到命名为 xxx 的 portType |
WSDL.UnrecognizedMessageName | WSDL 分析器在命名空间 yyy 中无法找到命名为 xxx 的消息 |
WSDL.BadElement | 元素 xxx 不可解析 |
WSDL.BadType | 类型 xxx 不可解析 |
Client.NoSuchMethod | 无法在服务中找到“xxx”方法 |
yyy | yyy - 从服务器报告的错误，这取决于您与哪一台服务器通信 |
No.WSDLURL.Defined | WebServiceConnector 组件没有已定义的 WSDL URL |
Unknown.Call.Failure | WebService 调用因未知原因而失败 |
Client.Disconnected | 无法加载导入的架构 | 无法加载架构；如果当前在线，请在 (XXXX) 处验证架构的 URI 和/或格式

范例

以下范例为 status 事件定义 statusFunction 函数，并且将该函数分配给 addEventListener 事件处理函数：

var statusFunction = function (stat) {
trace(stat.code);
trace(stat.data.faultcode);
trace(stat.data.faultstring);
};
wsc.addEventListener("status", statusFunction);


ComboBox.getItemAt()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

comboBoxInstance.getItemAt(index)

参数

index 一个大于或等于 0，且小于 ComboBox.length 的数字。要检索的项目的索引。

返回

被索引的项目对象或值。如果索引超出范围，该值就会是未定义的。

描述

方法；检索所指定索引处的项目。

范例

下面的代码显示索引位置 4 处的项目：

trace(myBox.getItemAt(4).label);


webServiceConnector.suppressInvalidCalls

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.suppressInvalidCalls;

描述

属性；指明在参数无效的情况下是否禁止调用。如果为 true，则 trigger() 函数在绑定参数未通过验证的情况下将不执行调用。将发出“status”事件，并且具有代码 InvalidParams。如果为 false，将进行该调用，并且根据需要使用无效数据。


webServiceConnector.timeout

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.timeout;

描述

属性；指定在结果未返回的情况下 Web 服务连接将在多少秒内失败。会发出 status 事件（继承自 RPC 组件），并且代码为 WebServiceFault，faultcode 为 Timeout。


webServiceConnector.trigger()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.trigger();

描述

方法；启动对 Web 服务的调用。每个 Web 服务都准确地定义了此调用所涉及的内容。如果操作成功，则操作的结果将显示在 Web 服务的 results 属性中。

trigger() 方法执行以下步骤：

  1. 如果任何数据绑定到 params 属性，则该方法执行所有绑定以确保提供最新数据。这样做还会导致发生数据验证。
  2. 如果数据无效且 suppressInvalidCalls 设置为 true，则操作将停止。
  3. 如果操作继续，则发出 send 事件。
  4. 使用指示的连接方法（例如 HTTP）启动实际远程调用。


webServiceConnector.WSDLURL

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.WSDLURL;

描述

属性；定义 Web 服务操作的 WSDL 文件的 URL。在创作期间设置此 URL 时，立即获取和分析该 WSDL 文件。产生的参数和结果显示在“组件检查器”面板的“架构”选项卡中。此外，服务描述显示在“Web 服务”面板中。


关于 Window 组件

Window 组件在一个具有标题栏、边框和关闭按钮（可选）的窗口内显示影片剪辑的内容。

Window 组件可以是模式的，也可以是非模式的。模式窗口会防止鼠标和键盘输入转至该窗口之外的其他组件。Window 组件还支持拖动操作；用户可以单击标题栏并将窗口及其内容拖动到另一个位置。拖动边框不会更改窗口的大小。

每个 Window 实例的实时预览反映在创作过程中对属性检查器或“组件检查器”面板中的所有参数所做的更改，但 contentPath 除外。

在将 Window 组件添加到应用程序时，您可以使用“辅助功能”面板，以使其可由屏幕阅读器访问。首先，您必须添加以下代码行来启用辅助功能：

mx.accessibility.WindowAccImpl.enableAccessibility();

不管一个组件有多少实例，都只对其启用一次辅助功能。有关详细信息，请参阅创建辅助内容。


使用 Window 组件

无论何时您需要向用户提供信息或最优先的选择时，您都可以在应用程序中使用一个窗口。例如，您可能会需要用户填写登录窗口或者发生了更改并需要确认新密码的窗口。

将窗口添加到应用程序有几种方式。您可以将窗口从“组件”面板拖动到舞台。您也可以通过调用 createClassObject()（请参阅 UIObject.createClassObject()）将窗口添加到应用程序。将窗口添加到应用程序的第三种方法是使用 PopUpManager 类。使用 PopUpManager 可以创建与舞台上其他对象重叠的模式窗口。有关详细信息，请参阅 Window 类。

如果使用 PopUpManager 向文档添加 Window 组件，则该 Window 实例将具有它自己的 FocusManager，与文档其他对象所具有的 FocusManager 不同。如果您不使用 PopUpManager，则窗口的内容会与文档中的其他组件一起参加焦点排序。有关控制焦点的详细信息，请参阅创建自定义焦点导航或FocusManager 类。

Window 组件参数

以下是您可以在属性检查器中或在“组件检查器”面板中为每个 Window 组件设置的创作参数：

contentPath 指定窗口的内容。这可以是电影剪辑的链接标识符，或者是屏幕、表单或包含窗口内容的幻灯片的元件的名称。它也可以是要加载到窗口的 SWF 或 JPG 文件的绝对或相对 URL。默认值为 ""。加载的内容会被裁剪，以适合窗口大小。

title 指明窗口的标题。

closeButton 指明是 (true) 否 (false) 显示关闭按钮。单击关闭按钮会广播一个 click 事件，但不关闭窗口。您必须编写调用 Window.deletePopUp() 的处理函数，以显式关闭窗口。有关 click 事件的详细信息，请参阅 Window.click。

您可以编写“动作脚本”，使用其属性、方法和事件来控制 Window 组件的这些和其他选项。有关详细信息，请参阅 Window 类。

创建具有 Window 组件的应用程序

以下过程解释了如何将 Window 组件添加到应用程序。在本范例中，窗口会要求用户更改其密码并确认新密码。

要创建具有 Window 组件的应用程序，请执行以下操作：

  1. 新建一个影片剪辑，其中包含密码和密码确认字段，以及“确定”和“取消”按钮。将该影片剪辑命名为 PasswordForm。

    这是将填写 Window 的内容。应将内容对齐 0,0，这是因为，内容位于 Window 的左上角。

  2. 在库中，选择 PasswordForm 影片剪辑并从“选项”菜单中选择“链接”。
  3. 选中“为动作脚本导出”。

    链接标识符 PasswordForm 自动输入到“标识符”框中。

  4. 在类字段中输入 mx.core.View 并单击“确定”。
  5. 将一个 Window 组件从“组件”面板中拖动到舞台上，然后从舞台上删除该组件。这会将该组件添加到库中。
  6. 在库中，选择 Window SWC 并从“选项”菜单中选择“链接”。
  7. 如果未选择“为动作脚本导出”，则选择它。
  8. 从“组件”面板中将按钮组件拖到舞台，并在属性检查器中为该组件指定实例名称 button。
  9. 打开“动作”面板，然后在第一帧上输入下列 click 处理函数：
    buttonListener = new Object();
buttonListener.click = function(){
  myWindow = mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true, { title:"Change Password", contentPath:"PasswordForm"});
  myWindow.setSize(240,110);
}
button.addEventListener("click", buttonListener);

    该处理函数调用 PopUpManager.createPopUp() 以实例化标题栏为“更改密码”的 Window 组件，该组件显示在按下按钮时 PasswordForm 影片剪辑的内容。要在按下“确定”或“取消”按钮时关闭 Window，您将需要编写另一个处理函数。


自定义 Window 组件

在创作过程中和在运行时，您都可以在水平和垂直方向上改变 Window 组件的形状。在创作时，在舞台上选择组件并使用“任意变形”工具或任何“修改”>“变形”命令。在运行时，使用 UIObject.setSize()。

调整窗口大小不会更改关闭按钮或标题题注的大小。标题题注为左对齐，关闭栏为右对齐。

对 Window 组件使用样式

Window 组件标题栏的样式声明由 Window.titleStyleDeclaration 属性指明。

Window 组件支持下列光晕样式：

样式 | 描述
borderStyle | 组件边框；其值为“none”、“inset”、“outset”或“solid”。此样式不继承其值。

对 Window 组件使用外观

Window 组件使用 RectBorder 类，该类使用“动作脚本”绘图 API 来绘制其边框。您可以使用 setStyle() 方法（请参阅 UIObject.setStyle()）来更改下列 RectBorder 样式属性：

RectBorder 样式 | 字母
borderColor | a
highlightColor | b
borderColor | c
shadowColor | d
borderCapColor | e
shadowCapColor | f
shadowCapColor | g
borderCapColor | h

这些样式属性设置边框上的下列位置：

如果使用 UIObject.createClassObject() 或 PopUpManager.createPopUp() 动态（在运行时）创建 Window 实例，则也可以动态设计其外观。要在运行时设计组件的外观，请设置传递给 createClassObject() 方法的 initObject 参数的外观属性。这些外观属性设置用作按钮状态的元件的名称，元件可以带有图标，也可以没有图标。有关详细信息，请参阅 UIObject.createClassObject() 和 PopUpManager.createPopUp()。

Window 组件使用下列外观属性：

属性 | 描述
skinTitleBackgroud | 标题栏。默认值为 TitleBackground。
skinCloseUp | 关闭按钮。默认值为 CloseButtonUp。
skinCloseDown | 处于按下状态的关闭按钮。默认值为 CloseButtonDown。
skinCloseDisabled | 处于禁用状态的关闭按钮。默认值为 CloseButtonDisabled。
skinCloseOver | 处于悬停状态的关闭按钮。默认值为 CloseButtonOver。


Window 类

继承 UIObject > UIComponent > View > ScrollView > Window

动作脚本类名称 mx.containers.Window

Window 类的属性允许您在运行时设置标题题注、添加关闭按钮以及设置显示内容。 使用动作脚本设置 Window 类的属性会覆盖在属性检查器或“组件检查器”面板中设置的同名参数。

实例化窗口的最佳方法是调用 PopUpManager.createPopUp()。此方法既可创建模式窗口（重叠并禁用应用程序中的现有对象），也可创建非模式窗口。例如，下面的代码创建模式 Window 实例（最后一个参数指明是模式窗口）：

var newWindow = PopUpManager.createPopUp(this, Window, true);

形态是通过在 Window 组件下方创建一个大的透明窗口模拟的。由于透明窗口的呈现方式，您可能会注意到透明窗口下的对象略显暗淡。有效透明度可以进行设置，方法是：更改 _global.style.modalTransparency 值，范围为从 0（完全透明）到 100（不透明）。如果使窗口部分透明，还可以设置窗口的颜色，方法是：在默认主题中更改“模式”外观。

如果使用 PopUpManager.createPopUp() 创建模式窗口，则在删除时，必须调用 Window.deletePopUp()，以便也可以删除透明窗口。例如，如果在窗口上使用 closeButton，则要编写下列代码：

obj.click = function(evt){
   this.deletePopUp();
}
window.addEventListener("click", obj);

注意：代码不会在创建模式窗口时停止执行。在其他环境（例如 Microsoft Windows）中，如果创建一个模式窗口，则创建窗口之后的代码行在窗口关闭之前不会运行。在 Flash 中，这些代码行在创建窗口之后、关闭窗口之前运行。

每个组件类都有一个 version 属性，该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串，该字符串指明组件的版本。要访问 version 属性，请使用以下代码：

trace(mx.containers.Window.version);

注意：下面的代码返回未定义的：trace(myWindowInstance.version);。

Window 类的方法摘要

方法 | 描述
Window.deletePopUp()> | 删除由 PopUpManager.createPopUp()> 创建的窗口实例。

继承 UIObject、UIComponent 和 View 的所有方法。

Window 类的属性摘要

属性 | 描述
Window.closeButton> | 指明标题栏上是 (true) 否 (false) 包含关闭按钮。
Window.content> | 对在 contentPath 属性中指定的内容的引用。
Window.contentPath> | 在窗口中所显示内容的路径。
Window.title> | 标题栏中显示的文本。
Window.titleStyleDeclaration> | 设置标题栏中文本格式的样式声明。

继承 UIObject、UIComponent 和 ScrollView 的所有属性。

Window 类的事件摘要

事件 | 描述
Window.click> | 松开关闭按钮时触发。
Window.mouseDownOutside> | 在模式窗口外按下鼠标时触发。

继承 UIObject、UIComponent、View 和 ScrollView 的所有事件。


Window.click

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(click){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.click = function(eventObject){
  ...
}
windowInstance.addEventListener("click", listenerObject)

描述

事件；在关闭按钮上单击（松开）鼠标时向所有已注册的侦听器广播。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 Window 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码附加到 Window 组件实例 myWindow，它将“_level0.myWindow”发送到“输出”面板：

on(click){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (windowInstance) 调度一个事件（在本例中为 click），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。该事件对象有一组属性，这些属性包含有关事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下范例创建一个模式窗口，然后定义一个删除此窗口的 click 处理函数：您必须向舞台添加一个 Window 组件，然后删除它以将其添加到文档库中，随后将下列代码添加到第 1 帧：

import mx.managers.PopUpManager
import mx.containers.Window
var myTW = PopUpManager.createPopUp(_root, Window, true, {closeButton:true, title:"My Window"});
windowListener = new Object();
windowListener.click = function(evt){
  _root.myTW.deletePopUp();
}
myTW.addEventListener("click", windowListener);

另请参见

UIEventDispatcher.addEventListener()、Window.closeButton


Window.closeButton

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

windowInstance.closeButton

描述

属性；一个布尔值，指明标题栏是 (true) 否 (false) 应包含一个关闭铵钮。此属性必须在 PopUpManager.createPopUp() 方法的 initObject 参数中设置。默认值为 false。

范例

下列代码创建一个窗口，该窗口显示影片剪辑“LoginForm”中的内容，其标题栏上有一个关闭按钮：

var myTW = PopUpManager.createPopUp(_root, Window, true,
  {contentPath:"LoginForm", closeButton:true});

另请参见

Window.click、PopUpManager.createPopUp()


Window.contentPath

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

windowInstance.contentPath

描述

属性；设置要在窗口中显示的内容的名称。该值可以是库中的一个影片剪辑的链接标识符，也可以是要加载的 SWF 或 JPG 文件的绝对或相对 URL。默认值为 ""（空字符串）。

范例

下列代码创建一个 Window 实例，该实例显示链接标识符为“loginForm”的影片剪辑：

var myTW = PopUpManager.createPopUp(_root, Window, true, {contentPath:"LoginForm"});


Window.content

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

windowInstance.content

描述

属性；对窗口的内容（根影片剪辑）的引用。此属性返回一个 MovieClip 对象。从库中附加一个元件时，默认值为所附加元件的一个实例。从 URL 加载内容时，直到开始加载操作，才会定义默认值。

范例

设置窗口组件内部的内容中的文本属性值：

loginForm.content.password.text = "secret";


Window.deletePopUp()

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

windowInstance.deletePopUp();

参数

无。

返回

无。

描述

方法；删除窗口实例和移除模式状态。只能对由 PopUpManager.createPopUp() 创建的窗口实例调用此方法。

示例

以下代码创建一个模式窗口，然后创建一个侦听器（单击关闭按钮时该侦听器将删除此窗口）：

var myTW = PopUpManager.createPopUp(_root, Window, true);
twListener = new Object();
twListener.click = function(){
  myTW.deletePopUp();
}
myTW.addEventListener("click", twListener);


Window.mouseDownOutside

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

用法 1：

on(mouseDownOutside){
  ...
}

用法 2：

listenerObject = new Object();
listenerObject.mouseDownOutside = function(eventObject){
  ...
}
windowInstance.addEventListener("mouseDownOutside", listenerObject)

描述

事件；在模式窗口外部单击（松开）鼠标时向所有已注册的侦听器广播。此事件很少使用，但如果用户尝试与窗口之外的内容进行交互时，您可以用它退出窗口。

第一个用法范例使用 on() 处理函数，并且必须直接附加到一个 Window 组件实例。附加到组件的 on() 处理函数内部使用的关键字 this 是指该组件实例。例如，下列代码附加到 Window 组件实例 myWindowComponent，它将“_level0.myWindowComponent”发送到“输出”面板：

on(click){
  trace(this);
}

第二个用法范例使用一个调度程序/侦听器事件模型。组件实例 (windowInstance) 调度一个事件（在本例中为 mouseDownOutside），而该事件由您创建的侦听器对象 (listenerObject) 上的函数（也称作处理函数）处理。您定义一个与侦听器对象上的事件同名的方法；当该事件被触发时，就会调用该方法。该事件被触发时，它会自动将一个事件对象 (eventObject) 传递到侦听器对象方法。该事件对象有一组属性，这些属性包含有关事件的信息。您可以使用这些属性来编写处理该事件的代码。最后，对广播该事件的组件实例调用 UIEventDispatcher.addEventListener() 方法，以将侦听器注册到实例。当该实例调度该事件时，就会调用该侦听器。

有关事件对象的详细信息，请参阅事件对象。

范例

以下范例创建一个窗口实例并定义一个 mouseDownOutside 处理函数，当用户单击窗口外部时，该处理函数调用一个 beep() 方法：

var myTW = PopUpManager.createPopUp(_root, Window, true, undefined, true);
// 创建一个侦听器
twListener = new Object();
twListener.mouseDownOutside = function()
{
    beep(); // 当用户单击外部时发出噪音
}
myTW.addEventListener("mouseDownOutside", twListener);

另请参见

UIEventDispatcher.addEventListener()


Window.title

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

windowInstance.title

描述

属性；一个字符串，指明标题栏的题注。默认值为 ""（空字符串）。

范例

下列代码将窗口的标题设置为“Hello World”：

myTW.title = "Hello World";


Window.titleStyleDeclaration

可用性

Flash Player 6 版本 79。

版本

Flash MX 2004。

用法

windowInstance.titleStyleDeclaration

描述

属性；一个字符串，指明设置窗口标题栏格式的样式声明。默认值未定义，指明粗体、白色文本。

范例

下列代码创建一个窗口，此窗口显示链接标识符为“changePassword”的影片剪辑的内容并使用 CSSStyleDeclaration“MyTWStyles”：

var myTW = PopUpManager.createPopUp(_root, Window, true, {contentPath:"LoginForm",
                                   titleStyleDeclaration:"MyTWStyles"});

有关样式的详细信息，请参阅使用样式自定义组件的颜色和文本。


关于 XMLConnector 组件（仅限 Flash Professional）

XMLConnector 组件是一种 Flash MX 2004 v2 组件，它的用途是使用 HTTP get 操作或 post 操作读或写 XML 文档。它充当其他组件和外部 XML 数据源之间的连接器。XMLConnector 使用 Flash MX Professional 2004 创作环境中的数据绑定功能或动作脚本代码与应用程序中的组件进行通信。XMLConnector 组件具有属性、方法和事件，但它没有运行时可视外观。

XMLConnector 组件和 WebServiceConnector 组件实现了 RPC（远程过程调用）组件 API、一组方法、属性，以及用于定义向外部数据源发送参数和从其接收结果的便捷方法的事件。


使用 XMLConnector 组件（仅限 Flash Professional）

XMLConnector 组件使应用程序可以访问通过 HTTP 返回或接收 XML 的任何外部数据源。连接外部 XML 数据源以及将该数据源的参数和结果用于您的应用程序的最简易方法是，指定一个架构 - XML 文档的结构，它标识可绑定到的文档中的数据元素。

架构显示在“组件检查器”面板中的“架构”选项卡中。架构标识可绑定到应用程序中的用户界面组件属性的 XML 文档中的字段。可以通过“组件检查器”面板手动创建架构，或利用创作环境自动创建一个架构。

注意：创作环境将接收一份您所连接到的外部 XML 文档的副本，以用作架构的模型。如果您熟悉 XML 脚本的撰写，则可以创建一个可用于生成架构的简单 XML 文件。

虽然 XMLConnector 组件具有属性和事件（像其他组件一样），但是它没有运行时可视外观。有关使用 XMLConnector 组件的详细信息，请参阅XMLConnector 组件（仅限于 Flash Professional）。

XMLConnector 组件的参数

以下列出了一些创作参数，您可以在“组件检查器”面板的“参数”选项卡中为每个 XMLConnector 组件实例设置这些参数：

direction（枚举）指示是发送、接收数据还是两者同时进行。

ignoreWhite（布尔型）设置为 true 时，在获取 XML 时将忽略空白。

multipleSimultaneousAllowed（布尔值类型）指明是否可以同时进行多个调用；默认值是 false。

suppressInvalidCalls（布尔型）指示在参数无效时是否禁止调用；默认值为 false。

URL（字符串类型）是在 HTTP 操作中使用的外部 XML 文档的 URL。


XMLConnector 类（仅限 Flash Professional）

继承 RPC > XMLConnector

动作脚本类名称 mx.data.components.XMLConnector

XMLConnector 类的属性摘要

属性 | 描述
XMLConnector.direction> | 指示是发送、接收数据还是两者同时进行。
XMLConnector.multipleSimultaneousAllowed> | 指明是否可以同时进行多个调用。
XMLConnector.params> | 指定在执行下一个 trigger() 操作时要发送到服务器的数据。
XMLConnector.results> | 标识作为 trigger() 操作的结果从服务器接收的数据。
XMLConnector.suppressInvalidCalls> | 指明在参数无效的情况下是否禁止调用。
XMLConnector.URL> | 组件在 HTTP 操作中使用的 URL。

XMLConnector 类的方法摘要

方法 | 描述
XMLConnector.trigger()> | 启动远程过程调用。

XMLConnector 类的事件摘要

事件 | 描述
XMLConnector.result> | 远程过程调用成功完成后广播。
XMLConnector.send> | 当 trigger() 函数执行时（在收集了参数数据之后，但在验证这些数据和启动远程调用之前）进行广播。
XMLConnector.status> | 在远程过程调用启动时广播，以通知用户操作状态。


XMLConnector.direction

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.direction;

描述

属性；指示是发送、接收数据还是两者同时进行。值如下所示：

  • send params 属性的 XML 数据通过 HTTP POST 发送到 XML 文档的 URL。忽略任何返回的数据。对 results 属性不作任何设置，而且没有任何 result 事件。

    注意：params 和 results 属性以及 result 事件继承自 RPC 组件 API。

  • receive 没有 params 数据被发送到 URL。通过 HTTP GET 访问 XML 文档的 URL，并预期从该 URL 收到有效的 XML 数据。
  • send/receive Params 数据被发送到 URL，并预期从该 URL 收到有效的 XML 数据。

范例

以下范例为文档 mysettings.xml 将 direction 设置为 receive：

myXMLConnector.direction = "receive";
myXMLConnector.URL = "mysettings.xml";
myXMLConnector.trigger();


XMLConnector.multipleSimultaneousAllowed

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.multipleSimultaneousAllowed;

描述

属性；指明是否可以同时进行多个调用。如果为 false，则 trigger() 函数将在另一个调用已在执行时执行一个调用。将发出 status 事件，并且具有代码 CallAlreadyInProgress。如果值为 true，将发生调用。

当同时进行多个调用时，不保证这些调用的完成顺序与触发它们的顺序相同。此外，Flash Player 可能会对同时发生的网络操作的数目加以限制。该限制将因版本和平台而异。


XMLConnector.params

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.params;

描述

属性；指定在执行下一个 trigger() 操作时要发送到服务器的数据。每个 RPC 组件均定义使用此数据的方式以及有效的类型。

范例

以下范例为 myXMLConnector 定义 name 和 city params：

myXMLConnector.params = new XML("<mydoc><name>Bob</name><city>Oakland</city></mydoc>");


XMLConnector.result

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("result", myListenerObject);

描述

事件；在远程过程调用操作成功完成后广播。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“result”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）

您可以使用 results 属性获取实际结果值。

范例

以下范例为 result 事件定义 res 函数，并且将该函数分配给 addEventListener 事件处理函数：

var res = function (ev) {
trace(ev.target.results);
};
xcon.addEventListener("result", res);


XMLConnector.results

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.results;

描述

属性；标识作为 trigger() 操作的结果从服务器接收的数据。每个 RPC 组件均定义获取此数据的方式以及有效的类型。这些数据在 RPC 操作成功完成后出现，由 result 事件通知。它在该组件卸载前或执行下一个 RPC 操作前可用。

返回的数据可能会非常大。您可以通过以下两种方式管理这些数据：

  • 选择适当的影片剪辑、时间轴或屏幕作为 RPC 组件的父级。在父级退出后该组件的存储区将可用于垃圾回收。
  • 在动作脚本中，您可以随时将空值分配给该属性。

范例

以下范例使用 trace 命令发送 myXMLConnector 的 results 属性：

trace(myXMLConnector.results);


XMLConnector.send

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("send", myListenerObject);

描述

事件；在处理 trigger() 操作期间（在收集了参数数据后，但在验证这些数据和启动远程过程调用前）广播。此位置适合于存放将在调用前修改参数数据的代码。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“send”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）

您可以使用 params 属性获取或修改实际参数值。

范例

以下范例为 send 事件定义 sendFunction 函数，并且将该函数分配给 addEventListener 事件处理函数：

var sendFunction = function (sendEnv) {
sendEnv.target.params = [newParam_txt.text];
};
xcon.addEventListener("send", sendFunction);


XMLConnector.status

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.addEventListener("status", myListenerObject);

描述

事件；在远程过程调用启动时广播，以通知用户操作状态。

事件处理函数的参数是具有以下字段的对象：

  • type：字符串“status”
  • target：对发出该事件的对象的引用（例如 WebServiceConnector 组件）
  • code：一个字符串，提供已发生的特定情况的名称。
  • data：一个对象，其内容取决于代码。

如果调用时发生问题，则 status 事件的代码字段设置为 Fault，如下所示：

代码 | 数据 | 描述
Fault | {faultcode:code, faultstring:string, detail:detail, element:element, faultactor:actor} | 如果在处理调用的过程中发生其他问题，则会发出此事件。数据是 SOAPFault 对象。在发生此事件后，则认为尝试的调用已完成，并且不会发生“result”或“send”事件。

以下是可能伴随 status 事件发生的错误：

FaultCode | FaultString | 注释
XMLConnector.Not.XML | params 不是 XML 对象 | params 必须是动作脚本 XML 对象。
XMLConnector.Parse.Error | params 具有 XML 分析错误 NN。 | params XML 对象的“status”属性具有非零的值 NN。请参阅“Flash 帮助”中有关 XML.status 的信息，以查看可能的错误 NN。
XMLConnector.No.Data.Received | 没有从服务器接收到任何数据 | 限制：由于不同的浏览器限制，此消息可能表示 (a) 服务器 URL 无效、无响应或返回 HTTP 错误代码；或 (b) 服务器请求成功但响应恰巧为 0 字节的数据。建议的解决方法是：设计应用程序时使服务器永不会返回 0 字节的数据。如果您获取“XMLConnector.No.Data.Received”，则将确实知道发生了服务器错误，并且可以相应地通知最终用户。
XMLConnector.Results.Parse.Error | 收到的数据具有 XML 分析错误 NN | Flash Player 内置的 XML 分析器确定收到的 XML 无效。请参阅“Flash 帮助”中有关 XML.status 的信息，以查看可能的错误 NN。
XMLConnector.Params.Missing | direction 为“send”或“send/receive”，但 params 为空。 |

范例

以下范例为 status 事件定义 statusFunction 函数，并且将该函数分配给 addEventListener 事件处理函数：

var statusFunction = function (stat) {
trace(stat.code);
trace(stat.data.faultcode);
trace(stat.data.faultstring);
};
xcon.addEventListener("status", statusFunction);


XMLConnector.suppressInvalidCalls

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.suppressInvalidCalls;

描述

属性；指明在参数无效的情况下是否禁止调用。如果为 true，则 trigger() 函数在绑定参数未通过验证的情况下将不执行调用。将发出“status”事件，并且具有代码 InvalidParams。如果为 false，将进行该调用，并且根据需要使用无效数据。


XMLConnector.trigger()

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.trigger();

描述

方法；启动远程过程调用。每一 RPC 组件均精确定义此操作涉及的内容。如果该操作成功，则操作结果将出现在 RPC 组件的 results 属性中。

trigger() 方法执行以下步骤：

  1. 如果任何数据绑定到 params 属性，则该方法执行所有绑定以确保提供最新数据。这样做还会导致发生数据验证。
  2. 如果数据无效且 suppressInvalidCalls 设置为 true，则操作将停止。
  3. 如果操作继续，则发出 send 事件。
  4. 使用指示的连接方法（例如 HTTP）启动实际远程调用。


XMLConnector.URL

可用性

Flash Player 6 版本 79。

版本

Flash MX Professional 2004。

用法

componentInstance.URL;

描述

属性；此组件在执行 HTTP 操作时所使用的 URL。此 URL 可以是绝对或相对的 URL。此 URL 受到所有标准的 Flash Player 安全性的保护。


关于 XUpdateResolver 组件（仅限 Flash Professional）

解析程序组件是与 DataSet 组件（Macromedia Flash 数据结构中的数据管理功能的一部分）组合使用的。通过解析程序组件，您能够将对应用程序内的数据进行的更改转换为适合于您所更新的外部数据源的格式。这些组件在运行时没有可视外观。

如果在应用程序中使用 DataSet 组件，则会生成一组优化的说明 (DeltaPacket)，它们描述了在运行时对数据所作的更改。这组说明会由解析程序组件转换为适当的格式（更新包）。在将更新发送到服务器后，服务器会发送一个响应（结果包），响应中包含由该更新操作导致的附加更新或错误。解析程序组件可以将此信息转换回 DeltaPacket，DeltaPacket 可应用于 DataSet 组件以使其与外部数据源保持同步。通过解析程序组件，您不必编写额外的动作脚本代码，就能够令应用程序和外部数据源保持同步。

XUpdate 是一种用于描述对 XML 文档所作的更改的标准，并受到各种 XML 数据库（如 Xindice 或 XHive）的支持。XUpdateResolver 组件将 DeltaPacket 翻译为 XUpdate 语句。外部数据源可以处理这些 XUpdate 语句。XML 文档包含在更新任何标准的 XUpdate 数据库时所需的信息和格式。

有关 XUpdate 语言规范的工作草案的信息，请参阅 www.xmldb.org/xupdate/xupdate-wd.html。可以使用并行解析程序组件 RDBMSResolver（请参阅RDBMSResolver 组件（仅限 Flash Professional））将数据返回到基于 XML 的服务器。有关 DataSet 组件的详细信息，请参阅DataSet 组件（仅限 Flash Professional）。有关连接器的详细信息，请参阅WebServiceConnector（仅限 Flash Professional）和XMLConnector 组件（仅限 Flash Professional）。有关 Flash 数据结构的详细信息，请参阅解析程序组件（仅限于 Flash Professional）。

注意：也可以使用 XUpdateResolver 组件将数据更新发送到任何可以分析 XUpdate 语言的外部数据源；例如，ASP 页、Java servlet 或 ColdFusion 组件。

XUpdateResolver 组件的更新以 XUpdate 数据包的形式发送，并通过某个连接对象与数据库或服务器进行通信。XUpdate 包由一组优化的说明组成，它们描述了在 DataSet 组件上执行的插入、编辑和删除操作。解析程序组件从 DataSet 组件获取 DeltaPacket，将其自己的 XUpdate 包发送到连接器，从连接中接收服务器错误，并且将这些错误传送回 DataSet 组件 - 全都使用可绑定的属性。


使用 XUpdateResolver 组件（仅限 Flash Professional）

仅当 Flash 应用程序包含 DataSet 组件且必须将更新发送回数据源时，才使用此 XUpdateResolver 组件。此组件解析您想返回到 XML 格式的数据源的数据。

有关使用 XUpdateResolver 组件的详细信息，请参阅解析程序组件（仅限于 Flash Professional）。

XUpdateResolver 组件的参数

includeDeltaPacketInfo 布尔值；如果为 true，则会使 XUpdate 在 XUpdate 节点上的属性中包含 deltaPacket 的其他信息。此信息包含事务 ID 和操作 ID。

以下范例显示当此属性的布尔值设置为 false 时如何构建更新包：

<xupdate:modifications
  version="1.0"
  xmlns:xupdate="http://www.xmldb.org/xupdate">

  <xupdate:remove select="/datapacket/row[@id='100']"/>

</xupdate:modifications>

以下范例显示当此属性的布尔值设置为 true 时如何构建更新包：

<xupdate:modifications
  version="1.0"
  xmlns:xupdate="http://www.xmldb.org/xupdate"
  transId="46386292065:Wed Jun 25 15:52:34 GMT-0700 2003">

  <xupdate:remove select="/datapacket/row[@id='100']" opId="0123456789"/>

</xupdate:modifications>

XUpdateResolver 组件的属性摘要

属性 | 描述
XUpdateResolver.deltaPacket> | 包含对 DataSet 组件所作更改的说明。
XUpdateResolver.includeDeltaPacketInfo> | 在 XUpdate 节点上的属性中包含 deltaPacket 的其他信息。
XUpdateResolver.updateResults> | 说明更新的结果。
XUpdateResolver.xupdatePacket> | 包含对 DataSet 组件所作更改的 XUpdate 翻译。

XUpdateResolver 组件的事件摘要

事件 | 描述
XUpdateResolver.beforeApplyUpdates> | 在创建 XML 包后并紧接着在发送该包之前由解析程序组件调用，以立即进行自定义的修改。
XUpdateResolver.reconcileResults> | 由解析程序组件调用以比较两个包。


XUpdateResolver.beforeApplyUpdates

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.beforeApplyUpdates(eventObject)

参数

eventObject 解析程序事件对象；描述在将更新通过连接器发送到数据库之前对 XML 包进行的自定义。此解析程序事件对象应包含以下属性：

属性 | 描述
target | 对象；触发此事件的解析程序。
type | 字符串；事件的名称。
updatePacket | XML 对象；将要应用的 XML 对象。

返回

无。

描述

事件；在为新的 deltaPacket 创建 XML 包后，并紧接着在使用数据绑定发送该包之前由解析程序组件调用，以立即进行自定义的修改。在将更新的数据发送到连接器之前，可以使用此事件处理函数对 XML 进行自定义的修改。

范例

以下范例将用户身份验证数据添加到 XML 包：

on (beforeApplyUpdates) {
   // 添加用户身份验证数据
   var userInfo = new XML( ""+getUserId()+" "+getPassword()+"" );
   xupdatePacket.firstChild.appendChild( userInfo );
}


XUpdateResolver.deltaPacket

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.deltaPacket

描述

属性；deltaPacket 类型的属性，它接收将要转换为 xupdatePacket 的 deltaPacket，并根据放置于 updateResults 属性中的任何服务器结果输出 deltaPacket。此事件处理函数提供一个方法，您可以通过此方法在将更新的数据发送到连接器前对 XML 进行自定义修改。

updateResults 属性中的消息视作错误。这意味着，具有消息的增量被再次添加到 deltaPacket 中，这样，下次将 deltaPacket 发送到服务器时可以重新发送它。您必须编写代码以处理具有消息的增量，以便在将消息添加到下一个 deltaPacket 前将这些消息提供给用户并进行修改。


XUpdateResolver.includeDeltaPacketInfo

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.includeDeltaPacketInfo

描述

属性；Boolean 类型的属性，如果为 true，则在 XUpdate 节点上的属性中包含 deltaPacket 的其他信息。此信息将包含事务 ID 和操作 ID。

有关产生的 XML 的范例，请参阅XUpdateResolver 组件的参数。


XUpdateResolver.reconcileResults

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.reconcileResults(eventObject)

参数

eventObject ResolverEvent 对象；描述用于比较两个 updatePacket 的事件对象。此解析程序事件对象应包含以下属性：

属性 | 描述
target | 对象；触发此事件的解析程序。
type | 字符串；事件的名称。

返回

无。

描述

事件；在从服务器收到结果后，并紧接着在通过数据绑定传送包含操作结果的 deltaPacket 之前，使用此回调来插入任何代码。这是放置对来自服务器的消息进行处理的代码的好地方。

范例

下面的范例会协调两个 updatePacket，并在成功后清除更新：

on (reconcileResults) {
     // 检查结果
     if( examine( updateResults ))
       myDataSet.purgeUpdates();
     else
       displayErrors( results );
}


XUpdateResolver.updateResults

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.updateResults

描述

属性；deltaPacket 类型的属性，包含使用连接器从服务器返回的更新的结果。使用此属性可将错误和更新的数据从服务器传送到 DataSet 组件；例如，当服务器为自动分配的字段分配新 ID 时。将此属性绑定到连接器的 Results 属性，以便它可以接收更新的结果并将结果传送回 DataSet 组件。

updateResults 属性中的消息视作错误。这意味着，具有消息的增量被再次添加到 deltaPacket 中，这样，下次将 deltaPacket 发送到服务器时可以重新发送它。您必须编写代码以处理具有消息的增量，以便在将消息添加到下一个 deltaPacket 前将这些消息提供给用户并进行修改。


XUpdateResolver.xupdatePacket

可用性

Flash Player 7。

版本

Flash MX Professional 2004。

用法

resolveData.xupdatePacket

描述

属性；xml 类型的属性，包含对 DataSet 组件所作更改的 XUpdate 翻译。将此属性绑定到连接器组件的属性，后者将经过翻译的更改的更新包传送回 DataSet 组件。


创建组件概述

本章说明了如何创建您自己的组件，让其他开发人员能够使用这些组件，以及将这些组件打包以便进行部署。


新增功能

Macromedia Component Architecture 的最新版本（第 2 版）与 Macromedia Flash MX 版本（第 1 版）有着很大的不同。Macromedia 做了一些更改，旨在提高开发人员所用组件的可缩放性、性能和可扩展性。下面的列表概要说明其中的某些更改：

  • 识别动作脚本元数据的“组件检查器”面板
  • 可扩展的管理器和基类
  • 内置“实时预览”
  • 改进了编译器消息
  • 新增事件模型
  • 焦点管理
  • 基于 CSS 的样式


Flash 环境

设置 Macromedia Flash MX 2004 和 Flash MX Professional 2004 环境的目的是使类和组件的结构具备逻辑性。本节说明了应在何处存储组件文件。


FLA 文件资源

在创建组件时，首先创建 FLA 文件，然后添加外观、图形和其他资源。这些资源可以存储在 FLA 文件中的任何位置，因为 Flash 组件用户只需要编译后的组件文件，而不需要原始资源。

在 Flash 中创建组件时，应使用具备两个帧、两个图层的 SWF 文件。第一个图层是动作图层，它指向组件的动作脚本类文件。第二个图层是资源图层，它包含由组件使用的图形、元件及其他资源。


类文件

FLA 文件包含对组件的动作脚本类文件的引用。这就是所谓的将组件绑定到类文件。

动作脚本代码指定组件的属性和方法，并且，如果存在供组件继承的类，它还会定义组件从哪些类继承。对于动作脚本的源代码，必须使用 *.as 的文件命名惯例，并且以组件自身的名称来对源代码文件命名。例如，MyComponent.as 包含 MyComponent 组件的源代码。

Flash MX 2004 核心类 .as 文件位于称为 Classes/mx/Core 的单个文件夹中。其他动作脚本类文件按包名称分组，分别位于 /Classes 下各自的文件夹中。

对于自定义组件，请在 /Classes 下新建一个目录，然后将动作脚本类文件存储在该目录中。


类路径

本节对 Flash 类路径进行说明。

了解类路径

类路径是目录的编号列表，Flash 在组件的导出或 SWF 文件的生成过程中搜索该列表，以查找类文件。类路径中各条目的顺序非常重要，因为 Flash 根据先进先服务的原则使用类。在导出时，类路径中与 FLA 文件内的链接标识符相匹配的类被导入 FLA 文件，并向它们的元件注册。

全局类路径适用于 Flash 生成的所有 FLA 文件。本地类路径只适用于当前的 FLA 文件。

默认的本地类路径为空。默认的全局类路径包含两个路径：

  • $(UserConfig)/Classes (Macintosh)；$(LocalData)/Classes (Windows)
  • .

点 (.) 表示当前的工作目录。Flash 在 FLA 文件的当前目录中搜索动作脚本类。

$(UserConfig)/Classes 和 $(LocalData)/Classes 路径表示每个用户的配置目录。此目录指向以下位置：

  • 在 Windows 中，此目录为 C:\Documents and Settings\用户名\Application Data\Macromedia\Flash MX 2004\en\Configuration。
  • 在 Macintosh 中，此目录为 volume:Users:用户名:Library:Application Support:Macromedia:Flash MX 2004:en:configuration。

UserConfig 和 LocalData 目录是 Flash_root/en/Configuration 中各目录的镜像。不过，类路径不直接包含这些目录，它是相对于 UserConfig 或 LocalData 目录的路径。

更改类路径

您可以为单个 FLA 文件更改类路径（本地类路径），也可以为在 Flash 中处理的所有 FLA 文件更改类路径（全局路径）。

更改全局类路径：

  1. 选择“编辑”>“首选参数”。

    显示“首选参数”对话框。

  2. 选择“动作脚本”选项卡。
  3. 单击“动作脚本 2.0 设置”按钮。

    屏幕上会出现“动作脚本设置”对话框。

  4. 在“类路径”框中添加、删除或编辑条目。
  5. 保存所做的更改。

更改本地类路径：

  1. 选择“文件”>“发布设置”。

    出现“发布设置”对话框。

  2. 选择 Flash 选项卡。
  3. 单击“设置”按钮。

    屏幕上会出现“动作脚本设置”对话框。

  4. 在“类路径”框中添加、删除或编辑条目。
  5. 保存所做的更改。


查找组件源文件

在开发组件时，您可以将源文件存储在任何目录中。不过，为了确保 Flash 在导出组件时能够找到必要的类文件，必须在 Flash MX 2004 类路径设置中包含该目录。此外，如果要测试组件，必须将组件存储在 Flash Components 目录中。有关存储 SWC 文件的更多信息，请参阅使用 SWC 文件。


编辑元件

每个元件都有自己的时间轴。您可以给元件时间轴添加帧、关键帧和图层，就像可以给主时间轴添加这些项目一样。

创建组件时，要从元件开始。Flash 提供了以下三种编辑元件的方法：

  • 使用“在当前位置编辑”命令，在舞台上其他对象的上下文中编辑元件。其他对象显示暗淡，以便将它们与正在编辑的元件区分开。正在编辑的元件名称显示在舞台顶部的编辑栏内，位于当前场景名称的右侧。
  • 使用“在新窗口中编辑”命令，在单独的窗口中编辑元件。如果在单独的窗口中编辑元件，您可以同时查看元件和主时间轴。正在编辑的元件名称显示在舞台顶部的编辑栏内。
  • 在元件编辑模式下，通过将窗口从舞台视图更改为只显示该元件的单独视图来编辑元件。正在编辑的元件名称显示在舞台顶部的编辑栏内，位于当前场景名称的右侧。


组件代码范例

Flash MX 2004 和 Flash MX Professional 2004 包含以下组件源文件，它们有助于您开发自己的组件：

  • FLA 文件源代码：Flash MX 2004_install_dir/en/First Run/ComponentFLA/StandardComponents.fla
  • 动作脚本类文件：Flash MX 2004_install_dir/en/First Run/Classes/mx


关于创建组件

本节说明了如何创建作为现有 Flash MX 2004 类的子类的组件。随后的各节说明了如何编写组件的动作脚本类文件，以及如何针对组件的可用性和品质来编辑组件。


创建新组件元件

所有组件都是 MovieClip 对象，它们是一种元件。要创建新组件，首先必须将新元件插入新的 FLA 文件中。

添加新组件元件：

  1. 在 Flash 中，创建空白的 Flash 文档。
  2. 选择“插入”>“新建元件”。

    显示“创建新元件”对话框。

  3. 输入元件名称。为组件命名，方法是将组件中每个单词的第一个字母更改为大写字母（例如 MyComponent）。
  4. 为该行为选择“影片剪辑”单选按钮。

    “影片剪辑”对象拥有自己的多帧时间轴，该时间轴独立于主时间轴播放。

  5. 单击“高级”按钮。

    高级设置在对话框中显示。

  6. 选择“为动作脚本导出”。这样就会让 Flash 默认将组件与使用该组件的任何 Flash 内容打包在一起。
  7. 输入链接标识符。

    此标识符用作元件名称、链接名称和相关的类名称。

  8. 在“AS 2.0 类”文本框中，输入动作脚本 2.0 类的完全限定路径，它是相对于类路径设置的路径。

    注意：不要包含文件扩展名；“AS 2.0 类”文本框指向类的打包位置，而不是该文件的文件系统名称。

    如果动作脚本文件位于包内，必须包含该包的名称。此字段的值可以是类路径的相对路径，也可以是包的绝对路径（例如 myPackage.MyComponent）。

    有关设置 Flash MX 2004 类路径的更多信息，请参阅了解类路径。

  9. 大多数情况下，应取消选中“在第一帧导出”（默认选中该选项）。有关详细信息，请参阅设计组件的最佳做法。
  10. 单击“确定”。

    Flash 将元件添加到库中，然后切换到元件编辑模式。在此模式下，元件的名称显示于舞台左上角的上方，并且有一个十字丝表明该元件的注册点。

    现在，您可以编辑该元件，并将它添加到组件的 FLA 文件。（请参阅编辑元件图层。）


编辑元件图层

在创建了新元件并为它定义链接之后，您可以在元件的时间轴中定义组件的资源。

组件的元件应有两个图层。本节说明应该插入哪些图层，应该在这些图层上添加哪些内容。

有关如何编辑元件的信息，请参阅编辑元件。

编辑元件图层：

  1. 进入元件编辑模式。
  2. 重命名空图层，或创建名为 Actions 的图层。
  3. 在“动作”面板中添加一行，该行的作用是导入组件的完全限定动作脚本类文件。

    该语句依赖 Flash MX 2004 类路径设置。（有关更多信息，请参阅了解类路径。）以下范例导入 myPackage 包中的 MyComponent.as 文件：

    import myPackage.MyComponent;

    注意：在导入动作脚本类文件时，应使用 import 语句，而不应使用 include 语句。不要在类名称或包名称两边加引号。

  4. 重命名空图层，或创建名为 Assets 的图层。

    Assets 图层包含由该组件使用的所有资源。

  5. 在“动作”面板中，在第一帧内添加 stop() 动作，如以下范例所示：
    stop();

    不要向该帧添加任何图形资源。Flash Player 将在第二帧之前停止，您可以在第二帧内添加资源。

  6. 如果在扩展现有组件，请找到该组件和您使用的任何其他基类，然后将该元件的实例置于图层的第二帧内。为此，请从“组件”面板选择元件，然后将它拖至组件的“资产”图层第二帧中的舞台上。

    组件使用的任何资源（不论它是另一个组件，还是诸如位图的介质）在该组件内都应有实例。

  7. 在组件的 Assets 图层的第二帧上添加由该组件使用的所有图形资源。例如，如果要创建自定义按钮，请添加表示按钮状态（弹起、按下，等等）的图形。
  8. 创建完元件内容后，执行下列操作之一，返回文档编辑模式：
    • 单击舞台上方编辑栏左侧的“返回”按钮。
    • 选择“编辑”>“编辑文档”。
    • 单击舞台上方编辑栏内的场景名称。


添加参数

组件开发的下一步是定义组件参数。参数是用户据以修改您创建的组件实例的主要方法。

在 Flash 的以前版本中，应使用“组件检查器”面板定义参数。在 Flash MX 2004 和 Flash MX Professional 2004 中，应在动作脚本类文件中定义参数，而“组件检查器”面板负责找出公共参数并向用户显示这些参数。

下一节说明如何编写组件的外部动作脚本文件，其中包含有关添加组件参数的信息。


编写组件的动作脚本

大多数组件都会包含一些动作脚本代码。组件的类型决定着您编写动作脚本的位置和要编写的动作脚本的数量。开发组件有两种基本方法：

  • 创建不带父类的新组件
  • 扩展现有组件类

本节着重说明如何扩展现有组件。如果您在创建的组件源自其他组件的类文件，应该按照本节的说明编写外部动作脚本类文件。


扩展现有组件类

在创建源自父类的组件元件时，应将它链接到外部动作脚本 2.0 类文件。（有关定义此文件的信息，请参阅创建新组件元件。）

外部动作脚本类为组件扩展其他类、添加方法、添加 getter 和 setter，以及定义事件处理函数。要编辑动作脚本类文件，您可以使用 Flash、任何文本编辑器，也可以使用任何“集成开发环境”(IDE)。

只能从一个类继承。动作脚本 2.0 不允许多继承。


类文件的简单范例

下面是类文件的一个简单范例，该文件名为 MyComponent.as。此范例中包含从 UIObject 类继承的组件至少应有的一组导入、方法和声明。

import mx.core.UIObject;

  class myPackage.MyComponent extends UIObject {
  static var symbolName:String = "MyComponent";
  static var symbolOwner:Object = Object(myPackage.MyComponent);
  var className:String = "MyComponent";
  #include "../core/ComponentVersion.as"
  function MyComponent() {
  }
  function init(Void):Void{
    super.init();
  }
  function size(Void):Void {
    super.size();
  }
}


编写类文件的一般过程

在编写组件的动作脚本时，请使用下面的一般过程。根据所创建组件类型的不同，某些步骤是可选步骤。

本章后面会对此过程进行更详细的说明。

编写组件的动作脚本文件：

  1. 导入所有必需的类。
  2. 使用 class 关键字定义类；如有必要，请扩展父类。
  3. 定义 symbolName 和 symbolOwner 变量；它们分别是动作脚本类的元件名称和类的完全限定包名称。
  4. 将类名称定义为 className 变量。
  5. 添加版本控制信息。
  6. 输入默认成员变量。
  7. 为组件中使用的每个外观元素/链接创建变量。这样，用户就可以通过更改组件中的参数来设置不同的外观元素。
  8. 添加类常数。
  9. 为每个具有 getter/setter 的变量添加元数据关键字和声明。
  10. 定义未初始化的成员变量。
  11. 定义 getter 和 setter。
  12. 编写构造函数。它一般为空。
  13. 添加初始化方法。在创建类时调用此方法。
  14. 添加大小方法。
  15. 添加自定义方法或覆盖继承的方法。


导入类

外部动作脚本类文件的第一行应导入类所用的必要类文件。其中包括提供功能的类，如果类扩展了超类，还会包括超类。

在使用 import 语句时，导入的是完全限定的类名称，而不是类的文件名，如以下范例所示：

import mx.core.UIObject;
import mx.core.ScrollView;
import mx.core.ext.UIObjectExtensions;

您也可以使用通配符 (*) 导入给定包中的所有类。例如，以下语句导入 mx.core 包中的所有类：

import mx.core.*;

如果未在脚本中使用导入的类，那么不会在生成的 SWF 文件的字节代码中包含该类。因此，使用通配符导入整个包不一定会创建很大的 SWF 文件。


关于选择父类

大多数组件都有一些共同的行为和功能。Flash 中有两个基类专门提供这些共同的行为和功能。通过创建这些类的子类，组件一开始即可具备一组基本的方法、属性和事件。

下表简要说明这两个基类：

完整类

扩展

描述
mx.core.UIObject

MovieClip

UIObject 是所有图形对象的基类。它可以有形状、可以自己进行绘制，还可以是不可见的。

UIObject 提供以下功能：

  • 编辑样式
  • 事件处理
  • 按缩放比例调整大小
mx.core.UIComponent

UIObject

UIComponent 是所有组件的基类。它可以参与切换，接受低级事件（如键盘和鼠标输入），还可以被禁用，以便不接收鼠标和键盘输入。

UIComponent 提供以下功能：

  • 创建焦点导航
  • 启用和禁用组件
  • 调整组件大小


了解 UIObject 类

基于 Macromedia Component Architecture 第 2 版的组件源自 UIObject 类，该类包装 MovieClip 类。MovieClip 类是 Flash 中可以在屏幕上绘制的所有类的基类。许多 MovieClip 属性和方法与时间轴相关，刚开始接触 Flash 的开发人员不太熟悉时间轴这一工具。UIObject 类的创建目的是提取其中的许多细节。MovieClip 的子类只记录必要的 MovieClip 属性和方法。不过，如果需要，您也可以访问这些属性和方法。

UIObject 尝试在 MovieClip 中隐藏鼠标处理和帧处理。在加载和卸载时，在它的布局更改时（move、resize），它都会在绘制之前将事件张贴到它的侦听器（等同于 onEnterFrame）。

UIObject 提供了替代的只读变量来确定影片剪辑的位置和大小。您可以使用 move() 和 setSize() 方法改变对象的位置和大小。


了解 UIComponent 类

UIComponent 类是 UIObject 的子类。它是具有用户交互（鼠标和键盘输入）的所有组件的基类。


扩展其他类

为了能够更方便地构造组件，您可以创建任何类的子类，这样也就不需要直接扩展 UIObject 或 UIComponent 类。如果扩展任何其他组件的类，则会默认扩展这些类。您可以通过扩展“组件”字典中列出的任何组件类来创建新组件类。

Flash 包含一组可以在屏幕上绘制并且是从 UIObject 继承的类。例如，Border 类绘制其他对象周围的边框。另一个范例是 RectBorder，它是 Border 的子类，知道如何相应地调整其可视元素的大小。支持边框的所有组件应使用某个 Border 类或使用某个 Border 子类。有关这些类的详细说明，请参阅组件字典。

例如，如果您要创建一个组件，其行为与 Button 组件的行为几乎完全相同，您可以扩展 Button 类，而不必从基类重新创建 Button 类的所有功能。


编写构造函数

构造函数是具有唯一用途的方法：在初始化组件的新实例时设置属性和执行其他任务。您可以识别构造函数，因为它的名称与组件类自身的名称相同。例如，以下代码显示 ScrollBar 子组件的构造函数：

function ScrollBar() {
}

在此情况下，初始化新的滚动条时，即会调用 ScrollBar() 构造函数。

一般情况下，组件构造函数应为空，这样才能用对象的属性接口来自定义对象。此外，根据初始化调用顺序的不同，有时在构造函数中设置属性会导致覆盖默认值。

一个类只可以包含一个构造函数；动作脚本 2.0 中不允许重载构造函数。


版本控制

在发布组件时，您应该定义版本号。这样，开发人员就能知道他们是否应该升级，并且有助于解决技术支持问题。设置组件的版本号时，请使用静态变量 version，如以下范例所示：

static var version:String = "1.0.0.42";

如果创建许多组件作为组件包的一部分，则可在外部文件中包含版本号。这样即可在一个位置更新版本号。例如，以下代码导入将版本号存储于一个位置的外部文件的内容：

#include "../myPackage/ComponentVersion.as"

ComponentVersion.as 文件的内容与上述变量声明相同，如以下范例所示：

static var version:String = "1.0.0.42";


类、元件和所有者名称

要帮助 Flash 查找适当的动作脚本类和包，并且保留组件的命名，必须在组件的动作脚本类文件中设置 symbolName、symbolOwner 和 className 属性。

下表对这些变量进行说明：

变量 | 描述
symbolName | 对象的元件名称。此变量为静态、String 类型的变量。
symbolOwner | 对 createClassObject() 方法的内部调用中使用的类。该值应为完全限定的类名称，它包含包的路径。此变量为静态、Object 类型的变量。
className | 组件类的名称。此变量也在计算样式值中使用。如果存在 _global.styles[className]，它将设置组件的默认值。此变量为 String 类型。

以下范例显示自定义组件的命名：

static var symbolName:String = "MyComponent";
static var symbolOwner:Object = custom.MyComponent;
var className:String = "MyComponent";


定义 getter 和 setter

getter 和 setter 向组件属性提供可见性，并控制其他对象对这些属性的访问。

定义 getter 和 setter 方法的惯例是在方法名前加 get 或 set，接着加一个空格，然后才是属性名。最好让 get 或 set 后面的每个单词首字母大写。

存储属性值的变量不能与 getter 或 setter 同名。按照惯例，getter 和 setter 变量名前面应加两个下划线。

以下范例显示 initialColor 的声明，以及获取和设置此属性值的 getter 和 setter 方法：

...
public var __initialColor:Color = 42;
...
public function get initialColor():Number {
  return __initialColor;
}
public function set initialColor(newColor:Number) {
  __initialColor = newColor;
}

Getter 和 setter 通常与元数据关键字结合使用，用于定义可见、可绑定且具有其他属性的属性。有关更多信息，请参阅组件元数据。。


关于组件元数据

Flash 识别外部动作脚本类文件中的组件元数据语句。元数据标记可以定义组件属性、数据绑定属性和事件。Flash 解释这些语句并相应地更新开发环境。这样，您就可以一次定义这些成员，而不必在动作脚本代码和开发面板中定义。

元数据标记只可以在外部动作脚本类文件中使用。不能在 FLA 文件的动作帧中使用元数据标记。


使用元数据关键字

元数据与类声明或单个的数据字段相关。如果属性的值是 String 类型，必须在该属性两边加引号。

元数据语句绑定到动作脚本文件的下一行。在定义组件属性时，请在属性声明的前一行添加元数据标记。在定义组件事件时，请在类定义之外添加元数据标记，以便将事件绑定到整个类。

在下面的范例中，Inspectable 元数据关键字应用于 flavorStr、colorStr 和 shapeStr 参数：

[Inspectable(defaultValue="strawberry")]
public var flavorStr:String;
[Inspectable(defaultValue="blue")]
public var colorStr:String;
[Inspectable(defaultValue="circular")]
public var shapeStr:String;

在属性检查器和“组件检查器”面板的“参数”选项卡中，Flash 将所有这些参数显示为 String 类型。


元数据标记

下表说明可以在动作脚本类文件中使用的元数据标记：

标记 | 描述
Inspectable | 定义在“组件检查器”面板中向组件用户显示的属性。请参阅Inspectable。
InspectableList | 标识可检查参数的哪个子集应在属性检查器中列出。如果不向组件的类添加 InspectableList 属性，属性检查器中会显示所有可检查参数。请参阅InspectableList。
事件 | 定义组件事件。请参阅事件。
Bindable | 在“组件检查器”面板的“绑定”选项卡中显示属性。请参阅Bindable。
ChangeEvent | 标识导致数据绑定发生的事件。请参阅ChangeEvent。
IconFile | 图标的文件名，该图标在 Flash“组件”面板中表示这一组件。请参阅添加图标。

下面各节更详细地说明组件元数据标记。

Inspectable

您在组件的类定义中指定用户可编辑（或“可检查”）的组件参数，这些参数在“组件检查器”面板中显示。这样，您就可以在同一个位置维护可检查属性和基本的动作脚本代码。要查看组件属性，请将组件的实例拖到舞台上，然后在“组件检查器”面板中选择“参数”选项卡。

下图显示“文本区域”控件的“组件检查器”面板中的“参数”选项卡：

或者，您可以在属性检查器的“参数”选项卡上查看组件属性的子集，如下图所示：

Flash 使用 Inspectable 元数据关键字确定应在创作环境中显示哪些参数。此关键字的语法如下：

[Inspectable(value_type=value[,attribute=value,...])]
property_declaration name:type;

以下范例将 enabled 参数定义为可检查参数：

[Inspectable(defaultValue=true, verbose=1, category="Other")]
var enabled:Boolean;

Inspectable 关键字也支持随意键入的属性，如下所示：

[Inspectable("danger", 1, true, maybe)]

元数据声明必须紧挨着属性的变量声明且在它之前，这样才能绑定到该属性。

下表说明 Inspectable 元数据关键字的属性：

属性

类型

描述

名称

String

（可选）属性的显示名称。例如“Font Width”。如果未指定，则使用属性的名称，例如“_fontWidth”。

type

String

（可选）类型指定。如果省略，则使用属性的类型。下面是可接受的值：

  • Array
  • Object
  • List
  • String
  • Number
  • Boolean
  • Font Name
  • Color

defaultValue

String 或 Number

（必需）可检查的属性的默认值。

enumeration

String

（可选）指定以逗号分隔的属性合法值列表。

verbose

Number

（可选）指明只有在用户指定包含详细属性时，才显示这一可检查属性。如果未指定该属性，Flash 假定应显示这一属性。

category

String

（可选）将属性划分到属性检查器中的某个特定子类别中。

listOffset

Number

（可选）其作用是向后兼容 Flash MX 组件。它用作 List 值的默认索引。

variable

String

（可选）其作用是向后兼容 Flash MX 组件。它用来指定此参数所绑定的变量。

InspectableList

InspectableList 元数据关键字用于确切地指定属性检查器中应显示可检查参数的哪个子集。请将 InspectableList 与 Inspectable 组合使用，这样即可隐藏子类组件的继承属性。如果不给组件的类添加 InspectableList 元数据关键字，所有可检查的参数（包括组件父类的可检查参数）都会显示在属性检查器中。

InspectableList 的语法如下：

[InspectableList("attribute1"[,...])]
// class definition

InspectableList 关键字必须紧挨着类定义且在它之前，因为它应用于整个类。

下面的范例允许 flavorStr 和 colorStr 属性在属性检查器中显示，但排除 DotParent 类的其他可检查属性：

[InspectableList("flavorStr","colorStr")]
class BlackDot extends DotParent {
  [Inspectable(defaultValue="strawberry")]
  public var flavorStr:String;
  [Inspectable(defaultValue="blue")]
  public var colorStr:String;
  ...
}

事件

Event 元数据关键字用于定义此组件发出的事件。

此关键字的语法如下：

[Event("event_name")]

例如，下面的代码定义 click 事件：

[Event("click")]

在动作脚本文件中将 Event 语句添加到类定义之外，以便将它们绑定到类，而不绑定到类的特定成员。

下面的范例显示 UIObject 类的 Event 元数据，它处理 resize、move 和 draw 事件：

...
import mx.events.UIEvent;
[Event("resize")]
[Event("move")]
[Event("draw")]
class mx.core.UIObject extends MovieClip {
  ...
}

Bindable

数据绑定使各组件之间相互连接在一起。您可以通过“组件检查器”面板的“绑定”选项卡获得可视数据绑定。您可以从该选项卡添加、查看和删除组件的绑定。

虽然数据绑定适用于任何组件，但它的主要用途是将用户界面组件连接到外部数据源，例如 Web 服务和 XML 文档。这些数据源是带有属性的组件，它们可被绑定到其他组件属性。“组件检查器”面板是 Flash MX Professional 2004 中用来进行数据绑定的主要工具。

通过使用 Bindable 元数据关键字，可以让动作脚本类中的属性和 getter/setter 函数在“组件检查器”面板的“绑定”选项卡中显示。

Bindable 元数据关键字的语法如下：

[Bindable[readonly|writeonly[,type="datatype"]]]

Bindable 关键字必须位于属性、getter/setter 函数或其他（位于属性或 getter/setter 函数之前的）元数据关键字之前。

下面的范例将变量 flavorStr 定义为公共、可检查的变量，用户也可以从“组件检查器”面板的“绑定”选项卡访问该变量：

[Bindable]
[Inspectable(defaultValue="strawberry")]
public var flavorStr:String = "strawberry";

Bindable 元数据关键字采用三个选项来指定属性的访问类型以及属性的数据类型。下表对这些选项进行说明：

选项 | 描述
readonly | 指示 Flash 允许属性只作为绑定的源，如以下范例所示： [Bindable("readonly")]
writeonly | 指示 Flash 允许属性只作为绑定的目标，如以下范例所示： [Bindable("writeonly")]
type="datatype" | 指定正在被绑定的属性的数据类型。 如果不指定此选项，数据绑定将使用动作脚本代码中声明的属性数据类型。 如果 datatype 是注册的数据类型，则可在“架构”选项卡的“数据类型”弹出菜单中使用该功能。 以下范例将属性的数据类型设置为 String： [Bindable(type="String")]

您可以组合使用访问选项和数据类型选项，如以下范例所示：

[Bindable(param1="writeonly",type="DataProvider")]

在使用 ChangeEvent 元数据关键字时，必须使用 Bindable 关键字。有关详细信息，请参阅ChangeEvent。

有关在 Flash 创作环境中创建数据绑定的信息，请参阅数据绑定（仅限于 Flash Professional）。

ChangeEvent

ChangeEvent 元数据关键字用于在对可绑定属性进行更改时，生成一个或多个组件事件。

此关键字的语法如下：

[Bindable]
[ChangeEvent("event"[,...)]
property_declaration or get/set function

与 Bindable 类似，此关键字只能与变量声明或 getter 及 setter 函数一起使用。

在下面的范例中，组件在可绑定属性 flavorStr 的值更改时生成 change 事件：

[Bindable]
[ChangeEvent("change")]
public var flavorStr:String;

在元数据中指定的事件发生时，Flash 将向绑定到属性的任何条目通知该属性已更改。

您还可以指示组件在调用 getter 或 setter 函数时生成事件，如以下范例所示：

[Bindable]
[ChangeEvent("change")]
function get selectedDate():Date
  ...

大多数情况下，您要在 getter 上设置 change 事件，在 setter 上发送该事件。

您可以在元数据中注册多个 change 事件，如以下范例所示：

[ChangeEvent("change1", "change2", "change3")]

其中的任一事件均表示变量有更改。不一定要发生所有事件才表示变量有更改。


关于定义组件参数

在构建组件时，您可以添加定义组件外观和行为的参数。最常用的属性在“组件检查器”面板中显示为创作参数。您可以使用 Inspectable 关键字定义这些属性（请参阅Inspectable）。您也可以使用动作脚本设置所有可检查参数。使用动作脚本设置的参数将覆盖在创作过程中设置的任何值。

下面的范例在 JellyBean 类文件中设置多个组件参数，并使用 Inspectable 元数据关键字让它们显示在“组件检查器”面板中：

class JellyBean{
  // a string parameter
  [Inspectable(defaultValue="strawberry")]
  public var flavorStr:String;
  // a string list parameter
  [Inspectable(enumeration="sour,sweet,juicy,rotten",defaultValue="sweet")]
  public var flavorType:String;
  // an array parameter
  [Inspectable(name="Flavors", defaultValue="strawberry,grape,orange", verbose=1, category="Fruits")]
  var flavorList:Array;
  // an object parameter
  [Inspectable(defaultValue="belly:flop,jelly:drop")]
  public var jellyObject:Object;
  // a color parameter
  [Inspectable(defaultValue="#ffffff")]
  public var jellyColor:Color;
}

参数可以是以下任一受支持的类型：

  • Array
  • Object
  • List
  • String
  • Number
  • Boolean
  • Font Name
  • Color


核心方法的实现

所有组件必须实现两个核心方法：大小和初始化方法。如果不在自定义组件中覆盖这两个方法，Flash Player 可能会产生错误。


实现初始化方法

Flash 在创建类时调用初始化方法。初始化方法至少应调用超类的初始化方法。在调用此方法之后，才能正确设置 width、height 和 clip 参数。

下面是 Button 类的初始化方法示例，它调用超类的初始化方法、设置缩放和其他默认属性值，并从 UIObject 对象获取颜色属性的值：

function init(Void):Void {
  super.init();
  labelField.selectable = false;
  labelField.styleName = this;
  useHandCursor = false;
  // mark as using color "color"
  _color = UIObject.textColorList;
}


实现大小方法

Flash 从 setSize() 方法调用组件的大小方法，以设置组件内容的版式。大小方法至少应调用超类的大小方法，如以下范例所示：

function size(Void):Void {
  super.size();
}


关于处理事件

组件可以通过事件了解用户何时与界面进行了交互操作，也可以了解组件的外观或生命周期何时发生了重要的更改，例如创建或破坏组件或者组件的大小发生更改。

事件模型是基于 XML Events（XML 事件）规范的发送器/侦听器模型。您编写的代码向目标对象注册侦听器，这样即可在目标对象发送事件时调用侦听器。

侦听器是函数或对象，但不是方法。侦听器会接收一个事件对象作为自己的参数，该参数包含事件的名称并提供有关该事件的所有相关信息。

组件生成和发送事件并使用（侦听）其他事件。如果对象需要了解其他对象的事件，它应向该对象注册。当事件发生时，该对象通过调用一个在注册过程中请求的函数将该事件发送到所有注册的侦听器。要从同一个对象接收多个事件，必须为每个事件进行注册。

Flash MX 2004 扩展了动作脚本 on() 处理函数，以支持组件事件。在组件的类文件中声明事件并实现 addEventListener() 方法的任何组件均受支持。


公共事件

下面列出由各种不同的类广播的公共事件。如果事件适用于组件，每个组件都应尝试广播这些事件。这里没有列出所有组件的全部事件，只列出了可能会由其他组件重用的事件。虽然某些事件未指定任何参数，但所有事件都有隐式参数：对广播事件的对象的引用。

事件 | 参数 | 使用
click | 无 | 由 Button 使用，或在鼠标单击没有其他含义时。
scroll | Scrollbar.lineUp、lineDown、pageUp、pageDown、thumbTrack、thumbPosition、endScroll、toTop、toBottom、lineLeft、lineRight、pageLeft、pageRight、toLeft、toRight | 由 ScrollBar 和其他导致滚动（在滚动弹出菜单上滚动“缓冲器”）的控件使用。
change | 无 | 由 List、ComboBox 和其他文本输入组件使用。
maxChars | 无 | 当用户尝试在文本输入组件中输入过多的字符时使用。

此外，由于来自 UIComponent 的继承性，所有组件均广播下列事件：

UIComponent 事件 | 描述
load | 组件正在创建或加载其子对象。
unload | 组件正在卸载其子对象。
focusIn | 组件现在有输入焦点。某些 HTML 等效组件（ListBox、ComboBox、Button、Text）也可能发出焦点，但所有组件均发出 DOMFocusIn。
focusOut | 组件已失去输入焦点。
move | 组件已被移至新位置。
resize | 组件大小已更改。

下表对一些常见的键事件进行说明：

键事件 | 描述
keyDown | 键已被按下。code 属性包含被按下键的键控代码，ascii 属性包含它的 ASCII 代码。不要使用低级 Key 对象检查，因为 Key 对象可能尚未生成该事件。
keyUp | 键已被松开。


使用事件对象

事件对象作为参数传递到侦听器。事件对象是一种动作脚本对象，这种对象具有的属性中包含有关所发生的事件的信息。您可以在侦听器回调函数内使用事件对象来访问所广播的事件的名称，或者访问广播该事件的组件的实例名称。

例如，下列代码使用 evtObj 事件对象的 target 属性来访问 myButton 实例的 label 属性，并跟踪该值：

listener = new Object();
listener.click = function(evtObj){
  trace("The " + evtObj.target.label + " button was clicked");
}
myButton.addEventListener("click", listener);

下表列出了所有事件对象公用的属性：

属性 | 描述
type | 指明事件名称的字符串。它是必需的属性。
target | 对广播事件的组件实例的引用。一般情况下，不必明确描述该引用对象。

最常见的事件（例如， click 和 change）除了 type 外，没有其他必需的属性。

可以在发送事件之前明确地构建事件对象，如以下范例所示：

var eventObj = new Object();
eventObj.type = "myEvent";
eventObj.target = this;
dispatchEvent(eventObj);

您还可以使用快捷语法在单行上设置 type 属性的值和发送事件：

ancestorSlide.dispatchEvent({type:"revealChild", target:this});

在上面的范例中，设置 target 属性为可选，因为它是隐式的。

Flash MX 2004 文档中对每个事件的说明列出了可选和必需的事件属性。例如，ScrollBar.scroll 事件除了使用 type 和 target 属性外，还使用 detail 属性。有关详细信息，请参阅组件字典中的事件说明。


发送事件

在组件动作脚本类文件的正文中，您使用 dispatchEvent() 方法来广播事件。dispatchEvent() 方法的签名如下：

dispatchEvent(eventObj)

eventObj 参数是描述事件的事件对象（请参阅使用事件对象）。


标识事件处理函数

您在应用程序的动作脚本中定义侦听组件事件的事件处理函数对象或事件处理函数。

以下范例创建侦听器对象，处理 click 事件，并将它作为事件侦听器添加到 myButton：

listener = new Object();
listener.click = function(evtObj){
  trace("The " + evtObj.target.label + " button was clicked");
}
myButton.addEventListener("click", listener);

除了使用侦听器对象外，您还可以将函数用作侦听器。如果侦听器不属于对象，它就是函数。例如，以下代码创建侦听器函数 myHandler() 并将它注册到 myButton：

function myHandler(eventObj){
  if (eventObj.type == "click"){
    // your code here
  }
}
myButton.addEventListener("click", myHandler);

有关使用 addEventListener() 方法的详细信息，请参阅使用组件事件侦听器。

如果您知道某个特定对象是某个事件唯一的侦听器，就可以利用新事件模型始终会在组件实例上调用方法这一情况。此方法是事件名称加 Handler 一词。例如，要处理 click 事件，请编写以下代码：

myComponentInstance.clickHandler = function(o){
  // insert your code here
}

在上面的代码中，如果在回调函数中使用关键字 this，则该关键字的作用范围是 myComponentInstance。

您也可以使用支持 handleEvent() 方法的侦听器对象。不论事件的名称是什么，都会调用侦听器对象的 handleEvent() 方法。您必须使用 if...else 或 switch 语句来处理多个事件，因此，该语法不够灵活。例如，以下代码使用 if...else 语句处理 click 和 enter 事件：

myObj.handleEvent = function(o){
  if (o.type == "click"){
    // your code here
  } else if (o.type == "enter"){
    // your code here
  }
}
target.addEventListener("click", myObj);
target2.addEventListener("enter", myObj);


使用 Event 元数据

在动作脚本类文件中为每个事件侦听器添加 Event 元数据。Event 关键字的值成为 addEventListener() 方法调用中的第一个变量，如以下范例所示：

[Event("click")] // event declaration
...
class FCheckBox{
  function addEventListener(eventName:String, eventHandler:Object) {
    ... //eventName is String
  }
}

有关 Event 元数据关键字的详细信息，请参阅事件。


设置外观

用户界面 (UI) 控件完全由附加的影片剪辑组成。这意味着 UI 控件的所有资源都可以是 UI 控件影片剪辑的外部资源，因此其他组件可以使用它们。例如，如果组件需要按钮功能，则可重用现有的 Button 组件资源。

Button 组件使用单独的影片剪辑来表示它的每个状态（FalseDown、FalseUp、Disabled、Selected，等等）。不过，您可以使自定义影片剪辑的“调用外观”与这些状态相关联。在运行时，新旧影片剪辑都会导出到 SWF 文件中。旧状态会成为不可见状态，以让位于新影片剪辑。在创作时及运行时更改外观的这一功能称为设置外观。

要在组件中使用设置外观，请为组件中使用的每个外观元素/链接创建变量。这样，任何用户均可通过更改组件中的参数来设置不同的外观元素，如以下范例所示：

var falseUpSkin = "mySkin";

“mySkin”名称随后用作 MovieClip 元件的链接名称，该元件显示 false up（假弹起）外观。

以下范例显示 Button 组件各种状态的外观变量：

var falseUpSkin:String  = "ButtonSkin";
var falseDownSkin:String  = "ButtonSkin";
var falseOverSkin:String = "ButtonSkin"
var falseDisabledSkin:String = "ButtonSkin";
var trueUpSkin:String = "ButtonSkin";
var trueDownSkin:String = "ButtonSkin";
var trueOverSkin:String = "ButtonSkin";
var trueDisabledSkin:String = "ButtonSkin";
var falseUpIcon:String = "";
var falseDownIcon:String = "";
var falseOverIcon:String = "";
var falseDisabledIcon:String = "";
var trueUpIcon:String = "";
var trueDownIcon:String = "";
var trueOverIcon:String = "";
var trueDisabledIcon:String = "";


添加样式

添加样式是这样一种过程：它向某个类注册组件中的所有图形元素，并让该类在运行时控制图形的配色方案。组件实现中无需任何特殊代码即可支持样式。样式完全在基类和外观中实现。

有关样式的详细信息，请参阅使用样式自定义组件的颜色和文本。


使组件可访问

使各类残障人士均可访问 Web 内容的需求在不断增长。使用屏幕阅读器软件使视觉障碍者能够使用 Flash 应用程序中的可视内容，这种软件可以提供对屏幕内容的声音描述。

Flash MX 2004 包含以下辅助功能：

  • 自定义焦点导航
  • 自定义键盘快捷键
  • 基于屏幕的文档和屏幕创作环境
  • Accessibility 类

在创建组件时，您可以包含使组件与屏幕阅读器进行通信的动作脚本。随后，在开发人员使用这些组件在 Flash 中构建应用程序时，他们可以使用“辅助功能”面板配置每个组件实例。

在组件的 FLA 文件中添加下面这行，它应与您添加的其他动作脚本调用位于同一图层：

mx.accessibility.ComponentName.enableAccessibility();

例如，下面一行启用 MyButton 组件的辅助功能：

mx.accessibility.MyButton.enableAccessibility();

开发人员将 MyButton 组件添加到应用程序时，可以使用“辅助功能”面板来使其可由屏幕阅读器访问。

有关“辅助功能”面板和 Flash 其他功能的信息，请参阅创建辅助内容。


导出组件

Flash MX 2004 将组件导出为组件包（SWC 文件）。在分发组件时，您只需向用户提供 SWC 文件。此文件包含与组件相关的所有代码、SWF 文件、图像和元数据，因此用户可以方便地将它放到自己的 Flash 环境中。

本节对 SWC 文件进行说明，并解释如何在 Flash 中导入和导出 SWC 文件。


了解 SWC 文件

SWC 文件是类似 zip 的文件（通过 PKZip 归档格式打包和展开），它是由 Flash 创作工具生成。

下表对 SWC 文件的内容进行说明。

文件 | 描述
catalog.xml | （必需）列出组件包及其各个组件的内容，并用作 SWC 文件内其他文件的目录。
源代码 | 如果使用 Flash MX 2004 创建组件，源代码就是包含组件类声明的一个或多个动作脚本文件。 源代码仅在创建组件子类时用来检查类型，它不由创作工具编译，因为编译后的字节代码已在 SWF 文件中。 源代码可能包含内部类定义，这些定义中不包含任何函数主体，其目的仅仅是进行类型检查。
实现 SWF 文件 | （必需）实现组件的 SWF 文件。它们是可以在单个 SWF 文件中定义的一个或多个组件。如果使用 Flash MX 2004 创建组件，那么每个 SWF 文件只会导出一个组件。
实时预览 SWF 文件 | （可选）如果指定，这些 SWF 文件即可在创作工具中用于“实时预览”。如果省略，则将实现 SWF 文件用于“实时预览”。几乎所有情况下均可省略“实时预览”SWF 文件，只有在组件外观取决于动态数据（例如，显示 Web 服务调用结果的文本字段）时，才应包含此类文件。
调试信息 | （可选）与实现 SWF 文件对应的 SWD 文件。它的文件名始终与 SWF 文件的文件名相同，但扩展名为 .swd。如果在 SWC 文件中包含此类文件，则允许调试组件。
图标 | （可选）包含 18 x 18、每像素 8 位图标的 PNG 文件，用来在创作工具用户界面中显示组件。如果未提供图标，则显示默认图标。（请参阅添加图标。）
属性检查器 | （可选）如果指定，此 SWF 文件将用作创作工具中的自定义属性检查器。如果省略，则向用户显示默认属性检查器。

要查看 SWC 文件的内容，您可以使用任何支持 PKZip 格式的压缩工具（包括 WinZip）打开该文件。

从 Flash 环境生成 SWC 文件后，您可以选择在 SWC 文件中包含其他文件。例如，您可能需要包含 Read Me 文件，如果需要用户访问组件的源代码，可能还需要包含 FLA 文件。

多个 SWC 文件展开到单个目录中，因此每个组件必须具有唯一的文件名，以免发生冲突。


使用 SWC 文件

本节说明了如何创建和导入 SWC 文件。您应向组件用户提供有关导入 SWC 文件的说明。

创建 SWC 文件

在 Flash MX 2004 和 Flash MX Professional 2004 中，您可以将影片剪辑导出为 SWC 文件，以创建 SWC 文件。在创建 SWC 文件时，Flash 报告编译时错误，就像在测试 Flash 应用程序一样。

导出 SWC 文件：

  1. 在 Flash 库中选择一个项目。
  2. 右键单击 (Windows) 或按住 Control 键单击 (Macintosh) 该项目，然后选择“导出 SWC 文件”。
  3. 保存 SWC 文件。

将组件 SWC 文件导入 Flash

在向其他开发人员分发组件时，您可以包含以下说明，以便他们能够立即安装和使用组件。

在 Flash 创作环境中使用 SWC 文件：

  1. 关闭 Flash 创作环境。
  2. 将 SWC 文件复制到 flash_root/en/First Run/Components 目录中。
  3. 启动 Flash 创作环境或重新加载“组件”面板。

    组件的图标应显示在“组件”面板中。


组件和易用性

您在创建完组件并准备将其打包之后，可以使组件更易于您的用户使用。本节说明了向组件添加可用性的一些技巧。


添加图标

您可以添加在 Flash 创作环境的“组件”面板中表示组件的图标。

添加组件的图标：

  1. 创建新图像。

    该图像必须为 18 x 18 像素，并且保存为 PNG 格式。它的 Alpha 透明度必须是 8 位，左上角的像素必须是透明的，以支持遮罩。

  2. 在组件动作脚本类文件中的类定义之前添加以下定义：
    [IconFile("component_name.png")]
  3. 将该图像添加到 FLA 文件所在的同一目录。在导出 SWC 文件时，Flash 将在归档的根级包含该图像。


使用“实时预览”

“实时预览”功能在默认情况下处于启用状态，它使您可以在舞台上查看组件将在发布的 Flash 内容中出现的近似大小和外观。

使用 V2 结构创建组件时，无需添加“实时预览”。组件 SWC 文件包含实现 SWF 文件，以及在 Flash 舞台上使用该 SWF 文件的组件。


添加工具提示

当用户将鼠标滚到组件名称上，或滚到 Flash 创作环境的“组件”面板中的图标上时，即会显示工具提示。

要向组件添加工具提示，请在组件动作脚本类文件中的类定义之外使用 tiptext 关键字。您必须使用星号 (*) 注释掉该关键字并在它前面加 @ 符号，这样编译器才能正确识别它。

以下范例显示 CheckBox 组件的工具提示：

* @tiptext 基本 CheckBox 组件。扩展按钮。


设计组件的最佳做法

设计组件时请采用以下做法：

  • 尽量使文件保持最小。
  • 通过使功能通用来让组件尽量保持可重用。
  • 使用新事件模型，而不使用 on(event) 语法。
  • 使用 Border 类（而不使用图形元素）绘制对象周围的边框。
  • 使用基于标记的外观设置。
  • 使用 symbolName 属性。
  • 假设初始状态。因为样式属性现在位于对象上，所以您可以为样式和属性设置初始设置，这样，在构造对象时，您的初始化代码就不必设置这些样式和属性，除非用户覆盖默认状态。
  • 在定义元件时，除非绝对必要，否则不要选择“在第一帧导出”选项。Flash 只是在您的 Flash 应用程序使用组件前才加载组件，因此，如果选择此选项，Flash 会在其父组件的第一帧中预加载该组件。通常不在第一帧中预加载组件的原因是出于 Web 上的一些考虑：组件在预加载器开始之前加载，从而使预加载器无效。

上一页


Introduction to the Flash JavaScript Dictionary

The documents on this site assume you are familiar with JavaScript or ActionScript syntax and with basic programming concepts such as functions, parameters, and data types. They also assume that you understand the concept of working with objects and properties. For a reference on JavaScript, see the Netscape JavaScript documentation.

Netscape DevEdge Online has a JavaScript Developer Central site (http://developer.netscape.com/tech/javascript/index.html) that contains documentation and articles useful for understanding JavaScript. The most valuable resource is the Core JavaScript Guide.


Overview of the Macromedia Flash JavaScript API

The ActionScript language lets you write scripts to perform actions in the Macromedia Flash Player environment (that is, while a SWF file is playing). The Flash JavaScript API (JSAPI) lets you write scripts to perform several actions in the Flash authoring environment (that is, while a user has the Flash program open). You can write scripts that act like commands and scripts that add tools to the Tools panel. These scripts can be used to help automate the authoring process.

The Flash JSAPI is designed to resemble the Macromedia Dreamweaver and Macromedia Fireworks JavaScript API (which were designed based on the Netscape JavaScript API). The Flash JSAPI is based on a Document Object Model (DOM), which allows Flash documents to be accessed using JavaScript objects. The Flash JSAPI includes all elements of the Netscape JavaScript API, plus the Flash DOM. These added objects and their methods and properties are described in this document. You can use any of the elements of the native JavaScript language in a Flash script, but only elements that make sense in the context of a Flash document will have an effect.

You can use Macromedia Flash MX 2004 Professional or your preferred text editor to write or edit Flash JavaScript (JSFL) files. If you use Flash Professional, these files have a .jsfl extension by default. To make a script appear in the Commands menu, save its JSFL file in the following folder:

  • Windows 2000 or Windows XP:

    C:\Documents and Settings\<user>\Local Settings\ Application Data\Macromedia\ Flash MX2004\<language>\Configuration\Commands

  • Windows 98:

    C:\Windows\Application Data\Macromedia\Flash MX 2004\ <language>\ Configuration\Commands

  • Mac OS X:

    Hard Drive/Users/<userName>/Library/Application Support/Macromedia/Flash MX 2004/<language>/Configuration/Commands

JSFL files that create tools need to be stored in the Tools folder, which can be found in the following location:

  • Windows 2000 or Windows XP:

    C:\Documents and Settings\<user>\Local Settings\ Application Data\Macromedia\ Flash MX2004\<language>\Configuration\Tools

  • Windows 98:

    C:\Windows\Application Data\Macromedia\Flash MX 2004\ <language>\ Configuration\Tools

  • Mac OS X:

    Hard Drive/Users/<userName>/Library/Application Support/Macromedia/Flash MX 2004/<language>/Configuration/Tools

If a JSFL file has other files that go with it, such as XML files, they should be stored in the same directory as the JSFL file.

You can also create a JSFL file by selecting one or more commands in the History panel and then clicking the Save As Command button in the History panel or selecting the Save As Command from the Options pop-up menu. The command (JSFL) file is saved in the Commands folder. You can then open the file and edit it the same as any other script file.

To run a script, do one of the following actions:

  • Select Commands > Command Name.
  • Select Commands > Run Command and then select the script to run.

To add a tool implemented in a JSFL file to the Flash Tools panel:

  1. Copy the JSFL file for the tool and any other associated files to the Tools folder.
  2. Select Edit > Customize Tools Panel (Windows) or Flash > Customize Tools Panel (Macintosh).
  3. Add the tool to the list of available tools.
  4. Click OK.

You can embed individual JSAPI commands in ActionScript files by using the MMExecute() command, which is documented in the Flash MX 2004 ActionScript Dictionary. However, the MMExecute() command has an effect only when it is used in the context of a custom user-interface element, such as a component Property inspector, or a SWF panel within the authoring environment. Even if called from ActionScript, JSAPI commands have no effect in Flash Player or outside the authoring environment.

The JSAPI also contains a number of methods that let you implement extensibility using a combination of JavaScript and custom C code. For more information, see C-Level Extensibility.

Flash JavaScript objects contain properties and methods. Properties, each defined as a primitive type such as Boolean, integer, Array, Float, or reference data types such as color, object, point, rect, and String, are used to describe the object. Methods are used to perform a function on the object. To access the properties or methods of an object, dot notation is used. Also, most objects have getProperty() and setProperty() methods, which get the value for a specified property or set the value for a specified property. Most methods take parameters that are used to specify different options for the method.


About the Flash Document Object Model

The DOM for the Flash JavaScript API consists of a set of top-level functions (see Top-level functions) and the top-level flash object. The flash object is guaranteed to be available to a script because it always exists when the Flash authoring environment is open. When referring to this object, you can use flash or fl. For example, to close all open files, you can use either of the following statements:

flash.closeAll();
fl.closeAll();

The flash object contains the following child objects:

Object | How to access
componentsPanel object | Use fl.componentsPanel to access the componentsPanel object. This object corresponds to the Components panel in the Flash authoring environment.
Document object | Use fl.documents to retrieve an array of all the open documents; use fl.documents[index] to access a particular document; use fl.getDocumentDOM() to access the current document (the one with focus).
drawingLayer object | Use fl.drawingLayer to access the drawingLayer object.
Effect object | Use fl.effects to retrieve an array of effect descriptors that corresponds to the effects registered when Flash starts; use fl.effects[index] to access a particular effect; use fl.activeEffect to access the effect descriptor for the current effect being applied.
Math object | Use fl.Math to access the Math object.
outputPanel object | Use fl.outputPanel to access the outputPanel object. This object corresponds to the Output panel in the Flash authoring environment.
Tools object | fl.tools is an object that has a toolObjs property. The toolObjs property is an array of toolObj objects. Each toolObj object represents a tool in the Flash Tools panel.
ToolObj object | Use fl.tools.toolObjs to retrieve an array of all tool objects (see tools.toolObjs); use fl.tools.activeTool to access the currently active tool object (see tools.activeTool).
XMLUI object | Use fl.xmlui to access an XML User Interface (XMLUI) object. The XMLUI object provides the ability to get and set properties of an XMLUI dialog box.


The Document object

An important property of the top-level flash object is the documents property. The documents property is contains an array of Document objects that each represent one of the FLA files currently open in the authoring environment. The properties of each Document object represent most of the elements that a FLA file can contain. Therefore, a large portion of the DOM is composed of child objects and properties of the Document object.

To refer to the first open document, for example, use the statement flash.documents[0]. or fl.documents[0]. The first document is the first Flash document that was opened during the current session in the authoring environment. When the first opened document is closed, the indexes of the other open documents are decremented.

To find a particular document's index use fl.findDocumentIndex(nameOfDocument).

To access the document that is currently focused, use the statement flash.getDocumentDOM() or fl.getDocumentDOM(). The latter is the syntax used in most of the examples in this document.

To find a particular document in the documents array, iterate through the array and test each document for its name property.

All the objects in the DOM that aren't listed in the previous table (see The Flash Document Object Model) are accessed from the Document object. For example, to access the library of a document, you use the library property of the Document object, which retrieves a library object:

fl.getDocumentDOM().library

To access the array of items in the library, you use the items property of the Library object; each element in the array is an Item object:

fl.getDocumentDOM().library.items

To access a particular item in the library, you specify a member of the items array:

fl.getDocumentDOM().library.items[0]

In other words, the Library object is a child of the Document object, and the Item object is a child of the Library object.


Specifying the target of an action

Unless otherwise specified, methods affect the current focus or selection. For example, the following script doubles the size of the current selection because no particular object is specified:

fl.getDocumentDOM().scaleSelection(2, 2);

In some cases, you might want an action to specifically target the currently selected item in the Flash document. To do this, use the array that the Document.selection property contains. The first element in the array represents the currently selected item, as shown in the following example:

var accDescription = fl.getDocumentDOM().selection[0].description;

The following script doubles the size of the first element on the Stage that is stored in the element array, instead of the current selection:

var element = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0];
if (element) {
  element.width = element.width*2;
  element.height = element.height*2;
}

You can also do something such as loop through all the elements on the Stage and increase the width and height by a specified amount, as shown in the following example:

var elementArray =
  fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements;
  for (var i=0; i < elementArray.length; i++) {
    var offset = 10;
    elementArray[i].width += offset;
    elementArray[i].height += offset;
  }


Summary of the DOM structure

The following list displays the DOM structure in outline format. Numbers at the beginning of each line represent the level of an object. For example, an object preceded by "03" is a child of next highest "02" object, which, in turn, is a child of the next highest "01" object.

In some cases, an object is available by specifying a property of its parent object. For example, the document.timelines property contains an array of Timeline objects. These properties are noted in the following outline.

Finally, some objects are subclasses of other objects, rather than being children of other objects. An object that is a subclass of another object has methods and/or properties of its own in addition to the methods and properties of the other object (the superclass). Subclasses share the same level in the hierarchy as their superclass. For example, Item is a superclass of BitmapItem. These relationships are illustrated in the following outline:

01 Top-level functions
01 flash object
  02 componentsPanel object
  02 Document object (fl.documents array)
    03 Matrix object
    03 Fill object
    03 Stroke object
    03 library object
      04 Item object (library.items array)
      04 BitmapItem object (subclass of Item object)
      04 folderItem object (subclass of Item object)
      04 fontItem object (subclass of Item object)
      04 SoundItem object (subclass of Item object)
      04 SymbolItem object (subclass of Item object)
      04 VideoItem object (subclass of Item object)
    03 Timeline object (document.timelines array)
      04 Layer object (timeline.layers array)
        05 Frame object (layer.frames array)
          06 Element object (frame.elements array)
            07 Matrix object (Element.matrix)
          06 Instance object (abstract class, subclass of Element object)
          06 BitmapInstance object (subclass of Instance object)
          06 CompiledClipInstance object (subclass of Instance object)
          06 ComponentInstance object (subclass of SymbolInstance object)
            07 Parameter object (ComponentInstance.parameters)
          06 EmbeddedVideoInstance object (subclass of Instance object)
          06 LinkedVideoInstance object (subclass of Instance object)
          06 SymbolInstance object (subclass of Instance object)
          06 Text object (subclass of Element object)
            07 TextRun object (text.textRuns array)
              08 TextAttrs object (textRun.textAttrs array)
          06 Shape object (subclass of Element object)
            07 Contour object (shape.contours array)
              08 HalfEdge object
                09 Vertex object
                09 Edge object
            07 Edge object (shape.edges array)
              08 HalfEdge object
                09 Vertex object
                09 Edge object
            07 Vertex object (shape.vertices array)
              08 HalfEdge object
                09 Vertex object
                09 Edge object
    03 ScreenOutline object
      04 Screen object (screenOutline.screens array)
        05 Parameter object (screen.parameters array)
  02 drawingLayer object
    03 Path object
      04 Contour object
  02 Effect object (fl.effects array)
  02 Math object
  02 outputPanel object
  02 Tools object (fl.tools array)
    03 ToolObj object (tools.toolObjs array)
  02 XMLUI object


The PolyStar example

Included with this documentation is an example Flash JSAPI script named PolyStar.jsfl. (You can download the file at www.macromedia.com/go/jsapi_info_en).This script replicates the PolyStar tool that can be found in the Flash Tools panel. The PolyStar.jsfl file demonstrates how to build the PolyStar tool using the JSAPI. It includes detailed comments that help describe what the lines of code are doing. Read this file to gain a better understanding of how the JSAPI can be used.

Flash MX 2004 includes an earlier version of the PolyStar.jsfl script that must be removed in order to use the updated PolyStar.jsfl file.

To remove the earlier version of the PolyStar.jsfl that was installed with Flash MX 2004:

  1. Select Edit > Customize Tools Panel (Windows) or Flash > Customize Tools Panel (Macintosh).
  2. In the dialog box, click the Rectangle tool on the left side of the dialog box. The Rectangle tool and the PolyStar tool should now be listed in the Current Selection list on the right side of the dialog box.
  3. Select the PolyStar tool in the Current Selection list.
  4. Click Remove.
  5. Click OK.
  6. Quit Flash.
  7. Remove only the PolyStar.jsfl file from the appropriate Tools folder listed in the Overview of the Macromedia Flash JavaScript API section. The PolyStar.xml and PolyStar.png files are needed by the new PolyStar.jsfl file that you will install later. When you restart Flash, the PolyStar tool no longer appears in the Customize Tools Panel dialog box.

To install the updated PolyStar example files:

  1. Copy the new PolyStar.jsfl file to the Tools folder. The PolyStar.xml and PolyStar.png files that you see in this folder are needed by the new PolyStar.jsfl file.
  2. Restart Flash.
  3. Select Edit > Customize Tools Panel (Windows) or Flash > Customize Tools Panel (Macintosh). You should see PolyStar tool in the available tools list.
  4. Click the Rectangle tool at the left side of the dialog box. The Rectangle Tool should appear in the Current Selection list at the right side of the dialog box.
  5. Select the PolyStar tool from the Available Tools list.
  6. Click Add.
  7. Click OK. The PolyStar tool now appears in the Rectangle tool pop-up menu.


Top-level functions overview

This chapter describes the top-level functions that are available when creating extensible tools, listed in alphabetical order. The following list shows the functions:


activate()

Availability

Flash MX 2004.

Usage

function activate() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called when the extensible tool becomes active; that is, when the tool is selected in the Tools panel. Any setup the tool needs to do should be performed here.

Example

function activate() {
  fl.trace( "Tool is active" );
}


configureTool()

Availability

Flash MX 2004.

Usage

function configureTool() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called when Flash opens and the tool is loaded. Use this function to set any information Flash needs to know about the tool.

Example

The following examples show two possible implementations of this function:

function configureTool() {
  theTool = fl.tools.activeTool;
  theTool.setToolName("myTool");
  theTool.setIcon("myTool.png");
  theTool.setMenuString("My Tool's menu string");
  theTool.setToolTip("my tool's tool tip");
  theTool.setOptionsFile( "mtTool.xml" );
}

function configureTool() {
  theTool = fl.tools.activeTool;
  theTool.setToolName("ellipse");
  theTool.setIcon("Ellipse.png");
  theTool.setMenuString("Ellipse");
  theTool.setToolTip("Ellipse");
  theTool.showTransformHandles( true );
}


deactivate()

Availability

Flash MX 2004.

Usage

function deactivate() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called when the tool becomes inactive; that is, when the active tool changes from this tool to another one. Use this function to perform any cleanup the tool needs.

Example

function deactivate() {
  fl.trace( "Tool is no longer active" );
}


keyDown()

Availability

Flash MX 2004.

Usage

function keyDown() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called when the tool is active and the user presses a key. The script should call tools.getKeyDown() to determine which key was pressed.

Example

function keyDown() {
  fl.trace("key " + fl.tools.getKeyDown() + " was pressed");
}


keyUp()

Availability

Flash MX 2004.

Usage

function keyUp() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called when the tool is active and a key is released.

Example

function keyUp() {
  fl.trace("Key is released");
}


mouseDoubleClick()

Availability

Flash MX 2004.

Usage

function mouseDoubleClick() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called when the mouse button is double-clicked on the Stage.

Example

function mouseDblClk() {
  fl.trace("Mouse was double-clicked");
}


mouseDown()

Availability

Flash MX 2004.

Usage

function mouseDown( [ pt ] ) {
  // statements
}

Parameters

The optional pt parameter is a point that specifies the location of the mouse when the button is pressed. It is passed to the function when the mouse button is pressed.

Returns

Nothing.

Description

This function is called whenever the tool is active and the mouse button is pressed while the pointer is over the Stage.

Example

function mouseDown() {
  fl.trace("Mouse button has been pressed");
}


mouseMove()

Availability

Flash MX 2004.

Usage

function mouseMove( [ pt ] ) {
  // statements
}

Parameters

The optional pt parameter is a point that specifies the current location of the mouse. It is passed to the function whenever the mouse moves, which tracks the mouse location. If the Stage is in Edit or Edit-in-place mode, the point coordinates are relative to the object being edited. Otherwise, the point coordinates are relative to the Stage.

Returns

Nothing.

Description

This function is called whenever the mouse moves over a specified point on the Stage. The mouse button can be down or up.

Example

function mouseMove() {
  fl.trace("moving");
}


mouseUp()

Availability

Flash MX 2004.

Usage

function mouseUp() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called whenever the mouse button is released after being pressed on the Stage.

Example

function mouseUp() {
  fl.trace("mouse is up");
}


notifySettingsChanged()

Availability

Flash MX 2004.

Usage

function notifySettingsChanged() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called whenever a tool is active and the user changes its options in the Property inspector. You can use tools.activeToolto query the current values of the options.

Example

function notifySettingsChanged() {
  var theTool = fl.tools.activeTool;
  var newValue = theTool.myProp;
}


setCursor()

Availability

Flash MX 2004.

Usage

function setCursor() {
  // statements
}

Parameters

None.

Returns

Nothing.

Description

This function is called whenever the mouse moves, to allow the script to set custom pointers. The script should call tools.setCursor() to specify the pointer to use. See tools.setCursor() for a list that shows which pointers correspond to which integer values.

Example

function setCursor() {
  fl.tools.setCursor( 1 );
}


Objects overview

This chapter describes the Flash JSAPI objects, listed in alphabetical order. The objects are listed in the following table:

Object | Description
BitmapInstance object | The BitmapInstance object is a subclass of the Instance object and represents a bitmap in a frame.
BitmapItem object | A BitmapItem object refers to a bitmap in the library of a document. The BitmapItem object is a subclass of the Item object.
CompiledClipInstance object | The CompiledClipInstance object is a subclass of the Instance object.
ComponentInstance object | The ComponentInstance object is a subclass of the SymbolInstance object and represents a component in a frame.
componentsPanel object | The componentsPanel object, which represents the Components panel, is a property of the flash object and can be accessed by fl.componentsPanel.
Contour object | A Contour object represents a closed path of half edges on the boundary of a shape.
Document object | The Document object represents the Stage.
drawingLayer object | The drawingLayer object is accessible from JavaScript as a child of the flash object.
Edge object | The Edge object represents an edge of a shape on the Stage.
Effect object | The Effect object represents an instance of a Timeline effect.
Element object | Everything that appears on the Stage is of the type Element.
EmbeddedVideoInstance object | The EmbeddedVideoInstance object is a subclass of the Instance object.
Fill object | The Fill object contains all the properties of the Fill color setting of the Tools panel or of a selected shape.
flash object | The flash object represents the Flash application.
folderItem object | The folderItem object is a subclass of the Item object.
fontItem object | The fontItem object is a subclass of the Item object.
Frame object | The Frame object represents frames in the layer.
HalfEdge object | Directed side of the edge of a Shape object.
Instance object | The Instance object is a subclass of the Element object.
Item object | The Item object is an abstract base class.
Layer object | The Layer object represents a layer in the Timeline.
library object | The library object represents the Library panel.
LinkedVideoInstance object | The LinkedVideoInstance object is a subclass of the Instance object.
Math object | The Math object is available as a read-only property of the flash object; see fl.Math.
Matrix object | The Matrix object represents a transformation matrix.
outputPanel object | The outputPanel object represents the Output panel, which displays troubleshooting information such as syntax errors.
Parameter object | The Parameter object type is accessed from the screen.parameters array (which corresponds to the screen Property inspector in the Flash authoring tool) or by the componentInstance.parameters array (which corresponds to the component Property inspector in the authoring tool).
Path object | The Path object defines a sequence of line segments (straight, curved, or both), which you typically use when creating extensible tools.
Screen object | The Screen object represents a single screen in a slide or form document.
ScreenOutline object | The ScreenOutline object represents the group of screens in a slide or form document.
Shape object | The Shape object is a subclass of the Element object. The Shape object provides more precise control than the drawing APIs for manipulating or creating geometry on the Stage.
SoundItem object | The SoundItem object is a subclass of the Item object. It represents a library item used to create a sound.
Stroke object | The Stroke object contains all the settings for a stroke, including the custom settings.
SymbolInstance object | The SymbolInstance object is a subclass of the Instance object and represents a symbol in a frame.
SymbolItem object | The SymbolItem object is a subclass of the Item object.
Text object | The Text object represents a single text item in a document.
TextAttrs object | The TextAttrs object contains all the properties of text that can be applied to a subselection. This object is a subclass of the Text object.
TextRun object | The TextRun object represents a run of characters that have attributes that match all of the properties in the TextAttrs object.
Timeline object | The Timeline object represents the Flash Timeline, which can be accessed for the current document by fl.getDocumentDOM().getTimeline().
ToolObj object | A ToolObj object represents an individual tool in the Tools panel.
Tools object | The Tools object is accessible from the Flash object (fl.tools).
Vertex object | The Vertex object is the part of the shape data structure that holds the coordinate data.
VideoItem object | The VideoItem object is a subclass of the Item object.
XMLUI object | The XMLUI object provides the ability to get and set properties of an XMLUI dialog box, and accept or cancel out of one.


BitmapInstance object

Inheritance Element object > Instance object > BitmapInstance object

Availability

Flash MX 2004.

Description

The BitmapInstance object is a subclass of the Instance object and represents a bitmap in a frame.

Method summary for the BitmapInstance object

In addition to the Instance object methods, you can use the following methods with the BitmapInstance object:

Method | Description
bitmapInstance.getBits() | Method; lets you create bitmap effects by getting the bits out of the bitmap, manipulating them, and then returning them to Flash.
bitmapInstance.setBits() | Method; sets the bits of an existing bitmap element.

Property summary for the BitmapInstance object

In addition to the Instance object properties, you can use the following properties with the BitmapInstance object.

Property | Description
bitmapInstance.hPixels | Read-only property; an integer that represents the width of the bitmap, in pixels.
bitmapInstance.vPixels | Read-only property; an integer that represents the height of the bitmap, in pixels.


bitmapInstance.getBits()

Availability

Flash MX 2004.

Usage

bitmapInstance.getBits()

Parameters

None.

Returns

An object that contains width, height, depth, bits, and, if the bitmap has a color table, cTab properties. The bits element is an array of bytes. The cTab element is an array of color values of the form "#rrggbb". The length of the array is the length of the color table.

Note: The byte array is meaningful only when referenced by an external library. You typically use it only when creating an extensible tool or effect.

Description

Method; lets you create bitmap effects by getting the bits out of the bitmap, manipulating them, and then returning them to Flash. See also bitmapInstance.setBits().

Example

The following code creates a reference to the currently selected object; tests whether the object is a bitmap; and traces the height, width, and bit depth of the bitmap:

var isBitmap = fl.getDocumentDOM().selection[0].instanceType;
if(isBitmap == "bitmap"){
  var bits = fl.getDocumentDOM().selection[0].getBits();
  fl.trace("height = " + bits.height);
  fl.trace("width = " + bits.width);
  fl.trace("depth = " + bits.depth);
}


bitmapInstance.hPixels

Availability

Flash MX 2004.

Usage

bitmapInstance.hPixels

Description

Read-only property; an integer that represents the width of the bitmap, in pixels.

Example

The following code retrieves the width of the bitmap in pixels:

// Get the number of pixels in the horizontal dimension.
var bmObj = fl.getDocumentDOM().selection[0];
var isBitmap = bmObj.instanceType;
if(isBitmap == "bitmap"){
  var numHorizontalPixels = bmObj.hPixels;
}


bitmapInstance.setBits()

Availability

Flash MX 2004.

Usage

bitmapInstance.setBits(bitmap)

Parameters

The bitmap parameter is an object that contains height, width, depth, bits, and cTab properties. The height, width, and depth properties are integers. The bits property is a byte array. The cTab property is required only for bitmaps with a bit depth of 8 or less and is a string that represents a color value in the form "#rrggbb".

Note: The byte array is meaningful only when referenced by an external library. You typically use it only when creating an extensible tool or effect.

Returns

Nothing.

Description

Method; sets the bits of an existing bitmap element. This lets you create bitmap effects by getting the bits out of the bitmap, manipulating them, and then returning the bitmap to Flash.

Example

The following code tests whether the current selection is a bitmap, and then reduces the height of the bitmap by 150 pixels:

var isBitmap = fl.getDocumentDOM().selection[0].instanceType;
if(isBitmap == "bitmap"){
  var bits = fl.getDocumentDOM().selection[0].getBits();
  bits.height = -150;
  fl.getDocumentDOM().selection[0].setBits(bits);
}


bitmapInstance.vPixels

Availability

Flash MX 2004.

Usage

bitmapInstance.vPixels

Description

Read-only property; an integer that represents the height of the bitmap, in pixels.

Example

The following code gets the height of the bitmap in pixels:

// get the number of pixels in the vertical dimension
var bmObj = fl.getDocumentDOM().selection[0];
var isBitmap = bmObj.instanceType;
if(isBitmap == "bitmap"){
  var numVerticalPixels = bmObj.vPixels;
}


BitmapItem object

Inheritance Item object > BitmapItem object

Availability

Flash MX 2004.

Description

A BitmapItem object refers to a bitmap in the library of a document. The BitmapItem object is a subclass of the Item object.

Property summary for the BitmapItem object

In addition to the Item object properties, the BitmapItem object has following properties:

Property | Description
bitmapItem.allowSmoothing | A Boolean value; set to true to allow smoothing of a bitmap.
bitmapItem.compressionType | A string that determines the type of image compression applied to the bitmap.
bitmapItem.quality | An integer; to use the default document quality, specify -1; otherwise, specify a value from 0 to 100.
bitmapItem.useImportedJPEGQuality | A Boolean value; to use the default imported JPEG quality, specify true.


bitmapItem.allowSmoothing

Availability

Flash MX 2004.

Usage

bitmapItem.allowSmoothing

Description

Property; set to true to allow smoothing of a bitmap; otherwise, set to false.

Example

The following code sets the allowSmoothing property of the first item in the library of the current document to true:

fl.getDocumentDOM().library.items[0].allowSmoothing = true;
alert(fl.getDocumentDOM().library.items[0].allowSmoothing);


bitmapItem.compressionType

Availability

Flash MX 2004.

Usage

bitmapItem.compressionType

Description

Property; a string that determines the type of image compression applied to the bitmap. Acceptable values are "photo" or "lossless". If bitmapItem.useImportedJPEGQuality is false, "photo" corresponds to JPEG using a quality from 0 to 100; if bitmapItem.useImportedJPEGQuality is true, "photo" corresponds to JPEG using the default document quality value. The value "lossless" corresponds to GIF or PNG formats.

Example

The following code sets the compressionType property of the first item in the library of the current document to "photo".

fl.getDocumentDOM().library.items[0].compressionType = "photo";
alert(fl.getDocumentDOM().library.items[0].compressionType);


bitmapItem.quality

Availability

Flash MX 2004.

Usage

bitmapItem.quality

Description

Property; an integer that specifies the quality of the bitmap. To use the default document quality, specify -1; otherwise, specify an integer from 0 to 100. Available only for JPEG compression.

Example

The following code sets the quality property of the first item in the library of the current document to 65.

fl.getDocumentDOM().library.items[0].quality = 65;
alert(fl.getDocumentDOM().library.items[0].quality);


bitmapItem.useImportedJPEGQuality

Availability

Flash MX 2004.

Usage

bitmapItem.useImportedJPEGQuality

Description

Property; a Boolean value. To use the default imported JPEG quality, specify true; otherwise, specify false. Available only for JPEG compression.

Example

The following code sets the useImportedJPEGQuality property of the first item in the library of the current document to true.

fl.getDocumentDOM().library.items[0].useImportedJPEGQuality = true;
alert(fl.getDocumentDOM().library.items[0].useImportedJPEGQuality);


CompiledClipInstance object

Inheritance Element object > Instance object > CompiledClipInstance object

Availability

Flash MX 2004.

Description

The CompiledClipInstance object is a subclass of the Instance object. It is essentially an instance of a movie clip that has been converted to a compiled clip library item.

Property summary for the CompiledClipInstance object

In addition to the properties of the Instance object, the CompiledClipInstance object has the following properties:

Property | Description
compiledClipInstance.accName | A string that is equivalent to the Name field in the Accessibility panel.
compiledClipInstance.actionScript | A string that represents the ActionScript for this instance; equivalent to symbolInstance.actionScript.
compiledClipInstance.description | A string that is equivalent to the Description field in the Accessibility panel.
compiledClipInstance.forceSimple | A Boolean value that enables and disables the children of the object to be accessible.
compiledClipInstance.shortcut | A string that is equivalent to the Shortcut field in the Accessibility panel.
compiledClipInstance.silent | A Boolean value that enables or disables the accessibility of the object; equivalent to the inverse logic of Make Object Accessible setting in the Accessibility panel.
compiledClipInstance.tabIndex | An integer that is equivalent to the Tab Index field in the Accessibility panel.


compiledClipInstance.accName

Availability

Flash MX 2004.

Usage

compiledClipInstance.accName

Description

A string that is equivalent to the Name field in the Accessibility panel. Screen readers identify objects by reading the name aloud.

Example

// get the name of the object.
var theName = fl.getDocumentDOM().selection[0].accName;
// set the name of the object.
fl.getDocumentDOM().selection[0].accName = 'Home Button';


compiledClipInstance.actionScript

Availability

Flash MX 2004.

Usage

compiledClipInstance.actionScript

Description

A string that represents the ActionScript for this instance; equivalent to symbolInstance.actionScript.

Example

The following code assigns ActionScript to specified elements:

//assign some ActionScript to a specified Button compiled clip instance.
fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0]
  .actionScript = "on(click) {trace('button is clicked');}";
//assign some ActionScript to the currently selected Button compiled clip instance.
fl.getDocumentDOM().selection[0].actionScript =
  "on(click) {trace('button is clicked');}";


compiledClipInstance.description

Availability

Flash MX 2004.

Usage

compiledClipInstance.description

Description

A string that is equivalent to the Description field in the Accessibility panel. The description is read by the screen reader.

Example

The following example illustrates getting and setting the description property:

// get the description of the current selection
var theDescription = fl.getDocumentDOM().selection[0].description;
// set the description of the current selection
fl.getDocumentDOM().selection[0].description =
  "This is compiled clip number 1";


compiledClipInstance.forceSimple

Availability

Flash MX 2004.

Usage

compiledClipInstance.forceSimple

Description

A Boolean value that enables and disables the children of the object to be accessible. This is equivalent to the inverse logic of the Make Child Objects Accessible setting in the Accessibility panel. If forceSimple is true, it is the same as the Make Child Objects Accessible option being unchecked. If forceSimple is false, it is the same as the Make Child Object Accessible option being checked.

Example

The following example illustrates getting and setting the forceSimple property.

// query if the children of the object are accessible
var areChildrenAccessible = fl.getDocumentDOM().selection[0].forceSimple;
// allow the children of the object to be accessible
fl.getDocumentDOM().selection[0].forceSimple = false;


compiledClipInstance.shortcut

Availability

Flash MX 2004.

Usage

compiledClipInstance.shortcut

Description

A string that is equivalent to the Shortcut field in the Accessibility panel. The shortcut is read by the screen readers. This property is not available for dynamic text fields.

Example

The following example illustrates getting and setting the shortcut property:

// get the shortcut key of the object
var theShortcut = fl.getDocumentDOM().selection[0].shortcut;
// set the shortcut key of the object
fl.getDocumentDOM().selection[0].shortcut = "Ctrl+I";


compiledClipInstance.silent

Availability

Flash MX 2004.

Usage

compiledClipInstance.silent

Description

A Boolean value that enables or disables the accessibility of the object; equivalent to the inverse logic of Make Object Accessible setting in the Accessibility panel. That is, if silent is true, then Make Object Accessible is unchecked. If silent is false, then Make Object Accessible is checked.

Example

The following example illustrates getting and setting the silent property:

// query if the object is accessible
var isSilent =fl.getDocumentDOM().selection[0].silent;
// set the object to be accessible
fl.getDocumentDOM().selection[0].silent = false;


compiledClipInstance.tabIndex

Availability

Flash MX 2004.

Usage

compiledClipInstance.tabIndex

Description

An integer that is equivalent to the Tab Index field in the Accessibility panel. Creates a tab order in which objects are accessed when the user presses the Tab key.

Example

The following example illustrates getting and setting the tabIndex property:

// get the tabIndex of the object.
var theTabIndex = fl.getDocumentDOM().selection[0].tabIndex;
// set the tabIndex of the object.
fl.getDocumentDOM().sele ction[0].tabIndex = 1;


ComponentInstance object

Inheritance Element object > Instance object > SymbolInstance object > ComponentInstance object

Availability

Flash MX 2004.

Description

The ComponentInstance object is a subclass of the SymbolInstance object and represents a component in a frame.

Property summary for the ComponentInstance object

In addition to all the properties of the SymbolInstance object, the ComponentInstance object has the following property:

Property | Description
componentInstance.parameters | Read-only property; an array containing the ActionScript 2.0 properties that are accessible from the component Property inspector.


componentInstance.parameters

Availability

Flash MX 2004.

Usage

componentInstance.parameters

Description

Read-only property; an array containing the ActionScript 2.0 properties that are accessible from the component Property inspector. See Parameter object.

Example

The following example illustrates getting and setting the parameters property:

var parms = fl.getDocumentDOM().selection[0].parameters;
parms[0].value = "some value";


componentsPanel object

Availability

Flash MX 2004.

Description

The componentsPanel object, which represents the Components panel, is a property of the flash object and can be accessed by fl.componentsPanel.

Method summary for the ComponentsPanel object

You can use the following method with the componentsPanel object:

Property | Description
componentsPanel.addItemToDocument() | Adds the specified component to the document at the specified position.


componentsPanel.addItemToDocument()

Availability

Flash MX 2004.

Usage

componentsPanel.addItemToDocument( position, categoryName, componentName )

Parameters

The position parameter is a point (for example, {x:0, y:100}) that specifies the location at which to add the component. Specify position relative to the center point of the component, not the component's registration point.

The categoryName parameter is a string that specifies the name of the component category (for example, "Data Components"). The valid category names are listed in the Components panel.

The componentName parameter is a string that specifies the name of the component in the specified category (for example, "WebServiceConnector"). The valid component names are listed in the Components panel.

Returns

Nothing.

Description

Adds the specified component to the document at the specified position.

Examples

The following examples illustrate some ways to use this method:

fl.componentsPanel.addItemToDocument({x:0, y:0}, "UI Components", "CheckBox");
fl.componentsPanel.addItemToDocument({x:0, y:100}, "Data Components", "WebServiceConnector");
fl.componentsPanel.addItemToDocument({x:0, y:200}, "UI Components", "Button");


Contour object

Availability

Flash MX 2004.

Description

A Contour object represents a closed path of half edges on the boundary of a shape.

Method summary for the Contour object

You can use the following method with the Contour object:

Property | Description
contour.getHalfEdge() | Returns a HalfEdge object on the contour of the selection.

Property summary for the Contour object

You can use the following properties with the Contour object:

Property | Description
contour.interior | Read-only property: the value is true if the contour encloses an area; false otherwise.
contour.orientation | Read-only property; an integer indicating the orientation of the contour.


contour.getHalfEdge()

Availability

Flash MX 2004.

Usage

contour.getHalfEdge()

Parameters

None.

Returns

A HalfEdge object.

Description

Returns a HalfEdge object on the contour of the selection.

Example

This example traverses all the contours of a selected shape and displays the coordinates of the vertices in the Output panel:

// with a shape selected

var elt = fl.getDocumentDOM().selection[0];
elt.beginEdit();

var contourArray = elt.contours;
var contourCount = 0;
for (i=0;  i<contourArray.length;  i++)
{
  var contour = contourArray[i];
  contourCount++;
  var he = contour.getHalfEdge();

  var iStart = he.id;
  var id = 0;
  while (id != iStart)
  {
    // get the next vertex
    var vrt = he.getVertex();

    var x = vrt.x;
    var y = vrt.y;
    fl.trace("vrt: " + x + ", " + y);

    he = he.getNext();
    id = he.id;
  }
}
elt.endEdit();


contour.interior

Availability

Flash MX 2004.

Usage

contour.interior

Description

Read-only property: the value is true if the contour encloses an area; false otherwise.

Example

This example traverses all the contours in the selected shape and displays the value of the interior property for each contour in the Output panel:

var elt = fl.getDocumentDOM().selection[0];
elt.beginEdit();

var contourArray = elt.contours;

var contourCount = 0;
for (i=0;  i<contourArray.length;  i++) {
  var contour = contourArray[i];
  fl.trace("Next Contour, interior:" + contour.interior );
  contourCount++;
}
elt.endEdit();


contour.orientation

Availability

Flash MX 2004.

Usage

contour.orientation

Description

Read-only property: an integer indicating the orientation of the contour. The value of the integer is -1 if the orientation is counterclockwise, 1 if it is clockwise, and 0 if it is a contour with no area.

Example

The following example traverses all the contours of the selected shape and displays the value of the orientation property of each contour in the Output panel:

var elt = fl.getDocumentDOM().selection[0];
elt.beginEdit();

var contourArray = elt.contours;

var contourCount = 0;
for (i=0;  i<contourArray.length;  i++) {
  var contour = contourArray[i];
  fl.trace("Next Contour, orientation:" + contour.orientation);
  contourCount++;
}
elt.endEdit();


Document object

Availability

Flash MX 2004.

Description

The Document object represents the Stage. That is, only FLA files are considered documents.

Method summary for the Document object

You can use the following methods with the Document object.

Method | Description
document.addDataToDocument() | Stores specified data with a document.
document.addDataToSelection() | Stores specified data with the selected object(s).
document.addItem() | Adds an item from any open document or library to the specified Document object.
document.addNewLine() | Adds a new path between two points.
document.addNewOval() | Adds a new oval into the specified bounding rectangle.
document.addNewPublishProfile() | Adds a new publish profile and makes it the current one.
document.addNewRectangle() | Adds a new rectangle or rounded rectangle, fitting it into the specified bounds.
document.addNewScene() | Adds a new scene (Timeline object) as the next scene after the currently selected scene and makes the new scene the currently selected scene.
document.addNewText() | Inserts a new empty text field.
document.align() | Aligns the selection.
document.allowScreens() | Use this method before using the document.screenOutline property.
document.arrange() | Arranges the selection on the Stage.
document.breakApart() | Performs a break-apart operation on the current selection.
document.canEditSymbol() | Indicates whether Edit Symbols menu and functionality is enabled.
document.canRevert() | Determines whether you can use the document.revert() or fl.revertDocument() method successfully.
document.canTestMovie() | Determines whether you can use the document.testMovie() method successfully.
document.canTestScene() | Determines whether you can use the document.testScene() method successfully.
document.clipCopy() | Copies the current selection from the document to the Clipboard.
document.clipCut() | Cuts the current selection from the document and writes it to the Clipboard.
document.clipPaste() | Pastes the contents of the Clipboard into the document.
document.close() | Closes the specified document.
document.convertLinesToFills() | Converts lines to fills on the selected objects.
document.convertToSymbol() | Converts the selected Stage item(s) to a new symbol.
document.deletePublishProfile() | Delete the currently active profile, if there is more than one.
document.deleteScene() | Deletes the current scene (Timeline object) and, if the deleted scene was not the last one, sets the next scene as the current Timeline object.
document.deleteSelection() | Deletes the current selection on the Stage.
document.distribute() | Distributes the selection.
document.distributeToLayers() | Performs a distribute-to-layers operation on the current selection; equivalent to selecting Distribute to Layers.
document.documentHasData() | Checks the document for persistent data with the specified name.
document.duplicatePublishProfile() | Duplicates the currently active profile and gives the duplicate version focus.
document.duplicateScene() | Makes a copy of the currently selected scene, giving the new scene a unique name and making it the current scene.
document.duplicateSelection() | Duplicates the selection on the Stage.
document.editScene() | Makes the specified scene the currently selected scene for editing.
document.enterEditMode() | Switches the authoring tool into the editing mode specified by the parameter.
document.exitEditMode() | Exits from symbol-editing mode and returns focus to the next level up from the editing mode.
document.exportPublishProfile() | Exports the currently active profile to a file.
document.exportSWF() | Exports the document to the specified file in the Flash SWF format.
document.getAlignToDocument() | Identical to retrieving the value of the To Stage button in the Align panel.
document.getCustomFill() | Retrieves the fill object of the selected shape or, if specified, the toolbar and Property inspector.
document.getCustomStroke() | Returns the stroke object of the selected shape or, if specified, the toolbar and Property inspector.
document.getDataFromDocument() | Retrieves the value of the specified data.
document.getElementProperty() | Gets the specified Element property for the current selection.
document.getElementTextAttr() | Gets a specified TextAttrs property of the selected text objects.
document.getSelectionRect() | Gets the bounding rectangle of the current selection.
document.getTextString() | Gets the currently selected text.
document.getTimeline() | Retrieves the current Timeline object in the document.
document.getTransformationPoint() | Gets the location of the transformation point of the current selection.
document.group() | Converts the current selection to a group.
document.importPublishProfile() | Imports a profile from a file.
document.importSWF() | Imports a SWF file into the document.
document.match() | Makes the size of the selected objects the same.
document.mouseClick() | Performs a mouse click from the arrow tool.
document.mouseDblClk() | Performs a double mouse click from the arrow tool.
document.moveSelectedBezierPointsBy() | If the selection contains at least one path with at least one Bézier point selected, this method moves all selected Bézier points on all selected paths by the specified amount.
document.moveSelectionBy() | Moves selected objects by a specified amount of distance.
document.optimizeCurves() | Optimizes smoothing for the current selection, allowing multiple passes, if specified, for optimal smoothing; equivalent to selecting Modify > Shape > Optimize.
document.publish() | Publishes the document according to the active Publish Settings (see File > Publish Settings); equivalent to selecting File > Publish.
document.removeDataFromDocument() | Removes persistent data with the specified name that has been attached to the document.
document.removeDataFromSelection() | Removes persistent data with the specified name that has been attached to the selection.
document.renamePublishProfile() | Renames the current profile.
document.renameScene() | Renames the currently selected scene in the Scenes panel.
document.reorderScene() | Moves the specified scene before another specified scene.
document.resetTransformation() | Resets the transformation matrix; equivalent to selecting Modify > Transform > Remove transform.
document.revert() | Reverts the specified document to its previously saved version; equivalent to selecting File > Revert.
document.rotateSelection() | Rotates the selection by a specified amount.
document.save() | Saves the document in its default location; equivalent to selecting File > Save.
document.saveAndCompact() | Saves and compacts the file; equivalent to selecting File > Save and Compact.
document.scaleSelection() | Scales the selection by a specified amount; equivalent to using the Free Transform tool to scale the object.
document.selectAll() | Selects all items on the Stage; equivalent to pressing Control+A (Windows) or Command+A (Macintosh) or selecting Edit > Select All.
document.selectNone() | Deselects any selected items.
document.setAlignToDocument() | Sets the preferences for document.align(), document.distribute(),document.match(), and document.space() to act on the document; equivalent to enabling the To Stage button in the Align panel.
document.setCustomFill() | Sets the fill settings for the toolbar, Property inspector, and any selected shapes.
document.setCustomStroke() | Sets the stroke settings for the toolbar, Property inspector, and any selected shapes.
document.setElementProperty() | Sets the specified Element property on selected object(s) in the document.
document.setElementTextAttr() | Sets the specified TextAttrs property of the selected text items to the specified value.
document.setFillColor() | Changes the fill color of the selection to the specified color.
document.setInstanceAlpha() | Sets the opacity of the instance.
document.setInstanceBrightness() | Sets the brightness for the instance.
document.setInstanceTint() | Sets the tint for the instance.
document.setSelectionBounds() | Moves and resizes the selection in a single operation.
document.setSelectionRect() | Draws a rectangular selection marquee relative to the Stage, using the specified coordinates.
document.setStroke() | Sets the color, width, and style of the selected strokes.
document.setStrokeColor() | Changes the stroke color of the selection to the specified color.
document.setStrokeSize() | Changes the stroke size of the selection to the specified size.
document.setStrokeStyle() | Changes the stroke style of the selection to the specified style.
document.setTextRectangle() | Changes the bounding rectangle for the selected text item to the specified size.
document.setTextSelection() | Sets the text selection of the currently selected text field to the values specified by the startIndex and endIndex values.
document.setTextString() | Inserts a string of text.
document.setTransformationPoint() | Moves the transformation point of the current selection.
document.skewSelection() | Skews the selection by a specified amount.
document.smoothSelection() | Smooths the curve of each selected fill outline or curved line.
document.space() | Spaces the objects in the selection evenly.
document.straightenSelection() | Straightens the currently selected strokes; equivalent to using the Straighten button in the Tools panel.
document.swapElement() | Swaps the current selection with the specified one.
document.testMovie() | Executes a Test Movie operation on the document.
document.testScene() | Executes a Test Scene operation on the current scene of the document.
document.traceBitmap() | Performs a trace bitmap on the current selection; equivalent to selecting Modify > Bitmap > Trace Bitmap.
document.transformSelection() | Performs a general transformation on the current selection by applying the matrix specified in the arguments.
document.unGroup() | Ungroups the current selection.
document.unlockAllElements() | Unlocks all locked elements on the currently selected frame.
document.xmlPanel() | Posts a XMLUI dialog box.

Property summary for the Document object

You can use the following properties with the Document object.

Property | Description
document.accName | A string that is equivalent to the Name field in the Accessibility panel.
document.autoLabel | A Boolean value that is equivalent to the Auto Label check box on the Accessibility panel.
document.backgroundColor | A color in hexidecimal format that represents the background color.
document.currentPublishProfile | A string that specifies the name of the active publish profile for the specified document.
document.currentTimeline | An integer that specifies the index of the active Timeline.
document.description | A string that is equivalent to the Description field on the Accessibility panel.
document.forceSimple | A Boolean value that specifies whether the children of the specified object are accessible.
document.frameRate | A float value that specifies the number of frames displayed per second when the SWF file plays; the default is 12.
document.height | An integer that specifies the height of the document (Stage) in pixels.
document.library | Read-only property; the library object for a document.
document.livePreview | A Boolean value that specifies if Live Preview is enabled.
document.name | Read-only property; a string that represents the name of a document (FLA file).
document.path | Read-only property; a string that represents the path of the document.
document.publishProfiles | Read-only property; an array of the publish profile names for the document.
document.screenOutline | Read-only property; the current ScreenOutline object for the document.
document.selection | An array of the selected objects in the document.
document.silent | A Boolean value that specifies whether the object is accessible.
document.timelines | Read-only property; an array of Timeline objects (see Timeline object).
document.viewMatrix | Read-only property; a Matrix object.
document.width | An integer that specifies the width of the document (Stage) in pixels.


document.accName

Availability

Flash MX 2004.

Usage

document.accName

Description

A string that is equivalent to the Name field in the Accessibility panel. Screen readers identify objects by reading the name aloud.

Example

The following example sets the accessibility name of the document to "Main Movie":

fl.getDocumentDOM().accName = "Main Movie";

The following example gets the accessibility name of the document:

fl.trace(fl.getDocumentDOM().accName);


document.addDataToDocument()

Availability

Flash MX 2004.

Usage

document.addDataToDocument( name, type, data )

Parameters

The name parameter is a string that specifies the name of the data to add.

The type parameter is a string that defines the type of data to add. The valid values for type are "integer", "integerArray", "double", "doubleArray", "string", and "byteArray".

The data parameter is the value to add. Valid types depend on the type parameter.

Returns

Nothing.

Description

Stores specified data with a document. Data is written to the FLA file and is available to JavaScript when the file reopens. See document.getDataFromDocument() and document.removeDataFromDocument().

Example

The following example adds an integer value of 12 to the current document:

fl.getDocumentDOM().addDataToDocument("myData", "integer", 12);

The following example returns the value of the data named "myData" and displays the result in the Output panel:

fl.trace(fl.getDocumentDOM().getDataFromDocument("myData"));


document.addDataToSelection()

Availability

Flash MX 2004.

Usage

document.addDataToSelection( name, type, data )

Parameters

The name parameter is a string that specifies the name of the persistent data.

The type parameter defines the type of data. The valid values for type are: "integer", "integerArray", "double", "doubleArray", "string", and "byteArray".

The data parameter is the value to add. Valid types depend on the type parameter.

Returns

Nothing.

Description

Stores specified data with the selected object(s). Data is written to FLA file and is available to JavaScript when the file reopens. Only symbols and bitmaps support persistent data. See document.removeDataFromSelection().

Example

The following example adds an integer value of 12 to the selected object:

fl.getDocumentDOM().addDataToSelection("myData", "integer", 12);


document.addItem()

Availability

Flash MX 2004.

Usage

document.addItem( position, item )

Parameters

The position parameter is a point that specifies the x and y coordinates of the location at which to add the item. It uses the center of a symbol or the upper left corner of a bitmap or video.

The item parameter is an Item object that specifies the item to add and the library from which to add it.

Returns

A Boolean value: true if successful; false otherwise.

Description

Adds an item from any open document or library to the specified Document object.

Example

The following example adds the first item from the library to the first document at the specified location for the selected symbol, bitmap, or video:

var item = fl.documents[0].library.items[0];
fl.documents[0].addItem({x:0,y:0}, item);

The following example adds the symbol myMovieClip from the current document's library to the current document:

var itemIndex = fl.getDocumentDOM().library.findItemIndex("myMovieClip");
var theItem = fl.getDocumentDOM().library.items[itemIndex];
fl.getDocumentDOM().addItem({x:0,y:0}, theItem);

The following example adds the symbol myMovieClip from the second document in the documents array to the third document in the document array:

var itemIndex = fl.documents[1].library.findItemIndex("myMovieClip");
var theItem = fl.documents[1].library.items[itemIndex];
fl.documents[2].addItem({x:0,y:0}, theItem);


document.addNewLine()

Availability

Flash MX 2004.

Usage

document.addNewLine( startPoint, endpoint )

Parameters

The startpoint parameter is a pair of floating point numbers that specify the x and y coordinates where the line starts.

The endpoint parameter is a pair of floating point numbers that specify the x and y coordinates where the line ends.

Returns

Nothing.

Description

Adds a new path between two points. The method uses the document's current stroke attributes and adds the path on the current frame and current layer. This method works in the same way as clicking on the line tool and drawing a line.

Example

The following example adds a line between the specified starting point and ending point:

fl.getDocumentDOM().addNewLine({x:216.7, y:122.3}, {x:366.8, y:165.8});


document.addNewOval()

Availability

Flash MX 2004.

Usage

document.addNewOval( boundingRectangle [, bSuppressFill [, bSuppressStroke ]] )

Parameters

The boundingRectangle parameter is a rectangle that specifies the bounds of the oval to be added.

The optional bSuppressFill parameter is a Boolean value that, if set to true, causes the method to create the shape without a fill. The default value is false.

The optional bSuppressStroke parameter is a Boolean value that, if set to true, causes the method to create the shape without a stroke. The default value is false.

Returns

Nothing.

Description

Adds a new oval into the specified bounding rectangle. This method performs the same operation as the oval tool. The method uses the document's current default stroke and fill attributes and adds the oval on the current frame and layer. If bSurpressFill is set to true, the oval is drawn without a fill. If bSurpressStroke is set to true, the oval is drawn without a stroke. If both bSuppressFill or bSuppressStroke are set to true, the method will do nothing.

Example

The following example adds a new oval within the specified coordinates:

flash.getDocumentDOM().addNewOval({left:72,top:50,right:236,bottom:228});

The following example draws an oval without fill:

flash.getDocumentDOM().addNewOval({left:72,top:50,right:236,bottom:228}, true);

The following example draws an oval without stroke:

flash.getDocumentDOM().addNewOval({left:72,top:50,right:236,bottom:228}, false, true);


document.addNewPublishProfile()

Availability

Flash MX 2004.

Usage

document.addNewPublishProfile( [profileName ] )

Parameters

The optional profileName parameter is the unique name of the new profile. If you do not specify a name, a default name is provided.

Returns

An integer that is the index of the new profile in the profiles list. Returns -1 if a new profile cannot be created.

Description

Adds a new publish profile and makes it the current one. See document.deletePublishProfile().

Example

The following example adds a new publish profile with a default name and then displays the name of the profile in the Output panel:

fl.getDocumentDOM().addNewPublishProfile();
fl.outputPanel.trace(fl.getDocumentDOM().currentPublishProfile);

The following example adds a new publish profile with the name "my profile":

fl.getDocumentDOM().addNewPublishProfile("my profile");


document.addNewRectangle()

Availability

Flash MX 2004.

Usage

document.addNewRectangle( boundingRectangle, roundness
  [, bSuppressFill [, bSuppressStroke ] ] )

Parameters

The boundingRectangle parameter is a rectangle that specifies the bounds within which the new rectangle is added. This parameter specifies a pixel location for left, top, right, and bottom.

The roundness parameter is an integer value between 0 and 999 that specifies the roundness to use for the corners. The value is specified as number of points. The greater the value, the greater the roundness.

The optional bSuppressFill parameter is a Boolean value that, if set to true, causes the method to create the shape without a fill. The default value is false.

The optional bSuppressStroke parameter is a Boolean value that, if set to true, causes the method to create the rectangle without a stroke. The default value is false.

Returns

Nothing.

Description

Adds a new rectangle or rounded rectangle, fitting it into the specified bounds. This method performs the same operation as the rectangle tool. The method uses the document's current default stroke and fill attributes and adds the rectangle on the current frame and layer. If the bSuppressFill parameter is set to true, the rectangle is drawn without a fill. If the bSuppressStroke parameter is set to true, the rectangle is drawn without a stroke. Either bSuppressFill or bSuppressStroke must be set to false or the method does nothing.

Example

The following example adds a new rectangle with no round corners within the specified coordinates.

flash.getDocumentDOM().addNewRectangle({left:0,top:0,right:100,bottom:100},0);

The following example adds a new rectangle with no round corners and without a fill.

flash.getDocumentDOM().addNewRectangle({left:0,top:0,right:100,bottom:100},0, true);

The following example add a new rectangle no round corners and without a stroke.

flash.getDocumentDOM().addNewRectangle({left:0,top:0,right:100,bottom:100},0, false, true);


document.addNewScene()

Availability

Flash MX 2004.

Usage

document.addNewScene( [name] )

Parameters

[name]

The name parameter specifies the name of the scene. If you do not specify a name, a new scene name is generated.

Returns

A Boolean value: true if the scene is added successfully; false otherwise.

Description

Adds a new scene (Timeline object) as the next scene after the currently selected scene and makes the new scene the currently selected scene. If the specified scene name already exists, the scene is not added and the method returns an error.

Example

The following example adds a new scene named myScene after the current scene in the current document. The variable success will be true when the new scene is created; false otherwise

var success = flash.getDocumentDOM().addNewScene("myScene");

The following example adds a new scene using the default naming convention. If only one scene exists newly created scene is named "Scene 2".

fl.getDocumentDOM().addNewScene();


document.addNewText()

Availability

Flash MX 2004.

Usage

document.addNewText( boundingRectangle )

Parameters

The boundingRectangle parameter specifies the size and location of the text field by providing locations in pixels for left, top, right, and bottom. The method applies the current text attributes. It should be followed by calling setTextString() to populate the new text box.

Returns

Nothing.

Description

Inserts a new empty text field. See document.setTextString().

Example

The following example creates a new text field in the upper left corner of the Stage and then sets the text string to "Hello World":

fl.getDocumentDOM().addNewText({left:0, top:0, right:100, bottom:100});
fl.getDocumentDOM().setTextString('Hello World!');


document.align()

Availability

Flash MX 2004.

Usage

document.align( alignmode [, bUseDocumentBounds ] )

Parameters

The alignmode parameter is a string that specifies how to align the selection. Valid values for alignmode are "left", "right", "top", "bottom", "vertical center", and "horizontal center".

The optional bUseDocumentBounds parameter is a Boolean value that, if set to true, causes the method to align to the bounds of the document. Otherwise, the method uses the bounds of the selected objects. The default is false.

Returns

Nothing.

Description

Aligns the selection. See document.distribute(), document.setAlignToDocument(), and document.getAlignToDocument().

Example

The following example aligns objects to left and to the Stage. This is equivalent to turning on the To Stage setting in the Align panel and clicking the Align to Left button:

fl.getDocumentDOM().align("left", true);


document.allowScreens()

Availability

Flash MX 2004.

Usage

document.allowScreens()

Parameters

None.

Returns

Returns a Boolean value: true if dom.screenOutline can be used safely; false otherwise.

Description

Use this method before using the document.screenOutline property. If this method returns the value true, you can safely access the screenOutline property. Flash displays an error if you access the screenOutline property on a document without screens.

Example

The following example determines whether screens methods can be used in the current document:

if(fl.getDocumentDOM().allowScreens()) {
  fl.trace("screen outline is available.");
}
else {
  fl.trace("whoops, no screens.");
}


document.arrange()

Availability

Flash MX 2004.

Usage

document.arrange( arrangeMode )

Parameters

The arrangeMode parameter specifies the direction in which to move the selection. The valid values for arrangemode are "back", "backward", "forward", and "front". It provides the same capabilities as these options provide on the Modify >Arrange menu.

Returns

Nothing.

Description

Arranges the selection on the Stage. This method applies only to non-shape objects.

Example

The following example moves the current selection to the front:

fl.getDocumentDOM().arrange("front");


document.autoLabel

Availability

Flash MX 2004.

Usage

document.autoLabel

Description

A Boolean value that is equivalent to the Auto Label check box on the Accessibility panel. You can use this property to tell Flash to automatically label objects on the Stage with the text associated with them.

Example

The following example gets the value of the autoLabel property and displays the result in the output panel:

var isAutoLabel = fl.getDocumentDOM().autoLabel;
fl.trace(isAutoLabel);

The following example sets the autoLabel property to true, telling Flash to automatically label objects on the Stage:

fl.getDocumentDOM().autoLabel = true;


document.backgroundColor

Availability

Flash MX 2004.

Usage

document.backgroundColor

Description

A color in hexidecimal format that represents the background color.

Example

The following example sets the background color to black:

fl.getDocumentDOM().backgroundColor = '#000000';


document.breakApart()

Availability

Flash MX 2004.

Usage

document.breakApart()

Parameters

None.

Returns

Nothing.

Description

Performs a break-apart operation on the current selection.

Example

The following example breaks apart the current selection:

fl.getDocumentDOM().breakApart();


document.canEditSymbol()

Availability

Flash MX 2004.

Usage

document.canEditSymbol()

Parameters

None.

Returns

A Boolean value: true if the Edit Symbols menu and functionality are available for use; false otherwise.

Description

Indicates whether the Edit Symbols menu and functionality is enabled. This is not related to whether the selection can be edited. This method should not be used to test whether fl.getDocumentDOM().enterEditMode() is allowed.

Example

The following example displays in the Output panel the state of the Edit Symbols menu and functionality:

fl.trace("fl.getDocumentDOM().canEditSymbol() returns: " + fl.getDocumentDOM().canEditSymbol());


document.canRevert()

Availability

Flash MX 2004.

Usage

document.canRevert()

Parameters

None.

Returns

A Boolean value: true if you can use the document.revert() or fl.revertDocument() methods successfully; false otherwise.

Description

Determines whether you can use the document.revert() or fl.revertDocument() method successfully.

Example

The following example checks whether the current document can revert to the previously saved version. If so, fl.getDocumentDOM().revert() restores the previously saved version.

if(fl.getDocumentDOM().canRevert()){
  fl.getDocumentDOM().revert();
}


document.canTestMovie()

Availability

Flash MX 2004.

Usage

document.canTestMovie()

Parameters

None.

Returns

A Boolean value: true if you can use the document.testMovie() method successfully: false otherwise.

Description

Determines whether you can use the document.testMovie() method successfully. See document.canTestScene() and document.testScene().

Example

The following example tests whether fl.getDocumentDOM().testMovie() can be used. If so, it calls the method.

if(fl.getDocumentDOM().canTestMovie()){
  fl.getDocumentDOM().testMovie();
}


document.canTestScene()

Availability

Flash MX 2004.

Usage

document.canTestScene()

Parameters

None.

Returns

A Boolean value: true if you can use the document.testScene() method successfully; false otherwise.

Description

Determines whether you can use the document.testScene() method successfully. See document.canTestMovie() and document.testMovie().

Example

The following example first tests whether fl.getDocumentDOM().testScene() can be used successfully. If so, it calls the method.

if(fl.getDocumentDOM().canTestScene()){
  fl.getDocumentDOM().testScene();
}


document.clipCopy()

Availability

Flash MX 2004.

Usage

document.clipCopy()

Parameters

None.

Returns

Nothing.

Description

Copies the current selection from the document to the Clipboard.

Example

The following example copies the current selection from the document to the Clipboard:

fl.getDocumentDOM().clipCopy();


document.clipCut()

Availability

Flash MX 2004.

Usage

document.clipCut()

Parameters

None.

Returns

Nothing.

Description

Cuts the current selection from the document and writes it to the Clipboard.

Example

The following example cuts the current selection from the document and writes it to the Clipboard:

fl.getDocumentDOM().clipCut();


document.clipPaste()

Availability

Flash MX 2004.

Usage

document.clipPaste( [bInPlace] )

Parameters

The optional bInPlace parameter is a Boolean value that, when set to true, causes the method to perform a paste-in-place operation. The default value is false, which causes the method to perform a paste operation to the center of the document.

Returns

Nothing.

Description

Pastes the contents of the Clipboard into the document.

Example

The following examples pastes the Clipboard contents to the center of the document:

fl.getDocumentDOM().clipPaste();

The following example pastes the Clipboard contents in place in the current document:

fl.getDocumentDOM().clipPaste(true);


document.close()

Availability

Flash MX 2004.

Usage

document.close( [bPromptToSaveChanges] )

Parameters

The optional bPromptToSaveChanges parameter is a Boolean value that, when set to true, causes the method to prompt the user with a dialog box if there are unsaved changes in the document. If bPromptToSaveChanges is set to false, the user is not prompted to save any changed documents. The default value is true.

Returns

Nothing.

Description

Closes the specified document.

Example

The following example closes the current document and prompts the user with a dialog box to save changes:

fl.getDocumentDOM().close();

The following example closes the current document without saving changes:

fl.getDocumentDOM().close(false);


document.convertLinesToFills()

Availability

Flash MX 2004.

Usage

document.convertLinesToFills()

Parameters

None.

Returns

Nothing.

Description

Converts lines to fills on the selected objects.

Example

The following example converts the current selected lines to fills:

fl.getDocumentDOM().convertLinesToFills();


document.convertToSymbol()

Availability

Flash MX 2004.

Usage

document.convertToSymbol( type, name, registrationPoint )

Parameters

The type parameter is a string that specifies the type of symbol to create. Valid values for type are "movie clip", "button", and "graphic".

The name parameter is a string that specifies the name for the new symbol, which must be unique. You can submit an empty string to have this method create a unique symbol name for you.

The registration point parameter specifies the point that represents the 0,0 location for the symbol. Acceptable values are: "top left", "top center", "top right", "center left", "center", "center right", "bottom left", "bottom center", and "bottom right".

Returns

An object for the newly created symbol, or null if it cannot create the symbol.

Description

Converts the selected Stage item(s) to a new symbol. For information on defining linkage and shared asset properties for a symbol, see Item object.

Example

The following examples create a movie clip symbol with a specified name, a button symbol with a specified name, and a movie clip symbol with a default name:

newMc = fl.getDocumentDOM().convertToSymbol("movie clip", "mcSymbolName", "top left");
newButton = fl.getDocumentDOM().convertToSymbol("button", "btnSymbolName", "bottom right");
newClipWithDefaultName = fl.getDocumentDOM().convertToSymbol("movie clip", "", "top left");


document.currentPublishProfile

Availability

Flash MX 2004.

Usage

document.currentPublishProfile

Description

A string that specifies the name of the active publish profile for the specified document.

Example

The following example adds a new publish profile with the default name and then displays the name of the profile in the Output panel:

fl.getDocumentDOM().addNewPublishProfile();
fl.outputPanel.trace(fl.getDocumentDOM().currentPublishProfile);

The following example changes the selected publish profile to "Default":

fl.getDocumentDOM().currentPublishProfile = "Default";


document.currentTimeline

Availability

Flash MX 2004.

Usage

document.currentTimeline

Description

An integer that specifies the index of the active Timeline. You can set the active Timeline by changing the value of this property; the effect is almost equivalent to calling document.editScene(). The only difference is that you don't get an error message if the index of the Timeline is not valid (the property is simply not set, which causes silent failure).

See document.getTimeline().

Example

The following example displays the index of the current Timeline.

var myCurrentTL = fl.getDocumentDOM().currentTimeline;
fl.trace("The index of the current timeline is: "+ myCurrentTL);

The following example changes the active Timeline from the main Timeline to a scene named "myScene".

var i = 0;
var curTimelines = fl.getDocumentDOM().timelines;
while(i < fl.getDocumentDOM().timelines.length){
  if(curTimelines[i].name == "myScene"){
    fl.getDocumentDOM().currentTimeline = i;
  }
  ++i;
}


document.deletePublishProfile()

Availability

Flash MX 2004.

Usage

document.deletePublishProfile()

Parameters

None.

Returns

An integer that is the index of the new current profile. If a new profile is not available, the method leaves the current profile unchanged and returns its index.

Description

Deletes the currently active profile, if there is more than one. There must be at least one profile left. See document.addNewPublishProfile().

Example

The following example deletes the currently active profile, if there is more than one, and displays the index of the new currently active profile:

alert(fl.getDocumentDOM().deletePublishProfile());


document.deleteScene()

Availability

Flash MX 2004.

Usage

document.deleteScene()

Parameters

None.

Returns

A Boolean value: true if the scene is successfully deleted; false otherwise.

Description

Deletes the current scene (Timeline object) and, if the deleted scene was not the last one, sets the next scene as the current Timeline object. If the deleted scene was the last one, it sets the first object as the current Timeline object. If only one Timeline object (scene) exists, it returns the value false.

Example

Assuming there are three scenes (Scene0, Scene1, and Scene2) in the current document, the following example makes Scene2 the current scene and then deletes it:

fl.getDocumentDOM().editScene(2);
var success = fl.getDocumentDOM().deleteScene();


document.deleteSelection()

Availability

Flash MX 2004.

Usage

document.deleteSelection()

Parameters

None.

Returns

Nothing.

Description

Deletes the current selection on the Stage. Displays an error message if there is no selection.

Example

The following example deletes the current selection in the document:

fl.getDocumentDOM().deleteSelection();


document.description

Availability

Flash MX 2004.

Usage

document.description

Description

A string that is equivalent to the Description field on the Accessibility panel. The description is read by the screen reader.

Example

The following example sets the description of the document:

fl.getDocumentDOM().description= "This is the main movie";

The following example gets the description of the document and displays it in the Output panel:

fl.trace(fl.getDocumentDOM().description);


document.distribute()

Availability

Flash MX 2004.

Usage

document.distribute( distributemode [, bUseDocumentBounds ] )

Parameters

The distributemode parameter is a string that specifies where to distribute the selected object. Valid values for distributeMode are "left edge", "horizontal center", "right edge", "top edge", "vertical center", and "bottom edge".

The bUseDocumentBounds parameter is a Boolean value that, when set to true, distributes the selected objects using the bounds of the document. Otherwise, the method uses the bounds of the selected object. The default is false.

Returns

Nothing.

Description

Distributes the selection. See document.setAlignToDocument() and document.getAlignToDocument().

Example

The following example distributes the selected objects by the top edge:

fl.getDocumentDOM().distribute("top edge");

The following example distributes the selected objects by top edge and expressly sets the bUseDcoumentBounds parameter:

fl.getDocumentDOM().distribute("top edge", false);

The following example distributes the selected objects by their top edges, using the bounds of the document:

fl.getDocumentDOM().distribute("top edge", true);


document.distributeToLayers()

Availability

Flash MX 2004.

Usage

document.distributeToLayers()

Parameters

None.

Returns

Nothing.

Description

Performs a distribute-to-layers operation on the current selection; equivalent to selecting Distribute to Layers. Displays an error if there is no selection.

Example

The following example distributes the current selection to layers:

fl.getDocumentDOM().distributeToLayers();


document.documentHasData()

Availability

Flash MX 2004.

Usage

document.documentHasData( name )

Parameters

The name parameter is a string that specifies the name of the data to check.

Returns

A Boolean value: true if the document has persistent data; false otherwise.

Description

Checks the document for persistent data with the specified name. See document.addDataToDocument(), document.getDataFromDocument(), and document.removeDataFromDocument().

Example

The following example checks the document for persistent data with the name "myData":

var hasData = fl.getDocumentDOM().documentHasData("myData");


document.duplicatePublishProfile()

Availability

Flash MX 2004.

Usage

document.duplicatePublishProfile( [profileName ] )

Parameters

The optional profileName parameter is a string that specifies the unique name of the duplicated profile. If you do not specify a name, the method uses the default name.

Returns

An integer that is the index of the new profile in the profile list. Returns -1 if the profile cannot be duplicated.

Description

Duplicates the currently active profile and gives the duplicate version focus.

Example

The following example duplicates the currently active profile and displays the index of the new profile in the Output panel:

fl.trace(fl.getDocumentDOM().duplicatePublishProfile("dup profile"));


document.duplicateScene()

Availability

Flash MX 2004.

Usage

document.duplicateScene()

Parameters

None.

Returns

A Boolean value: true if the scene is duplicated successfully; false otherwise.

Description

Makes a copy of the currently selected scene, giving the new scene a unique name and making it the current scene.

Example

The following example duplicates the second scene in the current document:

fl.getDocumentDOM().editScene(1); //set the middle scene to current scene
var success = fl.getDocumentDOM().duplicateScene();


document.duplicateSelection()

Availability

Flash MX 2004.

Usage

document.duplicateSelection()

Parameters

None.

Returns

Nothing.

Description

Duplicates the selection on the Stage.

Example

The following example duplicates the current selection, which is similar to Alt-clicking and then dragging an item:

fl.getDocumentDOM().duplicateSelection();


document.editScene()

Availability

Flash MX 2004.

Usage

document.editScene( index )

Parameters

The index parameter is a zero-based integer that specifies which scene to edit.

Returns

Nothing.

Description

Makes the specified scene the currently selected scene for editing.

Example

Assuming that there are three scenes (Scene0, Scene1, and Scene2) in the current document, the following example makes Scene2 the current scene and then deletes it:

fl.getDocumentDOM().editScene(2);
fl.getDocumentDOM().deleteScene();


document.enterEditMode()

Availability

Flash MX 2004.

Usage

document.enterEditMode( [editMode] )

Parameters

The optional editMode parameter is a string that specifies the editing mode. Valid values are "inPlace" or "newWindow". If no parameter is specified, the default is symbol-editing mode.

Returns

Nothing.

Description

Switches the authoring tool into the editing mode specified by the parameter. If no parameter is specified, the method defaults to symbol-editing mode, which has the same result as right-clicking the symbol to invoke the context menu and selecting Edit. See document.exitEditMode().

Example

The following example puts Flash in edit-in-place mode for the currently selected symbol:

fl.getDocumentDOM().enterEditMode('inPlace');

The following example puts Flash in edit-in-new-window mode for the currently selected symbol:

fl.getDocumentDOM().enterEditMode('newWindow');


document.exitEditMode()

Availability

Flash MX 2004.

Usage

document.exitEditMode()

Parameters

None.

Returns

Nothing.

Description

Exits from symbol-editing mode and returns focus to the next level up from the editing mode. For example, if you are editing a symbol inside another symbol, this method takes you up a level from the symbol you are editing, into the parent symbol. See document.enterEditMode().

Example

The following example exits symbol-editing mode:

fl.getDocumentDOM().exitEditMode();


document.exportPublishProfile()

Availability

Flash MX 2004.

Usage

document.exportPublishProfile( fileURI )

Parameters

The fileURI parameter is a string, expressed as a file://URL, that specifies the path of the XML file to which the profile is exported.

Returns

Nothing.

Description

Exports the currently active profile to a file.

Example

The following example exports the currently active profile to the file named profile.xml in the folder /Documents and Settings/username/Desktop on the C drive:

fl.getDocumentDOM().exportPublishProfile('file:///C|/Documents and Settings/username/Desktop/profile.xml');


document.exportSWF()

Availability

Flash MX 2004.

Usage

document.exportSWF( [fileURI] {, bCurrentSettings] )

Parameters

The optional fileURI parameter is a string, expressed as a file://URL, that specifies the name of the exported file. If fileURI is empty or not specified, Flash displays the Export Movie dialog box.

The optional bCurrentSettings parameter is a Boolean value that, when set to true, causes Flash to use current SWF publish settings. Otherwise, Flash displays the Export Flash Player dialog box. The default is false.

Returns

Nothing.

Description

Exports the document to the specified file in the Flash SWF format.

Example

The following example exports the document to the specified file location with the current publish settings:

fl.getDocumentDOM().exportSWF("file:///C|/Documents and Settings/gdrieu/Desktop/qwerty.swf");

The following example displays the Export Movie dialog box and the Export Flash Player dialog box and then exports the document based on the specified settings:

fl.getDocumentDOM().exportSWF("", true);

The following example displays the Export Movie dialog box and then exports the document with specified settings:

fl.getDocumentDOM().exportSWF();


document.forceSimple

Availability

Flash MX 2004.

Usage

document.forceSimple

Description

A Boolean value that specifies whether the children of the specified object are accessible. This is equivalent to the inverse logic of the Make Child Objects Accessible setting in the Accessibility panel. That is, if forceSimple is true, it is the same as the Make Child Object Accessible option being unchecked. If forceSimple is false, it is the same as the Make Child Object Accessible option being checked.

Example

The following example sets the areChildrenAccessible variable to the value of the forceSimple property; a value of false means the children are accessible:

var areChildrenAccessible = fl.getDocumentDOM().forceSimple;

The following example sets the forceSimple property to allow the children of the document to be accessible:

fl.getDocumentDOM().forceSimple = false;


document.frameRate

Availability

Flash MX 2004.

Usage

document.frameRate

Description

A float value that specifies the number of frames displayed per second when the SWF file plays; the default is 12. This is the same functionality as setting the frame rate in the Document properties dialog box (Modify > Document).

Example

The following example sets the frame rate to 25.5 frames per second:

fl.getDocumentDOM().frameRate = 25.5;


document.getAlignToDocument()

Availability

Flash MX 2004.

Usage

document.getAlignToDocument()

Parameters

None.

Returns

A Boolean value: true if the preference is set to align the objects to the Stage; false otherwise.

Description

Identical to retrieving the value of the To Stage button in the Align panel. Gets the preference that can be used for document.align(), document.distribute(), document.match(), and document.space() methods on the document. See document.setAlignToDocument().

Example

The following example retrieves the value of the To Stage button in the Align panel. If the return value is true, the To Stage button is active; otherwise, it is not.

var isAlignToDoc = fl.getDocumentDOM().getAlignToDocument();
fl.getDocumentDOM().align("left", isAlignToDoc);


document.getCustomFill()

Availability

Flash MX 2004.

Usage

document.getCustomFill( [ objectToFill ] )

Parameters

The optional objectToFill parameter is a string that specifies the location of the fill object. The following values are valid:

  • "toolbar", which returns the fill object of the toolbar and Property inspector
  • "selection", which returns the fill object of the selection

If you omit this parameter, the default value is "selection". If there is no selection, the method returns undefined.

Returns

The Fill object specified by the objectToFill parameter, if successful; otherwise, it returns undefined.

Description

Retrieves the fill object of the selected shape or, if specified, of the toolbar and Property inspector. See document.setCustomFill().

Example

The following example gets the fill object of the selection and then changes the selection's color to white:

var fill = fl.getDocumentDOM().getCustomFill();
fill.color = '#FFFFFF';
fill.style = "solid";
fl.getDocumentDOM().setCustomFill(fill);

The following example returns the fill object of the toolbar and Property inspector and then changes the color swatch to a linear gradient:

var fill = fl.getDocumentDOM().getCustomFill("toolbar");
fill.style = "linearGradient";
fill.colorArray = [ 0x00ff00, 0xff0000, 0x0000ff ];
fill.posArray = [0, 100, 200];
fl.getDocumentDOM().setCustomFill( fill );


document.getCustomStroke()

Availability

Flash MX 2004.

Usage

document.getCustomStroke( [locationOfStroke] )

Parameters

The optional locationOfStroke parameter is a string that specifies the location of the stroke object. The following values are valid:

  • "toolbar", which, if set, returns the stroke object of the toolbar and Property inspector.
  • "selection", which, if set, returns the stroke object of the selection.

If you omit this parameter, it defaults to "selection". If there is no selection, it returns undefined.

Returns

The Stroke object specified by the locationOfStroke parameter, if successful; otherwise, it returns undefined.

Description

Returns the stroke object of the selected shape or, if specified, of the toolbar and Property inspector. See document.setCustomStroke().

Example

The following example returns the current stroke settings of the selection and changes the stroke thickness to 2:

var stroke = fl.getDocumentDOM().getCustomStroke("selection");
stroke.thickness = 2;
fl.getDocumentDOM().setCustomStroke(stroke);

The following example returns the current stroke settings of the toolbar and Property inspector and sets the stroke color to red:

var stroke = fl.getDocumentDOM().getCustomStroke("toolbar");
stroke.color = "#FF0000";
fl.getDocumentDOM().setCustomStroke(stroke);


document.getDataFromDocument()

Availability

Flash MX 2004.

Usage

document.getDataFromDocument( name )

Parameters

The name parameter is a string that specifies the name of the data to return.

Returns

The specified data.

Description

Retrieves the value of the specified data. The type returned depends on the type of data that was stored. See document.addDataToDocument(), document.documentHasData(), and document.removeDataFromDocument().

Example

The following example adds an integer value of 12 to the current document and uses this method to display the value in the Output panel:

fl.getDocumentDOM().addDataToDocument("myData", "integer", 12);
fl.trace(fl.getDocumentDOM().getDataFromDocument("myData"));


document.getElementProperty()

Availability

Flash MX 2004.

Usage

document.getElementProperty( propertyName )

Parameters

The name of the Element property for which to retrieve the value.

Returns

The value of the specified property. Returns null if the property is an indeterminate state, as when multiple elements are selected with different property values. Returns undefined if the property is not a valid property of the selected element.

Description

Gets the specified Element property for the current selection. See Property summary for the Element object for a list of valid values. See document.setElementProperty().

Example

The following example gets the name of the Element property for the current selection:

//elementName = the instance name of the selected object
var elementName = fl.getDocumentDOM().getElementProperty("name");


document.getElementTextAttr()

Availability

Flash MX 2004.

Usage

document.getElementTextAttr( attrName [, startIndex [, endIndex]] )

Parameters

The attrName parameter is a string that specifies the name of the TextAttrs property to be returned. For a list of property names and expected values, see Property summary for the TextAttrs object.

The optional startIndex parameter is an integer that specifies the index of first character, with 0 (zero) specifying the first position.

The optional endIndex parameter is an integer that specifies the index of last character.

Returns

If one text field is selected, the property is returned if there is only one value used within the text. Returns undefined if there are several values used inside the text field. If several text fields are selected, and all the text alignment values are equal, the method returns this value. If several text fields are selected, but all the text alignment values are not equal, the method returns undefined. If the optional arguments are not passed, these rules apply to the range of text currently selected or the whole text field if the text is not currently being edited. If only startIndex is passed, the property of the character to the right of the index is returned, if all the selected text objects match values. If startIndex and endIndex are passed, the value returned reflects the entire range of characters from startIndex up to, but not including, endIndex.

Description

Gets a specific TextAttrs property of the selected text objects. Selected objects that are not text fields are ignored. For a list of property names and expected values, see Property summary for the TextAttrs object. See document.setElementTextAttr().

Example

The following example gets the size of the selected text fields:

fl.getDocumentDOM().getElementTextAttr("size");

The following example gets the color of the character at index 3 in the selected text fields:

fl.getDocumentDOM().getElementTextAttr("fillColor", 3);

The following example gets the font name of the text from index 2 up to, but not including, index 10 of the selected text fields:

fl.getDocumentDOM().getElementTextAttr("face", 2, 10);


document.getSelectionRect()

Availability

Flash MX 2004.

Usage

document.getSelectionRect()

Parameters

None.

Returns

The bounding rectangle of the current selection, or 0 if nothing is selected.

Description

Gets the bounding rectangle of the current selection. If a selection is non-rectangular, the smallest rectangle encompassing the entire selection is returned. The rectangle is based on the document space or, when in an edit mode, the registration point of the symbol being edited. See document.setSelectionRect().

Example

The following example gets the bounding rectangle for the current selection and then displays its properties:

var newRect = fl.getDocumentDOM().getSelectionRect();
var outputStr = "left: " + newRect.left + " top: " + newRect.top + " right: " + newRect.right + " bottom: " + newRect.bottom;
alert(outputStr);


document.getTextString()

Availability

Flash MX 2004.

Usage

document.getTextString( [startIndex [, endIndex]] )

Parameters

The optional startIndex parameter is an integer that is an index of first character to get.

The optional endIndex parameter is an integer that is an index of last character to get.

Returns

A string that contains the selected text.

Description

Gets the currently selected text. If the optional parameters are not passed, the current text selection is used. If text is not currently opened for editing, the whole text string is returned. If only startIndex is passed, the string starting at that index and ending at the end of the field are returned. If startIndex and endIndex are passed, the string starting from startIndex up to, but not including, endIndex is returned. See document.setTextString().

If there are several text fields selected, the concatenation of all the strings is returned.

Example

The following example gets the string in the selected text fields:

fl.getDocumentDOM().getTextString();

The following example gets the string at character index 5 in the selected text fields:

fl.getDocumentDOM().getTextString(5);

The following example gets the string from character index 2 up to, but not including, character index 10:

fl.getDocumentDOM().getTextString(2, 10);


document.getTimeline()

Availability

Flash MX 2004.

Usage

document.getTimeline()

Parameters

None.

Returns

The current Timeline object.

Description

Retrieves the current Timeline object in the document. The current Timeline can be the current scene, the current symbol being edited, or the current screen. See document.currentTimeline, document.timelines, and symbolItem.timeline.

Example

The following example gets the Timeline object and returns the number of frames in the longest layer:

var longestLayer = fl.getDocumentDOM().getTimeline().frameCount;
fl.trace("The longest layer has" + longestLayer + "frames");

The following example enters edit-in-place mode for the selected symbol on the Stage and inserts a frame on the symbol's Timeline.

fl.getDocumentDOM().enterEditMode("inPlace");
fl.getDocumentDOM().getTimeline().insertFrames();

The following example gets the Timeline object and displays its name:

var timeline = fl.getDocumentDOM().getTimeline();
alert(timeline.name);


document.getTransformationPoint()

Availability

Flash MX 2004.

Usage

document.getTransformationPoint()

Parameters

None.

Returns

The location of the transformation point.

Description

Gets the location of the transformation point of the current selection. You can use the transformation point for commutations such as rotate and skew. See document.setTransformationPoint().

Example

The following example gets the transformation point for the current selection. The transPoint.x property gives the x coordinate of the transformation point. The transPoint.y property gives the y coordinate of the transformation point:

var transPoint = fl.getDocumentDOM().getTransformationPoint();


document.group()

Availability

Flash MX 2004.

Usage

document.group()

Parameters

None.

Returns

Nothing.

Description

Converts the current selection to a group. See document.unGroup().

Example

The following example converts the objects in the current selection to a group:

fl.getDocumentDOM().group();


document.height

Availability

Flash MX 2004.

Usage

document.height

Description

An integer that specifies the height of the document (Stage) in pixels. See document.width.

Example

The following example sets the height of the Stage to 400 pixels:

fl.getDocumentDOM().height = 400;


document.importPublishProfile()

Availability

Flash MX 2004.

Usage

document.importPublishProfile( fileURI )

Parameters

The fileURI parameter is a string that specifies the path, expressed as a file://URL, of the XML file defining the profile to import.

Returns

An integer that is the index of the imported profile in the profiles list. Returns -1 if the profile cannot be imported.

Description

Imports a profile from a file.

Example

The following example imports the profile contained in the profile.xml file and displays its index in the profiles list:

alert(fl.getDocumentDOM().importPublishProfile('file:///C|/Documents and Settings/username/Desktop/profile.xml'));


document.importSWF()

Availability

Flash MX 2004.

Usage

document.importSWF( fileURI )

Parameters

The fileURI parameter is a string that specifies the URI, expressed as a file://URI, for the SWF file to import.

Returns

Nothing.

Description

Imports a SWF file into the document. Performs the same operation as using the Import menu option to specify a SWF file.

Example

The following example imports the "mySwf.swf" file from the Flash Configuration folder:

fl.getDocumentDOM().importSWF(fl.configURI+"mySwf.swf");


document.library

Availability

Flash MX 2004.

Usage

document.library

Description

Read-only property; the library object for a document.

Example

The following example gets the library for the currently focused document:

var myCurrentLib = fl.getDocumentDOM().library;

Assuming the currently focused document is not fl.documents[1], the following example gets the library for a non-focused library or for a library you opened using File > Open as external library:

var externalLib = fl.documents[1].library;


document.livePreview

Availability

Flash MX 2004.

Usage

document.livePreview

Description

A Boolean value that specifies if Live Preview is enabled. If set to true, components appear on the Stage as they will appear in the published Flash content, including their approximate size. If set to false, components appear only as outlines. The default value is true.

Example

The following example sets Live Preview to false:

fl.getDocumentDOM().livePreview = false;


document.match()

Availability

Flash MX 2004.

Usage

document.match( bWidth, bHeight [, bUseDocumentBounds] )

Parameters

The bWidth parameter is a Boolean value that, when set to true, causes the method to make the widths of the selected items the same.

The bHeight parameter is a Boolean value that, when set to true, causes the method to make the heights of the selected items the same.

The optional bUseDocumentBounds parameter is a Boolean value that, when set to true, causes the method to match the size of the objects to the bounds of the document. Otherwise, the method uses the bounds of the largest object. The default is false.

Returns

Nothing.

Description

Makes the size of the selected objects the same. See document.setAlignToDocument() and document.getAlignToDocument().

Example

The following example matches the width of the selected objects only:

fl.getDocumentDOM().match(true,false);

The following example matches the height only:

fl.getDocumentDOM().match(false,true);

The following example matches the width only to the bounds of the document:

fl.getDocumentDOM().match(true,false,true);


document.mouseClick()

Availability

Flash MX 2004.

Usage

document.mouseClick( position, bToggleSel, bShiftSel )

Parameters

The position parameter is a pair of floating point values that specify the x and y coordinates of the click in pixels.

The bToggleSel parameter is a Boolean value that specifies the state of the Shift key: true for pressed; false for not pressed.

The bShiftSel parameter is a Boolean value that specifies the state of the application preference Shift select.: true for on; false for off.

Returns

Nothing.

Description

Performs a mouse click from the arrow tool. See document.mouseDblClk().

Example

The following example performs a mouse click at the specified location:

fl.getDocumentDOM().mouseClick({x:300, y:200}, false, false);


document.mouseDblClk()

Availability

Flash MX 2004.

Usage

document.mouseDblClk( position, bAltDown, bShiftDown, bShiftSelect )

Parameters

The position parameter is a pair of floating point values that specify the x and y coordinates of the click in pixels.

The bAltdown parameter is a Boolean value that records whether the Alt key is down at the time of the event: true for pressed; false for not pressed.

The bShiftDown key is a Boolean value that records whether the Shift key was down when the event occurred: true for pressed; false for not pressed.

The bShiftSelect parameter is a Boolean value that indicates the state of the application preference Shift select: true for on; false for off.

Returns

Nothing.

Description

Performs a double mouse click from the arrow tool. See document.mouseClick().

Example

The following example performs a double mouse click at the specified location:

fl.getDocumentDOM().mouseDblClk({x:392.9, y:73}, false, false, true);


document.moveSelectedBezierPointsBy()

Availability

Flash MX 2004.

Usage

document.moveSelectedBezierPointsBy( delta )

Parameters

The delta parameter is a pair of floating point values that specify the x and y coordinates in pixels by which the selected Bézier points are moved. For example, passing ({x:1,y:2}) specifies a location that is to the right by one pixel and down by two pixels from the current location.

Returns

Nothing.

Description

If the selection contains at least one path with at least one Bézier point selected, this method moves all selected Bézier points on all selected paths by the specified amount.

Example

The following example moves the selected Bézier points 10 pixels to the right and 5 pixels down:

fl.getDocumentDOM().moveSelectedBezierPointsBy({x:10, y:5});


document.moveSelectionBy()

Availability

Flash MX 2004.

Usage

document.moveSelectionBy( distanceToMove )

Parameters

The distanceToMove parameter is a pair of floating point values that specify the x and y coordinate values by which the method moves the selection. For example, passing ({x:1,y:2}) specifies a location one pixel to the right and two pixels down from the current location.

Returns

Nothing.

Description

Moves selected objects by a specified distance.

Note: When using arrow keys to move the item, the History panel combines all presses of the arrow key as one move step. When the user presses the arrow keys repeatedly, rather than taking multiple steps in the History panel, the method performs one step, and the arguments are updated to reflect the repeated arrow keys.

For information on making a selection, see document.setSelectionRect(), document.mouseClick(), document.mouseDblClk(), and the Element object.

Example

The following example moves the selected item 62 pixels to the right and 84 pixels down:

flash.getDocumentDOM().moveSelectionBy({x:62, y:84});


document.name

Availability

Flash MX 2004.

Usage

document.name

Description

Read-only property; a string that represents the name of a document (FLA file).

Example

The following example sets the variable fileName to the filename of the first document in the documents array:

var fileName = flash.documents[0].name;

The following example displays the names of all the open documents in the Output panel:

var openDocs = fl.documents;
for(var i=0;i < opendocs.length; i++){
  fl.trace(i + " " + opendocs[i].name +"\n");
}


document.optimizeCurves()

Availability

Flash MX 2004.

Usage

document.optimizeCurves( smoothing, bUseMultiplePasses )

Parameters

The smoothing parameter is an integer in the range from 0 to 100, with 0 specifying no smoothing, and 100 specifying maximum smoothing.

The bUseMultiplePasses parameter is a Boolean value that, when set to true, indicates that the method should use multiple passes, which is slower but produces a better result. This parameter has the same effect as clicking the Use multiple passes button in the Optimize Curves dialog box.

Returns

Nothing.

Description

Optimizes smoothing for the current selection, allowing multiple passes, if specified, for optimal smoothing; equivalent to selecting Modify > Shape > Optimize.

Example

The following example optimizes the curve of the current selection to 50º of smoothing with multiple passes:

fl.getDocumentDOM().optimizeCurves(50, true);


document.path

Availability

Flash MX 2004.

Usage

document.path

Description

Read-only property; a string that represents the path of the document. If the document has never been saved, this property is undefined.

Example

The following example displays the path of the first document in the documents array in the Output panel:

var filePath = flash.documents[0].path;
fl.trace(filePath);


document.publish()

Availability

Flash MX 2004.

Usage

document.publish()

Parameters

None.

Returns

Nothing.

Description

Publishes the document according to the active Publish Settings (see File > Publish Settings); equivalent to selecting File > Publish.

Example

The following example publishes the current document:

fl.getDocumentDOM().publish();


document.publishProfiles

Availability

Flash MX 2004.

Usage

document.publishProfiles

Description

Read-only property; an array of the publish profile names for the document.

Example

The following example displays the names of the publish profiles for the document:

var myPubProfiles = fl.getDocumentDOM().publishProfiles;
for (var i=0; i < myPubProfiles.length; i++){
  fl.trace(myPubProfiles[i]);
}


document.removeDataFromDocument()

Availability

Flash MX 2004.

Usage

document.removeDataFromDocument( name )

Parameters

The name parameter is a string that specifies the name of the data to remove.

Returns

Nothing.

Description

Removes persistent data with the specified name that has been attached to the document. See document.addDataToDocument(), document.getDataFromDocument(), and document.documentHasData().

Example

The following example removes from the document the persistent data named "myData":

fl.getDocumentDOM().removeDataFromDocument("myData");


document.removeDataFromSelection()

Availability

Flash MX 2004.

Usage

document.removeDataFromSelection( name )

Parameters

The name parameter is a string that specifies the name of the persistent data to remove.

Returns

Nothing.

Description

Removes persistent data with the specified name that has been attached to the selection. See document.addDataToSelection().

Example

The following example removes from the selection the persistent data named "myData":

fl.getDocumentDOM().removeDataFromSelection("myData");


document.renamePublishProfile()

Availability

Flash MX 2004.

Usage

document.renamePublishProfile( [profileNewName ] )

Parameters

The optional profileNewName parameter specifies the new name for the profile. The new name must be unique. If the name is not specified, a default name is provided.

Returns

A Boolean value: true if the name is changed successfully; false otherwise.

Description

Renames the current profile.

Example

The following example renames the current profile to a default name and displays it:

alert(fl.getDocumentDOM().renamePublishProfile());


document.renameScene()

Availability

Flash MX 2004.

Usage

document.renameScene( name )

Parameters

The name parameter is a string that specifies the new name of the scene.

Returns

A Boolean value: true if the name is changed successfully; false otherwise. If the new name is not unique, for example, the method returns false.

Description

Renames the currently selected scene in the Scenes panel. The new name for the selected scene must be unique.

Example

The following example renames the current scene to "new name":

var success = fl.getDocumentDOM().renameScene("new name");


document.reorderScene()

Availability

Flash MX 2004.

Usage

document.reorderScene( sceneToMove, sceneToPutItBefore )

Parameters

The sceneToMove parameter is an integer that specifies which scene to move, with 0 (zero) being the first scene.

The sceneToPutItBefore parameter is an integer that specifies the scene before which you want to move the scene specified by sceneToMove. Specify 0 (zero) for the first scene. For example, if you specify 1 for sceneToMove and 0 for sceneToPutItBefore, the second scene is placed before the first scene. Specify -1 to move the scene to the end.

Returns

Nothing.

Description

Moves the specified scene before another specified scene.

Example

The following example moves the second scene to before the first scene:

fl.getDocumentDOM().reorderScene(1, 0);


document.resetTransformation()

Availability

Flash MX 2004.

Usage

document.resetTransformation()

Parameters

None.

Returns

Nothing.

Description

Resets the transformation matrix; equivalent to selecting Modify > Transform > Remove transform.

Example

The following example resets the transformation matrix for the current selection:

fl.getDocumentDOM().resetTransformation();


document.revert()

Availability

Flash MX 2004.

Usage

document.revert()

Parameters

None.

Returns

Nothing.

Description

Reverts the specified document to its previously saved version; equivalent to selecting File > Revert. See document.canRevert() and fl.revertDocument().

Example

The following example reverts the current document to the previously saved version:

fl.getDocumentDOM().revert();


document.rotateSelection()

Availability

Flash MX 2004.

Usage

document.rotateSelection( angle [, rotationPoint] )

Parameters

The angle parameter is a floating point value that specifies the angle of the rotation.

The optional rotationPoint parameter is a string that specifies which side of the bounding box to rotate. Valid values are: "top right", "top left", "bottom right", "bottom left", "top center", "right center", "bottom center", and "left center". If unspecified, the method uses the transformation point.

Returns

Nothing.

Description

Rotates the selection by a specified amount. The effect is the same as using the Free Transform tool to rotate the object.

Example

The following example rotates the selection by 45º around the transformation point:

flash.getDocumentDOM().rotateSelection(45);

The following example rotates the selection by 45º around the lower left corner:

fl.getDocumentDOM().rotateSelection(45, "bottom left");


document.save()

Availability

Flash MX 2004.

Usage

document.save( [bOkToSaveAs] )

Parameters

If the optional bOkToSaveAs parameter is true or omitted, and the file was never saved, then the Save As dialog box appears. If bOkToSaveAs is false and the file was never saved, the file is not saved.

Returns

A Boolean value: true if the save operation completes successfully; false otherwise.

Description

Saves the document in its default location; equivalent to selecting File > Save. See document.saveAndCompact(), fl.saveDocumentAs(), fl.saveDocument(), and fl.saveAll().

Example

The following example saves the current document in its default location:

fl.getDocumentDOM().save();


document.saveAndCompact()

Availability

Flash MX 2004.

Usage

document.saveAndCompact( [bOkToSaveAs] )

Parameters

If the optional bOkToSaveAs parameter is true or omitted and the file was never saved, the Save As dialog box appears. If bOkToSaveAs is false and the file was never saved, the file is not saved.

Returns

A Boolean value: true if the save-and-compact operation completes successfully; false otherwise.

Description

Saves and compacts the file; equivalent to selecting File > Save and Compact. See document.save(), fl.saveDocumentAs(), fl.saveDocument(), and fl.saveAll().

Example

The following example saves and compacts the current document:

fl.getDocumentDOM().saveAndCompact();


document.scaleSelection()

Availability

Flash MX 2004.

Usage

document.scaleSelection( xScale, yScale [, whichCorner] )

Parameters

The xScale parameter is a floating point value that specifies the amount of x by which to scale.

The yScale parameter is a floating point value that specifies the amount of y by which to scale.

The optional whichCorner parameter is a string value that specifies the edge about which the transformation occurs. If omitted, scaling occurs about the transformation point. Acceptable values are: "bottom left", "bottom right", "top right", "top left", "top center", "right center", "bottom center", and "left center".

Returns

Nothing.

Description

Scales the selection by a specified amount; equivalent to using the Free Transform tool to scale the object.

Example

The following example expands the width of the current selection to double the original width and shrinks the height to half:

flash.getDocumentDOM().scaleSelection(2.0, 0.5);

The following example flips the selection vertically:

fl.getDocumentDOM().scaleSelection(1, -1);

The following example flips the selection horizontally:

fl.getDocumentDOM().scaleSelection(-1, 1);

The following example scales the selection vertically by 1.9 from the top center:

fl.getDocumentDOM().scaleSelection(1, 1.90, 'top center');


document.screenOutline

Availability

Flash MX 2004.

Usage

document.screenOutline

Description

Read-only property; the current ScreenOutline object for the document. Before accessing the object for the first time, be sure to use document.allowScreens() to determine whether the property exists.

Example

The following example displays the array of values in the screenOutline property:

var myArray = new Array();
for(var i in fl.getDocumentDOM().screenOutline) {
myArray.push(" "+i+" : "+fl.getDocumentDOM().screenOutline[i]) ;
}
fl.trace("Here is the property dump for screenOutline:: "+myArray);


document.selectAll()

Availability

Flash MX 2004.

Usage

document.selectAll()

Parameters

None.

Returns

Nothing.

Description

Selects all items on the Stage; equivalent to pressing Control+A (Windows) or Command+A (Macintosh) or selecting Edit > Select All. See document.selectNone() and document.selection.

Example

The following example selects everything that is currently visible to the user:

fl.getDocumentDOM().selectAll();


document.selection

Availability

Flash MX 2004.

Usage

document.selection

Description

An array of the selected objects in the document. If nothing is selected, returns an array of length zero. If no document is open, returns null.

To add objects to the array, you must first select them in one of the following ways:

  • Manually select object(s) on the Stage.
  • Use one of the selection methods, such as document.setSelectionRect(), document.setSelectionBounds(), document.mouseClick(), document.mouseDblClk(), or document.selectAll().
  • Manually select a frame or frames.
  • Use one of the methods of the Timeline object to select a frame or frames, such as timeline.getSelectedFrames(), timeline.setSelectedFrames(), or timeline.selectAllFrames().
  • Specify a particular element in a particular frame. For example, the following code specifies and selects an element:
    fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0];

Example

The following example assigns all elements on Frame 11 to the current selection (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().currentFrame = 10;
fl.getDocumentDOM().selection = fl.getDocumentDOM().getTimeline().layers[0].frames[10].elements;

The following example creates a rectangle in the upper left corner of the Stage and a text string underneath the rectangle. Then it selects both objects using document.setSelectionRect() and adds them to the document.selection array. Finally, it displays the contents of document.selection in the Output panel.

fl.getDocumentDOM().addNewRectangle({left:0, top:0, right:99, bottom:99}, 0);
fl.getDocumentDOM().addNewText({left:-1, top:117.3, right:9.2, bottom:134.6});
fl.getDocumentDOM().setTextString('Hello World');
fl.getDocumentDOM().setSelectionRect({left:-28, top:-22, right:156.0, bottom:163});

var theSelectionArray = fl.getDocumentDOM().selection;

for(var i=0;i<theSelectionArray.length;i++){

fl.trace("fl.getDocumentDOM().selection["+i+"] = " + theSelectionArray[i]);

}

The following example is an advanced example. It shows how to loop through the layer array, and elements array to locate instances of a particular symbol and select them. You could extend this example to include loops for multiple frames or scenes. This example assigns all instances of the movie clip "myMovieClip" in the first frame to the current selection:

//assigns the layers array to the variable "theLayers"
var theLayers = fl.getDocumentDOM().getTimeline().layers;

//creates an array to hold all the elements that are instances of "myMovieClip"
var mySelectionArray = new Array;

//counter variable
var x=0;

//begin loop through all the layers
for(var i=0; i < theLayers.length;i++){
      //gets the array of elements in frame 1 and assigns it to the array "theElems"
      var theElems = theLayers[i].frames[0].elements;

 //begin loop through the elements on a layer
for(var c=0; c < theElems.length; c++){
      //checks to see if the element is of type "instance"
      if(theElems[c].elementType == "instance"){

 //if the element is an instance, it checks if it is an instance of "myMovieClip"
if(theElems[c].libraryItem.name == "myMovieClip"){

 //assigns elements that are instances of "myMovieClip" to "mySelectionArray"
mySelectionArray[x] = theElems[c];

//increments counter variable
x++;

}
}
 }
}

// Now that we have assigned all the instances of "myMovieClip"
// to "mySelectionArray", we then set the document.selection array
// equal to mySelectionArray. This selects the objects on stage.
fl.getDocumentDOM().selection = mySelectionArray;


document.selectNone()

Availability

Flash MX 2004.

Usage

document.selectNone()

Parameters

None.

Returns

Nothing.

Description

Deselects any selected items. See document.selection and document.selectAll().

Example

The following example deselects any items that are selected:

fl.getDocumentDOM().selectNone();


document.setAlignToDocument()

Availability

Flash MX 2004.

Usage

document.setAlignToDocument( bToStage )

Parameters

The bToStage parameter is a Boolean value that, if set to true, aligns objects to the Stage. If set to false, it does not.

Returns

Nothing.

Description

Sets the preferences for document.align(), document.distribute(),document.match(), and document.space() to act on the document; equivalent to enabling the To Stage button in the Align panel. See document.getAlignToDocument().

Example

The following example enables the To Stage button in the Align panel to align objects with the Stage:

fl.getDocumentDOM().setAlignToDocument(true);


document.setCustomFill()

Availability

Flash MX 2004.

Usage

document.setCustomFill( fill )

Parameters

The fill parameter sets the Fill object.

Returns

Nothing.

Description

Sets the fill settings for the toolbar, Property inspector, and any selected shapes. This allows a script to set the fill settings before drawing the object, rather than drawing the object, select it, and change the fill settings. It also lets a script change the toolbar and Property inspector fill settings. See document.getCustomFill().

Example

The following example changes the color of the fill color swatch in the toolbar, Property inspector, and any selected shapes to white:

var fill = fl.getDocumentDOM().getCustomFill();
fill.color = '#FFFFFF';
fill.style = "solid";
fl.getDocumentDOM().setCustomFill(fill);


document.setCustomStroke()

Availability

Flash MX 2004.

Usage

document.setCustomStroke( stroke )

Parameters

The stroke parameter is a Stroke object.

Returns

Nothing.

Description

Sets the stroke settings for the toolbar, Property inspector, and any selected shapes. This allows a script to set the stroke settings before drawing the object, rather than drawing the object, select it, and change the stroke settings. It also lets a script change the toolbar and Property inspector stroke settings. See document.getCustomStroke().

Example

The following example changes the stroke thickness setting in the toolbar, Property inspector, and any selected shapes:

var stroke = fl.getDocumentDOM().getCustomStroke();
stroke.thickness += 2;
fl.getDocumentDOM().setCustomStroke(stroke);


document.setElementProperty()

Availability

Flash MX 2004.

Usage

document.setElementProperty( property, value )

Parameters

The property parameter is a string that specifies the name of the Element property to set. For a complete list of properties and values, see Property summary for the Element object.

Note: You can't use this method to set values for read-only properties, such as element.elementType, element.top, and element.left.

The value parameter specifies the value to set in the specified Element property.

Returns

Nothing.

Description

Sets the specified Element property on selected object(s) in the document. Does nothing if there is no selection.

Example

The following example sets the width of all selected objects to 100 and the height to 50:

fl.getDocumentDOM().setElementProperty("width", 100);
fl.getDocumentDOM().setElementProperty("height", 50);


document.setElementTextAttr()

Availability

Flash MX 2004.

Usage

document.setElementTextAttr( attrName, attrValue [, startIndex [, endIndex]] )

Parameters

The attrName parameter is a string that specifies the name of the TextAttrs property to change.

The attrValue parameter is the value to which to set the TextAttrs property. For a list of property names and expected values, see Property summary for the TextAttrs object.

The optional startIndex parameter is an integer value that specifies the index of the first character that is affected.

The optional endIndex parameter is an integer value that specifies the index of the last character that is affected.

Returns

A Boolean value: true if at least one text attribute property is changed; false otherwise.

Description

Sets the specified textAttrs property of the selected text items to the specified value. For a list of property names and allowable values, see Property summary for the TextAttrs object. If the optional parameters are not passed, the method sets the style of the currently selected text range, or the whole text field if no text is selected. If only startIndex is passed, the method sets that character's attributes. If startIndex and endIndex are passed, the method sets the attributes on the characters starting from startIndex up to, but not including, endIndex. If paragraph styles are specified, all the paragraphs that fall within the range are affected.

Example

The following examples set the fillColor, italic, and bold text attributes for the selected text items:

var success = fl.getDocumentDOM().setElementTextAttr("fillColor", "#00ff00");
var pass = fl.getDocumentDOM().setElementTextAttr("italic", true, 10);
var ok = fl.getDocumentDOM().setElementTextAttr("bold", true, 5, 15);


document.setFillColor()

Availability

Flash MX 2004.

Usage

document.setFillColor( color )

Parameters

The color parameter is a color string in hexadecimal #rrggbb format (where r is red, g is green, and b is blue), a hexidecimal color value (such as, 0xff0000), or an integer color value. If set to null, no fill color is set, which is the same as setting the Fill color swatch in the user interface to no fill.

Returns

Nothing.

Description

Changes the fill color of the selection to the specified color. For information on changing the fill color in the toolbar and Property inspector, see document.setCustomFill().

Example

The first three statements in the following example set the fill color using each of the different formats for specifying color. The fourth statement sets the fill to no fill.

flash.getDocumentDOM().setFillColor("#cc00cc");
flash.getDocumentDOM().setFillColor(0xcc00cc);
flash.getDocumentDOM().setFillColor(120000);
flash.getDocumentDOM().setFillColor(null);


document.setInstanceAlpha()

Availability

Flash MX 2004.

Usage

document.setInstanceAlpha( opacity )

Parameters

The opacity parameter is an integer between 0 (transparent) and 100 (completely saturated) that adjusts the transparency of the instance.

Returns

Nothing.

Description

Sets the opacity of the instance.

Example

The following example sets the opacity of the tint to a value of 50:

fl.getDocumentDOM().setInstanceAlpha(50);


document.setInstanceBrightness()

Availability

Flash MX 2004.

Usage

document.setInstanceBrightness( brightness )

Parameters

The brightness parameter is an integer that specifies brightness as a value from -100 (black) to 100 (white).

Returns

Nothing.

Description

Sets the brightness for the instance.

Example

The following example sets the brightness for the instance to a value of 50:

fl.getDocumentDOM().setInstanceBrightness(50);


document.setInstanceTint()

Availability

Flash MX 2004.

Usage

document.setInstanceTint( color, strength )

Parameters

The color parameter is a color string in hexadecimal #rrggbb format (where r is red, g is green, and b is blue), a hexidecimal color value (such as, 0xff0000), or an integer color value that specifies the color of the tint. This parameter is equivalent to picking the Color: Tint value for a symbol in the Property Inspector.

The strength parameter is an integer between 0 and 100 that specifies the opacity of the tint.

Returns

Nothing.

Description

Sets the tint for the instance.

Example

The following example sets the tint for the selected instance to red with an opacity value of 50:

fl.getDocumentDOM().setInstanceTint(0xff0000, 50);


document.setSelectionBounds()

Availability

Flash MX 2004.

Usage

document.setSelectionBounds( boundingRectangle )

Parameters

The boundingRectangle parameter is a rectangle that specifies the new location and size of the selection. The parameter specifies location as left and top pixel locations and size as width and height. See document.setSelectionRect().

Returns

Nothing.

Description

Moves and resizes the selection in a single operation.

Example

The following example moves the current selection to 10, 20 and resizes it to 100, 200:

var l = 10;
var t = 20;
fl.getDocumentDOM().setSelectionBounds({left:l, top:t, right:(100+l), bottom:(200+t)});


document.setSelectionRect()

Availability

Flash MX 2004.

Usage

document.setSelectionRect( rect [, bReplaceCurrentSelection] )

Parameters

The rect parameter is a rectangle object to set as selected.

The bReplaceCurrentSelection parameter is a Boolean value, that if set to true, replaces the current selection. If it is false, the method adds to the current selection. The default value, if not set, is true.

Returns

Nothing.

Description

Draws a rectangular selection marquee relative to the Stage, using the specified coordinates. This is unlike document.getSelectionRect(), in which the rectangle is relative to the object being edited.

Equivalent to dragging a rectangle with the arrow tool. An instance must be fully enclosed by the rectangle to be selected.

Note: Repeating setSelectionRect() using the History panel or menu item repeats the step previous to the setSelectionRect() operation.

See document.selection and document.setSelectionBounds().

Example

In the following example, the second selection replaces the first one:

fl.getDocumentDOM().setSelectionRect({left:1, top:1, right:200, bottom:200});
fl.getDocumentDOM().setSelectionRect({left:364.0, top:203.0, right:508.0, bottom:434.0}, true);

In the following example, the second selection is added to the first selection. This is the same as the manual operation of holding down Shift and selecting a second object.

fl.getDocumentDOM().setSelectionRect({left:1, top:1, right:200, bottom:200});
fl.getDocumentDOM().setSelectionRect({left:364.0, top:203.0, right:508.0, bottom:434.0}, false);


document.setStroke()

Availability

Flash MX 2004.

Usage

document.setStroke( color, size, strokeType )

Parameters

The color parameter is a color string in hexadecimal #rrggbb format (where r is red, g is green, and b is blue), a hexidecimal color value (such as, 0xff0000), or an integer color value.

The size parameter is a floating point value that specifies the new stroke size for the selection.

The strokeType parameter is a string that specifies the new type of stroke for the selection. Valid values are "hairline", "solid", "dashed", "dotted", "ragged", "stipple", and "hatched".

Returns

Nothing.

Description

Sets the color, width, and style of the selected strokes. For information on changing the stroke in the toolbar and Property inspector, see document.setCustomStroke().

Example

The following example sets the color of the stroke to red, the size to 3.25, and the type to dashed:

fl.getDocumentDOM().setStroke("#ff0000", 3.25, "dashed");


document.setStrokeColor()

Availability

Flash MX 2004.

Usage

document.setStrokeColor( color )

Parameters

The color parameter is a color string in hexadecimal #rrggbb format (where r is red, g is green, and b is blue), a hexidecimal color value (such as, 0xff0000), or an integer color value.

Returns

Nothing.

Description

Changes the stroke color of the selection to the specified color. For information on changing the stroke in the toolbar and Property inspector, see document.setCustomStroke().

Example

The three statements in the following example set the stroke color using each of the different formats for specifying color:

flash.getDocumentDOM().setStrokeColor("#cc00cc");
flash.getDocumentDOM().setStrokeColor(0xcc00cc);
flash.getDocumentDOM().setStrokeColor(120000);


document.setStrokeSize()

Availability

Flash MX 2004.

Usage

document.setStrokeSize( size )

Parameters

The size parameter is a floating point value from 0.25 to 10 that specifies the stroke size. The method ignores precision greater than two decimal places.

Returns

Nothing.

Description

Changes the stroke size of the selection to the specified size. For information on changing the stroke in the toolbar and Property inspector, see document.setCustomStroke().

Example

The following example changes the stroke size for the selection to 5:

fl.getDocumentDOM().setStrokeSize(5);


document.setStrokeStyle()

Availability

Flash MX 2004.

Usage

document.setStrokeStyle( strokeType )

Parameters

The strokeType parameter is a string that specifies the stroke style for the current selection. Valid values are "hairline", "solid", "dashed", "dotted", "ragged", "stipple", and "hatched".

Returns

Nothing.

Description

Changes the stroke style of the selection to the specified style. For information on changing the stroke in the toolbar and Property inspector, see document.setCustomStroke().

Example

The following example changes the stroke style for the selection to "dashed":

fl.getDocumentDOM().setStrokeStyle("dashed");


document.setTextRectangle()

Availability

Flash MX 2004.

Usage

document.setTextRectangle( boundingRectangle )

Parameters

The boundingRectangle parameter is a text rectangle object that specifies the new size within which the text item should flow.

Returns

A Boolean value: true if the size of at least one text field is changed; false otherwise.

Description

Changes the bounding rectangle for the selected text item to the specified size. This method causes the text to reflow inside the new rectangle; the text item is not scaled or transformed. If the text is horizontal and static, the method only takes into account the width of the rectangle (the height is automatically computed to fit all the text). If the text is vertical, the method only takes into account the height of the rectangle (the width is automatically computed to fit all the text). If the text is dynamic or input, the method is limited by the width and height of the rectangle, but the text field is constrained to fit all the text.

Example

The following example changes the size of the bounding text rectangle to the specified dimensions:

fl.getDocumentDOM().setTextRectangle({left:0, top:0, right:50, bottom:200})


document.setTextSelection()

Availability

Flash MX 2004.

Usage

document.setTextSelection( startIndex, endIndex )

Parameters

The startIndex parameter is an integer that specifies the position of the first character to select. The first character position is 0 (zero).

The endIndex parameter is an integer that specifies the end position of the selection up to, but not including, endIndex. The first character position is 0 (zero).

Returns

A Boolean value: true if the method can successfully set the text selection; false otherwise.

Description

Sets the text selection of the currently selected text field to the values specified by the startIndex and endIndex values. Text editing is activated, if it isn't already.

Example

The following example selects the text from the sixth character through the twenty-fifth character:

fl.document.setTextSelection(5, 25);


document.setTextString()

Availability

Flash MX 2004.

Usage

document.setTextString( text [, startIndex [, endIndex]] )

Parameters

The text parameter is a string of the characters to insert in the text field.

The optional startIndex parameter is an integer that specifies first character to replace. The first character position is 0 (zero).

The optional endIndex parameter is an integer that specifies the last character to replace. The first character position is 0 (zero).

Returns

A Boolean value: true if the text of at least one text string is set; false otherwise.

Description

Inserts a string of text. If the optional parameters are not passed, the existing text selection is replaced; if the text object isn't currently being edited, the whole text string is replaced. If only startIndex is passed, the string passed is inserted at this position. If startIndex and endIndex are passed, the string passed replaces the segment of text starting from startIndex up to, but not including, endIndex. See document.getTextString().

Example

The following example replaces the current text selection with "Hello World":

var success = fl.getDocumentDOM().setTextString("Hello World!");

The following example inserts "hello" at position 6 of current text selection:

var pass = fl.getDocumentDOM().setTextString("hello", 6);

The following example inserts "Howdy" starting at position 2 and up to, but not including, position 7 of the current text selection:

var ok = fl.getDocumentDOM().setTextString("Howdy", 2, 7);


document.setTransformationPoint()

Availability

Flash MX 2004.

Usage

document.setTransformationPoint( transformationPoint )

Parameters

The transformationPoint parameter is a pair of floating point numbers that specifies values for each of the following elements:

  • Shapes: transformationPoint is set relative to document. 0,0 is the same as the Stage (upper left corner).
  • Symbols: transformationPoint is set relative to the symbol's registration point. 0,0 is located at the registration point.
  • Text: transformationPoint is set relative to the text field. 0,0 is the upper left corner of text field.
  • Bitmaps/videos: transformationPoint is set relative to bitmap/video. 0,0 is the upper left corner of the bitmap or video.
  • Groups: transformationPoint is set relative to document. 0,0 is the same as the Stage (upper left corner)

Returns

Nothing.

Description

Moves the transformation point of the current selection. See document.getTransformationPoint().

Example

The following example sets the transformation point of the current selection to 100, 200:

fl.getDocumentDOM().setTransformationPoint({x:100, y:200});


document.silent

Availability

Flash MX 2004.

Usage

document.silent

Description

A Boolean value that specifies whether the object is accessible. This is equivalent to the inverse logic of the Make Movie Accessible setting in the Accessibility panel. That is, if document.silent is true, it is the same as the Make Movie Accessible option being unchecked. If it is false, it is the same as the Make Movie Accessible option being checked.

Example

The following example sets the isSilent variable to the value of the silent property:

var isSilent = fl.getDocumentDOM().silent;

The following example sets the silent property to false, indicating that the document is accessible:

fl.getDocumentDOM().silent = false;


document.skewSelection()

Availability

Flash MX 2004.

Usage

document.skewSelection( xSkew, ySkew [, whichEdge] )

Parameters

The xSkew parameter is a floating point number that specifies the amount of x by which to skew, measured in degrees.

The ySkew parameter is a floating point number that specifies the amount of y by which to skew, measured in degrees.

The optional whichEdge parameter is a string that specifies the edge where the transformation occurs; if omitted, skew occurs at the transformation point. Valid values are: "top center", "right center", "bottom center", and "left center".

Returns

Nothing.

Description

Skews the selection by a specified amount. The effect is the same as using the Free Transform tool to skew the object.

Example

The following examples skew the selected object by 2.0 vertically and 1.5 horizontally. The second example transforms the object at the top center edge:

flash.getDocumentDOM().skewSelection(2.0, 1.5);
flash.getDocumentDOM().skewSelection(2.0, 1.5, "top center");


document.smoothSelection()

Availability

Flash MX 2004.

Usage

document.smoothSelection()

Parameters

None.

Returns

Nothing.

Description

Smooths the curve of each selected fill outline or curved line. This method performs the same action as the Smooth button in the Tools panel.

Example

The following example smooths the curve of the current selection:

fl.getDocumentDOM().smoothSelection();


document.space()

Availability

Flash MX 2004.

Usage

document.space( direction [, bUseDocumentBounds] )

Parameters

The direction parameter is a string that specifies the direction in which to space the objects in the selection. Valid values for direction are "horizontal" or "vertical".

The optional bUseDocumentBounds parameter is a Boolean value that, when set to true, spaces the objects to the document bounds. Otherwise, the method uses the bounds of the selected objects. The default is false.

Returns

Nothing.

Description

Spaces the objects in the selection evenly. See document.setAlignToDocument() and document.getAlignToDocument().

Example

The following example spaces the objects horizontally, relative to the Stage:

fl.getDocumentDOM().space("horizontal",true);

The following example spaces the objects horizontally, relative to each other:

fl.getDocumentDOM().space("horizontal");

The following example spaces the objects horizontally, relative to each other, with bUseDcoumentBounds expressly set to false:

fl.getDocumentDOM().space("horizontal",false);


document.straightenSelection()

Availability

Flash MX 2004.

Usage

document.straightenSelection()

Parameters

None.

Returns

Nothing.

Description

Straightens the currently selected strokes; equivalent to using the Straighten button in the Tools panel.

Example

The following example straightens the curve of the current selection:

fl.getDocumentDOM().straightenSelection();


document.swapElement()

Availability

Flash MX 2004.

Usage

document.swapElement( name )

Parameters

The name parameter is a string that specifies the name of the library item to use.

Returns

Nothing.

Description

Swaps the current selection with the specified one. The selection must contain a graphic, button, movie clip, video, or bitmap. Displays an error message if no object is selected or the given object could not be found.

Example

The following example swaps the current selection with Symbol 1 from the library:

fl.getDocumentDOM().swapElement('Symbol 1');


document.testMovie()

Availability

Flash MX 2004.

Usage

document.testMovie()

Parameters

None.

Returns

Nothing.

Description

Executes a Test Movie operation on the document. See document.canTestMovie() and document.testScene().

Example

The following example tests the movie for the current document:

fl.getDocumentDOM().testMovie();


document.testScene()

Availability

Flash MX 2004.

Usage

document.testScene()

Parameters

None.

Returns

Nothing.

Description

Executes a Test Scene operation on the current scene of the document. See document.canTestScene() and document.testMovie().

Example

The following example tests the current scene in the document:

fl.getDocumentDOM().testScene();


document.timelines

Availability

Flash MX 2004.

Usage

document.timelines

Description

Read-only property; an array of Timeline objects (see Timeline object). See document.getTimeline() and document.currentTimeline.

Example

The following example gets the array of current Timelines in the active document and displays their names in the Output panel:

var i = 0;
var curTimelines = fl.getDocumentDOM().timelines;
while(i < fl.getDocumentDOM().timelines.length){
  alert(curTimelines[i].name);
  ++i;
}


document.traceBitmap()

Availability

Flash MX 2004.

Usage

document.traceBitmap( threshold, minimumArea, curveFit, cornerThreshold )

Parameters

threshold, minimumArea, curveFit, cornerThreshold

The threshold parameter is an integer that controls the number of colors in your traced bitmap. Valid values are integers between 0 and 500.

The minimumArea parameter is an integer that specifies the radius measured in pixels. Valid values are integers between 1 and 1000.

The curveFit parameter is a string that specifies how smoothly outlines are drawn. Valid values are: "pixels", "very tight", "tight", "normal", "smooth", and "very smooth".

The cornerThreshold parameter is a string that is similar to curveFit, but it pertains to the corners of the bitmap image. Valid values are: "many corners", "normal", and "few corners".

Returns

Nothing.

Description

Performs a trace bitmap on the current selection; equivalent to selecting Modify > Bitmap > Trace Bitmap.

Example

The following example traces the selected bitmap, using the specified parameters:

fl.getDocumentDOM().traceBitmap(0, 500, 'normal', 'normal');


document.transformSelection()

Availability

Flash MX 2004.

Usage

document.transformSelection( a, b, c, d)

Parameters

The a parameter is a floating point number that specifies the (0,0) element of the transformation matrix.

The b parameter is a floating point number that specifies the (0,1) element of the transformation matrix.

The c parameter is a floating point number that specifies the (1,0) element of the transformation matrix.

The d parameter is a floating point number that specifies the (1,1) element of the transformation matrix.

Returns

Nothing.

Description

Performs a general transformation on the current selection by applying the matrix specified in the arguments. For more information, see the element.matrix property.

Example

The following example stretches the selection by a factor of 2 in the x direction:

fl.getDocumentDOM().transformSelection(2.0, 0.0, 0.0, 1.0);


document.unGroup()

Availability

Flash MX 2004.

Usage

document.unGroup()

Parameters

None.

Returns

Nothing.

Description

Ungroups the current selection. See document.group().

Example

The following example ungroups the elements in the current selection:

fl.getDocumentDOM().unGroup();


document.unlockAllElements()

Availability

Flash MX 2004.

Usage

document.unlockAllElements()

Parameters

None.

Returns

Nothing.

Description

Unlocks all locked elements on the currently selected frame. See element.locked.

Example

The following example unlocks all locked objects in the current frame:

fl.getDocumentDOM().unlockAllElements();


document.viewMatrix

Availability

Flash MX 2004.

Usage

document.viewMatrix

Description

Read-only property; a Matrix object. The viewMatrix is used to transform from object space to document space when the document is in edit mode. The mouse location, as a tool receives it, is relative to the object that is currently being edited.

For example, if you create a symbol, double-click to edit it, and draw with the polyStar tool, the point (0,0) will be at the registration point of the symbol. However, the drawingLayer object expects values in document space, so if you draw a line from (0,0) using the drawingLayer, it will start at the upper left corner of the Stage. The viewMatrix provides a way to transform from the space of the object being edited to document space.

Example

The following example gets the value of the viewMatrix property:

var mat = fl.getDocumentDOM().viewMatrix;


document.width

Availability

Flash MX 2004.

Usage

document.width

Description

An integer that specifies the width of the document (Stage) in pixels. See document.height.

Example

The following example sets the width of the Stage to 400 pixels.

fl.getDocumentDOM().width= 400;


document.xmlPanel()

Availability

Flash MX 2004.

Usage

document.xmlPanel( fileURI )

Parameters

The fileURI parameter is a string that specifies the path, expressed as a file://URL, to the XML file defining the controls in the panel. The full path is required.

Returns

An object that has properties defined for all controls defined in the XML file. All properties are returned as strings. The returned object will have one predefined property named "dismiss" that will have the string value "accept" or "cancel".

Description

Posts a XMLUI dialog box. See fl.xmlui.

Example

The following example loads the Test.xml file and displays each property contained within it:

var obj = fl.getDocumentDOM().xmlPanel(fl.configURI + "Commands/Test.xml");
for (var prop in obj) {
  fl.trace("property " + prop + " = " + obj[prop]);
}


drawingLayer object

Availability

Flash MX 2004.

Description

The drawingLayer object is accessible from JavaScript as a child of the flash object. The drawingLayer object is used for extensible tools when the user wants to temporarily draw while dragging—for example, when creating a selection marquee. You should call drawingLayer.beginFrame() before you call any other drawingLayer methods.

Method summary for the drawingLayer object

The following methods are available for the drawingLayer object:

Methods | Description
drawingLayer.beginDraw() | Puts Flash in drawing mode.
drawingLayer.beginFrame() | Erases what was previously drawn using the drawingLayer and prepares for more drawing commands.
drawingLayer.cubicCurveTo() | Draws a cubic curve from the current pen location using the parameters as the coordinates of the cubic segment.
drawingLayer.curveTo() | Draws a quadratic curve segment starting at the current drawing position and ending at a specified point.
drawingLayer.drawPath() | Draws the specified path.
drawingLayer.endDraw() | Exits drawing mode.
drawingLayer.endFrame() | Signals the end of a group of drawing commands.
drawingLayer.lineTo() | Draws a line from the current drawing position to the point (x,y).
drawingLayer.moveTo() | Sets the current drawing position.
drawingLayer.newPath() | Returns a new Path object.
drawingLayer.setColor() | Sets the color of subsequently drawn data.


drawingLayer.beginDraw()

Availability

Flash MX 2004.

Usage

drawingLayer.beginDraw([persistentDraw])

Parameters

The optional persistentDraw parameter is a Boolean value. If set to true, it indicates that the drawing in the last frame will remain on the Stage until a new beginDraw() or beginFrame() call is made. (In this context, frame refers to where you start and where you end drawing; it does not refer to Timeline frames.) For example, when users draw a rectangle, they can preview the outline of the shape while dragging the mouse. If you want that preview shape to remain after the user releases the mouse button, set persistentDraw to true.

Returns

Nothing.

Description

Method; puts Flash in drawing mode. Drawing mode is used for temporary drawing while the mouse button is pressed. You typically use this method only when creating extensible tools.

Example

The following example puts Flash in drawing mode:

fl.drawingLayer.beginDraw();


drawingLayer.beginFrame()

Availability

Flash MX 2004.

Usage

drawingLayer.beginFrame()

Parameters

None.

Returns

Nothing.

Description

Method; erases what was previously drawn using the drawingLayer and prepares for more drawing commands. Should be called after drawingLayer.beginDraw(). Everything drawn between drawingLayer.beginFrame() and an drawingLayer.endFrame() remains on the Stage until you call the next beginFrame() and endFrame(). (In this context, frame refers to where you start and where you end drawing; it does not refer to Timeline frames.) You typically use this method only when creating extensible tools.


drawingLayer.cubicCurveTo()

Availability

Flash MX 2004.

Usage

drawingLayer.cubicCurveTo(x1Ctrl, y1Ctrl, x2Ctl, y2Ctl, xEnd, yEnd)

Parameters

The x1Ctl parameter is a floating-point value that is the x location of the first control point.

The y1Ctl parameter is a floating-point value that is the y location of the first control point.

The x2Ctl parameter is a floating-point value that is the x position of the middle control point.

The y2Ctl parameter is a floating-point value that is the y position of the middle control point.

The xEnd parameter is a floating-point value that is the x position of the end control point.

The yEnd parameter is a floating-point value that is the y position of the end control point.

Returns

Nothing.

Description

Draws a cubic curve from the current pen location using the parameters as the coordinates of the cubic segment. You typically use this method only when creating extensible tools.

Example

The following example draws a cubic curve using the specified control points:

fl.drawingLayer.cubicCurveTo(0, 0, 1, 1, 2, 0);


drawingLayer.curveTo()

Availability

Flash MX 2004.

Usage

drawingLayer.curveTo(xCtl, yCtl, xEnd, yEnd)

Parameters

The xCtl parameter is a floating-point value that is the x position of the control point.

The yCtl parameter is a floating-point value that is the y position of the control point.

The xEnd parameter is a floating-point value that is the x position of the end control point.

The yEnd parameter is a floating-point value that is the y position of the end control point.

Returns

Nothing.

Description

Method; draws a quadratic curve segment starting at the current drawing position and ending at a specified point. You typically use this method only when creating extensible tools.

Example

The following example draws a quadratic curve using the specified control points:

fl.drawingLayer.curveTo(0, 0, 2, 0);


drawingLayer.drawPath()

Availability

Flash MX 2004.

Usage

drawingLayer.drawPath(path)

Parameters

The path parameter is a Path object to draw.

Returns

Nothing.

Description

Method; draws the path specified by the path parameter. You typically use this method only when creating extensible tools.

Example

The following example draws a path specified by the Path object named gamePath:

fl.drawingLayer.drawPath(gamePath);


drawingLayer.endDraw()

Availability

Flash MX 2004.

Usage

drawingLayer.endDraw()

Parameters

None.

Returns

Nothing.

Description

Method; exits drawing mode. Drawing mode is used when you want to temporarily draw while the mouse button is pressed. You typically use this method only when creating extensible tools.

Example

The following example exits drawing mode:

fl.drawingLayer.endDraw();


drawingLayer.endFrame()

Availability

Flash MX 2004.

Usage

drawingLayer.endFrame()

Parameters

None.

Returns

Nothing.

Description

Method; signals the end of a group of drawing commands. A group of drawing commands refers to everything drawn between drawingLayer.beginFrame() and drawingLayer.endFrame(). The next call to drawingLayer.beginFrame() will erase whatever was drawn in this group of drawing commands. You typically use this method only when creating extensible tools.


drawingLayer.lineTo()

Availability

Flash MX 2004.

Usage

drawingLayer.lineTo(x, y)

Parameters

The x parameter is a floating-point value that is the x coordinate of the end point of the line to draw.

The y parameter is a floating-point value that is the y coordinate of the end point of the line to draw.

Returns

Nothing.

Description

Method; draws a line from the current drawing position to the point (x,y). You typically use this method only when creating extensible tools.

Example

The following example draws a line from the current drawing position to the point (20,30):

fl.drawingLayer.lineTo(20, 30);


drawingLayer.moveTo()

Availability

Flash MX 2004.

Usage

drawingLayer.moveTo(x, y)

Parameters

The x parameter is a floating-point value that specifies the x coordinate of the position at which to start drawing.

The y parameter is a floating-point value that specifies the y coordinate of the position at which to start drawing.

Returns

Nothing.

Description

Method; sets the current drawing position. You typically use this method only when creating extensible tools.

Example

The following example sets the current drawing position at the point (10,15):

fl.drawingLayer.moveTo(10, 15);


drawingLayer.newPath()

Availability

Flash MX 2004.

Usage

drawingLayer.newPath()

Parameters

None.

Returns

A Path object.

Description

Method; returns a new Path object. You typically use this method only when creating extensible tools.

Example

The following example returns a new Path object:

fl.drawingLayer.newPath();


drawingLayer.setColor()

Availability

Flash MX 2004.

Usage

drawingLayer.setColor(color)

Parameters

The color parameter is a color that is specified by a string, integer, or hexadecimal value.

Returns

Nothing.

Description

Method; sets the color of subsequently drawn data. Applies only to persistent data. To use this method, the parameter passed to drawingLayer.beginDraw() must be set to true. You typically use this method only when creating extensible tools.

Example

The following example draws a red line on the Stage:

fl.drawingLayer.beginDraw( true );
fl.drawingLayer.beginFrame();
fl.drawingLayer.setColor( "#ff0000" );
fl.drawingLayer.moveTo(0,0);
fl.drawingLayer.lineTo(100,100);
fl.drawingLayer.endFrame();
fl.drawingLayer.endDraw();


Edge object

Availability

Flash MX 2004.

Description

The Edge object represents an edge of a shape on the Stage.

Method summary for the Edge object

The following methods are available for the Edge object:

Method | Description
edge.getControl() | Gets a point object set to the location of the specified control point of the edge.
edge.getHalfEdge() | Returns a HalfEdge object.
edge.setControl() | Sets the position of the control point of the edge.
edge.splitEdge() | Splits the edge into two pieces.

Property summary for the Edge object

The following properties are available for the Edge object:

Property | Description
edge.id | Read-only property; an integer that represents a unique identifier for the edge.
edge.isLine | Read-only property; an integer with a value of 0 or 1.


edge.getControl()

Availability

Flash MX 2004.

Usage

edge.getControl(i)

Parameters

The parameter i is an integer that specifies which control point of the edge to return. Specify 0 for the first control point, 1 for the middle control point, or 2 for the end control point. If the edge.isLine property is true, the middle control point is set to the midpoint of the segment joining the beginning and ending control points.

Returns

The specified control point.

Description

Method; gets a point object set to the location of the specified control point of the edge.

Example

The following example stores the first control point of the specified shape in the pt variable:

var shape = fl.getDocumentDOM().selection[0];
var pt = shape.edges[0].getControl(0);


edge.getHalfEdge()

Availability

Flash MX 2004.

Usage

edge.getHalfEdge(index)

Parameters

The index parameter is an integer that specifies which half edge to return. The value of index must be either 0 for the first half edge or 1 for the second half edge.

Returns

A HalfEdge object.

Description

Returns a HalfEdge object.

Example

The following example stores the half edges of the specified edge in the hEdge0 and hEdge0 variables:

var shape = fl.getDocumentDOM().selection[0];
var edge = shape.edges[0];
var hEdge0 = edge.getHalfEdge(0);
var hEdge1 = edge.getHalfEdge(1);


edge.id

Availability

Flash MX 2004.

Usage

edge.id

Description

Read-only property; an integer that represents a unique identifier for the edge.

Example

The following example stores a unique identifier for the specified edge in the my_shape_id variable:

var shape = fl.getDocumentDOM().selection[0];
var my_shape_id = shape.edges[0].id;


edge.isLine

Availability

Flash MX 2004.

Usage

edge.isLine

Description

Read-only property; an integer with a value of 0 or 1. A value of 1 indicates that the edge is a straight line. In that case, the middle control point bisects the line joining the two end points.

Example

The following example determines whether the specified edge is a straight line, and displays a value of 1 (it is a straight line) or 0 (it isn't a straight line) in the Output panel:

var shape = fl.getDocumentDOM().selection[0];
fl.trace(shape.edges[0].isLine);


edge.setControl()

Availability

Flash MX 2004.

Usage

edge.setControl( index, x, y )

Parameters

  • The index parameter specifies which control point to set. Use values 0, 1, or 2 to specify the beginning, middle, and end control points, respectively.
  • The x parameter is a floating point value that specifies the horizontal location of the control point. If the Stage is in Edit or Edit-in-place mode, the point coordinate is relative to the edited object. Otherwise, the point coordinate is relative to the Stage.
  • The y parameter is a floating point value that specifies the vertical location of the control point. If the Stage is in Edit or Edit-in-place mode, the point coordinate is relative to the edited object. Otherwise, the point coordinate is relative to the Stage.

Returns

Nothing.

Description

Sets the position of the control point of the edge. You must call shape.beginEdit() before using this method.

Example

The following example sets the beginning control point of the specified edge to the (0, 1) coordinates:

x = 0; y = 1;
var shape = fl.getDocumentDOM().selection[0];
shape.beginEdit();
shape.edges[0].setControl(0, x, y);
shape.endEdit();


edge.splitEdge()

Availability

Flash MX 2004.

Usage

edge.splitEdge( t )

Parameters

The t parameter is a floating point value between 0 and 1 that specifies where to split the edge. A value of 0 represents one end point, and 1 the other. For example, passing a value of 0.5 splits the edge in the middle, which, for a line is exactly in the center. If the edge represents a curve, 0.5 represents the parametric middle of the curve.

Returns

Nothing.

Description

Splits the edge into two pieces. You must call shape.beginEdit() before using this method.

Example

The following example splits the specified edge in half.

var shape = fl.getDocumentDOM().selection[0];
shape.beginEdit()
shape.edges[0].splitEdge( 0.5 );
shape.endEdit()


Effect object

Availability

Flash MX 2004.

Description

This is a single effect descriptor object. The fl.activeEffect and the fl.effects properties contain this type of object. The Effect object represents an instance of a Timeline effect.

Property summary for the Effect object

In addition to the properties listed in the following table, Effect objects can also have user-defined parameters, which must be specified in the same XML file that specifies the effect.effectName and effect.sourceFile properties. These parameters specify which UI elements should be created (such as edit fields, check boxes, and list boxes), which is controlled by the type of effect you are creating. You can specify labels that will appear with the control in addition to default values.

Property | Description
effect.effectName | Read-only property; a string that appears in the Context menu for effects.
effect.groupName | Read-only property; a string that represents the name of the effect group used for the hierarchical Context menu for effects.
effect.sourceFile | Read-only property; a string that specifies the name of JSFL source file for the specified effect.
effect.symbolType | Read-only property; a string that specifies the type of symbol to create during the initial application of the effect.
effect.useXMLToUI | A Boolean value that lets you override the default behavior of using XMLUI to construct a dialog box that consists of one or more controls.


effect.effectName

Availability

Flash MX 2004.

Usage

effect.effectName

Description

Read-only property; a string that appears in the Context menu for effects. Each effect must be uniquely named.

Example

The following example stores the name of the current effect in the efName variable:

var efName = fl.activeEffect.effectName;


effect.groupName

Availability

Flash MX 2004.

Usage

effect.groupName

Description

Read-only property; a string that represents the name of the effect group used for the hierarchical Context menu for effects. If this value is an empty string, the effect appears ungrouped at the top level of the Context menu. The group name and effect name are specified in the XML file for the effect.

Example

The following example stores the group name of the current effect in the efGroupName variable:

var efGroupName = fl.activeEffect.groupName;


effect.sourceFile

Availability

Flash MX 2004.

Usage

effect.sourceFile

Description

Read-only property; a string that specifies the name of JSFL source file for the specified effect. This string is used to bind an XML parameter file to its JSFL effect implementation. You must include this XML parameter in the XML file for the effect.

Example

The following example stores the name of the JSFL effect source file in the efSourceFile variable:

var efSourceFile = fl.activeEffect.sourceFile;


effect.symbolType

Availability

Flash MX 2004.

Usage

effect.symbolType

Description

Read-only property; a string that specifies the type of symbol to create during the initial application of the effect. The supported types are: "graphic", "movie clip", and "button". If a symbol type was not specified when the effect was created, the default value is "graphic".

Example

The following example stores the symbol type for the current effect in the efType variable:

var efType = fl.activeEffect.symbolType;


effect.useXMLToUI

Availability

Flash MX 2004.

Usage

effect.useXMLToUI

Description

A Boolean value that lets you override the default behavior of using XMLUI to construct a dialog box that consists of one or more controls. The default value is true. If set to false, the standard XMLUI dialog box will not be posted and you are responsible for posting a UI.

Example

The following example specifies that the effect does its own UI:

function configureEffect() {
  fl.activeEffect.useXMLToUI = false;
}


Element object

Availability

Flash MX 2004.

Description

Everything that appears on the Stage is of the type Element. The following example code lets you select an element:

fl.getDocumentDOM().getTimeline().frames[0].layers[0].elements[0];

Method summary for the Element object

The following methods are available for the Element object:

Method | Description
element.getPersistentData() | Retrieves the value of the data specified by the name parameter.
element.hasPersistentData() | Determines whether the specified data has been attached to the specified element.
element.removePersistentData() | Removes any persistent data with the specified name that has been attached to the object.
element.setPersistentData() | Stores data with an element.

Property summary for the Element object

The following properties are available for the Element object:

Property | Description
element.depth | Read-only property; an integer that has a value greater than 0 for the depth of the object in the view.
element.elementType | Read-only property; a string that represents the type of the specified element.
element.height | A float value that specifies the height of the element in pixels.
element.left | Read-only property; a float value that represents the left side of the element.
element.locked | A Boolean value: true if the element is locked; false otherwise.
element.matrix | A Matrix object. The matrix has properties a, b, c, d, tx, and ty. a, b, c, d are floating point values; tx and ty are coordinates.
element.name | A string that specifies the name of the element, normally referred to as the Instance name.
element.top | Read-only property; top side of the element.
element.width | A float value that specifies the width of the element in pixels.


element.depth

Availability

Flash MX 2004.

Usage

element.depth

Description

Read-only property; an integer that has a value greater than 0 for the depth of the object in the view. The drawing order of objects on the Stage specifies which one is on top of the others. Object order can also be managed with the Modify > Arrange menu item.

Example

The following example displays the depth of the specified element in the Output panel:

// select an object then run this script
fl.trace("Depth of selected object: " + fl.getDocumentDOM().selection[0].depth);

See the example for element.elementType.


element.elementType

Availability

Flash MX 2004.

Usage

element.elementType

Description

Read-only property; a string that represents the type of the specified element. The value is one the following: "shape", "text", "instance", or "shapeObj". A "shapeObj" is created with an extensible tool.

Example

The following example stores the type of the first element in the eType variable:

// In a new file, place a movie clip on first frame top layer,
// then run this line of script
var eType = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].elementType; //eType = instance

The following example displays several properties for all the elements in the current layer or frame:

var tl = fl.getDocumentDOM().getTimeline()
var elts = tl.layers[tl.currentLayer].frames[tl.currentFrame].elements;
for (var x = 0; x < elts.length; x++) {

var elt = elts[x];
fl.trace("Element "+ x +" Name = " + elt.name + " Type = " + elt.elementType + " location = " + elt.left + "," + elt.top + " Depth = " + elt.depth);

}


element.getPersistentData()

Availability

Flash MX 2004.

Usage

element.getPersistentData( name )

Parameters

The name parameter is a string that identifies the data to be returned.

Returns

The data specified by the name parameter, or 0 if the data doesn't exist.

Description

Retrieves the value of the data specified by the name parameter. The type of data depends on the type of the data that was stored (see element.setPersistentData()). Only symbols and bitmaps support persistent data.

Example

The following example sets and gets data for the specified element, shows its value in the Output panel, and then removes the data:

// at least one symbol or bitmap is selected in the first layer, first frame
var elt = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0];
elt.setPersistentData("myData","integer", 12);
if (elt.hasPersistentData("myData")){

fl.trace("myData = "+ elt.getPersistentData("myData"));
elt.removePersistentData( "myData" );
fl.trace("myData = "+ elt.getPersistentData("myData"));

}


element.hasPersistentData()

Availability

Flash MX 2004.

Usage

element.hasPersistentData( name )

Parameters

The name parameter is a string that specifies the name of the data item to test.

Returns

A Boolean value: true if the specified data is attached to the object; false otherwise.

Description

Determines whether the specified data has been attached to the specified element. Only symbols and bitmaps support persistent data.

Example

See element.getPersistentData().


element.height

Availability

Flash MX 2004.

Usage

element.height

Description

A float value that specifies the height of the element in pixels.

Note: To resize a text field, do not use this property. Instead, select the text field and use document.setTextRectangle(). Using this property with a text field scales the text.

Example

The following example sets the height of the specified element to 100:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].height = 100;


element.left

Availability

Flash MX 2004.

Usage

element.left

Description

Read-only property; a float value that represents the left side of the element. The value of element.left is relative to the upper left of the Stage for elements that are in a scene, and is relative to the symbol's registration point if the element is stored within a symbol.Use document.setSelectionBounds() or document.moveSelectionBy() to set this property.

Example

The following example illustrates how the value of this property changes when an element is moved:

//Select an element on the stage and then run this script
var sel = fl.getDocumentDOM().selection[0];
fl.trace("Left (before) = " + sel.left);
fl.getDocumentDOM().moveSelectionBy({x:100, y:0});
fl.trace("Left (after) = " + sel.left);

See the element.elementType example.


element.locked

Availability

Flash MX 2004.

Usage

element.locked

Description

A Boolean value: true if the element is locked; false otherwise. If the value of element.elementType is "shape", this property is ignored.

Example

The following example locks the first element in the first frame, top layer:

// similar to Modify > Arrange > Lock:
fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].locked = true;


element.matrix

Availability

Flash MX 2004.

Usage

element.matrix

Description

A Matrix object. A matrix has properties a, b, c, d, tx, and ty. The a, b, c, and d properties are floating point values; the tx and ty properties are coordinates.

Example

The following example moves the specified element by 10 pixels in x and 20 pixels in y:

var mat = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].matrix;
mat.tx += 10;
mat.ty += 20;
fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].matrix = mat;


element.name

Availability

Flash MX 2004.

Usage

element.name

Description

A string that specifies the name of the element, normally referred to as the Instance name. If the value of element.elementType is "shape", this property is ignored.

Example

The following example sets the Instance name of the first element in frame 1, top layer to "clip_mc":

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].name = "clip_mc";

See the element.elementType example.


element.removePersistentData()

Availability

Flash MX 2004.

Usage

element.removePersistentData( name )

Parameters

The name parameter is a string that specifies the name of the data to remove.

Returns

Nothing.

Description

Removes any persistent data with the specified name that has been attached to the object. Only symbols and bitmaps support persistent data.

Example

See element.getPersistentData().


element.setPersistentData()

Availability

Flash MX 2004.

Usage

element.setPersistentData( name, type, value )

Parameters

The name parameter is a string that specifies the name to associate with the data. This name is used to retrieve the data.

The type parameter is a string that defines the type of the data. The allowable values are "integer", "integerArray", "double", "doubleArray", "string", and "byteArray".

The value parameter specifies the value to associate with the object. The data type of value depends on the value of the type parameter. The specified value should be appropriate to the data type specified by the type parameter.

Returns

Nothing.

Description

Stores data with an element. The data is available when the FLA file containing the element is reopened. Only symbols and bitmaps support persistent data.

Example

See element.getPersistentData().


element.top

Availability

Flash MX 2004.

Usage

element.top

Description

Read-only property; top side of the element. The value of element.top is relative to the upper left of the Stage for elements that are in a scene, and is relative to the symbol's registration point if the element is stored within a symbol. Use document.setSelectionBounds() or document.moveSelectionBy() to set this property.

Example

The following example shows how the value of this property changes when an element is moved:

//Select an element on the stage and then run this script
var sel = fl.getDocumentDOM().selection[0];
fl.trace("Top (before) = " + sel.top);
fl.getDocumentDOM().moveSelectionBy({x:0, y:100});
fl.trace("Top (after) = " + sel.top);

See the element.elementType example.


element.width

Availability

Flash MX 2004.

Usage

element.width

Description

A float value that specifies the width of the element in pixels.

Note: To resize a text field, do not use this property. Instead, select the text field and use document.setTextRectangle(). Using this property with a text field scales the text.

Example

The following example sets the width of the specified element to 100:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].width= 100;


EmbeddedVideoInstance object

Inheritance Element object > Instance object > EmbeddedVideoInstance object

Availability

Flash MX 2004.

Description

The EmbeddedVideoInstance object is a subclass of Instance object. There are no unique methods or properties of EmbeddedVideoInstance.


Fill object

Availability

Flash MX 2004.

Description

This object contains all the properties of the Fill color setting of the toolbar or of a selected shape. To retrieve a Fill object, use document.getCustomFill().

Property summary for the Fill object

The following properties are available for the Fill object:

Property | Description
fill.color | A color string in hexadecimal format, such as #rrggbb, or an integer containing the color value.
fill.colorArray | An array of colors in gradient.
fill.matrix | A Matrix object that defines the placement, orientation, and scales for gradient fills.
fill.posArray | An array of integers, each in the range 0 ... 255, indicating the position of the corresponding color.
fill.style | A string that specifies the fill style.


fill.color

Availability

Flash MX 2004.

Usage

fill.color

Description

A color string in hexadecimal format, such as #rrggbb, or an integer containing the color value.

Example

The following example sets the fill color of the current selection:

var fill = fl.getDocumentDOM().getCustomFill();
fill.color = '#FFFFFF';
fl.getDocumentDOM().setCustomFill( fill );


fill.colorArray

Availability

Flash MX 2004.

Usage

fill.colorArray

Description

An array of colors in gradient. Available only if the value of the fill.style property is either "radialGradient" or "linearGradient".

Example

The following example displays the color array of the current selection, if appropriate, in the Output panel.

var fill = fl.getDocumentDOM().getCustomFill();
if(fill.style == "linearGradient" || fill.style == "radialGradient")
  alert(fill.colorArray);


fill.matrix

Availability

Flash MX 2004.

Usage

fill.matrix

Description

A Matrix object that defines the placement, orientation, and scales for gradient fills.


fill.posArray

Availability

Flash MX 2004.

Usage

fill.posArray

Description

An array of integers, each in the range 0 ... 255, indicating the position of the corresponding color. Available only if the value of the fill.style property is either "radialGradient" or "linearGradient".

Example

The following example specifies the colors to use in a linear gradient for the current selection:

var fill = fl.getDocumentDOM().getCustomFill();
fill.style = "linearGradient";
fill.colorArray = [ 0x00ff00, 0xff0000, 0x0000ff ];
fill.posArray  = [0,  100, 200];
fl.getDocumentDOM().setCustomFill( fill );


fill.style

Availability

Flash MX 2004.

Usage

fill.style

Description

A string that specifies the fill style. Valid values are: "solid", "linearGradient", "radialGradient", and "noFill". If an object has no fill, this property has a value of "noFill".

If this value is "linearGradient" or "radialGradient", the properties fill.colorArray and fill.posArray are also available.

Example

The following example specifies the colors to use in a linear gradient for the current selection:

var fill = fl.getDocumentDOM().getCustomFill();
fill.style= "linearGradient";
fill.colorArray = [ 0x00ff00, 0xff0000, 0x0000ff ];
fill.posArray  = [0,  100, 200];
fl.getDocumentDOM().setCustomFill( fill );


flash object

Availability

Flash MX 2004.

Description

The flash object represents the Flash application.

Method summary for the flash object

The following methods can be used with the flash object.

Method | Description
fl.browseForFileURL() | Opens a File Open or File Save system dialog box and lets the user specify a file to be opened or saved.
fl.closeAll() | Closes all open documents, displaying the Save As dialog box for any documents that were not previously saved.
fl.closeDocument() | Closes the specified document.
fl.createDocument() | Opens a new document and selects it.
fl.enableImmediateUpdates() | Lets the script developer enable immediate visual updates of the Timeline when executing effects.
fl.fileExists() | Checks whether a file already exists on disk.
fl.findDocumentIndex() | Finds the index of an open document with the specified name.
fl.getDocumentDOM() | Retrieves the DOM (Document object) of the currently active document.
fl.mapPlayerURL() | Maps an escaped Unicode URL to a UTF-8 or MBCS URL.
fl.openDocument() | Opens a Flash (FLA) document for editing in a new Flash Document window and gives it the focus.
fl.openProject() | Opens a Flash Project (FLP) file in the authoring tool for editing.
fl.openScript() | Opens a script (JSFL, AS, ASC) or other file (XML, TXT) into the Flash text editor.
fl.quit() | Quits Flash, prompting the user to save any changed documents.
fl.reloadEffects() | Reloads all effects descriptors defined in the user's Configuration Effects folder.
fl.reloadTools() | Rebuilds the toolbar from the toolconfig.xml file. Used only when creating extensible tools.
fl.revertDocument() | Reverts the specified FLA document to its last saved version.
fl.runScript() | Executes a JavaScript file.
fl.saveAll() | Saves all open documents, displaying the Save As dialog box for any documents that were not previously saved.
fl.saveDocument() | Saves the specified document as a FLA document.
fl.saveDocumentAs() | Displays the Save As dialog box for the specified document.
fl.setActiveWindow() | Sets the active window to be the specified document.
fl.trace() | Sends a text string to the Output panel.

Property summary for the flash object

The following properties can be used with the flash object.

Properties | Description
fl.activeEffect | Read-only; the Effect object for the current effect being applied.
fl.componentsPanel | Read-only; a componentsPanel object, which represents the Components panel.
fl.configDirectory | Read-only; a string that specifies the full path for the local user's Configuration folder as a platform-specific path.
fl.configURI | Read-only; a string that specifies the full path for the local user's Configuration directory in a URI format (file:///).
fl.createNewDocList | Read-only; an array of strings that represent the various types of documents that can be created.
fl.createNewDocListType | Read-only; an array of strings that represent the file extensions of the types of documents that can be created.
fl.createNewTemplateList | Read-only; an array of strings that represent the various types of templates that can be created.
fl.documents | Read-only; an array of Document objects (see Document object) that represent the documents (FLA files) that are currently open for editing.
fl.drawingLayer | Read-only; the drawingLayer object that an extensible tool should use when the user wants to temporarily draw while dragging.
fl.effects | Read-only; an array of Effect objects (see Effect object), based on XML parameter file.
fl.Math | Read-only; the Math object provides methods for matrix and point operations.
fl.mruRecentFileList | Read-only; an array of the complete filenames in the Most Recently Used (MRU) list that the authoring tool manages.
fl.mruRecentFileListType | Read-only; an array of the file types in the MRU list that the authoring tool manages.
fl.outputPanel | Read-only; reference to the outputPanel object.
fl.tools | Read-only; an array of Tools objects.
fl.version | Read-only; returns the long string version of the Flash authoring tool, including platform.
fl.xmlui | Read-only; an XMLUI object.


fl.activeEffect

Availability

Flash MX 2004.

Usage

fl.activeEffect

Description

Read-only property; the Effect object for the current effect being applied. For a list of properties available to fl.activeEffect, see Property summary for the Effect object.

Example

The following example stores an object that represents the current effect in the ef variable.

var ef = fl.activeEffect;


fl.browseForFileURL()

Availability

Flash MX 2004.

Usage

fl.browseForFileURL( browseType [, title [, previewArea ] ])

Parameters

browseType A string that specifies the type of file browse operation. Valid values are "open", "select" or "save". The values "open" and "select" both bring up the system File Open dialog box. Each value is provided for compatibility with Dreamweaver. The value "save" brings up a system File Save dialog box.

title A string that specifies the title for the File Open or File Save dialog box. If this parameter is omitted, a default value is used. This parameter is optional.

previewArea An optional parameter that is ignored by Flash and Fireworks and is present only for compatibility with Dreamweaver.

Returns

A string containing the URL of the file.

Description

Method; opens a File Open or File Save system dialog box and lets the user specify a file to be opened or saved.

Example

The following example lets the user choose a FLA file to open and then opens the file. (The fl.browserForFileURL() method can browse for any type of file, but fl.openDocument() can open only FLA files.)

var fileURL = fl.browseForFileURL("open", "Select file");
var doc = fl.openDocument(fileURL);


fl.closeAll()

Availability

Flash MX 2004.

Usage

fl.closeAll()

Parameters

None.

Returns

Nothing.

Description

Method; closes all open documents, displaying the Save As dialog box for any documents that were not previously saved. The method prompts the user, if necessary, but does not terminate the application. See also fl.closeDocument().

Example

The following code closes all open documents.

fl.closeAll();


fl.closeDocument()

Availability

Flash MX 2004.

Usage

fl.closeDocument( documentObject [, bPromptToSaveChanges] )

Parameters

documentObject, [ bPromptToSaveChanges ]

documentObject A Document object. If documentObject refers to the active document, the Document window might not close until the script that calls this method finishes executing.

bPromptToSaveChanges A Boolean value. If it is false, the user is not prompted if the document contains unsaved changes; that is, the file is closed and the changes are discarded. If the value is true, and if the document contains unsaved changes, the user is prompted with the standard yes-or-no dialog box. The default value is true. This parameter is optional.

Returns

A Boolean value: true if successful; false otherwise.

Description

Method; closes the specified document. See also fl.closeAll().

Example

The following example illustrates two ways of closing a document.

//closes the specified document and prompts to save changes
fl.closeDocument(fl.documents[0]);
fl.closeDocument(fl.documents[0] , true); //use of true is optional
//closes the specified document without prompting to save changes
fl.closeDocument(fl.documents[0], false);


fl.componentsPanel

Availability

Flash MX 2004.

Usage

fl.componentsPanel

Description

Read-only property; a componentsPanel object, which represents the Components panel.

Example

The following example stores a componentsPanel object in the comPanel variable.

var comPanel = fl.componentsPanel;


fl.configDirectory

Availability

Flash MX 2004.

Usage

fl.configDirectory

Description

Read-only property; a string that specifies the full path for the local user's Configuration directory in a platform-specific format. To specify this path in a URI format (file:///), use fl.configURI.

Example

The following example displays the Configuration directory in the Output panel.

fl.trace( "My local configuration directory is " + fl.configDirectory );


fl.configURI

Availability

Flash MX 2004.

Usage

fl.configURI

Description

Read-only property; a string that specifies the full path for the local user's Configuration directory in a URI format (file:///). See also fl.configDirectory.

Example

The following example runs a specified script. Using fl.configURI lets you specify the location of the script without having to know the platform the script is running on.

// to run a command in your commands menu change "Test.Jsfl"
// to the command you wish to run in the line below
fl.runScript( fl.configURI + "Commands/Test.jsfl" );


fl.createDocument()

Availability

Flash MX 2004.

Usage

fl.createDocument( [docType] )

Parameters

docType A string that specifies the type of document to create. Valid values are "timeline", "presentation", and "application". The default value is "timeline". This parameter is optional.

Returns

If successful, returns the Document object for the newly created document. If an error occurs, the value is undefined.

Description

Method; opens a new document and selects it. Values for size, resolution, and color are the same as the current defaults.

Example

The following example creates different types of documents.

//create a Timeline-based Flash Document
fl.createDocument();
fl.createDocument("timeline");
//create a Slide Presentation document
fl.createDocument("presentation");
//create a Form Application document
fl.createDocument("application");


fl.createNewDocList

Availability

Flash MX 2004.

Usage

fl.createNewDocList

Description

Read-only property; an array of strings that represent the various types of documents that can be created.

Example

The following example displays the types of documents that can be created in the Output panel.

fl.trace("Number of choices " + fl.createNewDocList.length);
for (i = 0; i < fl.createNewDocList.length; i++)
  fl.trace("choice: " + fl.createNewDocList[i]);


fl.createNewDocListType

Availability

Flash MX 2004.

Usage

fl.createNewDocListType

Description

Read-only property; an array of strings that represent the file extensions of the types of documents that can be created. The entries in the array correspond directly (by index) to the entries in the fl.createNewDocList array.

Example

The following example displays the extensions of the types of documents that can be created in the Output panel.

fl.trace("Number of types " + fl.createNewDocListType.length);
for (i = 0; i < fl.createNewDocListType.length; i++) fl.trace("type: " + fl.createNewDocListType[i]);


fl.createNewTemplateList

Availability

Flash MX 2004.

Usage

fl.createNewTemplateList

Description

Read-only property; an array of strings that represent the various types of templates that can be created.

Example

The following example displays the types of templates that can be created in the Output panel.

fl.trace("Number of template types: " + fl.createNewTemplateList.length); for (i = 0; i < fl.createNewTemplateList.length; i++) fl.trace("type: " + fl.createNewTemplateList[i]);


fl.documents

Availability

Flash MX 2004.

Usage

fl.documents

Description

Read-only property; an array of Document objects that represent the documents (FLA files) that are currently open for editing.

Example

The following example stores an array of open documents in the docs variable.

var docs = fl.documents;

The following example displays the names of currently open documents in the Output panel.

for (doc in fl.documents) {
  fl.trace(fl.documents[doc].name);
}


fl.drawingLayer

Availability

Flash MX 2004.

Usage

fl.drawingLayer

Description

Read-only property; the drawingLayer object that an extensible tool should use when the user wants to temporarily draw while dragging (for example, when creating a selection marquee).

Example

See drawingLayer.setColor().


fl.effects

Availability

Flash MX 2004.

Usage

fl.effects

Description

Read-only property; an array of Effect objects, based on XML parameter file. These are not effects, but a description of effects. The array length corresponds to the number of effects (based on the XML parameter definition files, not the number of JSFL implementation files) registered when the program opens.

Example

To return the first registered effect, use the following:

ef = fl.effects[0]


fl.enableImmediateUpdates()

Availability

Flash MX 2004.

Usage

fl.enableImmediateUpdates(bEnableUpdates)

Parameters

bEnableUpdates A Boolean value that specifies whether to enable (true) or disable (false) immediate visual updates of the Timeline when executing effects.

Returns

Nothing.

Description

Method; lets the script developer enable immediate visual updates of the Timeline when executing effects. Immediate updates are normally suppressed so the user does not see intermediate steps that can be visually distracting and can make the effect appear to take longer than necessary. This method is purely for debugging purposes and should not be used in effects that are deployed in the field. After the effect completes, the internal state is reset to suppress immediate updates.

Example

The following example enables immediate updates.

fl.enableImmediateUpdates(true) ;
fl.trace("Immediate updates are enabled");


fl.fileExists()

Availability

Flash MX 2004.

Usage

fl.fileExists( fileURI )

Parameters

fileURI A string that contains the path to the file.

Returns

A Boolean value: true if the file exists on disk; false otherwise.

Description

Method; checks whether a file already exists on disk.

Example

The following example outputs true or false to the Output panel for each specified file, depending on whether the file exists.

alert(fl.fileExists("file:///C|/example.fla"));
alert(fl.fileExists("file:///C|/example.jsfl"));
alert(fl.fileExists(""));


fl.findDocumentIndex()

Availability

Flash MX 2004.

Usage

fl.findDocumentIndex( name )

Parameters

name The document name for which you want to find the index. The document must be open.

Returns

An integer that is the index of the document.

Description

Method; finds the index of an open document with the specified name.

Example

The following example stores an indexed integer that represents the position of test.fla in the fl.documents array in the docIndex variable. For example, if fl.documents[3] is test.fla, then the value of docIndex is 3.

var docIndex = fl.findDocumentIndex("test.fla");


fl.getDocumentDOM()

Availability

Flash MX 2004.

Usage

fl.getDocumentDOM()

Parameters

None.

Returns

A Document object, or null if no documents are open.

Description

Method; retrieves the DOM (Document object) of the currently active document (FLA file). If one or more documents are open but a document is not currently focused (for example, a JSFL file is focused), retrieves the DOM of the most recently active document.

Example

The following example displays the name of the current or most recently active document in the Output panel:

var currentDoc = fl.getDocumentDOM();
fl.trace(currentDoc.name);


fl.mapPlayerURL()

Availability

Flash MX 2004.

Usage

fl.mapPlayerURL( URI [, returnMBCS] )

Parameters

URI A string that contains the escaped Unicode URL to map.

returnMBCS A Boolean value that you must set to true if you want an escaped MBCS path returned. Otherwise, the method returns UTF-8. The default value is false. This parameter is optional.

Returns

A string that is the converted URL.

Description

Method; maps an escaped Unicode URL to a UTF-8 or MBCS URL. Use this method when the string will be used in ActionScript to access an external resource. You must use this method if you need to handle multibyte characters.

Example

The following example converts a URL to UTF-8 so the player can load it.

var url = MMExecute( "fl.mapPlayerURL(" + myURL + ", false);" );
mc.loadMovie( url);


fl.Math

Availability

Flash MX 2004.

Usage

fl.Math

Description

Read-only property; the Math object provides methods for matrix and point operations.

Example

The following shows the transformation matrix of the selected object, and its inverse.

//Select an element on the stage, then run this script
var mat =fl.getDocumentDOM().selection[0].matrix;
for(var prop in mat){
  fl.trace("mat."+prop+" = " + mat[prop]);
}
var invMat = fl.Math.invertMatrix( mat );
for(var prop in invMat) {
fl.trace("invMat."+prop+" = " + invMat[prop]);
}


fl.mruRecentFileList

Availability

Flash MX 2004.

Usage

fl.mruRecentFileList

Description

Read-only property; an array of the complete filenames in the Most Recently Used (MRU) list that the authoring tool manages.

Example

The following example displays the number of recently opened files, and the name of each file, in the Output panel.

fl.trace("Number of recently opened files: " + fl.mruRecentFileList.length);
for (i = 0; i < fl.mruRecentFileList.length; i++) fl.trace("file: " + fl.mruRecentFileList[i]);


fl.mruRecentFileListType

Availability

Flash MX 2004.

Usage

fl.mruRecentFileListType

Description

Read-only property; an array of the file types in the MRU list that the authoring tool manages. This array corresponds to the array in the fl.mruRecentFileList property.

Example

The following example displays the number of recently opened files, and the type of each file, in the Output panel.

fl.trace("Number of recently opened files: " + fl.mruRecentFileListType.length);
for (i = 0; i < fl.mruRecentFileListType.length; i++) fl.trace("type: " + fl.mruRecentFileListType[i]);


fl.openDocument()

Availability

Flash MX 2004.

Usage

fl.openDocument( fileURI )

Parameters

fileURI A string that specifies the name of the file to be opened, expressed as a URI (file:///URI).

Returns

If successful, returns the Document object for the newly opened document. If the file is not found, or is not a valid FLA file, an error is reported and the script is cancelled.

Description

Method; opens a Flash document (FLA file) for editing in a new Flash Document window and gives it the focus. For a user, the effect is the same as selecting File > Open and then selecting a file. If the specified file is already open, the window that contains the document comes to the front. The window that contains the specified file becomes the currently selected document.

Example

The following example opens a file named Document.fla that is stored in the root directory of the C drive, stores a Document object representing that document in the doc variable, and sets the document to be the currently selected document. That is, until focus is changed, fl.getDocumentDOM() refers to this document.

var doc = fl.openDocument("file:///c|/Document.fla");


fl.openProject()

Availability

Flash MX 2004.

Usage

fl.openProject( fileURI )

Parameters

fileURI A string that specifies the path of the Flash project file to open, expressed as a URI (file:///URI).

Returns

Nothing.

Description

Method; opens a Flash Project (FLP) file in the authoring tool for editing.

Example

The following example opens a project file named myProjectFile.flp that is stored in the root directory of the C drive.

fl.openProject("file:///c|/myProjectFile.flp");


fl.openScript()

Availability

Flash MX 2004.

Usage

fl.openScript( fileURI )

Parameters

fileURI A string that specifies the path of the JSFL, AS, ASC, XML, TXT or other file that should be loaded into the Flash text editor, expressed as a URI (file:///URI).

Returns

Nothing.

Description

Method; opens a script (JSFL, AS, ASC) or other file (XML, TXT) in the Flash text editor.

Example

The following example opens a file named my_test.jsfl that is stored in the /temp directory of the C drive.

fl.openScript("file:///c|/temp/my_test.jsfl");


fl.outputPanel

Availability

Flash MX 2004.

Usage

fl.outputPanel

Description

Read-only property; reference to the outputPanel object.

Example

See outputPanel object.


fl.quit()

Availability

Flash MX 2004.

Usage

fl.quit( [bPromptIfNeeded] )

Parameters

bPromptIfNeeded A Boolean value that is true (default) if you want the user to be prompted to save any modified documents. Set this parameter to false if you do not want the user to be prompted to save modified documents. In the latter case, any modifications in open documents will be discarded and the application will exit immediately. Although it is useful for batch processing, use this method with caution. This parameter is optional.

Returns

Nothing.

Description

Method; quits Flash, prompting the user to save any changed documents.

Example

The following example illustrates quitting with and without asking to save modified documents.

//quit with prompt to save any modified documents
fl.quit();
fl.quit(true); // true is optional
//quit without saving any files
fl.quit(false);


fl.reloadEffects()

Availability

Flash MX 2004.

Usage

fl.reloadEffects()

Parameters

None.

Returns

Nothing.

Description

Method; reloads all effects descriptors defined in the user's Configuration Effects folder. This permits you to rapidly change the scripts during development, and it provides a mechanism to improve the effects without relaunching the application. Best if used in a command placed in the Commands folder.

Example

The following example is a one-line script that you can place in the Commands folder. When you need to reload effects, go to the Commands menu and execute the script.

fl.reloadEffects();


fl.reloadTools()

Availability

Flash MX 2004.

Usage

fl.reloadTools()

Parameters

None.

Returns

Nothing.

Description

Method; rebuilds the toolbar from the toolconfig.xml file. Used only when creating extensible tools.

Example

The following example is a one-line script that you can place in the Commands folder. When you need to reload the toolbar, go to the Commands menu and execute the script.

fl.reloadTools();


fl.revertDocument()

Availability

Flash MX 2004.

Usage

fl.revertDocument( documentObject )

Parameters

documentObject A Document object. If documentObject refers to the active document, the Document window might not revert until the script that calls this method finishes executing.

Returns

A Boolean value: returns true if the Revert operation completes successfully; false otherwise.

Description

Method; reverts the specified FLA document to its last saved version. Unlike the File > Revert menu option, this method does not display a warning window that asks the user to confirm the operation. See also document.revert() and document.canRevert().

Example

The following example reverts the current FLA document to its last saved version; any changes made since the last save are lost.

fl.revertDocument(fl.getDocumentDOM());


fl.runScript()

Availability

Flash MX 2004.

Usage

fl.runScript( fileURI [, funcName [, arg1, arg2, ...] ])

Parameters

fileURI A string that specifies the name of the script file to execute, expressed as a URI (file:///URI).

funcName A string that identifies a function to execute in the JSFL file that is specified in fileURI. This parameter is optional.

arg An optional parameter that specifies one or more arguments to be passed to funcname.

Returns

If funcName is specified, returns the function's result as a string. Otherwise, nothing is returned.

Description

Method; executes a JavaScript file. If a function is specified as one of the arguments, it runs the function and also any code in the script that is not within the function. The rest of the code in the script runs before the function is run.

Example

Suppose there is a script file named testScript.jsfl in drive C: and its contents are as follows:

function testFunct(num, minNum) {
  fl.trace("in testFunct: 1st arg: " + num + " 2nd arg: " + minNum);
}
for (i=0; i<2; i++) {
  fl.trace("in for loop i=" + i);
}
fl.trace("end of for loop");
//end of testScript.jsfl

If you issue the following command:

fl.runScript("file:///C|/testScript.jsfl", "testFunct", 10, 1);

The following information appears in the Output panel:

in for loop i=0
in for loop i=1
end of for loop
in testFunct: 1st arg: 10 2nd arg: 1

You can also just call testScript.jsfl without executing a function:

fl.runScript("file:///C|/testScript.jsfl");

which produces the following in the Output panel:

in for loop i=0
in for loop i=1
end of for loop


fl.saveAll()

Availability

Flash MX 2004.

Usage

fl.saveAll()

Parameters

None.

Returns

Nothing.

Description

Method; saves all open documents, displaying the Save As dialog box for any documents that were not previously saved. See also fl.saveDocumentAs(), fl.saveDocument(), document.save(), and document.saveAndCompact().

Example

The following example saves all open documents.

fl.saveAll();


fl.saveDocument()

Availability

Flash MX 2004.

Usage

fl.saveDocument( document [, fileURI] )

Parameters

document A Document object that specifies the document to be saved. If document is null, the active document is saved.

fileURI A string that specifies the name of the saved document, expressed as a file:///URI. If the fileURI parameter is null or omitted, the document is saved with its current name. If the document is not yet saved, Flash displays the Save As dialog box. This parameter is optional.

Returns

A Boolean value: true if the save operation completes successfully; false otherwise.

Description

Method; saves the specified document as a FLA document. See also fl.saveDocumentAs(), fl.saveAll(), document.save(), and document.saveAndCompact().

Example

The following example saves the current document and two specified documents.

//save the current document
alert(fl.saveDocument(fl.getDocumentDOM()));
//save the specified documents
alert(fl.saveDocument(fl.documents[0], "file:///C|/example1.fla"));
alert(fl.saveDocument(fl.documents[1],"file:///C|/example2.fla"));


fl.saveDocumentAs()

Availability

Flash MX 2004.

Usage

fl.saveDocumentAs( document )

Parameters

document A Document object that specifies the document to save. If document is null, the active document is saved.

Returns

A Boolean value: true if the Save As operation completes successfully; false otherwise.

Description

Method; displays the Save As dialog box for the specified document. See also fl.saveDocument(), fl.saveAll(), document.save(), and document.saveAndCompact().

Example

The following example prompts the user to save the specified document, then displays a value of true or false in the Output panel indicating whether the document was saved.

alert(fl.saveDocumentAs(fl.documents[0]));


fl.setActiveWindow()

Availability

Flash MX 2004.

Usage

fl.setActiveWindow( document [, bActivateFrame] )

Parameters

document A Document object that specifies the document to select as the active window.

bActivateFrame An optional parameter that is present for consistency with the Dreamweaver API. As in Fireworks, it is optional and it is ignored.

Returns

Nothing.

Description

Method; sets the active window to be the specified document. This method is also supported by Dreamweaver and Fireworks. If the document has multiple views (created by Edit In New Window), the first view is selected.

Example

The following example shows two ways to save a specified document.

fl.setActiveWindow(fl.documents[0]);

var theIndex = fl.findDocumentIndex("myFile.fla");
fl.setActiveWindow(fl.documents[theIndex]);


fl.tools

Availability

Flash MX 2004.

Usage

fl.tools

Description

Read-only property; an array of Tools objects (see Tools object). Used only when creating extensible tools.


fl.trace()

Availability

Flash MX 2004.

Usage

fl.trace( message )

Parameters

message A string that appears in the Output panel.

Returns

Nothing.

Description

Method; sends a text string to the Output panel. Works in the same way as outputPanel.trace() and the trace() statement in ActionScript.

Example

The following example displays text in the Output panel.

fl.trace("hello World!!!");
var myPet = "cat";
fl.trace("I have a " + myPet);


fl.version

Availability

Flash MX 2004.

Usage

fl.version

Description

Read-only property; returns the long string version of the Flash authoring tool, including platform.

Example

The following example displays the version of the authoring tool in the Output panel.

alert( fl.version ); // e.g. WIN 7,0,0,380


fl.xmlui

Availability

Flash MX 2004.

Usage

fl.xmlui

Description

Read-only property; an XMLUI object. Lets you get and set XMLUI properties in a XMLUI dialog box and lets you accept or cancel the dialog box programmatically.

Example

See XMLUI object.


folderItem object

Inheritance Item object > folderItem object

Availability

Flash MX 2004.

Description

The folderItem object is a subclass of the Item object. There are no unique methods or properties of folderItem.


fontItem object

Inheritance Item object > fontItem object

Availability

Flash MX 2004.

Description

The fontItem object is a subclass of the Item object. There are no unique methods or properties of fontItem.


Frame object

Availability

Flash MX 2004.

Description

The Frame object represents frames in the layer.

Property summary for the Frame object

The following properties can be used with the Frame object:

Property | Description
frame.actionScript | String representing ActionScript code.
frame.duration | Read-only property; an integer that represents the number of frames in a frame sequence.
frame.elements | Read-only; an array of Element objects (see Element object).
frame.labelType | A string that specifies the type of Frame name.
frame.motionTweenOrientToPath | A Boolean value; specifies whether the tweened element rotates the element as it moves along a path to maintain its angle with respect to each point on the path (true) or whether it does not rotate (false).
frame.motionTweenRotate | A string that specifies how the tweened element rotates.
frame.motionTweenRotateTimes | An integer that specifies the number of times the tweened element rotates between the starting keyframe and the next keyframe.
frame.motionTweenScale | A Boolean value; specifies whether the tweened element scales to the size of the object in the following keyframe, increasing its size with each frame in the tween (true) or doesn't scale (false).
frame.motionTweenSnap | A Boolean value; specifies whether the tweened element automatically snaps to the nearest point on the motion guide layer associated with this frame's layer (true) or not (false).
frame.motionTweenSync | A Boolean value; if set to true, synchronizes the animation of the tweened object with the main Timeline.
frame.name | A string that specifies the name of the frame.
frame.shapeTweenBlend | A string that specifies how a shape tween is blended between the shape in the keyframe at the start of the tween and the shape in the following keyframe.
frame.soundEffect | A string that specifies effects for a sound that is attached directly to a frame (frame.soundLibraryItem).
frame.soundLibraryItem | Library item (see SoundItem object) used to create a sound.
frame.soundLoop | An integer value that specifies the number of times a sound that is attached directly to a frame (frame.soundLibraryItem) plays.
frame.soundLoopMode | A string that specifies whether a sound that is attached directly to a frame (frame.soundLibraryItem) should play a specific number of times or loop indefinitely.
frame.soundName | A string that specifies the name of a sound that is attached directly to a frame (frame.soundLibraryItem), as stored in the library.
frame.soundSync | A string that specifies the sync behavior of a sound that is attached directly to a frame (frame.soundLibraryItem).
frame.startFrame | Read-only property; the index of the first frame in a sequence.
frame.tweenEasing | An integer that specifies the amount of easing that should be applied to the tweened object.
frame.tweenType | A string that specifies the type of tween; valid values are "motion", "shape", or "none".


frame.actionScript

Availability

Flash MX 2004.

Usage

frame.actionScript

Description

String representing ActionScript code.

Example

The following example assigns stop() to first frame top layer action:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].actionScript = 'stop();';


frame.duration

Availability

Flash MX 2004.

Usage

frame.duration

Description

Read-only property; an integer that represents the number of frames in a frame sequence.

Example

The following example stores the number of frames in a frame sequence that starts at first frame in the top layer in the frameSpan variable:

var frameSpan = fl.getDocumentDOM().getTimeline().layers[0].frames[0].duration;


frame.elements

Availability

Flash MX 2004.

Usage

frame.elements

Description

Read-only; an array of Element objects (see Element object). The order of elements is the order in which they are stored in the FLA file. If there are multiple shapes on the Stage, and each is ungrouped, Flash treats them as one element. If each shape is grouped, so there are multiple groups on the Stage, Flash sees them as separate elements. In other words, Flash treats raw, ungrouped shapes as a single element, regardless of how many separate shapes are on the Stage. If a frame contains three raw, ungrouped shapes, for example, then elements.length in that frame returns a value of 1. Select each shape individually, and group it to work around this issue.

Example

The following example stores an array of current elements on the top layer, first frame in the myElements variable:

var myElements = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements;


frame.labelType

Availability

Flash MX 2004.

Usage

frame.labelType

Description

A string that specifies the type of Frame name. Valid values are "none", "name", "comment", and "anchor". Setting a label to "none" clears the frame.name property.

Example

The following example sets the name of the first frame in the top layer to "First Frame" and then sets its label to "comment":

fl.getDocumentDOM().getTimeline().layers[0].frames[0].name = 'First Frame';
fl.getDocumentDOM().getTimeline().layers[0].frames[0].labelType = 'comment';


frame.motionTweenOrientToPath

Availability

Flash MX 2004.

Usage

frame.motionTweenOrientToPath

Description

A Boolean value; specifies whether the tweened element rotates the element as it moves along a path to maintain its angle with respect to each point on the path (true) or whether it does not rotate (false).

If you want to specify a value for this property, you should set frame.motionTweenRotate to "none".


frame.motionTweenRotate

Availability

Flash MX 2004.

Usage

frame.motionTweenRotate

Description

A string that specifies how the tweened element rotates. Acceptable values are "none", "auto", "clockwise", and "counter-clockwise". A value of "auto" means the object will rotate in the direction requiring the least motion to match the rotation of the object in the following keyframe.

If you want to specify a value for frame.motionTweenOrientToPath, set this property to "none".

Example

See frame.motionTweenRotateTimes.


frame.motionTweenRotateTimes

Availability

Flash MX 2004.

Usage

frame.motionTweenRotateTimes

Description

An integer that specifies the number of times the tweened element rotates between the starting keyframe and the next keyframe.

Example

The following example rotates the element in this frame counter-clockwise three times by the time it reaches the next keyframe:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].motionTweenRotate = "counter-clockwise";
fl.getDocumentDOM().getTimeline().layers[0].frames[0].motionTweenRotateTimes = 3;


frame.motionTweenScale

Availability

Flash MX 2004.

Usage

frame.motionTweenScale

Description

A Boolean value; specifies whether the tweened element scales to the size of the object in the following keyframe, increasing its size with each frame in the tween (true) or doesn't scale (false).


frame.motionTweenSnap

Availability

Flash MX 2004.

Usage

frame.motionTweenSnap

Description

A Boolean value; specifies whether the tweened element automatically snaps to the nearest point on the motion guide layer associated with this frame's layer (true) or not (false).


frame.motionTweenSync

Availability

Flash MX 2004.

Usage

frame.motionTweenSync

Description

A Boolean value; if set to true, synchronizes the animation of the tweened object with the main Timeline.

Example

The following example specifies that tweened object should be synchronized with the Timeline:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].motionTweenSync = true;


frame.name

Availability

Flash MX 2004.

Usage

frame.name

Description

A string that specifies the name of the frame.

Example

The following example sets the name of the first frame, top layer to "First Frame" and then stores the name value in the frameLabel variable:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].name = 'First Frame';
var frameLabel = fl.getDocumentDOM().getTimeline().layers[0].frames[0].name;


frame.shapeTweenBlend

Availability

Flash MX 2004.

Usage

frame.shapeTweenBlend

Description

A string that specifies how a shape tween is blended between the shape in the keyframe at the start of the tween and the shape in the following keyframe. Valid values are "distributive" and "angular".


frame.soundEffect

Availability

Flash MX 2004.

Usage

frame.soundEffect

Description

A string that specifies effects for a sound that is attached directly to a frame (frame.soundLibraryItem). Acceptable values are "none", "left channel", "right channel", "fade left to right", "fade right to left", "fade in", "fade out", and "custom".

Example

The following example specifies that the sound attached to the first frame should fade in:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].soundEffect = "fade in";


frame.soundLibraryItem

Availability

Flash MX 2004.

Usage

frame.soundLibraryItem

Description

Library item (see SoundItem object) used to create a sound. The sound is attached directly to the frame.

Example

The following example assigns the first item in the library (which must be a sound object) to the soundLibraryItem property of the first frame:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].soundLibraryItem =fl.getDocumentDOM().library.items[0];


frame.soundLoop

Availability

Flash MX 2004.

Usage

frame.soundLoop

Description

An integer value that specifies the number of times a sound that is attached directly to a frame (frame.soundLibraryItem) plays. If you want to specify a value for this property, set frame.soundLoopMode to "repeat".

Example

See frame.soundLoopMode.


frame.soundLoopMode

Availability

Flash MX 2004.

Usage

frame.soundLoopMode

Description

A string that specifies whether a sound that is attached directly to a frame (frame.soundLibraryItem) should play a specific number of times or loop indefinitely. Valid values are "repeat" and "loop". To specify the number of times the sound should play, set a value for frame.soundLoop.

Example

The following example specifies that a sound should play two times:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].soundLoopMode = "repeat";
fl.getDocumentDOM().getTimeline().layers[0].frames[0].soundLoop = 2;


frame.soundName

Availability

Flash MX 2004.

Usage

frame.soundName

Description

A string that specifies the name of a sound that is attached directly to a frame (frame.soundLibraryItem), as stored in the library.

Example

The following example changes the soundName property of the first frame to "song1.mp3"; song1.mp3 must exist in the library:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].soundName = "song1.mp3";


frame.soundSync

Availability

Flash MX 2004.

Usage

frame.soundSync

Description

A string that specifies the sync behavior of a sound that is attached directly to a frame (frame.soundLibraryItem). Acceptable values are "event", "stop", "start", and "stream".

Example

The following example specifies that a sound should stream:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].soundSync = 'stream';


frame.startFrame

Availability

Flash MX 2004.

Usage

frame.startFrame

Description

Read-only property; the index of the first frame in a sequence.

Example

In the following example, stFrame is the index of the first frame in the frame sequence. In this example, a frame sequence is spanning the six frames from Frame 5 to Frame 10. Therefore, the value of stFrame at any frame between Frame 5 and Frame 10 is 4 (remember that index values are different from frame number values).

var stFrame = fl.getDocumentDOM().getTimeline().layers[0].frames[4].startFrame;
fl.trace(stFrame); // 4
var stFrame = fl.getDocumentDOM().getTimeline().layers[0].frames[9].startFrame;
fl.trace(stFrame); // 4


frame.tweenEasing

Availability

Flash MX 2004.

Usage

frame.tweenEasing

Description

An integer that specifies the amount of easing that should be applied to the tweened object. Valid values are -100 to 100. To begin the motion tween slowly and accelerate the tween toward the end of the animation, use a value between -1 and -100. To begin the motion tween rapidly and decelerate the tween toward the end of the animation, use a positive value between 1 and 100.

Example

The following example specifies that the motion of the tweened object should begin fairly rapidly and decelerate toward the end of the animation:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].tweenEasing = 50;


frame.tweenType

Availability

Flash MX 2004.

Usage

frame.tweenType

Description

A string that specifies the type of tween; valid values are "motion", "shape", or "none". The value "none" removes the motion tween. Use the timeline.createMotionTween() method to create a tween.

If you specify "motion", the object in the frame must be a symbol, text field, or grouped object. It will be tweened from its location in the current keyframe to the location in the following keyframe.

If you specify "shape", the object in the frame must be a shape. It will blend from its shape in the current keyframe to the shape in the following keyframe.

Example

The following example specifies that the object is a motion tween, and therefore, it should be tweened from its location in the current keyframe to the location in the following keyframe:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].tweenType = "motion";


HalfEdge object

Availability

Flash MX 2004.

Description

Directed side of the edge of a Shape object. An edge has two half edges. You can transverse the contours of a shape by "walking around" these half edges. For example, starting from a half edge, you can visit all the half edges around a contour of a shape, and return to the original half edge.

Half edges are ordered. One half edge represents one side of the edge; the other half edge represents the other side.

Method summary for the HalfEdge object

The following methods are available for the halfEdge object:

Method | Description
halfEdge.getEdge() | Gets the Edge object for the halfEdge object.
halfEdge.getNext() | Gets the next half edge on the current contour.
halfEdge.getOppositeHalfEdge() | Gets the halfEdge object on the other side of the edge.
halfEdge.getPrev() | Gets the preceding halfEdge object on the current contour.
halfEdge.getVertex() | Gets the Vertex object at the head of the halfEdge object.

Property summary for the HalfEdge object

The following properties are available for the halfEdge object:

Property | Description
halfEdge.id | Read-only; a unique integer identifier for the halfEdge object.


halfEdge.getEdge()

Availability

Flash MX 2004.

Usage

halfEdge.getEdge()

Parameters

None.

Returns

An Edge object.

Description

Gets the Edge object for the halfEdge object.

Example

The following example illustrates getting an edge and a half edge for the specified shape.

var shape = fl.getDocumentDOM().selection[0];
var halfEdge = shape.edges[0].getHalfEdge(0);
var edge = halfEdge.getEdge();


halfEdge.getNext()

Availability

Flash MX 2004.

Usage

halfEdge.getNext()

Parameters

None.

Returns

A halfEdge object.

Description

Gets the next half edge on the current contour.

Note: Although half edges have a direction and a sequence order, edges do not.

Example

The following example stores the next half edge of the specified contour in the nextHalfEdge variable:

var shape = fl.getDocumentDOM().selection[0];
var hEdge = shape.edges[0].getHalfEdge( 0 );
var nextHalfEdge = hEdge.getNext();


halfEdge.getOppositeHalfEdge()

Availability

Flash MX 2004.

Usage

halfEdge.getOppositeHalfEdge()

Parameters

None.

Returns

A halfEdge object.

Description

Gets the halfEdge object on the other side of the edge.

Example

The following example stores the half edge opposite hEdge in the otherHalfEdge variable:

var shape = fl.getDocumentDOM().selection[0];
var hEdge = shape.edges[0].getHalfEdge(0);
var otherHalfEdge = hEdge.getOppositeHalfEdge();


halfEdge.getPrev()

Availability

Flash MX 2004.

Usage

halfEdge.getPrev()

Parameters

None.

Returns

A halfEdge object.

Description

Gets the preceding halfEdge object on the current contour.

Note: Although half edges have a direction and a sequence order, edges do not.

Example

The following example stores the previous half edge of the specified contour in the prevHalfEdge variable:

var shape = fl.getDocumentDOM().selection[0];
var hEdge = shape.edges[0].getHalfEdge( 0 );
var prevHalfEdge = hEdge.getPrev();


halfEdge.getVertex()

Availability

Flash MX 2004.

Usage

halfEdge.getVertex()

Parameters

None.

Returns

A Vertex object.

Description

Gets the Vertex object at the head of the halfEdge object.

Example

The following example stores the Vertex object at the head of hEdge in the vertex variable:

var shape = fl.getDocumentDOM().selection[0];
var edge = shape.edges[0];
var hEdge = edge.getHalfEdge(0);
var vertex = hEdge.getVertex();


halfEdge.id

Availability

Flash MX 2004.

Usage

halfEdge.id

Description

Read-only property; a unique integer identifier for the halfEdge object.

Example

The following example displays a unique identifier for the specified half edge in the Output panel:

var shape = fl.getDocumentDOM().selection[0];
alert(shape.contours[0].getHalfEdge().id);


Instance object

Inheritance Element object > Instance object

Availability

Flash MX 2004.

Description

Instance is a subclass of the Element object.

Property summary for the Instance object

In addition to all of the Element object properties, Instance has the following properties:

Property | Description
instance.instanceType | Read-only; a string that represents the type of Instance.
instance.libraryItem | Library item used to instantiate this instance.


instance.instanceType

Availability

Flash MX 2004.

Usage

instance.instanceType

Description

Read-only property; a string that represents the type of Instance. Valid values are "symbol", "bitmap", "embedded video", "linked video", and "compiled clip".

Example

The following example shows that the instance type of a movie clip is "symbol":

//select a movie clip, then run this script
var type = fl.getDocumentDOM().selection[0].instanceType;
fl.trace("This instance type is " + type);


instance.libraryItem

Availability

Flash MX 2004.

Usage

instance.libraryItem

Description

Library item used to instantiate this instance. You can change this property only to another library item of the same type (that is, you cannot set a symbol instance to refer to a bitmap). See library object.

Example

The following example changes the selected symbol to refer to the first item in the library:

fl.getDocumentDOM().selection[0].libraryItem = fl.getDocumentDOM().library.items[0];


Item object

Availability

Flash MX 2004.

Description

The Item object is an abstract base class. Anything in the library derives from Item. See also library object.

Method summary for the Item object

The following methods are available for the Item object.

Method | Description
item.addData() | Adds specified data to a library item.
item.getData() | Retrieves the value of the specified data.
item.hasData() | Determines whether the library item has the named data.
item.removeData() | Removes persistent data from the library item.

Property summary for the Item object

The following properties are available for the Item object.

Property | Description
item.itemType | Read-only; a string that specifies the type of element.
item.linkageClassName | A string that specifies the ActionScript 2.0 class that will be associated with the symbol.
item.linkageExportForAS | A Boolean value; if true, the item is exported for ActionScript.
item.linkageExportForRS | A Boolean value; if true, the item is exported for runtime sharing.
item.linkageExportInFirstFrame | A Boolean value; if true, the item is exported in the first frame.
item.linkageIdentifier | A string that specifies the name Flash will use to identify the asset when linking to the destination SWF file.
item.linkageImportForRS | A Boolean value; if true, the item is imported for runtime sharing.
item.linkageURL | A string that specifies the URL where the SWF file containing the shared asset is located.
item.name | A string that specifies the name of the library item, which includes the folder structure.


item.addData()

Availability

Flash MX 2004.

Usage

item.addData( name, type, data )

Parameters

name A string that specifies the name of the data.

type A string that specifies the type of data. Valid types are "integer", "integerArray", "double", "doubleArray", "string", and "byteArray".

data The data to add to the specified library item. The type of data depends on the value of the type parameter. For example, if type is "integer", the value of data must be an integer, and so on.

Returns

Nothing.

Description

Adds specified data to a library item.

Example

The following example adds data named myData with an integer value of 12 to the first item in the library:

fl.getDocumentDOM().library.items[0].addData("myData", "integer", 12);


item.getData()

Availability

Flash MX 2004.

Usage

item.getData( name )

Parameters

name A string that specifies the name of the data to retrieve.

Returns

The data specified by the name parameter. The type of data returned depends on the type of stored data.

Description

Retrieves the value of the specified data.

Example

The following example gets the value of the data named myData from the first item in the library and stores it in the variable libData.

var libData = fl.getDocumentDOM().library.items[0].getData( "myData" );


item.hasData()

Availability

Flash MX 2004.

Usage

item.hasData( name )

Parameters

name A string that specifies the name of the data to check for in the library item.

Returns

A Boolean value: true if the specified data exists; false otherwise.

Description

Determines whether the library item has the named data.

Example

The following example displays a message in the Output panel if the first item in the library contains data point named myData:

if ( fl.getDocumentDOM().library.items[0].hasData( "myData" ) ){
  fl.trace("Yep, it's there!");
}


item.itemType

Availability

Flash MX 2004.

Usage

item.itemType

Description

Read-only property; a string that specifies the type of element. Potential values are "undefined", "component", "movie clip", "graphic", "button", "video", "folder", "font", "sound", "bitmap", "compiled clip", and "video".

Example

The following example displays the type of the specified library item in the Output panel.

fl.trace(fl.getDocumentDOM().library.items[0].itemType);


item.linkageClassName

Availability

Flash MX 2004.

Usage

item.linkageClassName

Description

A string that specifies the ActionScript 2.0 class that will be associated with the symbol. For this property to be defined, the item.linkageExportForAS and/or item.linkageExportForRS properties must be set to true, and the item.linkageImportForRS property must be set to false.

Example

The following example specifies that the ActionScript 2.0 class name associated with the first item in the Library is myClass:

fl.getDocumentDOM().library.items[0].linkageClassName = "myClass";


item.linkageExportForAS

Availability

Flash MX 2004.

Usage

item.linkageExportForAS

Description

A Boolean value; if true, the item is exported for ActionScript. You can also set the item.linkageExportForRS and item.linkageExportInFirstFrame properties to true. The item.linkageImportForRS property must be set to false if this property is set to true.

Example

The following example sets this property for the specified library item.

fl.getDocumentDOM().library.items[0].linkageExportForAS = true;


item.linkageExportForRS

Availability

Flash MX 2004.

Usage

item.linkageExportForRS

Description

A Boolean value; if true, the item is exported for runtime sharing. This property can be set to true only if item.linkageImportForRS is set to false. Also, the properties item.linkageIdentifier and item.linkageURL must be defined.

Example

The following example sets this property for the specified library item.

fl.getDocumentDOM().library.items[0].linkageExportForRS = true;


item.linkageExportInFirstFrame

Availability

Flash MX 2004.

Usage

item.linkageExportInFirstFrame

Description

A Boolean value: if true, the item is exported in the first frame; if false, the item is exported on the frame of the first instance. If the item does not appear on the Stage, it isn't exported.

This property can be set to true only when item.linkageExportForAS and/or item.linkageExportForRS are set to true.

Example

The following example specifies that the specified library item is exported in the first frame.

fl.getDocumentDOM().library.items[0].linkageExportInFirstFrame = true;


item.linkageIdentifier

Availability

Flash MX 2004.

Usage

item.linkageIdentifier

Description

A string that specifies the name Flash will use to identify the asset when linking to the destination SWF file. It must be specified if item.linkageExportForAS and/or item.linkageExportForRS are set to true.

Example

The following example specifies that the string my_mc will be used to identify the library item when it is linked to the destination SWF file to which it is being exported:

fl.getDocumentDOM().library.items[0].linkageIdentifier = "my_mc";


item.linkageImportForRS

Availability

Flash MX 2004.

Usage

item.linkageImportForRS

Description

A Boolean value: if true, the item is imported for runtime sharing. If this property is set to true, both item.linkageExportForAS and item.linkageExportForRS must be set to false. Also, you must specify an identif1ier (item.linkageIdentifier) and a URL (item.linkageURL).

Example

The following example sets this property to true for the specified library item.

fl.getDocumentDOM().library.items[0].linkageImportForRS = true;


item.linkageURL

Availability

Flash MX 2004.

Usage

item.linkageURL

Description

A string that specifies the URL where the SWF file containing the shared asset is located. Must be set when item.linkageExportForRS or item.linkageImportForRS is set to true. You can specify a web URL or a file name in platform-dependent format (that is, forward slashes or backward slashes, depending on the platform).

Example

The following example specifies a linkage URL for the specified library item.

fl.getDocumentDOM().library.items[0].linkageURL = "theShareSWF.swf";


item.name

Availability

Flash MX 2004.

Usage

item.name

Description

A string that specifies the name of the library item, which includes the folder structure. For example, if Symbol_1 is inside a folder called Folder_1, the name property of Symbol_1 is "Folder_1/Symbol_1".

Example

The following example displays the name of the specified library item in the Output panel.

fl.trace(fl.getDocumentDOM().library.items[0].name);


item.removeData()

Availability

Flash MX 2004.

Usage

item.removeData( name )

Parameters

name Specifies the name of the data to remove from the library item.

Returns

Nothing.

Description

Removes persistent data from the library item.

Example

The following example removes the data named myData from the first item in the library:

fl.getDocumentDOM().library.items[0].removeData( "myData" );


Layer object

Availability

Flash MX 2004.

Description

The Layer object represents a layer in the Timeline. The timeline.layers property contains an array of Layer objects, which can be accessed by fl.getDocumentDOM().getTimeline().layers.

Property summary for the Layer object

The following properties are available for the Layer object:

Property | Description
layer.color | A string that specifies the color assigned to outline the layer.
layer.frameCount | Read-only; an integer that specifies the number of frames in the layer.
layer.frames | Read-only; an array of Frame objects.
layer.height | An integer that specifies the percentage layer height; equivalent to the Layer height value in the Layer Properties dialog box.
layer.layerType | A string that specifies the current use of the layer; equivalent to the Type setting in the Layer Properties dialog box.
layer.locked | A Boolean value that specifies the locked status of the layer.
layer.name | A string that specifies the name of the layer.
layer.outline | A Boolean value that specifies the status of outlines for all objects on the layer.
layer.parentLayer | A Layer object that represents the layer's containing folder, guiding, or masking layer.
layer.visible | A Boolean value that specifies whether the layer's objects on the Stage are shown or hidden.


layer.color

Availability

Flash MX 2004.

Usage

layer.color

Description

A string that specifies the color assigned to outline the layer; equivalent to the Outline color setting in the Layer Properties dialog box. Specified in hexadecimal #rrggbb format (where r is red, g is green, and b is blue), a hexidecimal color value (such as 0xFF0000), or an integer color value.

Example

The following example stores the value of the first layer in the colorValue variable:

var colorValue = fl.getDocumentDOM().getTimeline().layers[0].color;

The following example shows three ways to set the color of the first layer to red:

fl.getDocumentDOM().getTimeline().layers[0].color=16711680;
fl.getDocumentDOM().getTimeline().layers[0].color="#ff0000";
fl.getDocumentDOM().getTimeline().layers[0].color=0xFF0000;


layer.frameCount

Availability

Flash MX 2004.

Usage

layer.frameCount

Description

Read-only property; an integer that specifies the number of frames in the layer.

Example

The following example stores the number of frames in the first layer in the fcNum variable:

var fcNum = fl.getDocumentDOM().getTimeline().layers[0].frameCount;


layer.frames

Availability

Flash MX 2004.

Usage

layer.frames

Description

Read-only property; an array of Frame objects (see Frame object).

Example

The following example sets the variable frameArray to the array of Frame objects for the frames in the current document:

var frameArray = fl.getDocumentDOM().getTimeline().layers[0].frames;

To determine if a frame is a keyframe, check whether the frame.startFrame property matches the array index, as shown in the following example:

var frameArray = fl.getDocumentDOM().getTimeline().layers[0].frames;
var n = frameArray.length;
for (i=0; i<n; i++) {
  if (i==frameArray[i].startFrame) {
    alert("Keyframe at: " + i);
  }
}


layer.height

Availability

Flash MX 2004.

Usage

layer.height

Description

An integer that specifies the percentage layer height; equivalent to the Layer height value in the Layer Properties dialog box. Acceptable values represent percentages of the default height: 100, 200, or 300.

Example

The following example stores the percentage value of the first layer's height setting:

var layerHeight = fl.getDocumentDOM().getTimeline().layers[0].height;

The following example sets the height of the first layer to 300 percent:

fl.getDocumentDOM().getTimeline().layers[0].height = 300;


layer.layerType

Availability

Flash MX 2004.

Usage

layer.layerType

Description

A string that specifies the current use of the layer; equivalent to the Type setting in the Layer Properties dialog box. Acceptable values are "normal", "guide", "guided", "mask", "masked", "folder".

Example

The following example sets the first layer in the Timeline to type "folder":

fl.getDocumentDOM().getTimeline().layers[0].layerType = "folder";


layer.locked

Availability

Flash MX 2004.

Usage

layer.locked

Description

A Boolean value that specifies the locked status of the layer. If set to true, the layer is locked. The default value is false.

Example

The following example stores the Boolean value for the status of the first layer in the lockStatus variable:

var lockStatus = fl.getDocumentDOM().getTimeline().layers[0].locked;

The following example sets the status of the first layer to unlocked:

fl.getDocumentDOM().getTimeline().layers[0].locked = false;


layer.name

Availability

Flash MX 2004.

Usage

layer.name

Description

A string that specifies the name of the layer.

Example

The following example sets the name of the first layer in the current document to "foreground":

fl.getDocumentDOM().getTimeline().layers[0].name = "foreground";


layer.outline

Availability

Flash MX 2004.

Usage

layer.outline

Description

A Boolean value that specifies the status of outlines for all objects on the layer. If set to true, all objects on the layer appear only with outlines. If false, objects appear as they were created.

Example

The following example makes all objects on the first layer appear only with outlines:

fl.getDocumentDOM().getTimeline().layers[0].outline = true;


layer.parentLayer

Availability

Flash MX 2004.

Usage

layer.parentLayer

Description

A Layer object that represents the layer's containing folder, guiding, or masking layer. Acceptable values for the parent layer are a folder, guide, or mask layer that precedes the layer, or the parentLayer of the preceding or following layer. Setting the layer's parentLayer will not move the layer's position in the list; trying to set a layer's parentLayer to a layer that would require moving it has no effect. Uses null for a top-level layer.

Example

The following example uses two layers at the same level on the same Timeline. The first layer (layers[0]) is converted into a folder and then set as the parent folder of the second layer (layers[1]). This action moves the second layer inside the first layer.

var parLayer = fl.getDocumentDOM().getTimeline().layers[0];
parLayer.layerType = "folder";
fl.getDocumentDOM().getTimeline().layers[1].parentLayer = parLayer;


layer.visible

Availability

Flash MX 2004.

Usage

layer.visible

Description

A Boolean value that specifies whether the layer's objects on the Stage are shown or hidden. If set to true, all objects in the layer are visible; if false, they are hidden. The default value is true.

Example

The following example makes all objects in the first layer invisible:

fl.getDocumentDOM().getTimeline().layers[0].visible = false;


library object

Availability

Flash MX 2004.

Description

The library object represents the Library panel. It is a property of the Document object (see document.library) and can be accessed by fl.getDocumentDOM().library.

The library object contains an array of items of different types, including symbols, bitmaps, sounds, and video.

Method summary for the library object

The following methods are available for the library object:

Method | Description
library.addItemToDocument() | Adds the current or specified item to the Stage at the specified position.
library.addNewItem() | Creates a new item of the specified type in the Library panel and sets the new item to the currently selected item.
library.deleteItem() | Deletes the current items or a specified item from the Library panel.
library.duplicateItem() | Makes a copy of the currently selected or specified item.
library.editItem() | Opens the currently selected or specified item in Edit mode.
library.expandFolder() | Expands or collapses the currently selected or specified folder in the library.
library.findItemIndex() | Returns the library item's index value (zero-based).
library.getItemProperty() | Gets the property for the selected item.
library.getItemType() | Gets the type of object currently selected or specified by a library path.
library.getSelectedItems() | Gets the array of all currently selected items in the library.
library.importEmbeddedSWF() | Imports a Shockwave file (SWF) into the library as a compiled clip.
library.itemExists() | Checks to see if a specified item exists in the library.
library.moveToFolder() | Moves the currently selected or specified library item to a specified folder.
library.newFolder() | Creates a new folder with the specified name, or a default name ("untitled folder #") if no folderName parameter is provided, in the currently selected folder.
library.renameItem() | Renames the currently selected library item in the Library panel.
library.selectAll() | Selects or deselects all items in the library.
library.selectItem() | Selects a specified library item.
library.selectNone() | Deselects all the library items.
library.setItemProperty() | Sets the property for all selected library items (ignoring folders).
library.updateItem() | Updates the specified item.

Property summary for the library object

The following property is available for the library object.

Property | Description
library.items | An array of item objects in the library


library.addItemToDocument()

Availability

Flash MX 2004.

Usage

library.addItemToDocument( position [, namePath] )

Parameters

position A point that specifies the x,y position of the center of the item on the Stage.

namePath A string that specifies the name of the item. If the item is in a folder, you can specify its name and path using slash notation. If namePath is not specified, the current library selection is used. This parameter is optional.

Returns

A Boolean value: true if the item was successfully added to the document; false otherwise.

Description

Adds the current or specified item to the Stage at the specified position.

Example

The following example adds the currently selected item to the Stage at the (3, 60) position:

fl.getDocumentDOM.library.addItemToDocument({x:3, y:60});

The following example adds the item Symbol1 located in folder1 of the library to the Stage at the (550, 485) position:

fl.getDocumentDOM().library.addItemToDocument({x:550.0, y:485.0}, "folder1/Symbol1");


library.addNewItem()

Availability

Flash MX 2004.

Usage

library.addNewItem( type [, namePath] )

Parameters

type A string that specifies the type of item to create. The only acceptable values for type are "video", "movie clip", "button", "graphic", "bitmap", and "folder" (so, for example, you cannot add a sound to the library with this method). Specifying a folder path is the same as using library.newFolder() before calling this method.

namePath A string that specifies the name of the item to be added. If the item is in a folder, specify its name and path using slash notation. This parameter is optional.

Returns

A Boolean value: true if the item is successfully created; false otherwise.

Description

Creates a new item of the specified type in the Library panel and sets the new item to the currently selected item.

Example

The following example creates a new button item named start in a new folder named folderTwo:

fl.getDocumentDOM().library.addNewItem("button" , "folderTwo/start");


library.deleteItem()

Availability

Flash MX 2004.

Usage

library.deleteItem( [ namePath ] )

Parameters

namePath A string that specifies the name of the item to be deleted. If the item is in a folder, you can specify its name and path using slash notation. If you pass a folder name, the folder and all its items are deleted. If no name is specified, Flash deletes the currently selected item or items. To delete all the items in the Library panel, select all items before using this method. This parameter is optional.

Returns

A Boolean value: true if the items are successfully deleted; false otherwise.

Description

Deletes the current items or a specified item from the Library panel. This method can affect multiple items if several are selected.

Example

The following example deletes the currently selected item:

fl.getDocumentDOM().library.deleteItem();

The following example deletes the item Symbol_1 from the library folder Folder_1:

fl.getDocumentDOM().library.deleteItem("Folder_1/Symbol_1");


library.duplicateItem()

Availability

Flash MX 2004.

Usage

library.duplicateItem( [ namePath ] )

Parameters

namePath A string that specifies the name of the item to duplicate. If the item is in a folder, you can specify its name and path using slash notation. This parameter is optional.

Returns

A Boolean value: true if the item is duplicated successfully; false otherwise. If more than one item is selected, Flash returns false.

Description

Makes a copy of the currently selected or specified item. The new item has a default name (such as item copy) and is set as the currently selected item. If more than one item is selected, the command fails.

Example

The following example creates a copy of the item square in the library folder test:

fl.getDocumentDOM().library.duplicateItem("test/square");


library.editItem()

Availability

Flash MX 2004.

Usage

library.editItem( [ namePath ] )

Parameters

namePath A string that specifies the name of the item. If the item is in a folder, you can specify its name and path using slash notation. If namePath is not specified, the single selected library item opens in Edit mode. If none or more than one item in the library is currently selected, the first scene in the main Timeline appears for editing. This parameter is optional.

Returns

A Boolean value: true if the item exists and can be edited; false if the specified item doesn't exist or cannot be edited.

Description

Opens the currently selected or specified item in Edit mode.

Example

The following example opens the item circle in the test folder of the library for editing:

fl.getDocumentDOM().library.editItem("test/circle");


library.expandFolder()

Availability

Flash MX 2004.

Usage

library.expandFolder( bExpand [, bRecurseNestedParents [, namePath ] ] )

Parameters

bExpand A Boolean value. If it is true, the folder is expanded; if false (the default), the folder is collapsed.

bRecurseNestedParents A Boolean value. If it is true, all the folders within the specified folder are expanded or collapsed, based on the value of bExpand. The default value is false. This parameter is optional.

namePath A string that specifies the name and, optionally, the path of the folder to expand or collapse. If this parameter is not specified, the method applies to the currently selected folder. This parameter is optional.

Returns

A Boolean value: true if the item is successfully expanded or collapsed; false if unsuccessful or the specified item is not a folder.

Description

Expands or collapses the currently selected or specified folder in the library.

Example

The following example collapses the test folder in the library, as well as all the folders within the test folder (if any):

fl.getDocumentDOM().library.expandFolder(false, true, "test");


library.findItemIndex()

Availability

Flash MX 2004.

Usage

library.findItemIndex( namePath )

Parameters

namePath A string that specifies the name of the item. If the item is in a folder, you can specify its name and path using slash notation.

Returns

An integer value representing the item's zero-based index value.

Description

Returns the library item's index value (zero-based). The library index is flat, so folders are considered part of the main index. Folder paths can be used to specify a nested item.

Example

The following example stores the zero-based index value of the library item square, which is in the test folder, in the variable sqIndex, and then displays the index value in a dialog box:

var sqIndex = fl.getDocumentDOM().library.findItemIndex("test/square");
alert(sqIndex);


library.getItemProperty()

Availability

Flash MX 2004.

Usage

library.getItemProperty( property )

Parameters

property A string. For a list of values that you can use as a property parameter, see the Property summary for the Item object, along with property summaries for its subclasses.

Returns

A string value for the property.

Description

Gets the property for the selected item.

Example

The following example shows a dialog box that contains the Linkage Identifier value for the symbol when referencing it using ActionScript or for runtime sharing:

alert(fl.getDocumentDOM().library.getItemProperty("linkageIdentifier"));


library.getItemType()

Availability

Flash MX 2004.

Usage

library.getItemType( [ namePath ] )

Parameters

namePath A string that specifies the name of the item. If the item is in a folder, specify its name and path using slash notation. If namePath is not specified, Flash provides the type of the current selection. If more than one item is currently selected and no namePath is provided, Flash ignores the command. This parameter is optional.

Returns

A string value specifying the type of object. Possible values include: "undefined", "component", "movie clip", "graphic", "button", "video", "folder", "font", "sound", "bitmap", and "compiled clip".

Description

Gets the type of object currently selected or specified by a library path.

Example

The following example shows a dialog box that contains the item type of Symbol_1 located in the Folder_1/Folder_2 folder:

alert(fl.getDocumentDOM.library.getItemType("Folder_1/Folder_2/Symbol_1"));


library.getSelectedItems()

Availability

Flash MX 2004.

Parameters

None.

Returns

An array of values for all currently selected items in the library.

Description

Gets the array of all currently selected items in the library.

Example

The following example stores the array of currently selected library items (in this case, several audio files) in the selItems variable and then changes the sampleRate property of the first audio file in the array to "11 kHz":

var selItems = fl.getDocumentDOM().library.getSelectedItems();
selItems[0].sampleRate = "11 kHz";


library.importEmbeddedSWF()

Availability

Flash MX 2004.

Usage

library.importEmbeddedSWF( linkageName, swfData [, libName] )

Parameters

linkageName A string that provides the name of the SWF linkage of the root movie clip.

swfData An array of binary SWF data, which comes from an external library or DLL.

libName A string that specifies the library name for the created item. If the name is already used, the method creates an alternate name. This parameter is optional.

Returns

Nothing.

Description

This method imports a Shockwave file (SWF) into the library as a compiled clip. Unlike File > Import > SWF, this method lets you embed a compiled SWF file inside the library. There is no corresponding UI functionality, and this method must be used with an external library or DLL (see C-Level Extensibility).

Example

The following example adds the SWF file with the linkageName value of MyMovie to the library as a compiled clip named Intro:

fl.getDocumentDOM().library.importEmbeddedSWF("MyMovie", swfData, "Intro");


library.itemExists()

Availability

Flash MX 2004.

Usage

library.itemExists( namePath )

Parameters

namePath A string that specifies the name of the item. If the item is in a folder, specify its name and path using slash notation.

Returns

A Boolean value: true if the specified item exists in the library; false otherwise.

Description

Checks to see if a specified item exists in the library.

Example

The following example displays true or false in a dialog box, depending on whether the item Symbol_1 exists in the Folder_1 library folder:

alert(fl.getDocumentDOM().library.itemExists('Folder_1/Symbol_1'));


library.items

Availability

Flash MX 2004.

Usage

library.items

Description

An array of item objects in the library.

Example

The following example stores the array of all library items in the itemArray variable:

var itemArray = fl.getDocumentDOM().library.items;


library.moveToFolder()

Availability

Flash MX 2004.

Usage

library.moveToFolder( folderPath [, itemToMove [, bReplace ] ] )

Parameters

folderPath A string that specifies the path to the folder in the form "FolderName" or "FolderName/FolderName". To move an item to the top level, specify an empty string ("") for folderPath.

itemToMove A string that specifies the name of the item to move. If itemToMove is not specified, the currently selected items move. This parameter is optional.

bReplace A Boolean value. If an item with the same name already exists, specifying true for the bReplace parameter replaces the existing item with the item being moved. If false, the name of the dropped item changes to a unique name. The default value is false. This parameter is optional.

Returns

A Boolean value: true if the item moves successfully; false otherwise.

Description

Moves the currently selected or specified library item to a specified folder. If the folderPath parameter is empty, the items move to the top level.

Example

The following example moves the item Symbol_1 to the library folder new and replaces the item in that folder with the same name:

fl.getDocumentDOM().library.moveToFolder("new", "Symbol_1", true);


library.newFolder()

Availability

Flash MX 2004.

Usage

library.newFolder( [folderPath] )

Parameters

folderPath A string that specifies the name of the folder to be created. If it is specified as a path, and the path doesn't exist, the path is created. This parameter is optional.

Returns

A Boolean value: true if folder is created successfully; false otherwise.

Description

This method creates a new folder with the specified name, or a default name ("untitled folder #") if no folderName parameter is provided, in the currently selected folder.

Example

The following example creates two new library folders; the second folder is a subfolder of the first folder:

fl.getDocumentDOM().library.newFolder("first/second");


library.renameItem()

Availability

Flash MX 2004.

Usage

library.renameItem(name)

Parameters

name A string that specifies a new name for the library item.

Returns

A Boolean value: true if the name of the item changes successfully. If multiple items are selected, no names are changed and the return value is false (to match UI behavior).

Description

Renames the currently selected library item in the Library panel.

Example

The following example renames the currently selected library item to new name:

fl.getDocumentDOM().library.renameItem("new name");


library.selectAll()

Availability

Flash MX 2004.

Usage

library.selectAll( [ bSelectAll ] )

Parameters

bSelectAll A Boolean value that specifies whether to select or deselect all items in the library. Omit this parameter or use the default value of true to select all the items in the library; false deselects all library items. This parameter is optional.

Returns

Nothing.

Description

Selects or deselects all items in the library.

Example

The following examples select all the items in the library:

fl.getDocumentDOM().library.selectAll();
fl.getDocumentDOM().library.selectAll(true);

The following examples deselect all the items in the library:

fl.getDocumentDOM().library.selectAll(false);
fl.getDocumentDOM().library.selectNone();


library.selectItem()

Availability

Flash MX 2004.

Usage

library.selectItem( namePath [, bReplaceCurrentSelection [, bSelect ] ] )

Parameters

namePath A string that specifies the name of the item. If the item is in a folder, you can specify its name and path using slash notation.

bReplaceCurrentSelection A Boolean value that specifies whether to replace the current selection or add the item to the current selection. The default value is true (replace current selection). This parameter is optional.

bSelect A Boolean value that specifies whether to select or deselect an item. The default value is true (select). This parameter is optional.

Returns

A Boolean value: true if the specified item exists; false otherwise.

Description

Selects a specified library item.

Example

The following example changes the current selection in the library to symbol 1 inside untitled folder 1:

fl.getDocumentDOM().library.selectItem("untitled Folder_1/Symbol_1");

The following example extends what is currently selected in the library to include symbol 1 inside untitled folder 1:

fl.getDocumentDOM().library.selectItem("untitled Folder_1/Symbol_1", false);

The following example deselects symbol 1 inside untitled folder 1 and does not change other selected items:

fl.getDocumentDOM().library.selectItem("untitled Folder_1/Symbol_1", true, false);


library.selectNone()

Availability

Flash MX 2004.

Parameters

None.

Returns

Nothing.

Description

Deselects all the library items.

Example

The following examples deselect all the items in the library:

fl.getDocumentDOM().library.selectNone();
fl.getDocumentDOM().library.selectAll(false);


library.setItemProperty()

Availability

Flash MX 2004.

Usage

library.setItemProperty( property, value )

Parameters

property A string that is the name of the property to set. For a list of properties, see the Property summary for the Item object and property summaries for its subclasses. To see which objects are subclasses of the Item object, see Summary of the DOM structure.

value The value to assign to the specified property.

Returns

Nothing.

Description

Sets the property for all selected library items (ignoring folders).

Example

The following example assigns the value button to the symbolType property for the selected library item or items. In this case, the item must be a SymbolItem object; symbolType is a valid property for SymbolItem objects.

fl.getDocumentDOM().library.setItemProperty("symbolType", "button");


library.updateItem()

Availability

Flash MX 2004.

Usage

library.updateItem( [ namePath ] )

Parameters

namePath A string that specifies the name of the item. If the item is in a folder, specify its name and path using slash notation. This is the same as right-clicking on an item and selecting Update from the menu in the UI. If no name is provided, the current selection is updated. This parameter is optional.

Returns

A Boolean value: true if Flash updated the item successfully; false otherwise.

Description

Updates the specified item.

Example

The following example displays a dialog box that shows whether the currently selected item is updated (true) or not (false):

alert(fl.getDocumentDOM().library.updateItem());


LinkedVideoInstance object

Inheritance Element object > Instance object > LinkedVideoInstance object

Availability

Flash MX 2004.

Description

The LinkedVideoInstance object is a subclass of the Instance object. There are no unique methods or properties of LinkedVideoInstance.


Math object

Availability

Flash MX 2004.

Description

The Math object is available as a read-only property of the flash object; see fl.Math. This object provides methods that perform common mathematical operations.

Method summary for the Math object

The following methods are available for the Math object:

Method | Description
Math.concatMatrix() | Performs a matrix concatenation and returns the result.
Math.invertMatrix() | Returns the inverse of the specified matrix.
Math.pointDistance() | Computes the distance between two points.


Math.concatMatrix()

Availability

Flash MX 2004.

Usage

Math.concatMatrix(mat1, mat2)

Parameters

The mat1 and mat2 parameters specify the Matrix objects to be concatenated (see Matrix object). Each parameter must be an object with fields a, b, c, d, tx, and ty.

Returns

A concatenated object matrix.

Description

Method; performs a matrix concatenation and returns the result.

Example

The following example stores the currently selected object in the elt variable, multiplies the object matrix by the view matrix, and stores that value in the mat variable:

var elt = fl.getDocumentDOM().selection[0];
var mat = fl.Math.concatMatrix( elt.matrix , fl.getDocumentDOM().viewMatrix );


Math.invertMatrix()

Availability

Flash MX 2004.

Usage

Math.invertMatrix(mat)

Parameters

The mat parameter indicates the Matrix object to invert. It must have the following fields: a, b, c, d, tx, and ty.

Returns

A Matrix object that is the inverse of the original matrix.

Description

Method; returns the inverse of the specified matrix.

Example

The following example stores the currently selected object in the elt variable, assigns that matrix to the mat variable, and stores the inverse of the matrix in the inv variable:

var elt = fl.getDocumentDOM().selection[0];
var mat = elt.matrix;
var inv = fl.Math.invertMatrix( mat );


Math.pointDistance()

Availability

Flash MX 2004.

Usage

Math.pointDistance(pt1, pt2)

Parameters

The pt1 and pt2 parameters specify the points between which distance is measured.

Returns

A floating-point value that represents the distance between the points.

Description

Method; computes the distance between two points.

Example

The following example stores the value for the distance between pt1 and pt2 in the dist variable:

var pt1 = {x:10, y:20}
var pt2 = {x:100, y:200}
var dist = fl.Math.pointDistance(pt1, pt2);


Matrix object

Availability

Flash MX 2004.

Description

The Matrix object represents a transformation matrix.

Property summary for the Matrix object

The following properties are available for the Matrix object:

Property | Description
matrix.a | Property; a floating-point value that specifies the (0,0) element in the transformation matrix.
matrix.b | Property; a floating-point value that specifies the (0,1) element in the matrix.
matrix.c | Property; a floating-point value that specifies the (1,0) element in the matrix.
matrix.d | Property; a floating-point value that specifies the (1,1) element in the matrix.
matrix.tx | Property; a floating-point value that specifies the x-axis location of a symbol's registration point or the center of a shape.
matrix.ty | Property; a floating-point value that specifies the y-axis location of a symbol's registration point or the center of a shape.


matrix.a

Availability

Flash MX 2004.

Usage

matrix.a

Description

Property; a floating-point value that specifies the (0,0) element in the transformation matrix. This value represents the scale factor of the object's x-axis.

Example

The a and d properties in a matrix represent scaling. In the following example, the values are set to 2 and 3, respectively, to scale the selected object to two times its width and three times its height:

var mat = fl.getDocumentDOM().selection[0].matrix;
mat.a = 2;
mat.d = 3;
fl.getDocumentDOM().selection[0].matrix = mat;

You can rotate an object by setting the a, b, c, and d matrix properties relative to one another, where a = d and b = -c. For example, values of 0.5, 0.8, -0.8, and 0.5 rotate the object 60º:

var mat = fl.getDocumentDOM().selection[0].matrix;
mat.a = 0.5;
mat.b = 0.8;
mat.c = 0.8*(-1);
mat.d = 0.5;
fl.getDocumentDOM().selection[0].matrix = mat;

You can set a = d = 1 and c = b = 0 to reset the object back to its original shape.


matrix.b

Availability

Flash MX 2004.

Usage

matrix.b

Description

Property; a floating-point value that specifies the (0,1) element in the matrix. This value represents the vertical skew of a shape; it causes Flash to move the shape's right edge along the vertical axis.

The matrix.b and matrix.c properties in a matrix represent skewing.

Example

In the following example, you can set b and c to -1 and 0, respectively; these settings skew the object at a 45º vertical angle:

var mat = fl.getDocumentDOM().selection[0].matrix;
mat.b = -1;
mat.c = 0;
fl.getDocumentDOM().selection[0].matrix = mat;

To skew the object back to its original shape, you can set b and c to 0.

See the matrix.a example.


matrix.c

Availability

Flash MX 2004.

Usage

matrix.c

Description

Property; a floating-point value that specifies the (1,0) element in the matrix. This value causes Flash to skew the object by moving its bottom edge along a horizontal axis.

The matrix.b and matrix.c properties in a matrix represent skewing.

Example

See the matrix.b example.


matrix.d

Availability

Flash MX 2004.

Usage

matrix.d

Description

Property; a floating-point value that specifies the (1,1) element in the matrix. This value represents the scale factor of the object's y-axis.

Example

See matrix.a.


matrix.tx

Availability

Flash MX 2004.

Usage

matrix.tx

Description

Property; a floating-point value that specifies the x-axis location of a symbol's registration point or the center of a shape. It defines the x translation of the transformation.

You can move an object by setting the matrix.tx and matrix.ty properties.

Example

In the following example, setting tx and ty to 0 moves the registration point of the object to point 0,0 in the document:

var mat = fl.getDocumentDOM().selection[0].matrix;
mat.tx = 0;
mat.ty = 0;
fl.getDocumentDOM().selection[0].matrix = mat;


matrix.ty

Availability

Flash MX 2004.

Usage

matrix.ty

Description

Property; a floating-point value that specifies the y-axis location of a symbol's registration point or the center of a shape. It defines the y translation of the transformation.

You can move an object by setting the matrix.tx and matrix.ty properties.

Example

See the matrix.tx example.


outputPanel object

Availability

Flash MX 2004.

Description

This object represents the Output panel, which displays troubleshooting information such as syntax errors. To access this object, use fl.outputPanel (or flash.outputPanel).

Method summary for the outputPanel object

The outputPanel object uses the following methods.

Method | Description
outputPanel.clear() | Clears the contents of the Output panel.
outputPanel.save() | Saves the contents of the Output panel to a local text file, in UTF-8 encoding.
outputPanel.trace() | Adds a line to the contents of the Output panel, terminated by a new line.


outputPanel.clear()

Availability

Flash MX 2004.

Usage

outputPanel.clear()

Parameters

None.

Returns

Nothing.

Description

Method; clears the contents of the Output panel. You can use this method in a batch processing application to clear a list of errors, or to save them incrementally by using this method in conjunction with outputPanel.save().

Example

The following example clears the current contents of the Output panel:

fl.outputPanel.clear();


outputPanel.save()

Availability

Flash MX 2004.

Usage

outputPanel.save(fileURI [, bAppendToFile])

Parameters

The fileURI parameter is a string that specifies the local file to contain the Output panel's contents.

The optional bAppendToFile parameter, if it has a value of true, appends the Output panel's contents to the output file. If bAppendToFile is false, the method overwrites the output file if it already exists. The default value is false.

Returns

Nothing.

Description

Method; saves the contents of the Output panel to a local text file, in UTF-8 encoding. The local filename must be specified as a URI. You can also specify that the contents be appended to the contents of a local file, rather than being overwritten. If the URI is invalid or unspecified, an error is reported.

This method is useful for batch processing. For example, you can create a JSFL file that compiles several components. Any compile errors appear in the Output panel, and you can use this method to save the resulting errors to a text file, which can be automatically parsed by the build system in use.

Example

The following example saves the Output panel's contents to the batch.log file in the /tests directory:

fl.outputPanel.save("file:///c|/tests/batch.log");


outputPanel.trace()

Availability

Flash MX 2004.

Usage

outputPanel.trace(message)

Parameters

The message parameter is a string that contains the text to add to the Output panel.

Returns

Nothing.

Description

Method; adds a line to the contents of the Output panel, terminated by a new line. This method shows the Output panel if it is not already visible.

The outputPanel.trace() method duplicates the functionality of fl.trace().

Example

The following example writes "hello world" to the Output panel:

fl.outputPanel.trace("hello world");


Parameter object

Availability

Flash MX 2004.

Description

The Parameter object type is accessed from the screen.parameters array (which corresponds to the screen Property inspector in the Flash authoring tool) or by the componentInstance.parameters array (which corresponds to the component Property inspector in the authoring tool).

Method summary for the Parameter object

The following methods are available for the Parameter object:

Method | Description
parameter.insertItem() | Method; if a parameter is a list, object, or array, the value property is an array.
parameter.removeItem() | Method; removes an element of the list, object, or array type of a screen or component parameter.

Property summary for the Parameter object

The following properties are available for the Parameter object:

Property | Description
parameter.category | A string that specifies the category property for the screen parameter or componentInstance parameter.
parameter.listIndex | Property; an integer that specifies the value of the selected list item.
parameter.name | Read-only property; a string that specifies the name of the parameter.
parameter.value | Property; corresponds to the Value field in the Parameters tab of the Component Inspector panel, in the component Property inspector, or in the screen Property inspector.
parameter.valueType | Read-only property; a string that indicates the type of the screen or component parameter.
parameter.verbose | Read-only property; specifies whether the parameter appears in the Parameters tab of the Component inspector panel, the Parameters tab of the Property inspector, or the Components Inspector panel.


parameter.category

Availability

Flash MX 2004.

Usage

parameter.category

Description

A string that specifies the category property for the screen parameter or componentInstance parameter. This property provides an alternative way of presenting a list of parameters. This functionality is not available through the Flash user interface.


parameter.insertItem()

Availability

Flash MX 2004.

Usage

parameter.insertItem(index, name, value, type)

Parameters

The index parameter is a zero-based integer index that indicates where the item will be inserted in the list, object, or array. If the index is 0, the item is inserted at the beginning of the list. If index value is greater than the list size, the new item is inserted at the end of the array.

The name parameter is a string that specifies the name of the item to insert. This is a required parameter for object parameters.

The value parameter is a string that specifies the value of the item to insert.

The type parameter is a string that specifies the type of item to insert.

Returns

Nothing.

Description

Method; if a parameter is a list, object, or array, the value property is an array. Use this method to insert a value into the array.

Example

The following example inserts the value of "New Value" into the labelPlacement parameter:

// select an instance of a Button component on the Stage
var parms = fl.getDocumentDOM().selection[0].parameters;
parms[2].insertItem(0, "name", "New Value", "String");
var values = parms[2].value;
for(var prop in values){
     fl.trace("labelPlacement parameter value = " + values[prop].value);
}


parameter.listIndex

Availability

Flash MX 2004.

Usage

parameter.listIndex

Description

Property; the value of the selected list item. This property is valid only if the valueType parameter is "List".

Example

The following example sets the first parameter for a Slide, which is the autoKeyNav parameter. To set the parameter to one of its acceptable values (true, false, or inherit) parameter.listIndex is set to the index of the item in the list (0 for true, 1 for false, 2 for inherit).

var parms = fl.getDocumentDOM().screenOutline.screens[1].parameters;
parms[0].listIndex = 1;


parameter.name

Availability

Flash MX 2004.

Usage

parameter.name

Description

Read-only property; a string that specifies the name of the parameter.

Example

The following example displays the name of the fifth parameter for the selected component:

var parms = fl.getDocumentDOM().selection[0].parameters;
fl.trace("name: " + parms[4].name);

The following example displays the name of the fifth parameter for the specified screen:

var parms = fl.getDocumentDOM().screenOutline.screens[1].parameters; fl.trace("name: " + parms[4].name);


parameter.removeItem()

Availability

Flash MX 2004.

Usage

parameter.removeItem(index)

Parameters

The index parameter is the zero-based integer index of the item to remove from the screen or component property.

Returns

Nothing.

Description

Method; removes an element of the list, object, or array type of a screen or component parameter.

Example

The following example removes the element at index 1 from the labelPlacement parameter of a component:

// select an instance of a Button component on the Stage
var parms = fl.getDocumentDOM().selection[0].parameters;
var values = parms[2].value;
fl.trace("--Original--");
for(var prop in values){
  fl.trace("labelPlacement value = " + values[prop].value);
}
parms[2].removeItem(1);

var newValues = parms[2].value;
fl.trace("--After Removing Item--");
for(var prop in newValues){
  fl.trace("labelPlacement value = " + newValues[prop].value);
}

The following example removes the element at index 1 from the autoKeyNav parameter of a screen.

// open a presentation document
var parms = fl.getDocumentDOM().screenOutline.screens[1].parameters;
var values = parms[0].value;
fl.trace("--Original--");
for(var prop in values){
  fl.trace("autoKeyNav value = " + values[prop].value);
}
parms[0].removeItem(1);

var newValues = parms[0].value;
fl.trace("--After Removing Item--");
for(var prop in newValues){
  fl.trace("autoKeyNav value = " + newValues[prop].value);
}


parameter.value

Availability

Flash MX 2004.

Usage

parameter.value

Description

Property; corresponds to the Value field in the Parameters tab of the Component Inspector panel, in the component Property inspector, or in the screen Property inspector. The type of the value property is determined by the valueType property for the parameter (see parameter.valueType).


parameter.valueType

Availability

Flash MX 2004.

Usage

parameter.valueType

Description

Read-only property; a string that indicates the type of the screen or component parameter. The type can be one of the following values: "Default", "Array", "Object", "List", "String", "Number", "Boolean", "Font Name", "Color", "Collection", "Web Service URL", or "Web Service Operation".


parameter.verbose

Availability

Flash MX 2004.

Usage

parameter.verbose

Description

Read-only property; specifies whether the parameter appears in the Parameters tab of the Component inspector panel, the Parameters tab of the Property inspector, or the Components Inspector panel. This property contains a value of 0 (nonverbose) or 1 (verbose).


Path object

Availability

Flash MX 2004.

Description

The Path object defines a sequence of line segments (straight, curved, or both), which you typically use when creating extensible tools. The following example shows an instance of a Path object being returned from the flash object:

path = fl.drawingLayer.newPath();

See also the drawingLayer object.

Method summary for the Path object

The following methods are available for the Path object:

Method | Description
path.addCubicCurve() | Method; appends a cubic Bézier curve segment to the path.
path.addCurve() | Method; appends a quadratic Bézier segment to the path.
path.addPoint() | Method; adds a point to the path.
path.clear() | Method; removes all points from the path.
path.close() | Method; appends a point at the location of the first point of the path and extends the path to that point, which closes the path.
path.makeShape() | Method; creates a shape on the Stage by using the current stroke and fill settings.
path.newContour() | Method; starts a new contour in the path.

Property summary for the Path object

The following properties are available for the Path object:

Property | Description
path.nPts | Read-only property; an integer representing the number of points in the path.


path.addCubicCurve()

Availability

Flash MX 2004.

Usage

path.addCubicCurve(xAnchor, yAnchor, x2, y2, x3, y3, x4, y4)

Parameters

The xAnchor parameter is a floating-point number that specifies the x position of the first control point.

The yAnchor parameter is a floating-point number that specifies the y position of the first control point.

The x2 parameter is a floating-point number that specifies the x position of the second control point.

The y2 parameter is a floating-point number that specifies the y position of the second control point.

The x3 parameter is a floating-point number that specifies the x position of the third control point.

The y3 parameter is a floating-point number that specifies the y position of the third control point.

The x4 parameter is a floating-point number that specifies the x position of the fourth control point.

The y4 parameter is a floating-point number that specifies the y position of the fourth control point.

Returns

Nothing.

Description

Method; appends a cubic Bézier curve segment to the path.

Example

The following example creates a new path, stores it in the myPath variable, and assigns the curve to the path:

var myPath = fl.drawingLayer.newPath();
myPath.addCubicCurve(0, 0, 10, 20, 20, 20, 30, 0);


path.addCurve()

Availability

Flash MX 2004.

Usage

path.addCurve(xAnchor, yAnchor, x2, y2, x3, y3)

Parameters

The xAnchor parameter is a floating-point value that specifies the x position of the first control point.

The yAnchor parameter is a floating-point value that specifies the y position of the first control point.

The x2 parameter is a floating-point value that specifies the x position of the second control point.

The y2 parameter is a floating-point value that specifies the y position of the second control point.

The x3 parameter is a floating-point value that specifies the x position of the third control point.

The y3 parameter is a floating-point value that specifies the y position of the third control point.

Returns

Nothing.

Description

Method; appends a quadratic Bézier segment to the path.

Example

The following example creates a new path, stores it in the myPath variable, and assigns the curve to the path:

var myPath = fl.drawingLayer.newPath();
myPath.addCurve(0, 0, 10, 20, 20, 0);


path.addPoint()

Availability

Flash MX 2004.

Usage

path.addPoint(x, y)

Parameters

The x parameter is a floating-point value that specifies the x position of the point.

The y parameter is a floating-point value that specifies the y position of the point.

Returns

Nothing.

Description

Method; adds a point to the path.

Example

The following example creates a new path, stores it in the myPath variable, and assigns the new point to the path:

var myPath = fl.drawingLayer.newPath();
myPath.addPoint(10, 100);


path.clear()

Availability

Flash MX 2004.

Usage

path.clear()

Parameters

None.

Returns

Nothing.

Description

Method; removes all points from the path.

Example

The following example removes all points from a path stored in the myPath variable:

var myPath = fl.drawingLayer.newPath();
myPath.clear();


path.close()

Availability

Flash MX 2004.

Usage

path.close()

Parameters

None.

Returns

Nothing.

Description

Method; appends a point at the location of the first point of the path and extends the path to that point, which closes the path. If the path has no points, no points are added.

Example

The following example creates a closed path:

var myPath = fl.drawingLayer.newPath();
myPath.close();


path.makeShape()

Availability

Flash MX 2004.

Usage

path.makeShape([bSupressFill [, bSupressStroke]])

Parameters

The optional bSuppressFill parameter is a Boolean value that, if set to true, suppresses the fill that would be applied to the shape. The default value is false.

The optional bSupressStroke parameter is a Boolean value that, if set to true, suppresses the stroke that would be applied to the shape. The default value is false.

Returns

Nothing.

Description

Method; creates a shape on the Stage by using the current stroke and fill settings. The path is cleared after the shape is created. This method has two optional parameters for suppressing the fill and stroke of the resulting shape object. If you omit these parameters or set them to false, the current values for fill and stroke are used.

Example

The following example creates a shape with the current fill and no stroke:

var myPath = fl.drawingLayer.newPath();
myPath.makeShape(false, true);


path.newContour()

Availability

Flash MX 2004.

Usage

path.newContour()

Parameters

None.

Returns

Nothing.

Description

Method; starts a new contour in the path.

Example

The following example creates a hollow square:

var myPath = fl.drawingLayer.newPath();
myPath.addPoint( 0,  0);
myPath.addPoint( 0, 30);
myPath.addPoint(30, 30);
myPath.addPoint(30,  0);
myPath.addPoint( 0,  0);

myPath.newContour();
myPath.addPoint(10, 10);
myPath.addPoint(10, 20);
myPath.addPoint(20, 20);
myPath.addPoint(20, 10);
myPath.addPoint(10, 10);

myPath.makeShape();


path.nPts

Availability

Flash MX 2004.

Usage

path.nPts

Description

Read-only property; an integer representing the number of points in the path. A new path has 0 points.

Example

The following example uses the Output panel to display the number of points in the path referenced by the myPath variable:

var myPath = fl.drawingLayer.newPath();
var numOfPoints = myPath.nPts;
fl.trace("Number of points in the path: " + numOfPoints);
// displays: Number of points in the path: 0


Screen object

Availability

Flash MX 2004.

Description

The Screen object represents a single screen in a slide or form document. This object contains properties related to the slide or form. For access to the array of all Screen objects in the document, use the following code:

fl.getDocumentDOM().screenOutline.screens

Property summary for the Screen object

The Screen object has the following properties:

Properties | Description
screen.accName | Property; a string that is equivalent to the Name field in the Accessibility panel.
screen.childScreens | Read-only property; the array of child screens for this screen. The array is empty if there are no child screens.
screen.description | Property; a string that is equivalent to the Description field in the Accessibility panel.
screen.forceSimple | Property; a Boolean value that enables and disables accessibility for the object's children.
screen.hidden | Property; a Boolean value that specifies whether a screen is visible.
screen.instanceName | Read-only property; a string that represents the instance name used to access the object from ActionScript.
screen.name | Read-only property; a string that represents the name of the screen.
screen.nextScreen | Read-only property; an object that represents the next peer screen in the parent's childScreen array.
screen.parameters | Read-only property; an array of ActionScript properties that are accessible from the screen Property inspector.
screen.parentScreen | Read-only property; an object that represents the parent screen.
screen.prevScreen | Read-only property; an object that represents the previous peer screen in the parent's childScreen array.
screen.silent | Property; a Boolean value that specifies whether the object is accessible.
screen.tabIndex | Property; equivalent to the Tab Index field in the Accessibility panel.
screen.timeline | Read-only property; the Timeline object for the screen.


screen.accName

Availability

Flash MX 2004.

Usage

screen.accName

Description

Property; a string that is equivalent to the Name field in the Accessibility panel. Screen readers identify objects by reading the name aloud.

Example

The following example stores the value of the name of the object in the theName variable:

var theName = fl.getDocumentDOM().screenOutline.screens[1].accName;

The following example sets the name of the object to "Home Button":

fl.getDocumentDOM().screenOutline.screens[1].accName = 'Home Button';


screen.childScreens

Availability

Flash MX 2004.

Usage

screen.childScreens

Description

Read-only property; the array of child screens for this screen. The array is empty if there are no child screens.

Example

The following example checks to see if the current document is a slide or form, and if it is, stores the array of child screens in the myChildren variable and displays their names in the Output panel:

var myChildren = new Array();
if(fl.getDocumentDOM().allowScreens) {
  var myParent = fl.getDocumentDOM().screenOutline.rootScreen.name
  for (i in fl.getDocumentDOM().screenOutline.rootScreen.childScreens) {
    myChildren.push(" "+fl.getDocumentDOM().screenOutline.rootScreen.childScreens[i].name);
  }
  fl.trace(" The child screens of "+myParent+" are "+myChildren+". ");
}


screen.description

Availability

Flash MX 2004.

Usage

screen.description

Description

Property; a string that is equivalent to the Description field in the Accessibility panel. The description is read by the screen reader.

Example

The following example gets the description of the object and stores it in the theDescription variable:

var theDescription = fl.getDocumentDOM().screenOutline.screens[1].description;

The following example sets the description of the object to "This is Screen 1":

fl.getDocumentDOM().screenOutline.screens[1].description = "This is Screen 1"


screen.forceSimple

Availability

Flash MX 2004.

Usage

screen.forceSimple

Description

Property; a Boolean value that enables or disables accessibility for the object's children. This is equivalent to the inverse logic of the Make Child Objects Accessible setting in the Accessibility panel. That is, if forceSimple is true, it is the same as the Make Child Object Accessible option being unchecked. If forceSimple is false, it is the same as the Make Child Object Accessible option being checked.

Example

The following example stores the value of forceSimple in the areChildrenAccessible variable (a value of false means the children of the object are accessible):

var areChildrenAccessible = fl.getDocumentDOM().screenOutline.screens[1].forceSimple

The following example makes the children of the object accessible:

fl.getDocumentDOM().screenOutline.screens[1].forceSimple = false;


screen.hidden

Availability

Flash MX 2004.

Usage

screen.hidden

Description

Property; a Boolean value that specifies whether the screen is visible. A screen with the hidden property set to true is not visible in any other screen.

Example

The following example checks to see if the first screen in the outline is hidden and changes the visibility of the screen accordingly. Then, a message in the Output panel shows what the visibility of the screen was before the change:

if (fl.getDocumentDOM().screenOutline.screens[0].hidden) {
  fl.getDocumentDOM().screenOutline.setScreenProperty("hidden", false);
  fl.trace(fl.getDocumentDOM().screenOutline.screens[0].name+" had its 'hidden' property set to 'false'");
}
else {
  fl.getDocumentDOM().screenOutline.setScreenProperty("hidden", true);
  fl.trace(fl.getDocumentDOM().screenOutline.screens[0].name+" had its 'hidden' property set to 'true'");
}


screen.instanceName

Availability

Flash MX 2004.

Usage

screen.instanceName

Description

Read-only property; a string that represents the instance name used to access the object from ActionScript.

Example

The following example checks to see if the current document allows screens (because it is a slide or form). Then it assigns the instanceName value of the first child screen in the array to the myInstanceName variable and opens the Output panel to display the instance name of the screen:

var myChildren = new Array();
if(fl.getDocumentDOM().allowScreens) {
  var myInstanceName = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[0].instanceName;
  fl.trace(" The instanceName is "+myInstanceName+". ");
}


screen.name

Availability

Flash MX 2004.

Usage

screen.name

Description

Read-only property; a string that represents the name of the screen.

Example

The following example checks to see if the current document allows screens (because it is a slide or form document). Then it assigns the name value of the first child screen in the array to the myName variable and opens the Output panel to display the name of the screen:

var myChildren = new Array();
if(fl.getDocumentDOM().allowScreens) {
  var myName = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[0].name;
  fl.trace("The name of the screen is "+myName+". ");
}


screen.nextScreen

Availability

Flash MX 2004.

Usage

screen.nextScreen

Description

Read-only property; an object that represents the next peer screen in the parent's childScreen array. That is, screen.NextScreen is found by moving down an array of child screens to the next screen in the array. See screen.prevScreen.

If there isn't a peer screen, the value is null.

Example

The following example first checks to see if the current document is a slide or form, and if it is, retrieves and displays the sequence of screens in the Output panel:

if(fl.getDocumentDOM().allowScreens) {
  var myCurrent = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[0].name;
  var myNext = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[0].nextScreen.name;
  fl.trace(" The next screen to "+myCurrent+" is "+myNext+". ");
}


screen.parameters

Availability

Flash MX 2004.

Usage

screen.parameters

Description

Read-only property; an array of ActionScript properties that are accessible from the screen Property inspector.

Example

The following example stores the parameters for the second screen in the outline to the parms variable, and then assigns the "some value" value to the first property:

var parms = fl.getDocumentDOM().screenOutline.screens[1].parameters; parms[0].value = "some value";


screen.parentScreen

Availability

Flash MX 2004.

Usage

screen.parentScreen

Description

Read-only property; an object that represents the parent screen. If parentScreen is null, the screen is a top-level screen.

Example

The following example stores the values for the childScreens and parentScreen properties in variables, and then displays those values and their parent/child relationship in the Output panel:

if(fl.getDocumentDOM().allowScreens) {
  var myCurrent = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[1].name;
  var myParent = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[1].parentScreen.name;
  fl.trace(" The parent screen to "+myCurrent+" is "+myParent+". ");
}


screen.prevScreen

Availability

Flash MX 2004.

Usage

screen.prevScreen

Description

Read-only property; an object that represents the previous peer screen in the parent's childScreens array. If there isn't a peer screen, the value is null. See also screen.nextScreen.

Example

The following example checks to see if the current document is a slide or form, and if it is, retrieves and displays the sequence of screens in the Output panel:

if(fl.getDocumentDOM().allowScreens) {
  var myCurrent = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[1].name;
  var myNext = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[1].prevScreen.name;
  fl.trace(" The previous screen to "+myCurrent+" is "+myNext+". ");
}


screen.silent

Availability

Flash MX 2004.

Usage

screen.silent

Description

Property; a Boolean value that specifies whether the object is accessible. This is equivalent to the inverse logic of the Make Object Accessible setting in the Accessibility panel. That is, if silent is true, it is the same as having the Make Object Accessible option deselected in the Accessibility panel. If silent is false, it is the same as having the Make Object Accessible option selected in the Accessibility panel.

Example

The following example retrieves the silent value of the object (a value of false means the object is accessible):

var isSilent = fl.getDocumentDOM().screenOutline.screens[1].silent;

The following example sets the object to be accessible:

fl.getDocumentDOM().screenOutline.screens[1].silent = false;


screen.tabIndex

Availability

Flash MX 2004.

Usage

screen.tabIndex

Description

Property; equivalent to the Tab Index field in the Accessibility panel. This value lets you determine the order in which objects are accessed when the user presses the Tab key.

Example

The following example gets the tab index of the object:

var theTabIndex = fl.getDocumentDOM().screenOutline.screens[1].tabIndex;

The following example sets the tab index of the object to 1:

fl.getDocumentDOM().screenOutline.screens[1].tabIndex = 1;


screen.timeline

Availability

Flash MX 2004.

Usage

screen.timeline

Description

Read-only property; the Timeline object for the screen.

Example

The following example gets the screenOutline property of the current slide document, assigns the array of timeline properties for the first screen to myArray, and displays those properties in the Output panel:

myArray = new Array();
if(fl.getDocumentDOM().screenOutline) {
  for(i in fl.getDocumentDOM().screenOutline.screens[0].timeline) {
  myArray.push(" "+i+" : "+fl.getDocumentDOM().screenOutline.screens[0].timeline[i]+" ") ;
  }
  fl.trace("Here are the properties of the screen named "+ fl.getDocumentDOM().screenOutline.screens[0].name+": "+myArray);
}


ScreenOutline object

Availability

Flash MX 2004.

Description

The ScreenOutline object represents the group of screens in a slide or form document. The object is accessed by using fl.getDocumentDOM().screenOutline.

The ScreenOutline object exists only if the document is a slide or form document, so before accessing the property, use document.allowScreens() to verify that a Screens document exists, as shown in the following example:

if(fl.getDocumentDOM().allowScreens) {

var myName = fl.getDocumentDOM().screenOutline.rootScreen.childScreens[0].name;
fl.trace("The name of the screen is " + myName + ". ");

}

Method summary for the ScreenOutline object

You can use the following methods with the ScreenOutline object:

Method | Description
screenOutline.copyScreenFromFile() | Inserts all the screens, or a named screen and its children, from a specified document under the currently selected screen.
screenOutline.deleteScreen() | Deletes the currently selected screen(s), or a specified screen, and the children of the screen(s).
screenOutline.duplicateScreen() | Duplicates the currently selected screen(s) or a specified screen.
screenOutline.getSelectedScreens() | Returns an array of Screen objects that are currently selected in the screen outline.
screenOutline.insertNestedScreen() | Inserts a nested screen of a specific type into a particular location in the screen outline.
screenOutline.insertScreen() | Inserts a new blank screen of a specified type into the document at a specified location.
screenOutline.moveScreen() | Moves the specified screen in relation to the value of the referenceScreen parameter; either before, after, as the first child, or as the last child.
screenOutline.renameScreen() | Changes the screen with a specified name to a new name.
screenOutline.setCurrentScreen() | Sets the current selection in the screen outline to the specified screen.
screenOutline.setScreenProperty() | Sets the specified property with the specified value for the selected screens.
screenOutline.setSelectedScreens() | Selects the specified screens in the Screen Outline pane.

Property summary for the ScreenOutline object

You can use the following properties with the ScreenOutline object:

Property | Description
screenOutline.currentScreen | A Screen object; the currently selected screen.
screenOutline.rootScreen | Read-only; the first screen in the screen outline.
screenOutline.screens | Read-only property; the array of top level Screen objects contained in the document (see Screen object).


screenOutline.copyScreenFromFile()

Availability

Flash MX 2004.

Usage

screenOutline.copyScreenFromFile( fileURI [, screenName] )

Parameters

The fileURI parameter is a string that specifies a filename for the authoring file that contains the screens to copy into the document, in URI format (for example, "file:///C:/assets.fla").

The optional screenName parameter is the name of the screen to copy. If the screenName parameter is present, Flash copies that screen and its children. If the screenName is not specified, Flash copies the whole document.

Returns

Nothing. If the file is not found or is not a valid FLA file, or if the specified screen is not found, an error is reported and the script is cancelled.

Description

Inserts all the screens, or a named screen and its children, from a specified document under the currently selected screen. If more than one screen is selected, the screen(s) are inserted under the last selected screen, as its sibling.

Example

The following example copies the "slide1" screen from the myTarget.fla file on the Desktop into the current document (substitute your user name for userName):

fl.getDocumentDOM().screenOutline.copyScreenFromFile("file:///C|/Documents and Settings/userName/Desktop/myTarget.fla", "slide1");


screenOutline.currentScreen

Availability

Flash MX 2004.

Usage

screenOutline.currentScreen

Description

A Screen object; the currently selected screen.

Example

The following example stores the currentScreen object in the myScreen variable and then displays the name of that screen in the Output panel:

var myScreen = fl.getDocumentDOM().screenOutline.currentScreen;
fl.trace(myScreen.name);


screenOutline.deleteScreen()

Availability

Flash MX 2004.

Usage

screenOutline.deleteScreen( [screenName] )

Parameters

The optional screenName parameter is a string that specifies the name of the screen to be deleted. If you don't pass a value for screenName, the currently selected screen(s) and their children are deleted.

Returns

Nothing.

Description

Deletes the currently selected screen(s), or a specified screen, and the children of the screen(s).

Example

The following example removes the screen named apple and all its children:

fl.getDocumentDOM().screenOutline.deleteScreen("apple");


screenOutline.duplicateScreen()

Availability

Flash MX 2004.

Usage

screenOutline.duplicateScreen( [screenName] )

Parameters

The optional screenName parameter is a string value that specifies the screen name to duplicate. If you don't pass a value for screenName, the currently selected screen(s) are duplicated.

Returns

A Boolean value: true if the screen is successfully duplicated; false otherwise.

Description

Duplicates the currently selected screen(s) or a specified screen. The duplicate screens are given a default name by appending _copy to the original name, such as Screen_copy, Screen_copy2, and so on. If you duplicate multiple screens, the duplicates are placed directly below the selected screen that is lowest in the screen outline hierarchy.

Example

The following example duplicates a screen named apple:

fl.getDocumentDOM().screenOutline.duplicateScreen("apple");


screenOutline.getSelectedScreens()

Availability

Flash MX 2004.

Usage

screenOutline.getSelectedScreens()

Parameters

None.

Returns

An array of selected Screen objects (see Screen object).

Description

Returns an array of Screen objects that are currently selected in the screen outline.

Example

The following example stores the selected Screen objects in the myArray variable and displays the screen names in the Output panel:

var myArray = fl.getDocumentDOM().screenOutline.getSelectedScreens();
for (var i in myArray) {
  fl.trace(myArray[i].name)
}


screenOutline.insertNestedScreen()

Availability

Flash MX 2004.

Usage

screenOutline.insertNestedScreen( [ name [, referenceScreen [, screenTypeName ] ] ])

Parameters

The optional name parameter is a string indicating the name of the new screen to insert. An empty name will insert a screen with a default screen name, such as Slide n or Form n (where n is the first available unique number).

The optional referenceScreen parameter is a string indicating the name of the screen into which the new screen is inserted as a child. If this parameter is not specified, the new screen is inserted as a child of the currently selected screen.

The optional screenTypeName parameter is a string that specifies the name of the screen type to attach to the new nested screen. The screen type and classname will be set for this screen. If this parameter is not specified, the type is inherited from the parent screen. Acceptable values are "Form" and "Slide".

Returns

A Screen object.

Description

Inserts a nested screen of a specific type into a particular location in the screen outline.

Example

The following example inserts slide2 as a child of slide1:

fl.getDocumentDOM().screenOutline.insertNestedScreen("slide2", "slide1", "Slide");


screenOutline.insertScreen()

Availability

Flash MX 2004.

Usage

screenOutline.insertScreen( [name [, referenceScreen [, screenTypeName ] ] ])

Parameters

The optional name parameter is a string indicating the name of the new screen to insert. If this parameter is omitted, the method inserts a screen with a default screen name, such as Slide n or Form n (where n is the first available unique number).

The optional referenceScreen parameter is a string indicating the name of the screen before the new screen. If this parameter is omitted, the new screen is inserted after the currently selected screen. If the referenceScreen parameter identifies a child screen, the new screen will be a peer of the child screen, and a child screen of the same parent.

The optional screenTypeName parameter is a string that specifies the screen type to attach to the new screen. The screen type and classname are set for this screen. Acceptable values are "Form" and "Slide".

Returns

A Screen object.

Description

Inserts a new blank screen of a specified type into the document at a specified location.

Example

The following example inserts a form named slide2 after the screen named slide1:

fl.getDocumentDOM().screenOutline.insertScreen("slide2","slide1","Form");

The following example inserts a slide named slide4 after the screen slide3:

fl.getDocumentDOM().screenOutline.insertScreen("slide4","slide3","Slide");


screenOutline.moveScreen()

Availability

Flash MX 2004.

Usage

screenOutline.moveScreen( screenToMove, referenceScreen, position )

Parameters

The screenToMove parameter is a string that is the screen name to move.

The referenceScreen parameter is a string that specifies the screen near which screenToMove will be placed.

The position parameter is a string that specifies where to move the screen in relation to referenceScreen. Acceptable values are "before","after","firstChild", or "lastChild".

Returns

A Boolean value: true if the move is successful; false otherwise.

Description

Moves the specified screen in relation to the value of the referenceScreen parameter; either before, after, as the first child, or as the last child.

Example

The following example moves screen slide1 to be the first child of slide2:

fl.getDocumentDOM().screenOutline.moveScreen("slide1", "slide2", "firstChild");


screenOutline.renameScreen()

Availability

Flash MX 2004.

Usage

screenOutline.renameScreen( newScreenName [, oldScreenName [, bDisplayError] ] )

Parameters

The newScreenName parameter is a string that specifies the new name of the screen

The optional oldScreenName parameter is a string that specifies the name of the existing screen to change. If not specified, the name of the currently selected screen changes.

The optional bDisplayError parameter is a Boolean value that, if set to true, displays an error message if an error occurs, for example, if a screen with the same name as the value passed to newScreenName already exists. The default value is false.

Returns

A Boolean value: true if the renaming is successful; false otherwise.

Description

Changes the screen with a specified name to a new name.

Example

The following example changes the name of slide1 to Intro:

fl.getDocumentDOM().screenOutline.renameScreen("Intro", "slide1");


screenOutline.rootScreen

Availability

Flash MX 2004.

Usage

screenOutline.rootScreen

Description

Read-only property; the first screen in the screen outline. You can use screenOutline.rootScreen as a shortcut for screenOutline.screens[0].

Example

The following example displays the name of the first child of the first screen in the screen outline:

fl.trace(fl.getDocumentDOM().screenOutline.rootScreen.childScreens[0].name);


screenOutline.screens

Availability

Flash MX 2004.

Usage

screenOutline.screens

Description

Read-only property; the array of top level Screen objects contained in the document (see Screen object).

Example

The following example stores the array of Screen objects in the myArray variable and then displays their names in the Output panel:

var myArray = new Array();
if(fl.getDocumentDOM().allowScreens) {
  for(var i in fl.getDocumentDOM().screenOutline.screens) {

  myArray.push(" "+fl.getDocumentDOM().screenOutline.screens[i].name);

  }
  fl.trace("The screens array contains objects whose names are: "+myArray+". ");
}


screenOutline.setCurrentScreen()

Availability

Flash MX 2004.

Usage

screenOutline.setCurrentScreen( name )

Parameters

The name parameter is a string that specifies the name screen which should become the currently selected screen. If the screen is a child of another screen, you do not need to indicate a path or hierarchy.

Returns

Nothing.

Description

Sets the current selection in the screen outline to the specified screen.

Example

The following example sets the current screen to the screen named ChildOfSlide_1:

fl.getDocumentDOM().screenOutline.setCurrentScreen("ChildOfSlide_1");


screenOutline.setScreenProperty()

Availability

Flash MX 2004.

Usage

screenOutline.setScreenProperty( property, value )

Parameters

The property parameter is a string that specifies the property to set.

The value parameter is the new value for the property. The type of value depends on the property being set.

For a list of available properties and values, see Property summary for the Screen object.

Returns

Nothing.

Description

Sets the specified property with the specified value for the selected screens.

Example

The following example changes the visibility of the currently selected screens from hidden to visible:

fl.getDocumentDOM().screenOutline.setScreenProperty("hidden", false);


screenOutline.setSelectedScreens()

Availability

Flash MX 2004.

Usage

screenOutline.setSelectedScreens ( selection [, bReplaceCurrentSelection ] )

Parameters

The selection parameter is an array of screen names to be selected in the screen outline.

The optional bReplaceCurrentSelection parameter is a Boolean value that, if true, lets you deselect the current selection. The default value is true. If false, Flash extends the current selection to include the specified screens.

Returns

Nothing.

Description

Selects the specified screens in the screen outline. If multiple screens are specified, the screen with the last index value of the selection array is focused on the Stage.

Example

The following example deselects any currently selected screens, and then selects screens slide1, slide2, slide3, and slide4 in the screen outline:

myArray = new Array("slide1", "slide2", "slide3", "slide4");
fl.getDocumentDOM().screenOutline.setSelectedScreens(myArray, true);


Shape object

Inheritance Element object > Shape object

Availability

Flash MX 2004.

Description

The Shape object is a subclass of the Element object. The Shape object provides more precise control than the Drawing APIs when manipulating or creating geometry on the Stage. This finer control is necessary so that scripts can create useful effects and other drawing commands.

All Shape methods and properties that change a shape or any of its subordinate parts must be placed between shape.beginEdit() and shape.endEdit() calls to function correctly.

Method summary for the Shape object

In addition to the Element object methods, you can use the following methods with the Shape object:

Method | Description
shape.beginEdit() | Defines the start of an edit session.
shape.deleteEdge() | Deletes the specified edge.
shape.endEdit() | Defines the end of an edit session for the shape.

Property summary for the Shape object

In addition to the Element object properties, the following properties are available for the Shape object:

Property | Description
shape.contours | Read-only property; an array of Contour objects for the shape (see Contour object).
shape.edges | Read-only property; an array of Edge objects (see Edge object).
shape.isGroup | Read-only property; if true, the shape is a group.
shape.vertices | Read-only property; an array of Vertex objects (see Vertex object).


shape.beginEdit()

Availability

Flash MX 2004.

Usage

shape.beginEdit()

Parameters

None.

Returns

Nothing.

Description

Defines the start of an edit session. You must use this method before issuing any commands that change the Shape object or any of its subordinate parts.

Example

The following example takes the currently selected shape and removes the first edge in the edge array from it:

var shape = fl.getDocumentDOM().selection[0];
shape.beginEdit();
shape.deleteEdge(0);
shape.endEdit();


shape.contours

Availability

Flash MX 2004.

Usage

shape.contours

Description

Read-only property; an array of Contour objects for the shape (see Contour object).

Example

The following example stores the first contour in the contours array in the c variable and then stores the HalfEdge object of that contour in the he variable:

var c = fl.getDocumentDOM().selection[0].contours[0];
var he = c.getHalfEdge();


shape.deleteEdge()

Availability

Flash MX 2004.

Usage

shape.deleteEdge( index )

Parameters

The index parameter is a zero-based index that specifies the edge to delete from the shape.edges array. This method changes the length of the shape.edges array.

Returns

Nothing.

Description

Deletes the specified edge. You must call shape.beginEdit() before using this method.

Example

The following example takes the currently selected shape and removes the first edge in the edge array:

var shape = fl.getDocumentDOM().selection[0];
shape.beginEdit();
shape.deleteEdge(0);
shape.endEdit();


shape.edges

Availability

Flash MX 2004.

Usage

shape.edges

Description

Read-only property; an array of Edge objects (see Edge object).


shape.endEdit()

Availability

Flash MX 2004.

Usage

shape.endEdit()

Parameters

None.

Returns

Nothing.

Description

Defines the end of an edit session for the shape. All changes made to the Shape object or any of its subordinate parts will be applied to the shape. You must use this method after issuing any commands that change the Shape object or any of its subordinate parts.

Example

The following example takes the currently selected shape and removes the first edge in the edge array from it:

var shape = fl.getDocumentDOM().selection[0];
shape.beginEdit();
shape.deleteEdge(0);
shape.endEdit();


shape.isGroup

Availability

Flash MX 2004.

Usage

shape.isGroup

Description

Read-only property; if true, the shape is a group.

Example

The following example stores the first selected item object in the sel variable and then uses the element.elementType and shape.isGroup properties to test if the selected item is a group:

var sel = fl.getDocumentDOM().selection[0];
var theShapeIsReallyAGroup = (sel.elementType == "shape") && sel.isGroup;


shape.vertices

Availability

Flash MX 2004.

Usage

shape.vertices

Description

Read-only property; an array of Vertex objects (see Vertex object).

Example

The following example stores the first selected item object in the someShape variable and then displays the number of vertices for that object in the Output panel:

var someShape = fl.getDocumentDOM().selection[0];
fl.trace("The shape has " + someShape.vertices.length + " vertices.");


SoundItem object

Inheritance Item object > SoundItem object

Availability

Flash MX 2004.

Description

The SoundItem object is a subclass of the Item object. It represents a library item used to create a sound. See also frame.soundLibraryItem.

Property summary for the SoundItem object

In addition to the Item object properties, the following properties are available for the SoundItem object:

Property | Description
soundItem.bitRate | A string that specifies the bit rate of a sound in the library. Available only for the MP3 compression type.
soundItem.bits | A string that specifies the bits value for a sound in the library that has ADPCM compression. Acceptable values are "2 bit", "3 bit", "4 bit", and "5 bit" when the type of compression is ADPCM.
soundItem.compressionType | A string that specifies that compression type for a sound in the library. Acceptable values are "Default", "ADPCM", "MP3", "Raw", and "Speech".
soundItem.convertStereoToMono | A Boolean value available only for MP3 and Raw compression types. Available only for MP3 and Raw compression types.
soundItem.quality | A string that specifies the playback quality of a sound in the library. Available only for MP3 compression type.
soundItem.sampleRate | Available only for ADPCM, Raw, and Speech compression types.
soundItem.useImportedMP3Quality | A Boolean value; if true, all other properties are ignored and the imported MP3 quality is used.


soundItem.bitRate

Availability

Flash MX 2004.

Usage

soundItem.bitRate

Description

A string that specifies the bit rate of a sound in the library. Available only for the MP3 compression type. Acceptable values are "8kbps", "16kbps", "20kbps", "24kbps", "32kbps", "48kbps", "56kbps", "64kbps", "80kbps", "112kbps", "128kbps", and "160kbps". Undefined for other compression types.

Note: When an MP3 is imported to the library, the Use imported MP3 quality Export setting is checked by default. The bitRate property cannot be set with this setting checked.

Example

The following example displays the bitRate value in the Output panel if the specified item in the library has MP3 compression type:

alert(fl.getDocumentDOM().library.items[0].bitRate);


soundItem.bits

Availability

Flash MX 2004.

Usage

soundItem.bits

Description

A string that specifies the bits value for a sound in the library that has ADPCM compression. Acceptable values are "2 bit", "3 bit", "4 bit", and "5 bit".

Example

The following example displays the bits value in the Output panel if the currently selected item in the library has ADPCM compression type:

alert(fl.getDocumentDOM().library.items[0].bits);


soundItem.compressionType

Availability

Flash MX 2004.

Usage

soundItem.compressionType

Description

A string that specifies that compression type for a sound in the library. Acceptable values are "Default", "ADPCM", "MP3", "Raw", and "Speech".

Example

The following example changes an item in the library to compression type Raw:

fl.getDocumentDOM().library.items[0].compressionType = "Raw";

The following example changes a selected item's compression type to Speech:

fl.getDocumentDOM().library.getSelectedItems()[0].compressionType = "Speech";


soundItem.convertStereoToMono

Availability

Flash MX 2004.

Usage

soundItem.convertStereoToMono

Description

A Boolean value available only for MP3 and Raw compression types. Setting this to true converts a stereo sound to mono; false leaves it as stereo. For MP3 compression type, if soundItem.bitRate is less than 20 Kbps, this property is ignored and forced to true.

Example

The following example converts an item in the library to mono, only if the item has MP3 or Raw compression type:

fl.getDocumentDOM().library.items[0].convertStereoToMono = true;


soundItem.quality

Availability

Flash MX 2004.

Usage

soundItem.quality

Description

A string that specifies the playback quality of a sound in the library. Available only for MP3 compression type. Acceptable values are "Fast", "Medium", "Best".

Example

The following example sets the playback quality of an item in the library to Best, if the item has MP3 compression type:

fl.getDocumentDOM().library.items[0].quality = "Best";


soundItem.sampleRate

Availability

Flash MX 2004.

Usage

soundItem.sampleRate

Description

Available only for ADPCM, Raw, and Speech compression types. This value sets the sample rate for the audio clip. Acceptable values are "5 kHz", "11 kHz", "22 kHz", and "44 kHz".

Note: When an MP3 is imported to the library, the Use imported MP3 quality Export setting is checked by default. The sampleRate property cannot be set with this setting checked.

Example

The following example sets the sample rate of an item in the library to 5 kHz, if the item has ADPCM, Raw, or Speech compression type:

fl.getDocumentDOM().library.items[0].sampleRate = "5 kHz";


soundItem.useImportedMP3Quality

Availability

Flash MX 2004.

Usage

soundItem.useImportedMP3Quality

Description

A Boolean value; if true, all other properties are ignored and the imported MP3 quality is used.

Example

The following example sets an item in the library to use the imported MP3 quality:

fl.getDocumentDOM().library.items[0].useImportedMP3Quality = true;


Stroke object

Availability

Flash MX 2004.

Description

The Stroke object contains all the settings for a stroke, including the custom settings. This object represents the information contained in the Stroke Properties inspector. Using the Stroke object together with the document.setCustomStroke() method, you can change the stroke settings for the toolbar, the Properties Inspector, and the current selection. You can also get the stroke settings of the toolbar and Properties Inspector, or of the current selection, by using the document.getCustomStroke() method.

This object always has the following four properties: style, thickness, color, and breakAtCorners. Other properties can be set, depending on the value of the style property.

Property summary for the Stroke object

The following properties are available for the Stroke object:

Property | Description
stroke.breakAtCorners | Same as the Sharp Corners setting in the custom Stroke Style dialog box.
stroke.color | A color string in hexadecimal (#rrggbb) format or an integer containing the value.
stroke.curve | A string that specifies type of hatching for the stroke.
stroke.dash1 | An integer that specifies the lengths of the solid part of a dashed line.
stroke.dash2 | An integer that specifies the lengths of the blank part of a dashed line.
stroke.density | A string that specifies the density of a stippled line.
stroke.dotSize | A string that specifies the dot size of a stippled line.
stroke.dotSpace | An integer that specifies the spacing between dots in a dotted line.
stroke.hatchThickness | A string that specifies the thickness of a hatch line.
stroke.jiggle | A string that specifies the jiggle property of a hatched line.
stroke.length | A string that specifies the length of a hatch line.
stroke.pattern | A string that specifies the pattern of a ragged line.
stroke.rotate | A string that specifies the rotation of a hatch line.
stroke.space | A string that specifies the spacing of a hatched line.
stroke.style | A string that describes the stroke style.
stroke.thickness | An integer that specifies the stroke size.
stroke.variation | A string that specifies the variation of a stippled line.
stroke.waveHeight | A string that specifies the wave height of a ragged line.
stroke.waveLength | A string that specifies the wave length of a ragged line.


stroke.breakAtCorners

Availability

Flash MX 2004.

Usage

stroke.breakAtCorners

Description

A Boolean value; same as the Sharp Corners setting in the custom Stroke Style dialog box.

Example

The following example sets the breakAtCorners property to true:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.breakAtCorners = true;
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.color

Availability

Flash MX 2004.

Usage

stroke.color

Description

A color string in hexadecimal (#rrggbb) format or an integer containing the value. Represents the stroke color.

Example

The following example sets the stroke color:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.color = "#000000";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.curve

Availability

Flash MX 2004.

Usage

stroke.curve

Description

A string that specifies type of hatching for the stroke; can be set only if stroke.style property is "hatched". Acceptable values are "straight", "slight curve", "medium curve", and "very curved".

Example

The following example sets the curve property, as well as others, for a stroke having the "hatched" style:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "hatched";
myStroke.curve = "straight";
myStroke.space = "close";
myStroke.jiggle = "wild";
myStroke.rotate = "free";
myStroke.length = "slight";
myStroke.hatchThickness = "thin";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.dash1

Availability

Flash MX 2004.

Usage

stroke.dash1

Description

An integer that specifies the lengths of the solid part of a dashed line. Available only if the stroke.style property is set to "dashed".

Example

The following example sets the dash1 and dash2 properties for a stroke style of dashed:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "dashed";
myStroke.dash1 = 1;
myStroke.dash2 = 2;
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.dash2

Availability

Flash MX 2004.

Usage

stroke.dash2

Description

An integer that specifies the lengths of the blank part of a dashed line. Available only if the stroke.style property is set to "dashed".

Example

See stroke.dash1.


stroke.density

Availability

Flash MX 2004.

Usage

stroke.density

Description

A string that specifies the density of a stippled line. Available only if the stroke.style property is set to "stipple". Acceptable values are "very dense", "dense", "sparse", and "very sparse".

Example

The following example sets the density property to "sparse" for the stroke style of stipple:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "stipple";
myStroke.dotSpace= 3;
myStroke.variation = "random sizes";
myStroke.density = "sparse";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.dotSize

Availability

Flash MX 2004.

Usage

stroke.dotSize

Description

A string that specifies the dot size of a stippled line. Available only if the stroke.style property is set to "stipple". Acceptable values are "tiny", "small", "medium", and "large".

The following example sets the dotsize property to "tiny" for the stroke style of stipple:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "stipple";
myStroke.dotSpace= 3;
myStroke.dotsize = "tiny";
myStroke.variation = "random sizes";
myStroke.density = "sparse";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.dotSpace

Availability

Flash MX 2004.

Usage

stroke.dotSpace

Description

An integer that specifies the spacing between dots in a dotted line. Available only if the stroke.style property is set to "dotted".

Example

The following example sets the dotSpace property to 3 for a stroke style of dotted:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "dotted";
myStroke.dotSpace= 3;
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.hatchThickness

Availability

Flash MX 2004.

Usage

stroke.hatchThickness

Description

A string that specifies the thickness of a hatch line. Available only if the stroke.style property is set to "hatched". Acceptable values are "hairline", "thin", "medium", and "thick".

Example

The following example sets the hatchThickness property to "thin" for a stroke style of hatched:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "hatched";
myStroke.curve = "straight";
myStroke.space = "close";
myStroke.jiggle = "wild";
myStroke.rotate = "free";
myStroke.length = "slight";
myStroke.hatchThickness = "thin";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.jiggle

Availability

Flash MX 2004.

Usage

stroke.jiggle

Description

A string that specifies the jiggle property of a hatched line. Available only if the stroke.style property is set to "hatched". Acceptable values are "none", "bounce", "loose", and "wild".

Example

The following example sets the jiggle property to "wild" for a stroke style of hatched:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "hatched";
myStroke.curve = "straight";
myStroke.space = "close";
myStroke.jiggle = "wild";
myStroke.rotate = "free";
myStroke.length = "slight";
myStroke.hatchThickness = "thin";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.length

Availability

Flash MX 2004.

Usage

stroke.length

Description

A string that specifies the length of a hatch line. Available only if the stroke.style property is set to "hatched". Acceptable values are "equal", "slight", "variation", "medium variation", and "random".

Example

The following example sets the length property to "slight" for a stroke style of hatched:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "hatched";
myStroke.curve = "straight";
myStroke.space = "close";
myStroke.jiggle = "wild";
myStroke.rotate = "free";
myStroke.length = "slight";
myStroke.hatchThickness = "thin";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.pattern

Availability

Flash MX 2004.

Usage

stroke.pattern

Description

A string that specifies the pattern of a ragged line. Available only if the stroke.style property is set to "ragged". Acceptable values are "solid", "simple", "random", "dotted", "random dotted", "triple dotted", and "random triple dotted".

Example

The following example sets the pattern property to "random" for a stroke style of ragged:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "ragged";
myStroke.pattern = "random";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.rotate

Availability

Flash MX 2004.

Usage

stroke.rotate

Description

A string that specifies the rotation of a hatch line. Available only if the stroke.style property is set to "hatched". Acceptable values are "none", "slight", "medium", and "free".

Example

The following example sets the rotate property to "free" for a style stroke of hatched:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "hatched";
myStroke.curve = "straight";
myStroke.space = "close";
myStroke.jiggle = "wild";
myStroke.rotate = "free";
myStroke.length = "slight";
myStroke.hatchThickness = "thin";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.space

Availability

Flash MX 2004.

Usage

stroke.space

Description

A string that specifies the spacing of a hatched line. Available only if the stroke.style property is set to "hatched". Acceptable values are "very close", "close", "distant", and "very distant".

Example

The following example sets the space property to "close" for a stroke style of hatched:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "hatched";
myStroke.curve = "straight";
myStroke.space = "close";
myStroke.jiggle = "wild";
myStroke.rotate = "free";
myStroke.length = "slight";
myStroke.hatchThickness = "thin";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.style

Availability

Flash MX 2004.

Usage

stroke.style

Description

A string that describes the stroke style. Acceptable values are "noStroke", "solid", "dashed", "dotted", "ragged", "stipple", and "hatched". Some of these values require additional properties of the stroke object to be set, as described in the following list:

  • If value is "solid" or "noStroke", there are no other properties.
  • If value is "dashed", there are two additional properties: "dash1" and "dash2".
  • If value is "dotted", there is one additional property: "dotSpace".
  • If value is "ragged", there are three additional properties: "pattern", "waveHeight", and "waveLength".
  • If value is "stipple", there are three additional properties: "dotSize", "variation", and "density".
  • If value is "hatched", there are six additional properties: "hatchThickness", "space", "jiggle", "rotate", "curve", and "length".

Example

The following example sets the stroke style to "ragged":

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "ragged";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.thickness

Availability

Flash MX 2004.

Usage

stroke.thickness

Description

An integer that specifies the stroke size.

Example

The following example sets the thickness property of the stroke to a value of 2:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.thickness = 2;
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.variation

Availability

Flash MX 2004.

Usage

stroke.variation

Description

A string that specifies the variation of a stippled line. Available only if the stroke.style property is set to "stipple". Acceptable values are "one size", "small variation", "varied sizes", and "random sizes".

Example

The following example sets the variation property to "random sizes" for a stroke style of stipple:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "stipple";
myStroke.dotSpace= 3;
myStroke.variation = "random sizes";
myStroke.density = "sparse";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.waveHeight

Availability

Flash MX 2004.

Usage

stroke.waveHeight

Description

A string that specifies the wave height of a ragged line. Available only if the stroke.style property is set to "ragged". Acceptable values are "flat", "wavy", "very wavy", and "wild".

Example

The following example sets the waveHeight property to "flat" for a stroke style of ragged:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "ragged";
myStroke.pattern = "random";
myStroke.waveHeight = "flat";
myStroke.waveLength = "short";
fl.getDocumentDOM().setCustomStroke( myStroke );


stroke.waveLength

Availability

Flash MX 2004.

Usage

stroke.waveLength

Description

A string that specifies the wave length of a ragged line. Available only if the stroke.style property is set to "ragged". Acceptable values are "very short", "short", "medium", and "long".

Example

The following example sets the waveLength property to "short" for a stroke style of ragged:

var myStroke = fl.getDocumentDOM().getCustomStroke();
myStroke.style = "ragged";
myStroke.pattern = "random";
myStroke.waveHeight = 'flat";
myStroke.waveLength = "short";
fl.getDocumentDOM().setCustomStroke( myStroke );


SymbolInstance object

Inheritance Element object > Instance object > SymbolInstance object

Availability

Flash MX 2004.

Description

SymbolInstance is a subclass of the Instance object and represents a symbol in a frame.

Property summary for the SymbolInstance object

In addition to the Instance object properties, the SymbolInstance object has the following properties:

Property | Description
symbolInstance.accName | A string that is equivalent to the Name field in the Accessibility panel.
symbolInstance.actionScript | A string that specifies the actions assigned to the symbol.
symbolInstance.buttonTracking | A string that, for button symbols only, sets the same property as the pop-up menu for Track as Button or Track as Menu Item in the Property inspector.
symbolInstance.colorAlphaAmount | An integer that is part of the color transformation for the instance, specifying the Advanced Effect Alpha settings; equivalent to using the Color > Advanced setting in the Property inspector and adjusting the controls on the right of the dialog box.
symbolInstance.colorAlphaPercent | An integer that specifies part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box).
symbolInstance.colorBlueAmount | An integer that is part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector.
symbolInstance.colorBluePercent | An integer that is part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box).
symbolInstance.colorGreenAmount | An integer that is part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector. Allowable values are from -255 to 255.
symbolInstance.colorGreenPercent | Part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box).
symbolInstance.colorMode | A string that specifies the color mode as identified in the symbol Property inspector Color pop-up menu.
symbolInstance.colorRedAmount | An integer that is part of the color transformation for the instance, equivalent to using the Color > Advanced setting in the Instance Property inspector.
symbolInstance.colorRedPercent | Part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box).
symbolInstance.description | A string that is equivalent to the Description field on the Accessibility panel.
symbolInstance.firstFrame | A zero-based integer that specifies the first frame to appear in the Timeline of the graphic.
symbolInstance.forceSimple | A Boolean value that enables and disables the accessibility of the object's children; equivalent to the inverse logic of the Make Child Objects Accessible setting in the Accessibility panel.
symbolInstance.loop | A string that, for graphic symbols, sets the same property as the Loop pop-up menu in the Property inspector.
symbolInstance.shortcut | A string that is equivalent to the shortcut key associated with the symbol; equivalent to the Shortcut field on the Accessibility panel.
symbolInstance.silent | A Boolean value that enables or disables the accessibility of the object; equivalent to the inverse logic of the Make Object Accessible setting in the Accessibility panel.
symbolInstance.symbolType | A string that specifies the type of symbol; equivalent to the value for Behavior in the Create New Symbol and Convert To Symbol dialog boxes.
symbolInstance.tabIndex | An integer that is equivalent to the Tab index field on the Accessibility panel.


symbolInstance.accName

Availability

Flash MX 2004.

Usage

symbolInstance.accName

Description

A string that is equivalent to the Name field in the Accessibility panel. Screen readers identify objects by reading the name aloud. This property is not available for graphic symbols.

Example

The following example stores the value for the Accessibility panel name of the object in the theName variable:

var theName = fl.getDocumentDOM().selection[0].accName;

The following example sets the value for the Accessibility panel name of the object to "Home Button":

fl.getDocumentDOM().selection[0].accName = "Home Button";


symbolInstance.actionScript

Availability

Flash MX 2004.

Usage

symbolInstance.actionScript

Description

A string that specifies the actions assigned to the symbol. This applies only to movie clip and button instances. For a graphic symbol instance, the value returns undefined.

Example

The following example assigns an onClipEvent action to the first item in the first frame of the first layer of the Timeline:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].actionScript
  = "onClipEvent(enterFrame) {trace('movie clip enterFrame');}";


symbolInstance.buttonTracking

Availability

Flash MX 2004.

Usage

symbolInstance.buttonTracking

Description

A string that, for button symbols only, sets the same property as the pop-up menu for Track as Button or Track as Menu Item in the Property inspector. For other types of symbols, this property is ignored. Acceptable values are "button" or "menu".

Example

The following example sets the first symbol in the first frame of the first layer in the Timeline to Track as Menu Item, as long as that symbol is a button:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].buttonTracking = "menu";


symbolInstance.colorAlphaAmount

Availability

Flash MX 2004.

Usage

symbolInstance.colorAlphaAmount

Description

An integer that is part of the color transformation for the instance, specifying the Advanced Effect Alpha settings; equivalent to using the Color > Advanced setting in the Property inspector and adjusting the controls on the right of the dialog box. This value either reduces or increases the tint and alpha values by a constant amount. This value is added to the current value. This property is most useful if used with symbolInstance.colorAlphaPercent. Allowable values are from -255 to 255.

Example

The following example subtracts 100 from the alpha setting of the selected symbol instance:

fl.getDocumentDOM().selection[0].colorAlphaAmount = -100;


symbolInstance.colorAlphaPercent

Availability

Flash MX 2004.

Usage

symbolInstance.colorAlphaPercent

Description

An integer that specifies part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box). This value changes the tint and alpha values to a specified percentage. Allowable values are from -100 to 100. See also symbolInstance.colorAlphaAmount.

Example

The following example sets the colorAlphaPercent of the selected symbol instance to 50:

fl.getDocumentDOM().selection[0].colorBluePercent = 80;


symbolInstance.colorBlueAmount

Availability

Flash MX 2004.

Usage

symbolInstance.colorBlueAmount

Description

An integer that is part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector. Allowable values are from -255 to 255.


symbolInstance.colorBluePercent

Availability

Flash MX 2004.

Usage

symbolInstance.colorBluePercent

Description

An integer that is part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box). This value sets the blue values to a specified percentage. Allowable values are from -100 to 100.

Example

The following example sets the colorBluePercent of the selected symbol instance to 80:

fl.getDocumentDOM().selection[0].colorBluePercent = 80;


symbolInstance.colorGreenAmount

Availability

Flash MX 2004.

Usage

symbolInstance.colorGreenAmount

Description

An integer that is part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector. Allowable values are from -255 to 255.


symbolInstance.colorGreenPercent

Availability

Flash MX 2004.

Usage

symbolInstance.colorGreenPercent

Description

Part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box). This value sets the green values by a specified percentage. Allowable values are from -100 to 100.

Example

The following example sets the colorGreenPercent of the selected symbol instance to 70:

fl.getDocumentDOM().selection[0].colorGreenPercent = 70;


symbolInstance.colorMode

Availability

Flash MX 2004.

Usage

symbolInstance.colorMode

Description

A string that specifies the color mode as identified in the symbol Property inspector Color pop-up menu. Acceptable values are "none", "brightness", "tint", "alpha", and "advanced".

Example

The following example changes the colorMode property of the first element in the first frame of the first layer of the Timeline to "alpha":

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].colorMode = "alpha";


symbolInstance.colorRedAmount

Availability

Flash MX 2004.

Usage

symbolInstance.colorRedAmount

Description

An integer that is part of the color transformation for the instance, equivalent to using the Color > Advanced setting in the Instance Property inspector. Allowable values are from -255 to 255.

Example

The following example sets the colorRedAmount of the selected symbol instance to 255:

fl.getDocumentDOM().selection[0].colorRedAmount = 255;


symbolInstance.colorRedPercent

Availability

Flash MX 2004.

Usage

symbolInstance.colorRedPercent

Description

Part of the color transformation for the instance; equivalent to using the Color > Advanced setting in the Instance Property inspector (the percentage controls on the left of the dialog box). This value sets the red values to a specified percentage. Allowable values are from -100 to 100.

Example

The following example sets the colorRedPercent of the selected symbol instance to 10:

fl.getDocumentDOM().selection[0].colorRedPercent = 10;


symbolInstance.description

Availability

Flash MX 2004.

Usage

symbolInstance.description

Description

A string that is equivalent to the Description field on the Accessibility panel. The description is read by the screen reader. This property is not available for graphic symbols.

Example

The following example stores the value for the Accessibility panel description of the object in the theDescription variable:

var theDescription = fl.getDocumentDOM().selection[0].description;

The following example sets the value for the Accessibility panel description to "Click the home button to go to home":

fl.getDocumentDOM().selection[0].description= "Click the home button to go to home";


symbolInstance.firstFrame

Availability

Flash MX 2004.

Usage

symbolInstance.firstFrame

Description

A zero-based integer that specifies the first frame to appear in the Timeline of the graphic. This property applies only to graphic symbols and sets the same property as the First field in the Property inspector. For other types of symbols, this property is undefined.

Example

The following example specifies that frame 11 should be the first frame to appear in the Timeline of the specified element:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].firstFrame = 10;


symbolInstance.forceSimple

Availability

Flash MX 2004.

Usage

symbolInstance.forceSimple

Description

A Boolean value that enables and disables the accessibility of the object's children; equivalent to the inverse logic of the Make Child Objects Accessible setting in the Accessibility panel. For example, if forceSimple is true, it is the same as the Make Child Object Accessible option being unchecked. If forceSimple is false, it is the same as the Make Child Object Accessible option being checked.

This property is available only for movie clip objects.

Example

The following example checks to see if the children of the object are accessible; a return value of false means the children are accessible:

var areChildrenAccessible = fl.getDocumentDOM().selection[0].forceSimple;

The following example allows the children of the object to be accessible:

fl.getDocumentDOM().selection[0].forceSimple = false;


symbolInstance.loop

Availability

Flash MX 2004.

Usage

symbolInstance.loop

Description

A string that, for graphic symbols, sets the same property as the Loop pop-up menu in the Property inspector. For other types of symbols, this property is undefined. Acceptable values are "loop", "play once", and "single frame" to set the graphic's animation accordingly.

Example

The following example sets the first symbol in the first frame of the first layer in the Timeline to Single Frame (display one specified frame of the graphic Timeline), as long as that symbol is a graphic:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].loop = 'single frame';


symbolInstance.shortcut

Availability

Flash MX 2004.

Usage

symbolInstance.shortcut

Description

A string that is equivalent to the shortcut key associated with the symbol; equivalent to the Shortcut field on the Accessibility panel. This key is read by the screen readers. This property is not available for graphic symbols.

Example

The following example stores the value for the shortcut key of the object in the theShortcut variable:

var theShortcut = fl.getDocumentDOM().selection[0].shortcut;

The following example sets the shortcut key of the object to "Ctrl+i":

fl.getDocumentDOM().selection[0].shortcut = "Ctrl+i";


symbolInstance.silent

Availability

Flash MX 2004.

Usage

symbolInstance.silent

Description

A Boolean value that enables or disables the accessibility of the object; equivalent to the inverse logic of the Make Object Accessible setting in the Accessibility panel. For example, if silent is true, it is the same as the Make Object Accessible option being unchecked. If silent is false, it is the same as the Make Object Accessible option being checked.

This property is not available for graphic objects.

Example

The following example checks to see if the object is accessible; a return value of false means the object is accessible:

var isSilent = fl.getDocumentDOM().selection[0].silent;

The following example sets the object to be accessible:

fl.getDocumentDOM().selection[0].silent = false;


symbolInstance.symbolType

Availability

Flash MX 2004.

Usage

symbolInstance.symbolType

Description

A string that specifies the type of symbol; equivalent to the value for Behavior in the Create New Symbol and Convert To Symbol dialog boxes. Acceptable values are "button", "movie clip", and "graphic".

Example

The following example sets the first symbol in the first frame of the first layer in the Timeline of the current document to behave as a graphic symbol:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].symbolType = "graphic";


symbolInstance.tabIndex

Availability

Flash MX 2004.

Usage

symbolInstance.tabIndex

Description

An integer that is equivalent to the Tab index field on the Accessibility panel. Creates a tab order in which objects are accessed when the user presses the Tab key. This property is not available for graphic symbols.

Example

The following example sets the tabIndex property of the mySymbol object to 3 and displays that value in the Output panel:

var mySymbol = fl.getDocumentDOM().selection[0];
mySymbol.tabIndex = 3;
fl.trace(mySymbol.tabIndex);


SymbolItem object

Inheritance Item object > SymbolItem object

Availability

Flash MX 2004.

Description

The SymbolItem object is a subclass of the Item object.

Method summary for the SymbolItem object

In addition to the Item object methods, you can use the following methods with the SymbolItem object:

Method | Description
symbolItem.convertToCompiledClip() | Converts a symbol item in the library to a compiled movie clip.
symbolItem.exportSWC() | Exports the symbol to a SWC file.
symbolItem.exportSWF() | Exports the symbol item to a SWF file specified by a URI.

Property summary for the SymbolItem object

In addition to the Item object properties, the following properties are available for the SymbolItem object:

Property | Description
symbolItem.sourceAutoUpdate | A Boolean value; if true, the item is updated when the FLA is published.
symbolItem.sourceFilePath | A string that specifies the path for the source FLA file in URI format (file:///).
symbolItem.sourceLibraryName | A string that specifies the name of the item in the source file library.
symbolItem.symbolType | A string that specifies the type of symbol.
symbolItem.timeline | Read-only property; a Timeline object.


symbolItem.convertToCompiledClip()

Availability

Flash MX 2004.

Usage

symbolItem.convertToCompiledClip()

Parameters

None.

Returns

Nothing.

Description

Converts a symbol item in the library to a compiled movie clip.

Example

The following example converts an item in the library to a compiled movie clip:

fl.getDocumentDOM().library.items[3].convertToCompiledClip();


symbolItem.exportSWC()

Availability

Flash MX 2004.

Usage

symbolItem.exportSWC( outputURI )

Parameters

The outputURI parameter is a string that specifies the URI for the SWC file to which the method will export the symbol. The URI must reference a local file. Flash does not create a directory if the specified directory path does not exist.

Returns

Nothing.

Description

Exports the symbol to a SWC file.

Example

The following example exports an item in the library to the SWC file named my.swc in the tests directory:

fl.getDocumentDOM().library.items[0].exportSWC("file:///c|/tests/my.swc");


symbolItem.exportSWF()

Availability

Flash MX 2004.

Usage

symbolItem.exportSWF( outputURI )

Parameters

The outputURI parameter is a string that specifies the URI for the SWF file to which the method will export the symbol. This URI must reference a local file. Flash will not create a directory if the specified directory path doesn't exist.

Returns

Nothing.

Description

Exports the symbol item to a SWF file specified by a URI.

Example

The following example exports an item in the library to the my.swf file in the tests directory:

fl.getDocumentDOM().library.items[0].exportSWF("file:///c|/tests/my.swf");


symbolItem.sourceAutoUpdate

Availability

Flash MX 2004.

Usage

symbolItem.sourceAutoUpdate

Description

A Boolean value; if true, the item is updated when the FLA is published. The default value is false. Used for Shared Library symbols.

Example

The following example sets the sourceAutoUpdate property for a library item:

fl.getDocumentDOM().library.items[0].sourceAutoUpdate = true;


symbolItem.sourceFilePath

Availability

Flash MX 2004.

Usage

symbolItem.sourceFilePath

Description

A string that specifies the path for the source FLA file in URI format (file:///). Must be an absolute path, not a relative path. Used for Shared Library symbols.

Example

The following example displays the value of the sourceFilePath property in the Output panel:

fl.trace(fl.getDocumentDOM().library.items[0].sourceFilePath);


symbolItem.sourceLibraryName

Availability

Flash MX 2004.

Usage

symbolItem.sourceLibraryName

Description

A string that specifies the name of the item in the source file library. Used for Shared Library symbols.

Example

The following example displays the value of the sourceLibraryName property in the Output panel:

fl.trace(fl.getDocumentDOM().library.items[0].sourceLibraryName);


symbolItem.symbolType

Availability

Flash MX 2004.

Usage

symbolItem.symbolType

Description

A string that specifies the type of symbol. Acceptable values are "movie clip", "button", and "graphic".

Example

The following example displays the current value of the symbolType property, changes it to "button", and displays it again:

alert(fl.getDocumentDOM().library.items[0].symbolType);
fl.getDocumentDOM().library.items[0].symbolType = "button";
alert(fl.getDocumentDOM().library.items[0].symbolType);


symbolItem.timeline

Availability

Flash MX 2004.

Usage

symbolItem.timeline

Description

Read-only property; a Timeline object.

Example

The following example obtains and displays the number of layers that the selected movie clip in the library contains:

var tl = fl.getDocumentDOM().library.getSelectedItems()[0].timeline;
alert(tl.layerCount);


TextAttrs object

Availability

Flash MX 2004.

Description

The TextAttrs object contains all of the properties of text that can be applied to a subselection. This object is a property of the TextRun object (textRun.textAttrs).

Property summary for the TextAttrs object

The following properties are available for the TextAttrs object.

Property | Description
textAttrs.aliasText | A Boolean value; specifies that Flash should draw the text by using a method optimized for increasing the legibility of small text.
textAttrs.alignment | A string that specifies paragraph justification. Acceptable values are "left", "center", "right", and "justify".
textAttrs.autoKern | A Boolean value that determines whether Flash uses (true) or ignores (false) pair kerning information in the font(s) to kern the text.
textAttrs.bold | A Boolean value; true causes text to appear with the bold version of the font.
textAttrs.characterPosition | A string that determines the baseline for the text.
textAttrs.characterSpacing | An integer that represents the space between characters.
textAttrs.face | A string that represents the name of the font, such as "Arial".
textAttrs.fillColor | A string that specifies the fill color.
textAttrs.indent | An integer that specifies paragraph indentation.
textAttrs.italic | A Boolean value; true causes text to appear with the italic version of the font.
textAttrs.leftMargin | An integer that specifies the paragraph's left margin.
textAttrs.lineSpacing | An integer that specifies the line spacing (leading) of the paragraph
textAttrs.rightMargin | An integer that specifies the paragraph's right margin.
textAttrs.rotation | A Boolean value; true causes Flash to rotate the characters of the text 90º. The default value is false.
textAttrs.size | An integer that specifies the size of the font.
textAttrs.target | A string that represents the target property of the text field.
textAttrs.url | A string that represents the URL property of the text field.


textAttrs.aliasText

Availability

Flash MX 2004.

Usage

textAttrs.aliasText

Description

Property; specifies that Flash should draw the text by using a method optimized for increasing the legibility of small text.

Example

The following example sets the aliasText property to true for all the text in the currently selected text field.

fl.getDocumentDOM().setElementTextAttr('aliasText', true);


textAttrs.alignment

Availability

Flash MX 2004.

Usage

textAttrs.alignment

Description

Property; specifies paragraph justification. Acceptable values are "left", "center", "right", and "justify".

Example

The following example sets the paragraphs that contain characters between index 0 up to but not including index 3 to justify. This can affect characters outside the specified range if they are in the same paragraph.

fl.getDocumentDOM().setTextSelection(0, 3);
fl.getDocumentDOM().setElementTextAttr('alignment', 'justify');


textAttrs.autoKern

Availability

Flash MX 2004.

Usage

textAttrs.autoKern

Description

Property; if the value is true, Flash uses pair kerning information in the font(s) to kern the text. If the value is false, pair kerning information in the font(s) is ignored.

This property applies only to static text; if used with other text types, the property generates a warning.

Example

The following example selects the characters from index 2 up to but not including index 6 and sets the autoKern property to true.

fl.getDocumentDOM().setTextSelection(3, 6);
fl.getDocumentDOM().setElementTextAttr('autoKern', true);


textAttrs.bold

Availability

Flash MX 2004.

Usage

textAttrs.bold

Description

Property; a value of true causes text to appear with the bold version of the font.

Example

The following example selects the first character of the selected text object and sets the bold property to true.

fl.getDocumentDOM().setTextSelection(0, 1);
fl.getDocumentDOM().setElementTextAttr('bold', true);


textAttrs.characterPosition

Availability

Flash MX 2004.

Usage

textAttrs.characterPosition

Description

Property; determines the baseline for the text. Acceptable values are "normal", "subscript", and "superscript". This property applies only to static text.

Example

The following example selects the characters from index 2 up to but not including index 6 of the selected text field and sets the characterPosition property to "subscript".

fl.getDocumentDOM().setTextSelection(2, 6);
fl.getDocumentDOM().setElementTextAttr("characterPosition", "subscript");


textAttrs.characterSpacing

Availability

Flash MX 2004.

Usage

textAttrs.characterSpacing

Description

Property; an integer that represents the space between characters. Acceptable values are -60 through 60.

This property applies only to static text; if used with other text types, the property generates a warning.

Example

The following example sets the character spacing of the selected text field to 10.

fl.getDocumentDOM().setElementTextAttr("characterSpacing", 10);


textAttrs.face

Availability

Flash MX 2004.

Usage

textAttrs.face

Description

Property; the name of the font, such as "Arial".

Example

The following example sets the font of the selected text field from the character at index 2 up to but not including the character at index 8 to "Arial".

fl.getDocumentDOM().selection[0].setTextAttr("face", "Arial", 2, 8);


textAttrs.fillColor

Availability

Flash MX 2004.

Usage

textAttrs.fillColor

Description

Property; specifies the fill color. The parameter is a color string in hexadecimal #rrggbb format (where r is red, g is green, and b is blue), a hexidecimal color value (such as, 0xff0000), or an integer color value.

Example

The following example sets the color of the selected text field from the character at index 2 up to but not including the character at index 8 to red.

fl.getDocumentDOM().selection[0].setTextAttr("fillColor", 0xff0000, 2, 8);


textAttrs.indent

Availability

Flash MX 2004.

Usage

textAttrs.indent

Description

Property; specifies paragraph indentation. Acceptable values are -720 through 720.

Example

The following example sets the indentation of the selected text field from the character at index 2 up to but not including the character at index 8 to 100. This can affect characters outside the specified range if they are in the same paragraph.

fl.getDocumentDOM().selection[0].setTextAttr("indent", 100, 2, 8);


textAttrs.italic

Availability

Flash MX 2004.

Usage

textAttrs.italic

Description

Property; a value of true causes text to appear with the italic version of the font.

Example

The following example sets the selected text field to italic.

fl.getDocumentDOM().selection[0].setTextAttr("italic", true);


textAttrs.leftMargin

Availability

Flash MX 2004.

Usage

textAttrs.leftMargin

Description

Property; specifies the paragraph's left margin. Acceptable values are 0 through 720.

Example

The following example sets the leftMargin property of the selected text field from the character at index 2 up to but not including the character at index 8 to 100. This can affect characters outside the specified range if they are in the same paragraph.

fl.getDocumentDOM().selection[0].setTextAttr("leftMargin", 100, 2, 8);


textAttrs.lineSpacing

Availability

Flash MX 2004.

Usage

textAttrs.lineSpacing

Description

Property; specifies the line spacing (also known as leading) of the paragraph. Acceptable values are -360 through 720.

Example

The following example sets the selected text field's lineSpacing property to 100.

fl.getDocumentDOM().selection[0].setTextAttr("lineSpacing", 100);


textAttrs.rightMargin

Availability

Flash MX 2004.

Usage

textAttrs.rightMargin

Description

Property; specifies the paragraph's right margin. Acceptable values are 0 through 720.

Example

The following example sets the rightMargin property of the selected text field from the character at index 2 up to but not including the character at index 8 to 100. This can affect characters outside the specified range if they are in the same paragraph.

fl.getDocumentDOM().selection[0].setTextAttr("rightMargin", 100, 2, 8);


textAttrs.rotation

Availability

Flash MX 2004.

Usage

textAttrs.rotation

Description

Property; a value of true causes Flash to rotate the characters of the text 90º. The default value is false. This property applies only to static text with a vertical orientation; if used with other text types, the property generates a warning.

Example

The following example sets the rotation of the selected text field to true.

fl.getDocumentDOM().setElementTextAttr("rotation", true);


textAttrs.size

Availability

Flash MX 2004.

Usage

textAttrs.size

Description

Property; specifies the size of the font.

Example

The following example retrieves the size of the character at index 2 and displays the result in the Output panel.

fl.outputPanel.trace(fl.getDocumentDOM().selection[0].getTextAttr("size", 2));


textAttrs.target

Availability

Flash MX 2004.

Usage

textAttrs.target

Description

Property; a string that represents the target property of the text field. This property works only with static text.

Example

The following example gets the target property of the text field in the first frame of the top layer of the current scene and displays it in the Output panel.

fl.outputPanel.trace(fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].getTextAttr("target"));


textAttrs.url

Availability

Flash MX 2004.

Usage

textAttrs.url

Description

Property; a string that represents the URL property of the text field. This property works only with static text.

Example

The following example sets the URL of the selected text field to http://www.macromedia.com.

fl.getDocumentDOM().setElementTextAttr("url", "http://www.macromedia.com");


Text object

Inheritance Element object > Text object

Availability

Flash MX 2004.

Description

The Text object represents a single text item in a document. All properties of the text pertain to the entire text block.

To set properties of a text run within the text field, see Property summary for the TextRun object. To change properties of a selection within a text field, you can use document.setElementTextAttr() and specify a range of text, or use the current selection.

To set text properties of the selected text field, use document.setElementProperty(). The following example assigns the currently selected text field to the variable textVar:

fl.getDocumentDOM().setElementProperty("variableName", "textVar");

Method summary for the Text object

In addition to the Element object methods, you can use the following methods with the Text object.

Method | Description
text.getTextAttr() | Retrieves the specified attribute for the text identified by the optional startIndex and endIndex parameters.
text.getTextString() | Retrieves the specified range of text.
text.setTextAttr() | Sets the specified attribute associated with the text identified by startIndex and endIndex.
text.setTextString() | Changes the text string within this text object.

Property summary for the Text object

In addition to the Element object properties, the following properties are available for the Text object.

Property | Description
text.accName | A string that is equivalent to the Name field in the Accessibility panel.
text.autoExpand | A Boolean value that controls the expansion of the bounding width for static text fields, or the bounding width and height for dynamic or input text.
text.border | A Boolean value that controls whether Flash shows (true) or hides (false) a border around dynamic or input text.
text.description | A string that is equivalent to the Description field in the Accessibility panel.
text.embeddedCharacters | A string that specifies characters to embed; equivalent to entering text in the Character Options dialog box.
text.embedRanges | A string that consists of delimited integers that correspond to the items that can be selected in the Character Options dialog box.
text.length | Read-only; an integer that represents the number of characters in the text object.
text.lineType | A string that sets the line type to "single line", "multiline", "multiline no wrap", or "password".
text.maxCharacters | An integer that specifies the maximum characters the user can enter into this text object.
text.orientation | A string that specifies the orientation of the text field.
text.renderAsHTML | A Boolean value that controls whether Flash draws the text as HTML and interprets embedded HTML tags.
text.scrollable | A Boolean value that controls whether the text can (true) or cannot (false) be scrolled.
text.selectable | A Boolean value that controls whether the text can (true) or cannot (false) be selected. Input text is always selectable.
text.selectionEnd | A zero-based integer that specifies the offset of the end of a text subselection.
text.selectionStart | A zero-based integer that specifies the offset of the beginning of a text subselection.
text.shortcut | A string that is equivalent to the Shortcut field in the Accessibility panel.
text.silent | A Boolean value that specifies whether the object is accessible.
text.tabIndex | An integer that is equivalent to the Tab Index field in the Accessibility panel.
text.textRuns | Read-only; an array of TextRun objects.
text.textType | A string that specifies the type of text field. Acceptable values are "static", "dynamic", and "input".
text.useDeviceFonts | A Boolean value; true causes Flash to draw text using device fonts.
text.variableName | A string that contains the contents of the text object.


text.accName

Availability

Flash MX 2004.

Usage

text.accName

Description

Property; a string that is equivalent to the Name field in the Accessibility panel. Screen readers identify objects by reading the name aloud. This property cannot be used with dynamic text.

Example

The following example retrieves the name of the object:

var theName = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].accName;

The following example sets the name of the currently selected object:

fl.getDocumentDOM().selection[0].accName = "Home Button";


text.autoExpand

Availability

Flash MX 2004.

Usage

text.autoExpand

Description

Property; a Boolean value. For static text fields, a value of true causes the bounding width to expand to display all text. For dynamic or input text fields, a value of true causes the bounding width and height to expand to display all text.

Example

The following example sets the autoExpand property to a value of true:

fl.getDocumentDOM().selection[0].autoExpand = true;


text.border

Availability

Flash MX 2004.

Usage

text.border

Description

Property; a Boolean value. A value of true causes Flash to show a border around dynamic or input text. This property generates a warning if used with static text.

Example

The following example sets the border property to a value of true:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].border = true;


text.description

Availability

Flash MX 2004.

Usage

text.description

Description

Property; a string that is equivalent to the Description field in the Accessibility panel. The description is read by the screen reader.

Example

The following example retrieves the description of the object:

var theDescription = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].description;

The following example sets the description of the object:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].description= "Enter your name here";


text.embeddedCharacters

Availability

Flash MX 2004.

Usage

text.embeddedCharacters

Description

Property; a string that specifies characters to embed; this is equivalent to entering text in the Character Options dialog box.

This property works only with dynamic or input text; it generates a warning if used with other text types.

Example

The following example sets the embeddedCharacters property to "abc":

fl.getDocumentDOM().selection[0].embeddedCharacters = "abc";


text.embedRanges

Availability

Flash MX 2004.

Usage

text.embedRanges

Description

Property; a string that consists of delimited integers that correspond to the items that can be selected in the Character Options dialog box. This property works only with dynamic or input text; it is ignored if used with static text.

Note: This property corresponds to the XML file in the Configuration/Font Embedding folder.

Example

The following example sets the embedRanges property to "1|3|7":

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].embedRanges = "1|3|7";

The following example resets the property:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].embedRanges = "";


text.getTextAttr()

Availability

Flash MX 2004.

Usage

text.getTextAttr(attrName [, startIndex [, endIndex]])

Parameters

attrName A string that specifies the name of the TextAttrs object property to be returned.

Note: For a list of possible values for attrName, see Property summary for the TextAttrs object.

startIndex An integer that is the index of first character. This parameter is optional.

endIndex An integer that specifies the end of the range of text, which starts with startIndex and goes up to, but does not include, endIndex. This parameter is optional.

Returns

The value of the attribute specified in the attrName parameter.

Description

Method; retrieves the attribute specified by the attrName parameter for the text identified by the optional startIndex and endIndex parameters. If the attribute is not consistent for the specified range, Flash returns undefined. If you specify startIndex and endIndex, the method uses the entire text range. If you specify only startIndex, the range used is a single character at that position. If you specify both startIndex and endIndex, the range starts from startIndex and goes up to, but does not include, endIndex.

Example

The following example gets the font size of the currently selected text field and displays it:

var TheTextSize = fl.getDocumentDOM().selection[0].getTextAttr("size");
fl.trace(TheTextSize);

The following example gets the text fill color of the selected text field:

var TheFill = fl.getDocumentDOM().selection[0].getTextAttr("fillColor");
fl.trace(TheFill);

The following example gets the size of the third character:

var Char2 = fl.getDocumentDOM().selection[0].getTextAttr("size", 2);
fl.trace(Char2);

The following example gets the color of the selected text field from the third character through the eighth character:

fl.getDocumentDOM().selection[0].getTextAttr("fillColor", 2, 8);


text.getTextString()

Availability

Flash MX 2004.

Usage

text.getTextString([startIndex [, endIndex] ])

Parameters

startIndex An integer that specifies the index (zero-based) of the first character. This parameter is optional.

endIndex An integer that specifies the end of the range of text, which starts with startIndex and goes up to, but does not include, endIndex.This parameter is optional.

Returns

A string of the text in the specified range.

Description

Method; retrieves the specified range of text. If you omit the optional parameters startIndex and endIndex, the whole text string is returned. If you specify only startIndex, the method returns the string starting at the index location and ending at the end of the field. If you specify both startIndex and endIndex, the method returns the string starting from startIndex up to, but not including, endIndex.

Example

The following example gets the character(s) from the fifth character through the end of the selected text field:

var myText = fl.getDocumentDOM().selection[0].getTextString(4);
fl.trace(myText);

The following example gets the fourth through the ninth characters starting in the selected text field:

var myText = fl.getDocumentDOM().selection[0].getTextString(3, 9);
fl.trace(myText);


text.length

Availability

Flash MX 2004.

Usage

text.length

Description

Read-only property; an integer that represents the number of characters in the text object.

Example

The following example returns the number of characters in the selected text:

var textLength = fl.getDocumentDOM().selection[0].length;


text.lineType

Availability

Flash MX 2004.

Usage

text.lineType

Description

Property; a string that sets the line type. Acceptable values are "single line", "multiline", "multiline no wrap", and "password".

This property works only with dynamic or input text and generates a warning if used with static text. The "password" value only works for input text.

Example

The following example sets the lineType property to the value "multiline no wrap":

fl.getDocumentDOM().selection[0].lineType = "multiline no wrap";


text.maxCharacters

Availability

Flash MX 2004.

Usage

text.maxCharacters

Description

Property; an integer that specifies the maximum number of characters the user can enter in this text object.

This property works only with input text; if used with other text types, the property generates a warning.

Example

The following example sets the value of the maxCharacters property to 30:

fl.getDocumentDOM().selection[0].maxCharacters = 30;


text.orientation

Availability

Flash MX 2004.

Usage

text.orientation

Description

Property; a string that specifies the orientation of the text field. Acceptable values are "horizontal", "vertical left to right", and "vertical right to left".

This property works only with static text; if used with other text types, the property generates a warning.

Example

The following example sets the orientation property to "vertical right to left":

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].orientation = "vertical right to left";


text.renderAsHTML

Availability

Flash MX 2004.

Usage

text.renderAsHTML

Description

Property; a Boolean value. If the value is true, Flash draws the text as HTML and interprets embedded HTML tags.

This property works only with dynamic or input text; it generates a warning if used with other text types.

Example

The following example sets the renderAsHTML property to true:

fl.getDocumentDOM().selection[0].renderAsHTML = true;


text.scrollable

Availability

Flash MX 2004.

Usage

text.scrollable

Description

Property; a Boolean value. If the value is true, the text can be scrolled.

This property works only with dynamic or input text; it generates a warning if used with static text.

Example

The following example sets the scrollable property to false:

fl.getDocumentDOM().selection[0].scrollable = false;


text.selectable

Availability

Flash MX 2004.

Usage

text.selectable

Description

Property; a Boolean value. If the value is true, the text can be selected.

Input text is always selectable. When set to false and used with input text, this property generates a warning.

Example

The following example sets the selectable property to true:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].selectable = true;


text.selectionEnd

Availability

Flash MX 2004.

Usage

text.selectionEnd

Description

Property; a zero-based integer that specifies the end of a text subselection. For more information, see text.selectionStart.


text.selectionStart

Availability

Flash MX 2004.

Usage

text.selectionStart

Description

Property; a zero-based integer that specifies the beginning of a text subselection. You can use this property with text.selectionEnd to select a range of characters. Characters up to but not including text.selectionEnd are selected.

  • If there is an insertion point or no selection, text.selectionEnd is equal to text.selectionStart.
  • If text.selectionStart is set to a value greater than text.selectionEnd, text.selectionEnd is set to text.selectionStart, and no text is selected.

Example

The following example sets the start of the text subselection to the sixth character:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].selectionStart = 5;

The following example selects the characters "Barbara" from a text field that contains the text "My name is Barbara" and formats them as bold and green.

fl.getDocumentDOM().selection[0].selectionStart = 11;
fl.getDocumentDOM().selection[0].selectionEnd = 18;
var s = fl.getDocumentDOM().selection[0].selectionStart;
var e = fl.getDocumentDOM().selection[0].selectionEnd;
fl.getDocumentDOM().setElementTextAttr('bold', true, s, e);
fl.getDocumentDOM().setElementTextAttr("fillColor", "#00ff00", s, e);


text.setTextAttr()

Availability

Flash MX 2004.

Usage

text.setTextAttr(attrName, attrValue [, startIndex [, endIndex]])

Parameters

attrName A string that specifies the name of the TextAttrs object property to change.

attrValue The value for the TextAttrs object property.

Note: For a list of possible values for attrName and attrValue, see Property summary for the TextAttrs object.

startIndex An integer that is the index (zero-based) of the first character in the array. This parameter is optional.

endIndex An integer that is a range of text, which starts at startIndex and goes up to, but does not include, endIndex. This parameter is optional.

Returns

Nothing.

Description

Method; sets the attribute specified by the attrName parameter associated with the text identified by startIndex and endIndex to the value specified by attrValue. This method can be used to change attributes of text that might span TextRun elements (see TextRun object), or that are portions of existing TextRun elements. Using it may change the position and number of TextRun elements within this object's text.textRuns array.

If you omit the optional parameters, the method uses the entire text object's character range. If you specify only startIndex, the range is a single character at that position. If you specify both startIndex and endIndex, the range starts from startIndex and goes up to, but does not include, the character located at endIndex.

Example

The following example sets the selected text field to italic:

fl.getDocumentDOM().selection[0].setTextAttr("italic", true);

The following example sets the size of the third character to 10:

fl.getDocumentDOM().selection[0].setTextAttr("size", 10, 2);

The following example sets the color to red for the third character through the eighth character of the selected text:

fl.getDocumentDOM().selection[0].setTextAttr("fillColor", 0xff0000, 2, 8);


text.setTextString()

Availability

Flash MX 2004.

Usage

text.setTextString(text [, startIndex [, endIndex]])

Parameters

text A string that consists of the characters to be inserted into this text object.

startIndex An integer that specifies the index (zero-based) of the character in the string where the text will be inserted. This parameter is optional.

endIndex An integer that specifies the index of the end point in the selected text string. The new text overwrites the text from startIndex up to, but not including, endIndex. This parameter is optional.

Returns

Nothing.

Description

Property; changes the text string within this text object. If you omit the optional parameters, the whole text object is replaced. If you specify only startIndex, the specified string is inserted at the startIndex position. If you specify both startIndex and endIndex, the specified string replaces the segment of text starting from startIndex up to, but not including, endIndex.

Example

The following example assigns the string "this is a string" to the selected text field:

fl.getDocumentDOM().selection[0].setTextString("this is a string");

The following example inserts the string "abc" beginning at the fifth character of the selected text field:

fl.getDocumentDOM().selection[0].setTextString("01234567890");
fl.getDocumentDOM().selection[0].setTextString("abc", 4);
// text field is now "0123abc4567890"

The following example replaces the text from the third through the eighth character of the selected text string with the string "abcdefghij". Characters between startIndex and endIndex are overwritten. Characters beginning with endIndex follow the inserted string.

fl.getDocumentDOM().selection[0].setTextString("01234567890");
fl.getDocumentDOM().selection[0].setTextString("abcdefghij", 2, 8);
// text field is now 01abcdefghij890"


text.shortcut

Availability

Flash MX 2004.

Usage

text.shortcut

Description

Property; a string that is equivalent to the Shortcut field in the Accessibility panel. The shortcut is read by the screen reader. This property cannot be used with dynamic text.

Example

The following example gets the shortcut key of the selected object and displays the value:

var theShortcut = fl.getDocumentDOM().selection[0].shortcut;
fl.trace(theShortcut);

The following example sets the shortcut key of the selected object:

fl.getDocumentDOM().selection[0].shortcut = "Ctrl+i";


text.silent

Availability

Flash MX 2004.

Usage

text.silent

Description

Property; a Boolean value that specifies whether the object is accessible. This is equivalent to the inverse logic of the Make Object Accessible setting in the Accessibility panel. That is, if silent is true, Make Object Accessible is deselected. If it is false, Make Object Accessible is selected.

Example

The following example determines if the object is accessible (a value of false means that it is accessible):

var isSilent = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].silent;

The following example sets the object to be accessible:

fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].silent = false;


text.tabIndex

Availability

Flash MX 2004.

Usage

text.tabIndex

Description

Property; an integer that is equivalent to the Tab Index field in the Accessibility panel. This value lets you determine the order in which objects are accessed when the user presses the Tab key.

Example

The following example gets the tabIndex of the currently selected object:

var theTabIndex = fl.getDocumentDOM().selection[0].tabIndex;

The following example sets the tabIndex of the currently selected object:

fl.getDocumentDOM().selection[0].tabIndex = 1;


text.textRuns

Availability

Flash MX 2004.

Usage

text.textRuns

Description

Read-only property; an array of TextRun objects (see TextRun object).

Example

The following example stores the value of the textRuns property in the myTextRuns variable:

var myTextRuns = fl.getDocumentDOM().selection[0].textRuns;


text.textType

Availability

Flash MX 2004.

Usage

text.textType

Description

Property; a string that specifies the type of text field. Acceptable values are "static", "dynamic", and "input".

Example

The following example sets the textType property to "input".

fl.getDocumentDOM().selection[0].textType = "input";


text.useDeviceFonts

Availability

Flash MX 2004.

Usage

text.useDeviceFonts

Description

Property; a Boolean value. A value of true causes Flash to draw text using device fonts.

This property works only with static text; if used with other text types, the property generates a warning.

Example

The following example causes Flash to use device fonts with static text.

fl.getDocumentDOM().selection[0].useDeviceFonts = true;


text.variableName

Availability

Flash MX 2004.

Usage

text.variableName

Description

Property; a string that contains the name of the variable associated with the text object. This property works only with dynamic or input text; it generates a warning if used with other text types.


TextRun object

Availability

Flash MX 2004.

Description

The TextRun object represents a run of characters that have attributes that match all of the properties in the TextAttrs object. This object is a property of the Text object (text.textRuns).

Property summary for the TextRun object

In addition to the properties available for use with the Text object, the TextRun object provides the following properties.

Property | Description
textRun.characters | A string that represents the text contained in the TextRun object.
textRun.textAttrs | The TextAttrs object containing the attributes of the run of text.


textRun.characters

Availability

Flash MX 2004.

Usage

textRun.characters

Description

Property; the text contained in the TextRun object.

Example

The following example displays the characters that make up the first run of characters in the selected text field in the Output panel.

fl.trace(fl.getDocumentDOM().selection[0].textRuns[0].characters);


textRun.textAttrs

Availability

Flash MX 2004.

Usage

textRun.textAttrs

Description

Property; the TextAttrs object containing the attributes of the run of text.

Example

The following example displays the properties of the first run of characters in the selected text field in the Output panel.

var curTextAttrs = fl.getDocumentDOM().selection[0].textRuns[0].textAttrs;
for (var prop in curTextAttrs) {
  fl.trace(prop + " = " + curTextAttrs[prop]);
}


Timeline object

Availability

Flash MX 2004.

Description

The Timeline object represents the Flash Timeline, which can be accessed for the current document by fl.getDocumentDOM().getTimeline(). This method returns the Timeline of the current scene or symbol that is being edited.

When you work with scenes, each scene's Timeline has an index value, and can be accessed for the current document by fl.getDocumentDOM().timelines[i]. (In this example, i is the index of the value of the Timeline.)

When you work with frames by using the methods and properties of the Timeline object, remember that the frame value is a zero-based index (not the actual frame number in the sequence of frames in the Timeline). That is, the first frame has a frame index of 0.

Method summary for the Timeline object

The following methods are available for the Timeline object.

Method | Description
timeline.addMotionGuide() | Adds a motion guide layer above the current layer and attaches the current layer to the newly added guide layer.
timeline.addNewLayer() | Adds a new layer to the document and makes it the current layer.
timeline.clearFrames() | Deletes all the contents from a frame or range of frames on the current layer.
timeline.clearKeyframes() | Converts a keyframe to a regular frame and deletes its contents on the current layer.
timeline.convertToBlankKeyframes() | Converts frames to blank keyframes on the current layer.
timeline.convertToKeyframes() | Converts a range of frames to keyframes (or converts the selection if no frames are specified) on the current layer.
timeline.copyFrames() | Copies a range of frames on the current layer to the Clipboard.
timeline.createMotionTween() | Sets the frame.tweenType property to "motion" for each selected keyframe on the current layer, and converts each frame's contents to a single symbol instance if necessary.
timeline.cutFrames() | Cuts a range of frames on the current layer from the Timeline and saves them to the Clipboard.
timeline.deleteLayer() | Deletes a layer.
timeline.expandFolder() | Expands or collapses the specified folder or folders.
timeline.findLayerIndex() | Finds an array of indexes for the layers with the given name.
timeline.getFrameProperty() | Retrieves the specified property's value for the selected frames.
timeline.getLayerProperty() | Retrieves the specified property's value for the selected layers.
timeline.getSelectedFrames() | Retrieves the currently selected frames in an array.
timeline.getSelectedLayers() | Retrieves the zero-based index values of the currently selected layers.
timeline.insertBlankKeyframe() | Inserts a blank keyframe at the specified frame index; if the index is not specified, inserts the blank keyframe by using the playhead/selection.
timeline.insertFrames() | Inserts the specified number of frames at the given frame number.
timeline.insertKeyframe() | Inserts a keyframe at the specified frame.
timeline.pasteFrames() | Pastes the range of frames from the Clipboard into the specified frames.
timeline.removeFrames() | Deletes the frame.
timeline.reorderLayer() | Moves the first specified layer before or after the second specified layer.
timeline.reverseFrames() | Reverses a range of frames.
timeline.selectAllFrames() | Selects all the frames in the current Timeline.
timeline.setFrameProperty() | Sets the property of the Frame object for the selected frames.
timeline.setLayerProperty() | Sets the specified property on all the selected layers to a specified value.
timeline.setSelectedFrames() | Selects a range of frames in the current layer or sets the selected frames to the selection array passed into this method.
timeline.setSelectedLayers() | Sets the layer to be selected; also makes the specified layer the current layer.
timeline.showLayerMasking() | Shows the layer masking during authoring by locking the mask and masked layers.

Property summary for the Timeline object

The following methods are available for the Timeline object.

Property | Description
timeline.currentFrame | A zero-based index for the frame at the current playhead location.
timeline.currentLayer | A zero-based index for the currently active layer.
timeline.frameCount | Read-only; an integer that represents the number of frames in this Timeline's longest layer.
timeline.layerCount | Read-only; an integer that represents the number of layers in the specified Timeline.
timeline.layers | Read-only; an array of layer objects.
timeline.name | A string that represents the name of the current Timeline.


timeline.addMotionGuide()

Availability

Flash MX 2004.

Usage

timeline.addMotionGuide()

Parameters

None.

Returns

An integer that represents the zero-based index of the newly added guide layer. If the current layer type is not of type "Normal", Flash returns -1.

Description

Method; adds a motion guide layer above the current layer and attaches the current layer to the newly added guide layer, converting the current layer to a layer of type "Guided".

This method functions only on a layer of type "Normal". It has no effect on a layer whose type is "Folder", "Mask", "Masked", "Guide", or "Guided".

Example

The following example adds a motion guide layer above the current layer, and converts the current layer to "Guided":

fl.getDocumentDOM().getTimeline().addMotionGuide();


timeline.addNewLayer()

Availability

Flash MX 2004.

Usage

timeline.addNewLayer([name] [, layerType [, bAddAbove]])

Parameters

name A string that specifies the name for the new layer. If you omit this parameter, a new default layer name is assigned to the new layer ("Layer n," where n is the total number of layers). This parameter is optional.

layerType A string that specifies the type of layer to add. If you omit this parameter, a "Normal" type layer is created. This parameter is optional.

bAddAbove A Boolean value that, if set to true (the default), causes Flash to add the new layer above the current layer; false causes Flash to add the layer below the current layer. This parameter is optional.

Returns

An integer value of the zero-based index of the newly added layer.

Description

Method; adds a new layer to the document and makes it the current layer.

Example

The following example adds a new layer to the Timeline with a default name generated by Flash:

fl.getDocumentDOM().getTimeline().addNewLayer();

The following example adds a new folder layer on top of the current layer and names it "Folder1":

fl.getDocumentDOM().getTimeline().addNewLayer("Folder1", "folder", true);


timeline.clearFrames()

Availability

Flash MX 2004.

Usage

timeline.clearFrames([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that defines the beginning of the range of frames to clear. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that defines the end of the range of frames to clear. The range goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; deletes all the contents from a frame or range of frames on the current layer.

Example

The following example clears the frames from Frame 6 up to, but not including, Frame 11 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().clearFrames(5, 10);

The following example clears Frame 15:

fl.getDocumentDOM().getTimeline().clearFrames(14);


timeline.clearKeyframes()

Availability

Flash MX 2004.

Usage

timeline.clearKeyframes([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that defines the beginning of the range of frames to clear. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that defines the end of the range of frames to clear. The range goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; converts a keyframe to a regular frame and deletes its contents on the current layer.

Example

The following example clears the keyframes from Frame 5 up to, but not including, Frame 10 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().clearKeyframes(4, 9);

The following example clears the keyframe at Frame 15 and converts it to a regular frame:

fl.getDocumentDOM().getTimeline().clearKeyframes(14);


timeline.convertToBlankKeyframes()

Availability

Flash MX 2004.

Usage

timeline.convertToBlankKeyframes([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the starting frame to convert to keyframes. If you omit startFrameIndex, the method converts the currently selected frames. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which the conversion to keyframes will stop. The range of frames to convert goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; converts frames to blank keyframes on the current layer.

Example

The following example converts Frame 2 up to, but not including, Frame 10 to blank keyframes (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().convertToBlankKeyframes(1, 9);

The following example converts Frame 5 to a blank keyframe:

fl.getDocumentDOM().getTimeline().convertToBlankKeyframes(4);


timeline.convertToKeyframes()

Availability

Flash MX 2004.

Usage

timeline.convertToKeyframes([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the first frame to convert to keyframes. If you omit startFrameIndex, the method converts the currently selected frames. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which conversion to keyframes will stop. The range of frames to convert goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; converts a range of frames to keyframes (or converts the selection if no frames are specified) on the current layer.

Example

The following example converts the selected frames to keyframes:

fl.getDocumentDOM().getTimeline().convertToKeyframes();

The following example converts to keyframes the frames from Frame 2 up to, but not including, Frame 10 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().convertToKeyframes(1, 9);

The following example converts Frame 5 to a keyframe:

fl.getDocumentDOM().getTimeline().convertToKeyframes(4);


timeline.copyFrames()

Availability

Flash MX 2004.

Usage

timeline.copyFrames([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the beginning of the range of frames to copy. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which to stop copying. The range of frames to copy goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; copies a range of frames on the current layer to the Clipboard.

Example

The following example copies the selected frames to the Clipboard:

fl.getDocumentDOM().getTimeline().copyFrames();

The following example copies Frame 2 up to, but not including, Frame 10, to the Clipboard (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().copyFrames(1, 9);

The following example copies Frame 5 to the Clipboard:

fl.getDocumentDOM().getTimeline().copyFrames(4);


timeline.createMotionTween()

Availability

Flash MX 2004.

Usage

timeline.createMotionTween([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the beginning frame at which to create a motion tween. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which to stop the motion tween. The range of frames goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the startFrameIndex value. This parameter is optional.

Returns

Nothing.

Description

Method; sets the frame.tweenType property to "motion" for each selected keyframe on the current layer, and converts each frame's contents to a single symbol instance if necessary. This property is the equivalent to the Create Motion Tween menu item in the Flash authoring tool.

Example

The following example converts the shape in the first frame up to, but not including, Frame 10 to a graphic symbol instance and sets the frame.tweenType to "motion" (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().createMotionTween(0, 9);


timeline.currentFrame

Availability

Flash MX 2004.

Usage

timeline.currentFrame

Description

Property; the zero-based index for the frame at the current playhead location.

Example

The following example sets the playhead of the current Timeline to Frame 10 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().currentFrame = 9;

The following example stores the value of the current playhead location in the curFrame variable:

var curFrame = fl.getDocumentDOM().getTimeline().currentFrame;


timeline.currentLayer

Availability

Flash MX 2004.

Usage

timeline.currentLayer

Description

Property; the zero-based index for the currently active layer. A value of 0 specifies the top layer, a value of 1 specifies the layer below it, and so on.

Example

The following example makes the top layer active:

fl.getDocumentDOM().getTimeline().currentLayer = 0;

The following example stores the index of the currently active layer in the curLayer variable:

var curLayer = fl.getDocumentDOM().getTimeline().currentLayer;


timeline.cutFrames()

Availability

Flash MX 2004.

Usage

timeline.cutFrames([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the beginning of a range of frames to cut. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which to stop cutting. The range of frames goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the startFrameIndex value. This parameter is optional.

Returns

Nothing.

Description

Method; cuts a range of frames on the current layer from the Timeline and saves them to the Clipboard.

Example

The following example cuts the selected frames from the Timeline and saves them to the Clipboard:

fl.getDocumentDOM().getTimeline().cutFrames();

The following example cuts Frame 2 up to, but not including, Frame 10 from the Timeline and saves them to the Clipboard (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().cutFrames(1, 9);

The following example cuts Frame 5 from the Timeline and saves it to the Clipboard:

fl.getDocumentDOM().getTimeline().cutFrames(4);


timeline.expandFolder()

Availability

Flash MX 2004.

Usage

timeline.expandFolder(bExpand [, bRecurseNestedParents [, index]])

Parameters

bExpand A Boolean value that, if set to true, causes the method to expand the folder; false causes the method to collapse the folder.

bRecurseNestedParents A Boolean value that, if set to true, causes all the layers within the specified folder to be opened or closed, based on the bExpand parameter. This parameter is optional.

index A zero-based index of the folder to expand or collapse. Use -1 to apply to all layers (you also must set bRecurseNestedParents to true). This property is equivalent to the Expand All/Collapse All menu items in the Flash authoring tool. This parameter is optional.

Returns

Nothing.

Description

Method; expands or collapses the specified folder or folders. If you do not specify a layer, this method operates on the current layer.

Example

The following examples use this folder structure:

Folder 1 ***
--layer 7
--Folder 2 ****
----Layer 5

The following example expands Folder 1 only:

fl.getDocumentDOM().getTimeline().currentLayer = 1;
fl.getDocumentDOM().getTimeline().expandFolder(true);

The following example expands Folder 1 only (assuming that Folder 2 collapsed when Folder 1 last collapsed; otherwise, Folder 2 appears expanded):

fl.getDocumentDOM().getTimeline().expandFolder(true, false, 0);

The following example collapses all folders in the current Timeline:

fl.getDocumentDOM().getTimeline().expandFolder(false, true, -1);


timeline.deleteLayer()

Availability

Flash MX 2004.

Usage

timeline.deleteLayer([index])

Parameters

index A zero-based index that specifies the layer to be deleted. If there is only one layer in the Timeline, this method has no effect. This parameter is optional.

Returns

Nothing.

Description

Method; deletes a layer. If the layer is a folder, all layers within the folder are deleted. If you do not specify the layer index, Flash deletes the currently selected layers.

Example

The following example deletes the second layer from the top:

fl.getDocumentDOM().getTimeline().deleteLayer(1);

The following example deletes the currently selected layers:

fl.getDocumentDOM().getTimeline().deleteLayer();


timeline.findLayerIndex()

Availability

Flash MX 2004.

Usage

timeline.findLayerIndex(name)

Parameters

name A string that specifies the name of the layer to find.

Returns

An array of index values for the specified layer. If the specified layer is not found, Flash returns undefined.

Description

Method; finds an array of indexes for the layers with the given name. The layer index is flat, so folders are considered part of the main index.

Example

The following example shows the index values of all layers named Layer 7 in the Output panel:

var layerIndex = fl.getDocumentDOM().getTimeline().findLayerIndex("Layer 7");
fl.trace(layerIndex);

The following example illustrates how to pass the values returned from this method back to timeline.setSelectedLayers():

var layerIndex = fl.getDocumentDOM().getTimeline().findLayerIndex("Layer 1");
fl.getDocumentDOM().getTimeline().setSelectedLayers(layerIndex[0], true);


timeline.frameCount

Availability

Flash MX 2004.

Usage

timeline.frameCount

Description

Read-only property; an integer that represents the number of frames in this Timeline's longest layer.

Example

The following example uses a countNum variable to store the number of frames in the current document's longest layer:

var countNum = fl.getDocumentDOM().getTimeline().frameCount;


timeline.getFrameProperty()

Availability

Flash MX 2004.

Usage

timeline.getFrameProperty(property [, startframeIndex [, endFrameIndex]])

Parameters

property A string that specifies the name of the property for which to get the value. See Property summary for the Frame object for a complete list of properties.

startFrameIndex A zero-based index that specifies the starting frame number for which to get the value. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the end of the range of frames to select. The range goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

A value for the specified property, or undefined if all the selected frames do not have the same property value.

Description

Method; retrieves the specified property's value for the selected frames.

Example

The following example retrieves the name of the first frame in the current document's top layer and displays the name in the Output panel:

fl.getDocumentDOM().getTimeline().currentLayer = 0;
fl.getDocumentDOM().getTimeline().setSelectedFrames(0, 0, true);
var frameName = fl.getDocumentDOM().getTimeline().getFrameProperty("name");
fl.trace(frameName);


timeline.getLayerProperty()

Availability

Flash MX 2004.

Usage

timeline.getLayerProperty(property)

Parameters

property A string that specifies the name of the property whose value you want to retrieve. For a list of properties, see Property summary for the Layer object.

Returns

The value of the specified property. Flash looks at the layer's properties to determine the type. If all the specified layers don't have the same property value, Flash returns undefined.

Description

Method; retrieves the specified property's value for the selected layers.

Example

The following example retrieves the name of the top layer in the current document and displays it in the Output panel:

fl.getDocumentDOM().getTimeline().currentLayer = 0;
var layerName = fl.getDocumentDOM().getTimeline().getLayerProperty("name");
fl.trace(layerName);


timeline.getSelectedFrames()

Availability

Flash MX 2004.

Parameters

None.

Returns

An array containing 3n integers, where n is the number of selected regions. The first integer in each group is the layer index, the second integer is the start frame of the beginning of the selection, and the third integer specifies the ending frame of that selection range. The ending frame is not included in the selection.

Description

Method; retrieves the currently selected frames in an array.

Example

With the top layer being the current layer, the following example displays 0,5,10,0,20,25 in the Output panel:

var timeline = fl.getDocumentDOM().getTimeline();
timeline.setSelectedFrames(5,10);
timeline.setSelectedFrames(20,25,false);
var theSelectedFrames = timeline.getSelectedFrames();
fl.trace(theSelectedFrames);


timeline.getSelectedLayers()

Availability

Flash MX 2004.

Parameters

None.

Returns

An array of the zero-based index values of the selected layers.

Description

Method; gets the zero-based index values of the currently selected layers.

Example

The following example displays 1,0 in the Output panel:

fl.getDocumentDOM().getTimeline().setSelectedLayers(0);
fl.getDocumentDOM().getTimeline().setSelectedLayers(1, false);
var layerArray = fl.getDocumentDOM().getTimeline().getSelectedLayers();
fl.trace(layerArray);


timeline.insertBlankKeyframe()

Availability

Flash MX 2004.

Usage

timeline.insertBlankKeyframe([frameNumIndex])

Parameters

frameNumIndex A zero-based index that specifies the frame at which to insert the keyframe. If you omit frameNumIndex, the method uses the current playhead frame number. This parameter is optional.

If the specified or selected frame is a regular frame, the keyframe is inserted at the frame. For example, if you have a span of 10 frames numbered 1-10 and you select Frame 5, this method makes Frame 5 a blank keyframe, and the length of the frame span is still 10 frames. If Frame 5 is selected and is a keyframe with a regular frame next to it, this method inserts a blank keyframe at Frame 6. If Frame 5 is a keyframe and the frame next to it is already a keyframe, no keyframe is inserted but the playhead moves to Frame 6.

Returns

Nothing.

Description

Method; inserts a blank keyframe at the specified frame index; if the index is not specified, the method inserts the blank keyframe by using the playhead/selection. See also timeline.insertKeyframe().

Example

The following example inserts a blank keyframe at Frame 20 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().insertBlankKeyframe(19);

The following example inserts a blank keyframe at the currently selected frame (or playhead location if no frame is selected):

fl.getDocumentDOM().getTimeline().insertBlankKeyframe();


timeline.insertFrames()

Availability

Flash MX 2004.

Usage

timeline.insertFrames([numFrames [, bAllLayers [, frameNumIndex]]])

Parameters

numFrames An integer that specifies the number of frames to insert. If you omit this parameter, the method inserts frames at the current selection in the current layer. This parameter is optional.

bAllLayers A Boolean value that, if set to true (the default), causes the method to insert the specified number of frames in the numFrames parameter into all layers; if set to false, the method inserts frames into the current layer. This parameter is optional.

frameNumIndex A zero-based index that specifies the frame at which to insert a new frame. This parameter is optional.

Returns

Nothing.

Description

Method; inserts the specified number of frames at the specified index.

If no parameters are specified, this method works as follows:

  • If one or more frames are selected, the method inserts the selected number of frames at the location of the first selected frame in the current layer. That is, if frames 6 through 10 are selected (a total of five frames), the method adds five frames at Frame 6 on the layer containing the selected frames.
  • If no frames are selected, the method inserts one frame at the current frame on all layers.

If parameters are specified, the method works as follows:

  • If only numFrames is specified, inserts the specified number of frames at the current frame on the current layer.
  • If numFrames is specified and bAllLayers is true, inserts the specified number of frames at the current frame on all layers.
  • If all three parameters are specified, inserts the specified number of frames at the specified index (frameIndex); the value passed for bAllLayers determines if the frames are added only to the current layer or to all layers.

If the specified or selected frame is a regular frame, the frame is inserted at that frame. For example, if you have a span of 10 frames numbered 1-10 and you select Frame 5 (or pass a value of 4 for frameIndex), this method adds a frame at Frame 5, and the length of the frame span becomes 11 frames. If Frame 5 is selected and it is a keyframe, this method inserts a frame at Frame 6 regardless of whether the frame next to it is also a keyframe.

Example

The following example inserts a frame (or frames, depending on the selection) at the current selection in the current layer:

fl.getDocumentDOM().getTimeline().insertFrames();

The following example inserts five frames at the current frame in all layers:

fl.getDocumentDOM().getTimeline().insertFrames(5);

Note: If you have multiple layers with frames in them, and you select a frame in one layer when using the previous command, Flash inserts the frames in the selected layer only. If you have multiple layers with no frames selected in them, Flash inserts the frames in all layers.

The following example inserts three frames in the current layer only:

fl.getDocumentDOM().getTimeline().insertFrames(3, false);

The following example inserts four frames in all layers, starting from the first frame:

fl.getDocumentDOM().getTimeline().insertFrames(4, true, 0);


timeline.insertKeyframe()

Availability

Flash MX 2004.

Usage

timeline.insertKeyframe([frameNumIndex])

Parameters

frameNumIndex A zero-based index that specifies the frame index at which to insert the keyframe in the current layer. If you omit frameNumIndex, the method uses the frame number of the current playhead or selected frame. This parameter is optional.

Returns

Nothing.

Description

Method; inserts a keyframe at the specified frame. If you omit the parameter, the method inserts a keyframe using the playhead or selection location.

This method works the same as timeline.insertBlankKeyframe() except that the inserted keyframe contains the contents of the frame it converted (that is, it's not blank).

Example

The following example inserts a keyframe at the playhead or selected location:

fl.getDocumentDOM().getTimeline().insertKeyframe();

The following example inserts a keyframe at Frame 10 of the second layer (remember that index values are different from frame or layer number values):

fl.getDocumentDOM().getTimeline().currentLayer = 1;
fl.getDocumentDOM().getTimeline().insertKeyframe(9);


timeline.layerCount

Availability

Flash MX 2004.

Usage

timeline.layerCount

Description

Read-only property; an integer that represents the number of layers in the specified Timeline.

Example

The following example uses the NumLayer variable to store the number of layers in the current scene:

var NumLayer = fl.getDocumentDOM().getTimeline().layerCount;


timeline.layers

Availability

Flash MX 2004.

Usage

timeline.layers

Description

Read-only property; an array of layer objects.

Example

The following example uses the currentLayers variable to store the array of layer objects in the current document:

var currentLayers = fl.getDocumentDOM().getTimeline().layers;


timeline.name

Availability

Flash MX 2004.

Usage

timeline.name

Description

Property; a string that specifies the name of the current Timeline. This name is the name of the current scene, screen (slide or form), or symbol that is being edited.

Example

The following example retrieves the first scene name:

var sceneName = fl.getDocumentDOM().timelines[0].name;

The following example sets the first scene name to FirstScene:

fl.getDocumentDOM().timelines[0].name = "FirstScene";


timeline.pasteFrames()

Availability

Flash MX 2004.

Usage

timeline.pasteFrames([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the beginning of a range of frames to paste. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which to stop pasting frames. The method pastes up to, but not including, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the startFrameIndex value. This parameter is optional.

Returns

Nothing.

Description

Method; pastes the range of frames from the Clipboard into the specified frames.

Example

The following example pastes the frames on the Clipboard to the currently selected frame or playhead location:

fl.getDocumentDOM().getTimeline().pasteFrames();

The following example pastes the frames on the Clipboard at Frame 2 up to, but not including, Frame 10 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().pasteFrames(1, 9);

The following example pastes the frames on the Clipboard starting at Frame 5:

fl.getDocumentDOM().getTimeline().pasteFrames(4);


timeline.removeFrames()

Availability

Flash MX 2004.

Usage

timeline.removeFrames([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the first frame at which to start removing frames. If you omit startFrameIndex, the method uses the current selection; if there is no selection, all frames at the current playhead on all layers are removed. This parameter is optional.

endFrameIndex A zero-based index that specifies the frame at which to stop removing frames; the range of frames goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the startFrameIndex value. This parameter is optional.

Returns

Nothing.

Description

Method; deletes the frame.

Example

The following example deletes Frame 5 up to, but not including, Frame 10 of the top layer in the current scene (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().currentLayer = 0;
fl.getDocumentDOM().getTimeline().removeFrames(4, 9);

The following example deletes Frame 8 on the top layer in the current scene:

fl.getDocumentDOM().getTimeline().currentLayer = 0;
fl.getDocumentDOM().getTimeline().removeFrames(7);


timeline.reorderLayer()

Availability

Flash MX 2004.

Usage

timeline.reorderLayer(layerToMove, layerToPutItBy [, bAddBefore])

Parameters

layerToMove A zero-based index that specifies which layer to move.

layerToPutItBy A zero-based index that specifies which layer you want to move the layer next to. For example, if you specify 1 for layerToMove and 0 for layerToPutItBy, the second layer is placed next to the first layer.

bAddBefore Specifies whether to move the layer before or after layerToPutItBy. If you specify false, the layer is moved after layerToPutItBy. The default value is true. This parameter is optional.

Returns

Nothing.

Description

Method; moves the first specified layer before or after the second specified layer.

Example

The following example moves the layer at index 2 to the top (on top of the layer at index 0):

fl.getDocumentDOM().getTimeline().reorderLayer(2, 0);

The following example places the layer at index 3 after the layer at index 5:

fl.getDocumentDOM().getTimeline().reorderLayer(3, 5, false);


timeline.reverseFrames()

Availability

Flash MX 2004.

Usage

timeline.reverseFrames([startFrameIndex [, endFrameIndex]])

Parameters

startFrameIndex A zero-based index that specifies the first frame at which to start reversing frames. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the first frame at which to stop reversing frames; the range of frames goes up to, but does not include, endFrameIndex. If you specify only startFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; reverses a range of frames.

Example

The following example reverses the positions of the currently selected frames:

fl.getDocumentDOM().getTimeline().reverseFrames();

The following example reverses frames from Frame 10 up to, but not including, Frame 15 (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().reverseFrames(9, 14);


timeline.selectAllFrames()

Availability

Flash MX 2004.

Usage

timeline.selectAllFrames()

Parameters

None.

Returns

Nothing.

Description

Method; selects all the frames in the current Timeline.

Example

The following example selects all the frames in the current Timeline.

fl.getDocumentDOM().getTimeline().selectAllFrames();


timeline.setFrameProperty()

Availability

Flash MX 2004.

Usage

timeline.setFrameProperty(property, value [, startFrameIndex [, endFrameIndex]])

Parameters

property A string that specifies the name of the property to be modified. For a complete list of properties and values, see Property summary for the Frame object.

Note: You can't use this method to set values for read-only properties such as frame.duration and frame.elements.

value Specifies the value to which you want to set the property. To determine the appropriate values and type, see Property summary for the Frame object.

startFrameIndex A zero-based index that specifies the starting frame number to modify. If you omit startFrameIndex, the method uses the current selection. This parameter is optional.

endFrameIndex A zero-based index that specifies the first frame at which to stop. The range of frames goes up to, but does not include, endFrameIndex. If you specify startFrameIndex but omit endFrameIndex, endFrameIndex defaults to the value of startFrameIndex. This parameter is optional.

Returns

Nothing.

Description

Method; sets the property of the Frame object for the selected frames.

Example

The following example assigns the ActionScript stop() command to the first frame of the top layer in the current document:

fl.getDocumentDOM().getTimeline().currentLayer = 0;
fl.getDocumentDOM().getTimeline().setSelectedFrames(0,0,true);
fl.getDocumentDOM().getTimeline().setFrameProperty("actionScript", "stop();");

The following example sets a motion tween from Frame 2 up to, but not including, Frame 5, of the current layer (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().setFrameProperty("tweenType","motion",1,4);


timeline.setLayerProperty()

Availability

Flash MX 2004.

Usage

timeline.setLayerProperty(property, value [, layersToChange])

Parameters

property A string that specifies the property to set. For a list of properties, see Layer object.

value The value to which you want to set the property. Use the same type of value you would use when setting the property on the Layer object.

layersToChange A string that identifies which layers should be modified. Acceptable values are "selected", "all", and "others". The default value is "selected" if you omit this parameter. This parameter is optional.

Returns

Nothing.

Description

Method; sets the specified property on all the selected layers to a specified value.

Example

The following example makes the selected layer(s) invisible:

fl.getDocumentDOM().getTimeline().setLayerProperty("visible", false);

The following example sets the name of the selected layer(s) to "selLayer":

fl.getDocumentDOM().getTimeline().setLayerProperty("name", "selLayer");


timeline.setSelectedFrames()

Availability

Flash MX 2004.

Usage

timeline.setSelectedFrames(startFrameIndex, endFrameIndex [, bReplaceCurrentSelection])
timeline.setSelectedFrames(selectionList [, bReplaceCurrentSelection])

Parameters

startFrameIndex A zero-based index that specifies the beginning frame to set.

endFrameIndex A zero-based index that specifies the end of the selection; endFrameIndex is the frame after the last frame in the range to select.

bReplaceCurrentSelection A Boolean value that, if it is set to true, causes the currently selected frames to be deselected before the specified frames are selected. The default value is true.

selectionList An array of three integers, as returned by timeline.getSelectedFrames().

Returns

Nothing.

Description

Method; selects a range of frames in the current layer or sets the selected frames to the selection array passed into this method.

Example

The following example selects the top layer, Frame 1, up to, but not including, Frame 10; it then adds Frame 12 up to, but not including, Frame 15 on the same layer to the current selection (remember that index values are different from frame number values):

fl.getDocumentDOM().getTimeline().setSelectedFrames(0, 9);
fl.getDocumentDOM().getTimeline().setSelectedFrames(11, 14, false);

The following example first stores the array of selected frames in the savedSelectionList variable, and then uses the array later in the code to reselect those frames after a command or user interaction has changed the selection:

var savedSelectionList = fl.getDocumentDOM().getTimeline().getSelectedFrames();
// do something that changes the selection
fl.getDocumentDOM().getTimeline().setSelectedFrames(savedSelectionList);

The following example selects the top layer, Frame 1, up to, but not including, Frame 10, then adds Frame 12, up to, but not including, Frame 15, on the same layer to the current selection:

fl.getDocumentDOM().getTimeline().setSelectedFrames([0, 0, 9]);
fl.getDocumentDOM().getTimeline().setSelectedFrames([0, 11, 14], false);


timeline.setSelectedLayers()

Availability

Flash MX 2004.

Usage

timeline.setSelectedLayers(index [, bReplaceCurrentSelection])

Parameters

index A zero-based index for the layer to select.

bReplaceCurrentSelection A Boolean value that, if it is set to true, causes the method to replace the current selection; false causes the method to extend the current selection. The default value is true. This parameter is optional.

Returns

Nothing.

Description

Method; sets the layer to be selected, and also makes the specified layer the current layer. Selecting a layer also means that all the frames in the layer are selected.

Example

The following example selects the top layer:

fl.getDocumentDOM().getTimeline().setSelectedLayers(0);

The following example adds the next layer to the selection:

fl.getDocumentDOM().getTimeline().setSelectedLayers(1, false);


timeline.showLayerMasking()

Availability

Flash MX 2004.

Usage

timeline.showLayerMasking([layer])

Parameters

layer A zero-based index of a mask or masked layer to show masking during authoring. This parameter is optional.

Returns

Nothing.

Description

Method; shows the layer masking during authoring by locking the mask and masked layers. This method uses the current layer if no layer is specified. If you use this method on a layer that is not of type Mask or Masked, Flash will display an error in the Output panel.

Example

The following example specifies that the layer masking of the first layer should show during authoring.

fl.getDocumentDOM().getTimeline().showLayerMasking(0);


ToolObj object

Availability

Flash MX 2004.

Description

A ToolObj object represents an individual tool in the Tools panel. To access a ToolObj object, use properties of the Tools object: either the tools.toolObjs array or tools.activeTool.

Method summary for the ToolObj object

The following methods are available for the ToolObj object.

Note: The following methods are used only when creating extensible tools.

Method | Description
toolObj.enablePIControl() | Enables or disables the specified control in a PI. Used only when creating extensible tools.
toolObj.setIcon() | Identifies a PNG file to use as a tool icon in the Flash Tools panel.
toolObj.setMenuString() | Sets the string that appears in the pop-up menu as the name for the tool.
toolObj.setOptionsFile() | Associates an XML file (located in the Configuration/Tools folder) with the tool to appear in a modal panel that is invoked by an Options button in the Property inspector.
toolObj.setPI() | Sets a particular Property inspector to be used when the tool is activated.
toolObj.setToolName() | Assigns a name to the tool for the configuration of the Tools panel.
toolObj.setToolTip() | Sets the tooltip that appears when the mouse is held over the tool icon.
toolObj.showPIControl() | Shows or hides a control in the Property inspector.
toolObj.showTransformHandles() | Call this method in the configureTool() method of an extensible tool's JavaScript file to indicate that the free transform handles should appear when the tool is active.

Property summary for the ToolObj object

The following property is available for the Tools object.

Property | Description
toolObj.position | Read-only; an integer specifying the position of the tool in the Tools panel.


toolObj.enablePIControl()

Availability

Flash MX 2004.

Usage

toolObj.enablePIControl( control, bEnable )

Parameters

control A string that specifies the name of the control to enable or disable. Legal values depend on the Property inspector invoked by this tool (see toolObj.setPI()).

A shape Property inspector has the following controls:

stroke

fill

A text Property inspector has the following controls:

type | font | pointsize
color | bold | italic
direction | alignLeft | alignCenter
alignRight | alignJustify | spacing
position | autoKern | small
rotation | format | lineType
selectable | html | border
deviceFonts | varEdit | options
link | maxChars | target

A movie Property inspector has the following controls:

size | publish | background
framerate | player | profile

bEnable A Boolean value that determines whether to enable (true) or disable (false) the control.

Returns

Nothing.

Description

Method; enables or disables the specified control in a PI. Used only when creating extensible tools.

Example

The following command in an extensible tool's JavaScript file will set Flash to not show the stroke options in the Property inspector for that tool:

theTool.enablePIControl( "stroke",  false);


toolObj.position

Availability

Flash MX 2004.

Usage

toolObj.position

Description

Read-only property; an integer specifying the position of the tool in the Tools panel.

Example

The following commands in the mouseDown() method of a tool's JavaScript file will show that tool's position in the Tools panel as an integer in the Output panel:

myToolPos = fl.tools.activeTool.position;
fl.trace(myToolPos);


toolObj.showPIControl()

Availability

Flash MX 2004.

Usage

toolObj.showPIControl( control, bShow )

Parameters

control A string that specifies the name of the control to show or hide. Valid values depend on the Property Inspector invoked by this tool (see toolObj.setPI()).

A shape Property inspector has the following controls:

stroke

fill

A text Property inspector has the following controls:

type | font | pointsize
color | bold | italic
direction | alignLeft | alignCenter
alignRight | alignJustify | spacing
position | autoKern | small
rotation | format | lineType
selectable | html | border
deviceFonts | varEdit | options
link | maxChars | target

The movie Property inspector has the following controls:

size | publish | background
framerate | player | profile

bShow A Boolean value that determines whether to show or hide the specified control; true shows the control; false hides the control.

Returns

Nothing.

Description

Method; shows or hides a control in the Property inspector.

Example

The following command in an extensible tool's JavaScript file will set Flash to not show the fill options in the Property inspector for that tool:

fl.tools.activeTool.showPIControl( "fill", false );


toolObj.setIcon()

Availability

Flash MX 2004.

Usage

toolObj.setIcon( file )

Parameters

file A string that specifies the name of the PNG file to use as the icon. The PNG file must be placed in the Configuration/Tools folder.

Returns

Nothing.

Description

Method; identifies a PNG file to use as a tool icon in the Flash Tools panel.

Example

The following example specifies that the image in the arrow1.png file should be used as the icon for the tool named theTool.

theTool.setIcon("arrow1.png");


toolObj.setMenuString()

Availability

Flash MX 2004.

Usage

toolObj.setMenuString( menuStr )

Parameters

menuStr A string that specifies the name that appears in the pop-up menu as the name for the tool.

Returns

Nothing.

Description

Method; sets the string that appears in the pop-up menu as the name for the tool.

Example

The following example specifies that the tool named theTool should display the name "Arrow Style 1" in its pop-up menu.

theTool.setMenuString("Arrow Style 1");


toolObj.setOptionsFile()

Availability

Flash MX 2004.

Usage

toolObj.setOptionsFile( xmlFile )

Parameters

xmlFile A string that specifies the name of the XML file that has the description of the tool's options.

Returns

Nothing.

Description

Method; associates an XML file (located in the Configuration/Tools folder) with the tool to appear in a modal panel that is invoked by an Options... button in the Property inspector.

Example

The following example specifies that the file named myTool.xml is associated with the currently active tool. You would usually use code like this in the configureTool() method.

fl.tools.activeTool.setOptionsFile( "myTool.xml" );


toolObj.setPI()

Availability

Flash MX 2004.

Usage

toolObj.setPI( pi )

Parameters

pi A string that specifies the Property inspector to invoke for this tool.

Returns

Nothing.

Description

Method; specifies which Property inspector should be used when the tool is activated. Valid values are "shape" (the default), "text", and "movie".

Example

The following example specifies that the text Property inspector should be used when the tool is activated.

fl.tools.activeTool.setPI( "text" );


toolObj.setToolName()

Availability

Flash MX 2004.

Usage

toolObj.setToolName( name )

Parameters

name A string that specifies the name of the tool.

Returns

Nothing.

Description

Method; assigns a name to the tool for the configuration of the Tools panel. The name is used only by the XML layout file that Flash reads to construct the Tools panel. The name does not show up in the Flash UI.

Example

The following example assigns the name "arrow1" to the tool named theTool.

theTool.setToolName("arrow1");


toolObj.setToolTip()

Availability

Flash MX 2004.

Usage

toolObj.setToolTip( toolTip )

Parameters

toolTip A string that specifies the tooltip to use for the tool.

Returns

Nothing.

Description

Method; sets the tooltip that appears when the mouse is held over the tool icon.

Example

The following example specifies that the tooltip for the tool should be "Arrow Style 1 Tool."

fl.tools.activeTool.setToolTip("Arrow Style 1 Tool");


toolObj.showTransformHandles()

Availability

Flash MX 2004.

Usage

toolObj.showTransformHandles( bShow )

Parameters

bShow A Boolean value that determines whether to show or hide the free transform handles for the current tool (true shows the handles; false hides them).

Returns

Nothing.

Description

Method; called in the configureTool() method of an extensible tool's JavaScript file to indicate that the free transform handles should appear when the tool is active.

Example

See configureTool().


Tools object

Availability

Flash MX 2004.

Description

The Tools object is accessible from the Flash object (fl.tools). The tools.toolObjs property contains an array of ToolObj objects, and the tools.activeTool property returns the ToolObj object for the currently active tool. (See also ToolObj object.)

Note: The following methods and properties are used only when creating extensible tools.

Method summary for the Tools object

The following methods are available for the Tools object.

Method | Description
tools.constrainPoint() | Takes two points and returns a new adjusted or constrained point.
tools.getKeyDown() | Returns the most recently pressed key.
tools.setCursor() | Sets the pointer to a specified appearance.
tools.snapPoint() | Takes a point as input and returns a new point that may be adjusted or snapped to the nearest geometric object.

Property summary for the Tools object

The following properties are available for the Tools object.

Property | Description
tools.activeTool | Read-only; returns the ToolObj object for the currently active tool.
tools.altIsDown | Read-only; a Boolean value that identifies if the Alt key is being pressed.
tools.ctlIsDown | Read-only; a Boolean value that identifies if the Control key is being pressed.
tools.mouseIsDown | Read-only; a Boolean value that identifies if a mouse button is currently pressed.
tools.penDownLoc | Read-only; a point that represents the position of the last mouse-down event on the Stage.
tools.penLoc | Read-only; a point that represents the current location of the mouse.
tools.shiftIsDown | Read-only; a Boolean value that identifies if the Shift key is being pressed.
tools.toolObjs | Read-only; an array of ToolObj objects.


tools.activeTool

Availability

Flash MX 2004.

Usage

tools.activeTool

Description

Read-only property; returns the ToolObj object for the currently active tool.

Example

The following example saves an object that represents the currently active tool in the theTool variable.

var theTool = fl.tools.activeTool;


tools.altIsDown

Availability

Flash MX 2004.

Usage

tools.altIsDown

Description

Read-only property; a Boolean value that identifies if the Alt key is being pressed. The value is true if the Alt key is pressed, false otherwise.


tools.constrainPoint()

Availability

Flash MX 2004.

Usage

tools.constrainPoint(pt1, pt2)

Parameters

pt1 and pt2 specify the starting-click point and the drag-to point.

Description

Method; takes two points and returns a new adjusted or constrained point. If the Shift key is pressed, then the returned point is constrained to follow either a 45º constrain (useful for something such as a line with an arrowhead) or to constrain an object to maintain its aspect ratio (such as pulling out a perfect square with the rectangle tool).


tools.ctlIsDown

Availability

Flash MX 2004.

Usage

tools.ctlIsDown

Description

Read-only property; a Boolean value that identifies if the Control key is being pressed. The value is true if the Control key is pressed; false otherwise.


tools.getKeyDown()

Availability

Flash MX 2004.

Usage

tools.getKeyDown()

Parameters

None.

Returns

The integer value of the key.

Description

Method; returns the most recently pressed key.


tools.mouseIsDown

Availability

Flash MX 2004.

Usage

tools.mouseIsDown

Description

Read-only property; a Boolean value that identifies if a mouse button is currently pressed. The value is true if the left mouse button is currently down, false if the mouse button is up.


tools.penDownLoc

Availability

Flash MX 2004.

Usage

tools.penDownLoc

Description

Read-only property; a point that represents the position of the last mouse-down event on the Stage. penDownLoc has two properties, x and y, corresponding to the x,y location of the mouse on the current document.


tools.penLoc

Availability

Flash MX 2004.

Usage

tools.penLoc

Description

Read-only property; a point that represents the current location of the mouse. penLoc has two properties: x and y, corresponding to the x,y location of the mouse on the current document.


tools.setCursor()

Availability

Flash MX 2004.

Usage

tools.setCursor( cursor )

Parameters

cursor An integer that defines the pointer appearance, as described in the following list:

  • 0 Plus cursor (+)
  • 1 black arrow
  • 2 white arrow
  • 3 four-way arrow
  • 4 two-way horizontal arrow
  • 5 two-way vertical arrow
  • 6 X
  • 7 hand cursor

Returns

Nothing.

Description

Method; sets the pointer to a specified appearance.

Example

The following example sets the pointer to a black arrow.

fl.tools.setCursor(1);


tools.shiftIsDown

Availability

Flash MX 2004.

Usage

tools.shiftIsDown

Description

Read-only property; a Boolean value that identifies if the Shift key is being pressed. The value is true if the Shift key is pressed; false otherwise.


tools.snapPoint()

Availability

Flash MX 2004.

Usage

tools.snapPoint(pt)

Parameters

pt specifies the location of the point for which you want to return a snap point.

Description

Method; takes a point as input and returns a new point that may be adjusted or snapped to the nearest geometric object. If snapping is turned off in the View menu in the Flash user interface, the point returned is the original point.


tools.toolObjs

Availability

Flash MX 2004.

Usage

tools.toolObjs

Description

Read-only property; an array of ToolObj objects (see ToolObj object).


Vertex object

Availability

Flash MX 2004.

Description

The Vertex object is the part of the shape data structure that holds the coordinate data.

Method summary for the Vertex object

You can use the following methods with the Vertex object.

Method | Description
vertex.getHalfEdge() | Gets a HalfEdge object that shares this vertex.
vertex.setLocation() | Sets the location of the vertex.

Property summary for the Vertex object

The following properties are available for the Vertex object:

Property | Description
vertex.x | Read-only; the x location of the vertex in pixels.
vertex.y | Read-only; the y location of the vertex in pixels.


vertex.getHalfEdge()

Availability

Flash MX 2004.

Usage

vertex.getHalfEdge()

Parameters

None.

Returns

A HalfEdge object.

Description

Method; gets a HalfEdge object that shares this vertex.


vertex.setLocation()

Availability

Flash MX 2004.

Usage

vertex.setLocation( x, y )

Parameters

x A floating point value that specifies the x coordinate of where the vertex should be positioned, in pixels.

y A floating point value that specifies the y coordinate of where the vertex should be positioned, in pixels.

Returns

Nothing.

Description

Method; sets the location of the vertex. You must call shape.beginEdit() before using this method.

Example

The following example sets the vertex to the origin point.

var shape = fl.getDocumentDOM().selection[0];
var hEdge = shape.edges[0].getHalfEdge(0);
var vertex = hEdge.getVertex();

// move the vertex to the origin
vertex.setLocation(0.0, 0.0);


vertex.x

Availability

Flash MX 2004.

Usage

vertex.x

Description

Read-only property; the x location of the vertex in pixels.

Example

The following example displays the location of the x and y values of the vertex in the Output panel.

var shape = fl.getDocumentDOM().selection[0];
var hEdge = shape.edges[0].getHalfEdge(0);
var vertex = hEdge.getVertex();

fl.trace('x location of vertex is: ' +  vertex.x);
fl.trace('y location of vertex is : ' + vertex.y);


vertex.y

Availability

Flash MX 2004.

Usage

vertex.y

Description

Read-only property; the y location of the vertex in pixels.

Example

See vertex.x.


VideoItem object

Inheritance Item object > VideoItem object

Availability

Flash MX 2004.

Description

The VideoItem object is a subclass of the Item object. There are no unique methods or properties of VideoItem.


XMLUI object

Availability

Flash MX 2004.

Description

Flash MX 2004 supports custom dialog boxes written in a subset of the XML User Interface Language (XUL). You can write a dialog.xml file and then invoke it from the JavaScript API using the document.xmlPanel() method.

An XML User Interface (XMLUI) dialog box can be used by several Flash MX 2004 features, such as Commands and Behaviors, to provide a user interface for features that you build using extensibility.

The XMLUI object provides the ability to get and set properties of an XMLUI dialog box, and accept or cancel out of one. The XMLUI methods can be used in callbacks, such as oncommand handlers in buttons.

Method summary for the XMLUI object

The following methods are available for the XMLUI object.

Method | Description
xmlui.accept() | Makes the current XMLUI dialog box exit with an accept state, which is equivalent to the user clicking the OK button.
xmlui.cancel() | Makes the current XMLUI dialog box exit with a cancel state, which is equivalent to the user clicking the Cancel button.
xmlui.get() | Retrieves the value of the specified property of the current XMLUI dialog box.
xmlui.set() | Modifies the value of the specified property of the current XMLUI dialog box.


xmlui.accept()

Availability

Flash MX 2004.

Usage

xmlui.accept()

Parameters

None.

Returns

Nothing.

Description

Method; makes the current XMLUI dialog box exit with an accept state, which is equivalent to the user clicking the OK button.


xmlui.cancel()

Availability

Flash MX 2004.

Usage

xmlui.cancel()

Parameters

None.

Returns

Nothing.

Description

Method; makes the current XMLUI dialog box exit with a cancel state, which is equivalent to the user clicking the Cancel button.


xmlui.get()

Availability

Flash MX 2004.

Usage

xmlui.get(name)

Parameters

name A string that specifies the name of the XMLUI property to retrieve.

Returns

A string value for the specified property. In cases where you might expect a Boolean value of true or false, it returns the string "true" or "false".

Description

Method; retrieves the value of the specified property of the current XMLUI dialog box.


xmlui.set()

Availability

Flash MX 2004.

Usage

xmlui.set( name, value)

Parameters

name A string that specifies the name of XMLUI property to modify.

value A string that specifies the value to which you want to set the XMLUI property.

Returns

Nothing.

Description

Method; modifies the value of the specified property of the current XMLUI dialog box.


C-level extensibility overview

The C-level extensibility mechanism lets you implement Macromedia Flash MX 2004 and Macromedia Flash Professional MX 2004 extensibility files using a combination of JavaScript and custom C code. You define functions using C, bundle them in a dynamic linked library (DLL) or a shared library, save the library in the appropriate directory, and then call the functions from JavaScript using the Flash JavaScript API (JSAPI).

For example, you might want to define a function that performs intense calculations more efficiently than JavaScript does, thus improving performance, or when you want to create more advanced tools or effects.

This extensibility mechanism is essentially a subset of the Macromedia Dreamweaver MX 2004 API. If you are familiar with that API, you might recognize the functions in this API. However, this API differs from the Dreamweaver API in the following ways:

  • This API does not contain all the commands in the Dreamweaver API.
  • All declarations of type wchar_t and char in the Dreamweaver API are implemented as unsigned short declarations in this API, to support Unicode when strings are passed.
  • The JSVal JS_BytesToValue() function in this API is not part of the Dreamweaver API.
  • The location where DLL or shared library files must be stored is different (see How integrating C functions works).


Integrating C functions

The C-level extensibility mechanism lets you implement Flash extensibility files using a combination of JavaScript and C code. The process for implementing this capability is summarized in the following steps.

  1. Define functions using the C or C++ language.
  2. Bundle them in a DLL file (Windows) or a shared library (Macintosh).
  3. Saves the DLL file or library in the appropriate location.
    • Windows 2000 or Windows XP:

    C:\Documents and Settings\<user>\Local Settings\ Application Data\Macromedia\ Flash MX2004\<language>\Configuration\Templates\External Libraries

    • Windows 98:

    C:\Windows\Application Data\Macromedia\Flash MX 2004\ <language>\ Configuration\Templates\External Libraries

    • Macintosh OS X:

    Hard Drive/Users/<userName>/Library/Application Support/Macromedia/Flash MX 2004/<language>/Configuration/Templates/External Libraries

  4. Create a JSFL file that calls the functions.
  5. Run the JSFL file from the Commands menu in the Flash authoring environment.

For more information, see Sample implementation.


C-level extensibility and the JavaScript interpreter

The C code in the DLL or shared library interacts with the Flash JSAPI at three different times:

  • At startup, to register the library's functions
  • When the C function is called, to unpack the arguments that are being passed from JavaScript to C
  • Before the C function returns, to package the return value

To accomplish these tasks, the interpreter defines several data types and exposes an API. Definitions for the data types and functions that are listed in this section appear in the mm_jsapi.h file. For your library to work properly, you must include the mm_jsapi.h file at the top of each file in your library, with the following line:

#include "mm_jsapi.h"

Including the mm_jsapi.h file includes the mm_jsapi_environment.h file, which defines the MM_Environment structure.

To get a copy of the mm_jsapi.h file, download the sample ZIP or SIT file (see Sample implementation), or copy the following code into a file that you name mm_jsapi.h.

#ifndef _MM_JSAPI_H_
#define _MM_JSAPI_H_

/*****************************************************************************
 * Public data types
 ****************************************************************************/

typedef struct JSContext JSContext;
typedef struct JSObject JSObject;
typedef long jsval;
#ifndef JSBool
typedef long JSBool;
#endif

typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int argc,
    jsval *argv, jsval *rval);

/* Possible values for JSBool */
#define JS_TRUE 1
#define JS_FALSE 0

/*****************************************************************************
 * Public functions
 ****************************************************************************/

/* JSBool JS_DefineFunction(unsigned short *name, JSNative call, unsigned int nargs) */
#define JS_DefineFunction(n, c, a) \
    (mmEnv.defineFunction ? (*(mmEnv.defineFunction))(mmEnv.libObj, n, c, a) \
                          : JS_FALSE)

/* unsigned short *JS_ValueToString(JSContext *cx, jsval v, unsigned int *pLength) */
#define JS_ValueToString(c, v, l) \
    (mmEnv.valueToString  ? (*(mmEnv.valueToString))(c, v, l) : (unsigned short *)0)

/* unsigned char *JS_ValueToBytes(JSContext *cx, jsval v, unsigned int *pLength) */
#define JS_ValueToBytes(c, v, l) \
    (mmEnv.valueToBytes  ? (*(mmEnv.valueToBytes))(c, v, l) : (unsigned char *)0)

/* JSBool JS_ValueToInteger(JSContext *cx, jsval v, long *lp); */
#define JS_ValueToInteger(c, v, l) \
    (mmEnv.valueToInteger ? (*(mmEnv.valueToInteger))(c, v, l) : JS_FALSE)

/* JSBool JS_ValueToDouble(JSContext *cx, jsval v, double *dp); */
#define JS_ValueToDouble(c, v, d) \
    (mmEnv.valueToDouble  ? (*(mmEnv.valueToDouble))(c, v, d) : JS_FALSE)

/* JSBool JS_ValueToBoolean(JSContext *cx, jsval v, JSBool *bp); */
#define JS_ValueToBoolean(c, v, b) \
    (mmEnv.valueToBoolean ? (*(mmEnv.valueToBoolean))(c, v, b) : JS_FALSE)

/* JSBool JS_ValueToObject(JSContext *cx, jsval v, JSObject **op); */
#define JS_ValueToObject(c, v, o) \
    (mmEnv.valueToObject  ? (*(mmEnv.valueToObject))(c, v, o) : JS_FALSE)

/* JSBool JS_StringToValue(JSContext *cx, unsigned short *bytes, uint sz, jsval *vp); */
#define JS_StringToValue(c, b, s, v) \
    (mmEnv.stringToValue  ? (*(mmEnv.stringToValue))(c, b, s, v) : JS_FALSE)

/* JSBool JS_BytesToValue(JSContext *cx, unsigned char *bytes, uint sz, jsval *vp); */
#define JS_BytesToValue(c, b, s, v) \
    (mmEnv.bytesToValue  ? (*(mmEnv.bytesToValue))(c, b, s, v) : JS_FALSE)

/* JSBool JS_DoubleToValue(JSContext *cx, double dv, jsval *vp); */
#define JS_DoubleToValue(c, d, v) \
    (mmEnv.doubleToValue  ? (*(mmEnv.doubleToValue))(c, d, v) : JS_FALSE)

/* jsval JS_IntegerToValue(long lv); */
#define JS_IntegerToValue(lv)       (((jsval)(lv) << 1) | 0x1)

/* jsval JS_BooleanToValue(JSBool bv); */
#define JS_BooleanToValue(bv)       (((jsval)(bv) << 3) | 0x6)

/* jsval JS_ObjectToValue(JSObject *obj); */
#define JS_ObjectToValue(ov)        ((jsval)(ov))

/* unsigned short *JS_ObjectType(JSObject *obj); */
#define JS_ObjectType(o) \
    (mmEnv.objectType     ? (*(mmEnv.objectType))(o) : (unsigned short *)0)

/* JSObject *JS_NewArrayObject(JSContext *cx, unsigned int length, jsval *v) */
#define JS_NewArrayObject(c, l, v) \
    (mmEnv.newArrayObject ? (*(mmEnv.newArrayObject))(c, l, v) : (JSObject *)0)

/* long JS_GetArrayLength(JSContext *cx, JSObject *obj) */
#define JS_GetArrayLength(c, o) \
    (mmEnv.getArrayLength ? (*(mmEnv.getArrayLength))(c, o) : -1)

/* JSBool JS_GetElement(JSContext *cx, JSObject *obj, jsint idx, jsval *vp) */
#define JS_GetElement(c, o, i, v) \
    (mmEnv.getElement     ? (*(mmEnv.getElement))(c, o, i, v) : JS_FALSE)

/* JSBool JS_SetElement(JSContext *cx, JSObject *obj, jsint idx, jsval *vp) */
#define JS_SetElement(c, o, i, v) \
    (mmEnv.setElement     ? (*(mmEnv.setElement))(c, o, i, v) : JS_FALSE)

/* JSBool JS_ExecuteScript(JSContext *cx, JSObject *obj, unsigned short *script,
 *     unsigned int sz, jsval *rval) */
#define JS_ExecuteScript(c, o, s, z, r) \
    (mmEnv.executeScript  ? (*(mmEnv.executeScript))(c, o, s, z, _T(__FILE__), \
        __LINE__, r) : JS_FALSE)

/* JSBool JS_ReportError(JSContext *cx, unsigned short *error, unsigned int sz) */
#define JS_ReportError(c, e, s) \
    (mmEnv.reportError    ? (*(mmEnv.reportError))(c, e, s) : JS_FALSE)

/*****************************************************************************
 * Private data types, macros, and globals
 ****************************************************************************/

typedef struct {
    JSObject *libObj;
    JSBool (*defineFunction)(JSObject *libObj, unsigned short *name, JSNative call,
        unsigned int nargs);
    unsigned short *(*valueToString)(JSContext *cx, jsval v, unsigned int *pLength);
    unsigned char *(*valueToBytes)(JSContext *cx, jsval v, unsigned int *pLength);
    JSBool (*valueToInteger)(JSContext *cx, jsval v, long *lp);
    JSBool (*valueToDouble)(JSContext *cx, jsval v, double *dp);
    JSBool (*valueToBoolean)(JSContext *cx, jsval v, JSBool *bp);
    JSBool (*valueToObject)(JSContext *cx, jsval v, JSObject **op);
    JSBool (*stringToValue)(JSContext *cx, unsigned short *b, unsigned int sz, jsval *vp);
    JSBool (*bytesToValue)(JSContext *cx, unsigned char *b, unsigned int sz, jsval *vp);
    JSBool (*doubleToValue)(JSContext *cx, double dv, jsval *vp);
    unsigned short *(*objectType)(JSObject *obj);
    JSObject *(*newArrayObject)(JSContext *cx, unsigned int length, jsval *vp);
    long (*getArrayLength)(JSContext *cx, JSObject *obj);
    JSBool (*getElement)(JSContext *cx, JSObject *obj, unsigned int idx,
        jsval *vp);
    JSBool (*setElement)(JSContext *cx, JSObject *obj, unsigned int idx,
        jsval *vp);
    JSBool (*executeScript)(JSContext *cx, JSObject *obj, unsigned short *script,
        unsigned int sz, unsigned short *file, unsigned int lineNum, jsval *rval);
    JSBool (*reportError)(JSContext *cx, unsigned short *error, unsigned int sz);
} MM_Environment;

extern MM_Environment mmEnv;

// Declare the external entry point and linkage
#ifdef _WIN32
#   ifndef _MAC
    // Windows
    __declspec( dllexport ) void MM_InitWrapper( MM_Environment *env, unsigned int envSize );
#   else
    // Mac with MSVC++ Win32 portability lib
    extern void MM_InitWrapper( MM_Environment *env, unsigned int envSize );
#   endif
#else
    // Codewarrior
#   pragma export on
    extern void MM_InitWrapper( MM_Environment *env, unsigned int envSize );
#   pragma export off
#endif

#define MM_STATE                                                                \
    /* Definitions of global variables */                                       \
    MM_Environment mmEnv;                                                       \
                                                                                \
    void                                                                        \
    MM_InitWrapper(MM_Environment *env, unsigned int envSize)                   \
    {                                                                           \
        extern void MM_Init();                                                  \
                                                                                \
        char **envPtr = (char **)env;                                           \
        char **mmPtr =  (char **)(&mmEnv);                                      \
        char **envEnd = (char **)((char *)envPtr + envSize);                    \
        char **mmEnd =  (char **)((char *)mmPtr  + sizeof(MM_Environment));     \
                                                                                \
        /* Copy fields from env to mmEnv, one pointer at a time */              \
        while (mmPtr < mmEnd && envPtr < envEnd)                                \
            *mmPtr++ = *envPtr++;                                               \
                                                                                \
      /* If env doesn't define all of mmEnv's fields, set extras to NULL */     \
        while (mmPtr < mmEnd)                                                   \
            *mmPtr++ = (char *)0;                                               \
                                                                                \
      /* Call user's MM_Init function */                                        \
      MM_Init();                                                                \
    }                                                                           \

#endif /* _MM_JSAPI_H_ */


Sample implementation

Included with this documentation is a set of files (Sample.zip for Windows, Sample.sit for Macintosh) that you can use to test the process of building a DLL. (You can download the file at www.macromedia.com/go/jsapi_info_en).

To see how the process works without actually building the DLL, you can do the following:

  • Store the Sample.jsfl file in the Commands directory (see Overview of the Macromedia Flash JavaScript API).
  • Store the Sample.dll file in the External Libraries directory (see How integrating C functions works).
  • In the Flash authoring environment, select Commands > Sample. The trace statement in the JSFL file sends the results of the function defined in Sample.dll to the Output panel.

This section discusses the development of the sample. In this case, the DLL contains only one function, which adds two numbers. The C code is shown below.

// Source code in C
// Save the DLL or shared library with the name "Sample"
#include <windows.h>
#include <stdlib.h>

#include "mm_jsapi.h"

// A sample function
// Every implementation of a Javascript function must have this signature
JSBool computeSum(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval)
{
  long a, b, sum;

  // Make sure the right number of arguments were passed in
  if (argc != 2)
    return JS_FALSE;

  // Convert the two arguments from jsvals to longs
  if (JS_ValueToInteger(cx, argv[0], &a) == JS_FALSE ||
    JS_ValueToInteger(cx, argv[1], &b) == JS_FALSE)
      return JS_FALSE;

  /* Perform the actual work */
  sum = a + b;

  /* Package the return value as a jsval */
  *rval = JS_IntegerToValue(sum);

  /* Indicate success */
  return JS_TRUE;
}

After writing this code, build the DLL file or shared library and store it in the appropriate External Libraries directory (see How integrating C functions works). Then create a JSFL with the following code and store it in the Commands directory (see Overview of the Macromedia Flash JavaScript API).

// JSFL file to run C function defined above
var a = 5;
var b = 10;
var sum = Sample.computeSum(a, b);
fl.trace("The sum of " + a + " and " + b + " is " + sum );

To run the function defined in the DLL, select Commands > Sample in the Flash authoring environment.


Data types

The JavaScript interpreter defines the following data types:

  • JSContext
  • JSObject
  • jsval
  • JSBool

typedef struct JSContext JSContext

A pointer to this opaque data type passes to the C-level function. Some functions in the API accept this pointer as one of their arguments.

typedef struct JSObject JSObject

A pointer to this opaque data type passes to the C-level function. This data type represents an object, which might be an array object or some other object type.

typedef struct jsval jsval

An opaque data structure that can contain an integer, or a pointer to a float, string, or object. Some functions in the API can read the values of function arguments by reading the contents of a jsval structure, and some can be used to write the function's return value by writing a jsval structure.

typedef enum { JS_FALSE = 0, JS_TRUE = 1 } JSBool

A simple data type that stores a Boolean value.


The C-level extensibility API

The C-level extensibility API consists of the JSBool (*JSNative) function signature and the following functions:

  • JSBool JS_DefineFunction()
  • unsigned short *JS_ValueToString()
  • JSBool JS_ValueToInteger()
  • JSBool JS_ValueToDouble()
  • JSBool JS_ValueToBoolean()
  • JSBool JS_ValueToObject()
  • JSBool JS_StringToValue()
  • JSBool JS_DoubleToValue()
  • JSVal JS_BooleanToValue()
  • JSVal JS_BytesToValue()
  • JSVal JS_IntegerToValue()
  • JSVal JS_ObjectToValue()
  • unsigned short *JS_ObjectType()
  • JSObject *JS_NewArrayObject()
  • long JS_GetArrayLength()
  • JSBool JS_GetElement()
  • JSBool JS_SetElement()
  • JSBool JS_ExecuteScript()

typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval)

Description

This function signature describes C-level implementations of JavaScript functions in the following situations:

  • The cx pointer is a pointer to an opaque JSContext structure, which must be passed to some of the functions in the JavaScript API. This variable holds the interpreter's execution context.
  • The obj pointer is a pointer to the object in whose context the script executes. While the script is running, the this keyword is equal to this object.
  • The argc integer is the number of arguments being passed to the function.
  • The argv pointer is a pointer to an array of jsval structures. The array is argc elements in length.
  • The rval pointer is a pointer to a single jsval structure. The function's return value should be written to *rval.

The function returns JS_TRUE if successful; JS_FALSE otherwise. If the function returns JS_FALSE, the current script stops executing and an error message appears.


JSBool JS_DefineFunction()

Usage

JSBool JS_DefineFunction(unsigned short *name, JSNative call, unsigned int nargs)

Description

This function registers a C-level function with the JavaScript interpreter in Flash. After the JS_DefineFunction() function registers the C-level function that you specify in the call argument, you can invoke it in a JavaScript script by referring to it with the name that you specify in the name argument. The name argument is case-sensitive.

Typically, this function is called from the MM_Init() function, which Flash calls during startup.

Arguments

unsigned short *name, JSNative call, unsigned int nargs

  • The name argument is the name of the function as it is exposed to JavaScript.
  • The call argument is a pointer to a C-level function. The function must return a JSBool, which indicates success or failure.
  • The nargs argument is the number of arguments that the function expects to receive.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


unsigned short *JS_ValueToString()

Usage

unsigned short *JS_ValueToString(JSContext *cx, jsval v, unsigned int *pLength)

Description

This function extracts a function argument from a jsval structure, converts it to a string, if possible, and passes the converted value back to the caller.

Note: Do not modify the returned buffer pointer or you might corrupt the data structures of the JavaScript interpreter. To change the string, you must copy the characters into another buffer and create a new JavaScript string.

Arguments

JSContext *cx, jsval v, unsigned int *pLength

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The v argument is the jsval structure from which the string is to be extracted.
  • The pLength argument is a pointer to an unsigned integer. This function sets *plength equal to the length of the string in bytes.

Returns

A pointer that points to a null-terminated string if successful or to a null value on failure. The calling routine must not free this string when it finishes.


JSBool JS_ValueToInteger()

Usage

JSBool JS_ValueToInteger(JSContext *cx, jsval v, long *lp);

Description

This function extracts a function argument from a jsval structure, converts it to an integer (if possible), and passes the converted value back to the caller.

Arguments

JSContext *cx, jsval v, long *lp

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The v argument is the jsval structure from which the integer is to be extracted.
  • The lp argument is a pointer to a 4-byte integer. This function stores the converted value in *lp.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_ValueToDouble()

Usage

JSBool JS_ValueToDouble(JSContext *cx, jsval v, double *dp);

Description

This function extracts a function argument from a jsval structure, converts it to a double (if possible), and passes the converted value back to the caller.

Arguments

JSContext *cx, jsval v, double *dp

  • The cx argument is the opaque JSContext pointer that passed to the JavaScript function.
  • The v argument is the jsval structure from which the double is to be extracted.
  • The dp argument is a pointer to an 8-byte double. This function stores the converted value in *dp.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_ValueToBoolean()

Usage

JSBool JS_ValueToBoolean(JSContext *cx, jsval v, JSBool *bp);

Description

This function extracts a function argument from a jsval structure, converts it to a Boolean value (if possible), and passes the converted value back to the caller.

Arguments

JSContext *cx, jsval v, JSBool *bp

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The v argument is the jsval structure from which the Boolean value is to be extracted.
  • The bp argument is a pointer to a JSBool Boolean value. This function stores the converted value in *bp.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_ValueToObject()

Usage

JSBool JS_ValueToObject(JSContext *cx, jsval v, JSObject **op);

Description

This function extracts a function argument from a jsval structure, converts it to an object (if possible), and passes the converted value back to the caller. If the object is an array, use JS_GetArrayLength() and JS_GetElement() to read its contents.

Arguments

JSContext *cx, jsval v, JSObject **op

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The v argument is the jsval structure from which the object is to be extracted.
  • The op argument is a pointer to a JSObject pointer. This function stores the converted value in *op.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_StringToValue()

Usage

JSBool JS_StringToValue(JSContext *cx, unsigned short *bytes, uint sz, jsval *vp);

Description

This function stores a string return value in a jsval structure. It allocates a new JavaScript string object.

Arguments

JSContext *cx, unsigned short *bytes, size_t sz, jsval *vp

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The bytes argument is the string to be stored in the jsval structure. The string data is copied, so the caller should free the string when it is not needed. If the string size is not specified (see the sz argument), the string must be null-terminated.
  • The sz argument is the size of the string, in bytes. If sz is 0, the length of the null-terminated string is computed automatically.
  • The vp argument is a pointer to the jsval structure into which the contents of the string should be copied.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_DoubleToValue()

Usage

JSBool JS_DoubleToValue(JSContext *cx, double dv, jsval *vp);

Description

This function stores a floating-point number return value in a jsval structure.

Arguments

JSContext *cx, double dv, jsval *vp

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The dv argument is an 8-byte floating-point number.
  • The vp argument is a pointer to the jsval structure into which the contents of the double should be copied.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSVal JS_BooleanToValue()

Usage

jsval JS_BooleanToValue(JSBool bv);

Description

This function stores a Boolean return value in a jsval structure.

Arguments

JSBool bv

  • The bv argument is a Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.

Returns

A JSVal structure that contains the Boolean value that passes to the function as an argument.


JSVal JS_BytesToValue()

Usage

JSBool JS_BytesToValue(JSContext *cx, unsigned short *bytes, uint sz, jsval *vp);

Description

Converts bytes to a JavaScript value.

Arguments

JSContext *cx, unsigned short bytes, uint sz, jsval *vp

  • The cx argument is the JavaScript context.
  • The bytes argument is the string of bytes to convert to a JavaScript object.
  • The sz argument is the number of bytes to be converted.
  • The vp argument is the JavaScript value.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSVal JS_IntegerToValue()

Usage

jsval JS_IntegerToValue(long lv);

Description

This function converts a long integer value to JSVal structure.

Arguments

lv

  • The lv argument is the long integer value that you want to convert to a jsval structure.

Returns

A JSVal structure that contains the integer that was passed to the function as an argument.


JSVal JS_ObjectToValue()

Usage

jsval JS_ObjectToValue(JSObject *obj);

Description

This function stores an object return value in a JSVal. Use JS_ NewArrayObject() to create an array object; use JS_SetElement() to define its contents.

Arguments

JSObject *obj

  • The obj argument is a pointer to the JSObject object that you want to convert to a JSVal structure.

Returns

A JSVal structure that contains the object that you passed to the function as an argument.


unsigned short *JS_ObjectType()

Usage

unsigned short *JS_ObjectType(JSObject *obj);

Description

Given an object reference, the JS_ObjectType() function returns the class name of the object. For example, if the object is a DOM object, the function returns "Document". If the object is a node in the document, the function returns "Element". For an array object, the function returns "Array".

Note: Do not modify the returned buffer pointer or you might corrupt the data structures of the JavaScript interpreter.

Arguments

JSObject *obj

  • Typically, this argument is passed in and converted using the JS_ValueToObject() function.

Returns

A pointer to a null-terminated string. The caller should not free this string when it finishes.


JSObject *JS_NewArrayObject()

Usage

JSObject *JS_NewArrayObject( JSContext *cx, unsigned int length [, jsval *v ] )

Description

This function creates a new object that contains an array of JSVals.

Arguments

JSContext *cx, unsigned int length, jsval *v

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The length argument is the number of elements that the array can hold.
  • The v argument is an optional pointer to the jsvals to be stored in the array. If the return value is not null, v is an array that contains length elements. If the return value is null, the initial content of the array object is undefined and can be set using the JS_SetElement() function.

Returns

A pointer to a new array object or the value null upon failure.


long JS_GetArrayLength()

Usage

long JS_GetArrayLength(JSContext *cx, JSObject *obj)

Description

Given a pointer to an array object, this function gets the number of elements in the array.

Arguments

JSContext *cx, JSObject *obj

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The obj argument is a pointer to an array object.

Returns

The number of elements in the array or -1 upon failure.


JSBool JS_GetElement()

Usage

JSBool JS_GetElement(JSContext *cx, JSObject *obj, jsint idx, jsval *vp)

Description

This function reads a single element of an array object.

Arguments

JSContext *cx, JSObject *obj, unsigned int index, jsval *v

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The obj argument is a pointer to an array object.
  • The index argument is an integer index into the array. The first element is index 0, and the last element is index (length - 1).
  • The v argument is a pointer to a jsval where the contents of the jsval structure in the array should be copied.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_SetElement()

Usage

JSBool JS_SetElement(JSContext *cx, JSObject *obj, jsint idx, jsval *vp)

Description

This function writes a single element of an array object.

Arguments

JSContext *cx, JSObject *obj, unsigned int index, jsval *v

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The obj argument is a pointer to an array object.
  • The index argument is an integer index into the array. The first element is index 0, and the last element is index (length - 1).
  • The v argument is a pointer to a jsval structure whose contents should be copied to the jsval in the array.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.


JSBool JS_ExecuteScript()

Usage

JS_ExecuteScript (JSContext *cx, JSObject *obj, unsigned short *script, unsigned int sz, jsval *rval)

Description

This function compiles and executes a JavaScript string. If the script generates a return value, it returns in *rval.

Arguments

JSContext *cx, JSObject *obj, unsigned short *script, unsigned int sz, jsval *rval

  • The cx argument is the opaque JSContext pointer that passes to the JavaScript function.
  • The obj argument is a pointer to the object in whose context the script executes. While the script is running, the this keyword is equal to this object. Usually this is the JSObject pointer that passes to the JavaScript function.
  • The script argument is a string that contains JavaScript code. If the string size is not specified (see the sz argument), the string must be null-terminated.
  • The sz argument is the size of the string, in bytes. If sz is 0, the length of the null-terminated string is computed automatically.
  • The rval argument is a pointer to a single jsval structure. The function's return value is stored in *rval.

Returns

A Boolean value: JS_TRUE indicates success; JS_FALSE indicates failure.

Previous


基本 ActionScript

快速启动
创建新文档
创建具有辅助功能的 Flash 内容
使用 ActionScript 编写脚本
创建应用程序
基本 Flash
使用图层
使用布局工具
在 Flash 中作图
创建元件和实例
使用按钮
添加静态、输入和动态文本
创建时间轴动画
用屏幕创建演示文稿
基本 ActionScript
添加交互性
创建表单
创建对象和类


概述

您即将体验 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 的魅力。只需要几分钟，您就能学会如何创建融视频、文字、图形以及媒体控制行为于一体的精彩 Web 内容。在这个过程中，您将通过完成以下任务来学习 Flash 创作环境：

  • 浏览用户界面
  • 停放和取消停放面板
  • 更改背景和舞台大小
  • 更改舞台的视图
  • 查看您的文档库
  • 在舞台中添加图形
  • 添加视频
  • 查看对象属性
  • 添加视频控制属性
  • 使用影片浏览器来查看文档结构
  • 测试文档
  • 获取帮助

在学习本课程之前，我们建议您阅读“入门指南”以了解有关 Flash 工作区的更多信息。要访问“入门指南”，请选择“帮助”>“帮助”，然后单击“帮助”目录中的“入门指南”一书。


浏览用户界面

首先，您应打开完成本课程所需的起始 FLA 文件。每个课程都包括一个起始文件和一个完成文件，完成文件用于说明 FLA 文件在课程完成时的外观。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行下列操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 document_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\ Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 document_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/QuickTasks/start_files 并双击 document_start.fla。

    注意：QuickTasks\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

    该文档会在 Flash 创作环境中打开。该文档在时间轴中已包含两个图层。您将在使用图层这一课中学到更多有关图层的知识。

    其中一个图层是引导层，它可以帮助放置舞台对象。另一个图层是内容层，用于放置构成文档的对象。

    注意：引导层不出现在测试或发布的 Flash 内容中。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    在完成本课程中的任务时，切记要经常保存您的工作。


选择面板设置和排列面板

“训练布局”面板设置会按照有利于课程学习的方式来安排您的工作区。您可以使用此布局来完成 Flash 中所有课程的学习。

  • 选择“窗口”>“面板设置”>“训练布局”。

    可以来回移动面板并调整其大小（如下所示）：

    • 通过单击一个面板左上角的标题栏部分并将该面板拖到工作区中的其他位置，可以取消停放该面板。

      如果该面板与某个边框对齐了，表明它停放在了一个新的位置（如果您将它移回，它就会停放在原来的位置）。如果不是这样，则说明面板处于未停放状态。

    • 可以通过向外拖动未停放的面板的右下边缘将面板放大来调整面板大小。


使用工具来创建 Flash 内容

您可以按照您希望对象在发布文件中的显示方式，在白色矩形舞台区域中安排对象。

注意：在 Windows 操作系统中，您可以一次打开几个文档，然后使用舞台上方的文档选项卡在不同文档间导航。

舞台旁边的工具栏提供了各种控件，供您在创建文本和矢量图时使用。您将在课程在 Flash 中绘图和添加静态文本、输入文本和动态文本中学到更多有关使用工具栏工具的知识。

  1. 单击工具栏中的“铅笔”工具。单击工具栏“颜色”区域中的笔触颜色框，并选择除白色以外的任何颜色。
  2. 单击并在舞台中拖动，不要释放鼠标按钮，以此方法绘制线条。

    您已经创建了 Flash 内容。完成后的文档将会更加精彩。


撤消动作

Flash 可以撤消对您的文档所做的一系列更改。您可撤消刚才创建的图形。

  1. 要了解撤消功能的工作方式，请先打开“历史记录”面板（“窗口”>“其他面板”>“历史记录”）。

    铅笔工具会出现在面板中，因为使用该工具是您最后的操作。

  2. 请执行以下操作之一：
    • 选择“编辑”>“撤消铅笔工具”。
    • 按下 Control+Z (Windows) 或 Command+Z (Macintosh) 组合键。

    您的涂鸦即会从舞台中消失。现在，“历史记录”面板显示一个灰色的“铅笔”工具，表示已经执行了撤消操作。

    默认情况下，Flash 可以撤消 100 次更改，按倒序撤消所执行的操作。您可以在“首选参数”中更改默认设置。要更改首选参数，请参阅“入门指南帮助”的“了解工作区”一章中的“在 Flash 中设置首选参数”。

  3. 要关闭“历史记录”面板，请单击面板右上角的选项菜单并选择“关闭面板”。


查看时间轴

在舞台正上方可以看到时间轴和图层。可以创建和命名图层，然后向图层上的帧添加内容，以便安排 Flash 内容在播放头跨帧移动时如何播放。

  • 将鼠标指针移到分隔舞台和时间轴的区域。出现调整大小控制块时，根据需要轻轻向上或向下拖动它以调整时间轴大小。

    播放头（即红色的指示线）位于时间轴内的第 1 帧上。关键帧由帧中的小圆圈指定，这些小圆圈内部已填充，表示这些帧中有内容。如果您希望在该帧上对 Flash 内容做某些更改，可以向文档中添加关键帧。


更改背景和舞台大小

舞台提供了一种预览功能，可用以预览您的 Flash 内容将在发布文件中如何显示。您可以更改舞台的大小，使之能够容纳为较大舞台设计的插图。您还可以更改舞台的背景颜色。

  1. 在工具栏中，单击“选择”工具。
  2. 在舞台上，单击舞台周围的灰色工作区中的任何位置，或者单击舞台的背景区域，这样便不选中任何对象。

    在不选择对象时，舞台下面的属性检查器将显示文档的属性。

  3. 要更改舞台背景颜色，请单击背景颜色框并选择一种浅灰色，例如十六进制值为 #CCCCCC 的灰色。
  4. 要更改舞台大小，请单击属性检查器中的“大小”按钮。在“文档属性”对话框中，输入 750 作为舞台宽度，然后单击“确定”。

    舞台大小将调整为 750 像素宽。


更改舞台的视图

您可以更改舞台的视图而不影响文档的实际舞台大小。

  1. 在舞台右侧上方的“舞台视图”文本框中，键入 500%。然后按 Enter 或 Return 键。

    您的舞台视图将放大为 500%。

  2. 在“舞台视图”弹出菜单中（访问方法是单击文本框右侧的控件）选择 100%，以便使用与发布的 Flash 内容相对应的尺寸来查看舞台。


查看“库”面板

您导入的 Flash 内容或元件存储在“库”面板中。在学习创建元件和实例这一课后，您将了解更多有关元件和实例的知识。

  • 要查看“库”面板，请选择“窗口”>“库”。

    我们已经导入了库项目，并为您将在本课程中使用的对象创建了元件。

    注意：Flash 中还包括您可以在文档中使用的按钮和声音库。要查看这些库，在完成本课程的学习后，请选择“窗口”>“其他面板”>“公用库”并选择“按钮”库或“声音”库。


在舞台中添加图形

要向您的文档添加库项目，请验证是否将对象添加到了正确的图层，然后将项目从“库”面板拖到“舞台”。

  1. 在时间轴中，单击“内容”层名称以选择该图层。在“选择”工具处于选中状态时，将“标题”影片剪辑（包含一个位图图像和一个矢量图形）从“库”面板拖到舞台上，并将它与“标题”辅助线对齐。

    在 Flash 中，您既可以处理使用像素来描述图形的位图图像，也可以处理使用数学表示形式来描述图像的矢量图。有关更多信息，请参阅“使用 Flash 帮助”中的“关于矢量和位图图形”。

  2. 在“内容”层仍处于选中状态时，将文本元件从“库”面板拖到舞台上，并将它与作为辅助线的已有 Trio ZX2004 文本对齐。可以使用键盘箭头键将文本轻推就位。

    该标题文本实际上是根据文本创建的图形。


添加视频

“库”面板包含一个导入的 Flash 视频文件 (FLV)。您将把该视频添加到文档中，然后 Flash 添加所需的帧以播放该视频。

有关在 Flash 中使用视频的详细信息，请参阅“使用 Flash 帮助”中的“使用视频”。

  1. 确认“内容”层在时间轴中仍处于选中状态。将 ggb_move_for_trio_new 视频从“库”面板中拖到舞台上灰黑色的“视频”辅助线处。
  2. 此时，将出现一个对话框，指示 Flash 将把 138 个帧添加到该视频的时间轴上。单击“是”。
  3. 在时间轴上拖动播放头以查看该视频。


查看对象属性

向舞台添加对象时，可以先选定它，然后在属性检查器中查看和更改它的属性。所选择的对象类型决定将要显示的属性。例如，如果您选择文本对象（不是我们在本课程中使用的文本图形），属性检查器将显示字体、字号和段落格式等设置，您可以查看或更改这些设置。如果没有选择对象，属性检查器将显示整个文档的属性。

  1. 在舞台上，在“选择”工具处于选中状态时，单击“标题”图形。

    属性检查器（“窗口”>“属性”）将显示组合对象的规格，例如高度、宽度和舞台坐标等。

  2. 在舞台上，单击您拖到舞台的视频影片剪辑的边框，并在属性检查器中查看它的属性。
  3. 在属性检查器的“实例名称”文本框中，输入 video 作为实例名称。

    注意：因为动作脚本（Flash 脚本语言）经常引用实例名称，所以最好为实例指定名称。要学习更多有关实例命名的知识，请参阅课程用动作脚本撰写脚本。


添加视频控制属性

使用“行为”，您无须知道动作脚本（Flash 脚本撰写语言），就可以轻松地向文档添加复杂的功能。现在，您可以添加视频控制行为。

  1. 如果尚未在时间轴中选择“内容”层的第 1 帧，请单击选中它。
  2. 在舞台上，单击“播放”按钮以选中它。在“行为”面板中（“窗口”>“开发面板”>“行为”），单击“添加”(+) 按钮并选择“嵌入的视频”>“播放”。
  3. 在“播放视频”对话框中，确认已经选择了“相关”。选择 video（给视频剪辑指定的实例名称），然后单击“确定”。

  4. 在舞台上，单击“暂停”按钮（中间按钮）以选中它。在“行为”面板中，单击“添加”(+) 按钮并选择“嵌入的视频”>“暂停”。
  5. 在“暂停视频”对话框中，再次选中该视频影片剪辑，然后单击“确定”。
  6. 在舞台上，单击“后退”按钮以选中它。在“行为”面板中，单击“添加”(+) 按钮并选择“嵌入的视频”>“后退”。
  7. 在“后退视频”对话框中，选择 video。
  8. 在“后退帧数”文本框中，输入 20。

    “后退帧数”文本框指示在用户单击“后退”按钮后播放头应后移多少帧。

    注意：其他视频控制行为使您可以对视频执行快进、隐藏、暂停和显示等操作。


使用影片浏览器来查看文档结构

影片浏览器有助于排列、定位和编辑媒体。影片浏览器通过分层树结构提供有关文档的结构和流的信息。

  1. 选择“窗口”>“其他面板”>“影片浏览器”。

    如果需要，扩大影片浏览器，以便查看窗格中的树形结构。

    影片浏览器的过滤按钮用于显示或隐藏信息。

  2. 单击影片浏览器标题栏中的弹出菜单，并选择“显示影片元素”和“显示元件定义”（如果尚未选择）。
  3. 沿着影片浏览器的顶部来配置过滤按钮，使选中的过滤按钮只有“显示按钮、影片剪辑和图形”、“显示动作脚本”和“显示视频、声音和位图”。

    如果将鼠标指针移动到某个按钮上，会出现一个显示按钮名称的工具提示。

    检查该列表，查看文档中包括的一些资源，并了解它们与其他资源之间的关系。

  4. 在“影片浏览器”窗格中，展开“要播放的动作”，以便查看在您添加“播放”视频控制行为后 Flash 创建的动作脚本。
  5. 要关闭“影片浏览器”，请单击其关闭框。


测试文档

当您创作文档时，应当经常保存和测试该文档，以确保 Flash 内容可以正常播放。在测试 SWF 文件的过程中，单击视频控制按钮可以查看视频能否正常停止、播放和后退。

  1. 保存文档（“文件”>“保存”）并选择“控制”>“测试影片”。

    Flash 内容将会在一个 SWF 文件窗口中播放。FLA 是创作环境中的文档的扩展名，而 SWF 则是经过测试的、已导出的和已发布的 Flash 内容的扩展名。

  2. 查看完 SWF 内容后，关闭 SWF 文件窗口，返回创作环境。


获取帮助

这些课程对 Flash 作了介绍，并向您提供一些方法，使您可以利用有关功能来准确创建所需的文档。有关课程中介绍的某个功能、步骤或过程的详细信息，请参考“帮助”面板的“帮助”选项卡（“帮助”>“帮助”）。


小结

祝贺您制作了一个包括图形、视频和视频控制行为的 Flash 文档。在几分钟内，您学习了如何完成以下任务：

  • 浏览用户界面
  • 停放和取消停放面板
  • 更改背景和舞台大小
  • 更改舞台的视图
  • 查看您的文档库
  • 在舞台中添加图形
  • 添加视频
  • 查看对象属性
  • 添加视频控制属性
  • 使用影片浏览器来查看文档结构
  • 测试文档
  • 获取帮助

通过学习其他课程，可了解更多有关 Flash 的知识。


概述

在了解了 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中的几项设计技术和辅助功能后，您可以创建所有用户（包括残障人士）都能访问的 Flash 内容。这一课说明了如何创建具有辅助功能的文档，这种文档是为配合使用屏幕阅读器（它可以为视力受损的用户读出 Web 内容）和其他辅助技术而设计的。为此，您需要完成以下任务：

  • 指定屏幕阅读器可以访问您的文档
  • 提供文档标题和描述
  • 提供文档实例的标题和描述
  • 指定屏幕阅读器忽略文档中的元素
  • 将静态文本更改为动态文本以便实现辅助功能
  • 控制用户使用 Tab 键进行导航的顺序
  • 使用动作脚本控制读取顺序

本课介绍了使 Flash 内容具备辅助功能的基本技术。有关在 Flash 内容中采用辅助功能的详细而全面的信息，请参阅“使用 Flash”帮助中的“创建具有辅助功能的内容”。


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行以下其中一项操作：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Setting\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 accessibility_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\
      Windows\Application Data\Macromedia\Flash MX 2004\<语言>\
      Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 accessibility_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/QuickTasks/start_file 并双击 accessibility_start.fla。

    注意：QuickTasks\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    注意：在完成本课程中的任务时，切记要经常保存您的工作。

  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。


指定屏幕阅读器可以访问您的文档

现在，您将指定屏幕阅读器可以访问您的文档，并提供屏幕阅读器可以读出的文档的名称和描述。

  1. 在舞台上未选中任何内容的情况下，选择“窗口”>“其他面板”>“辅助功能”。
  2. 在“辅助功能”面板中，确认选择了下列选项：

    默认情况下，使影片可访问处于选定状态，并允许 Flash Player 将辅助功能信息传递给屏幕阅读器。

    使子对象可访问使 Flash Player 可以将嵌套在影片剪辑内部的辅助功能信息传递给屏幕阅读器。如果对整个文档选定该选项，仍然可以隐藏各个影片剪辑的子对象。

    自动标签会关联另一个舞台对象（例如，输入文本字段）旁边的文本，作为该元素的标签或标题。


提供文档标题和描述

在该文档的“辅助功能”面板中，可以针对屏幕阅读器输入文档的名称和描述。

  • 在“名称”文本框中，输入 Trio ZX2004。在“描述”文本框中，输入有关 Trio ZX2004 的公司 Web 站点。包括 6 个导航按钮、概述文本以及一个汽车动画。


为实例提供标题和描述

现在，您已经提供了有关整个文档的信息，接下来，您可以提供有关文档中包括的舞台对象的信息。

  1. 选择舞台顶部的 Trio Motor Company 徽标。在“辅助功能”面板的“名称”文本框中，输入 Trio Motor Company。请不要在“描述”文本框中输入任何内容。

    并不是每个实例都需要描述，描述是与标题信息一起读取的。如果标题名称已充分说明了该对象的功能，那么，您就不需要提供描述。

  2. 在“辅助功能”面板仍然打开的情况下，选择舞台上的“Dealers”按钮。

    “辅助功能”面板中的信息相应地变化，以反映选定对象的“辅助功能”选项。

    在“Dealers”按钮的“辅助功能”面板中，不需要在“标题”文本框中提供名称，因为该按钮包括屏幕阅读器将读取的文本标签。如果不希望屏幕阅读器读取此按钮中的文本，可以在设置文档的辅助功能时取消选择“自动标签”。

  3. 在“描述”文本框中，输入全国经销商信息网页的链接。

其他按钮也包括文本，屏幕阅读器将读出这些文本；因此，不需要提供标题。由于按钮标题显而易见，因此不需要包括描述。


指定屏幕阅读器忽略文档中的元素

屏幕阅读器读取 Web 内容时会遵循特定的顺序。但是，当网页上的内容变化时，大多数屏幕阅读器都将开始再次重新读取所有 Web 内容。如果 Flash 内容包含动画，那么此屏幕阅读器功能可能会有问题，即可能会导致屏幕阅读器在每次动画发生变化时都重新开始。

幸运的是，可以使用“辅助功能”面板来取消选择“使对象可访问”，以便屏幕阅读器不接收有关对象的辅助功能信息，或取消选择“使子对象可访问”，以便屏幕阅读器不接收嵌套在影片剪辑内部的辅助功能信息。您现在将执行后一项操作，以便用户能够知道网页中包含动画，并且该动画不会导致屏幕阅读器不断刷新。

  1. 在舞台上，单击汽车，即 safety_mc movie 剪辑实例。
  2. 在“辅助功能”面板中，取消选择“使子对象可访问”。在“名称”文本框中，输入 Trio ZX2004 动画。在“描述”文本框中，输入包含三个 Trio ZX2004 视图的动画。


将静态文本更改为动态文本以便实现辅助功能

屏幕阅读器可以访问静态文本。但是，您不能在静态文本中使用实例名称，实例名称用于控制 Tab 键顺序和读取顺序。您将概述文本段更改为动态文本并指定辅助功能选项。

  1. 在舞台上，选择以“The TRIO ZX2004 provides the ultimate in efficiency ...”开头的文本。

    “辅助功能”面板相应地变化，以指示您不能对所选内容应用辅助功能。

  2. 在属性检查器中，从“文本类型”弹出菜单中选择“动态文本”。

    现在，辅助功能设置会出现在“辅助功能”面板中。

  3. 在“实例名称”文本框中，输入 text9_txt 的实例名称。

    注意：要指定 Tab 键顺序和读取顺序（接下来要执行的操作），必须为所有实例提供实例名称。该实例名称在文档中必须是唯一的。


控制 Tab 键顺序和读取顺序

您可以创建 Tab 键顺序，以便确定当用户按 Tab 键时对象接收焦点的顺序。您还可以控制屏幕阅读器读取有关对象信息的顺序（称为读取顺序）。使用动作脚本中的 tabIndex 属性，可以创建 Tab 键顺序和读取顺序（在动作脚本中，tabIndex 属性与读取顺序意思相同）。如果您具有 Flash MX Professional 2004，则可以使用“辅助功能”面板来指定 Tab 键顺序，但是您分配的 Tab 键索引不一定会控制读取顺序。

要创建读取顺序，必须在动作脚本中为每个实例分配一个 Tab 键索引。

如果您具有 Macromedia Flash MX Professional 2004，那么创建 Tab 键顺序就像在“Tab 键索引”文本框中输入数字一样容易。然后，您可以直接在舞台上查看 Tab 键顺序。

要在本课程中创建 Tab 键顺序，请使用以下过程之一。要在创建 Tab 键顺序的同时创建读取顺序，请按照该过程使用动作脚本控制 Tab 键顺序和读取顺序。

如果您具有 Flash MX Professional 2004，可以按照此过程使用“辅助功能”面板创建 Tab 键顺序：

  1. 在“辅助功能”面板处于打开状态时，选择舞台顶部的 logo_mc 实例。在“辅助功能”面板的“Tab 键索引”文本框中，输入 1。
  2. 继续选择舞台上的每个实例，并使用下表中的信息在“Tab 键索引”文本框中输入 Tab 键顺序号：

    实例名称

    在“Tab 键索引”文本框中输入下列数字

    logo_mc

    1

    dealers_btn

    2

    orders_btn

    3

    research_btn

    4

    text4_txt

    5

    overview_btn

    6

    powerplant_btn

    7

    news_btn

    8

    safety_mc

    9

    text8_txt

    10

    text9_txt

    11

    bevel_mc

    12

如果您具有 Flash MX Professional 2004，请按照此过程查看 Tab 键顺序：

  • 选择“查看”>“显示 Tab 键顺序”。

    输入的 Tab 键索引编号会出现在舞台上该实例的旁边。

    注意：如果启用了“显示 Tab 键顺序”，则使用动作脚本（而不是使用“辅助功能”面板）创建的 Tab 键顺序将不会出现。

按照此过程使用动作脚本控制 Tab 键顺序和读取顺序：

  1. 在时间轴中，选择“动作”图层的第 1 帧。
  2. 在“动作”面板中（“窗口”>“开发面板”>“动作”），查看为文档中的每个实例创建 Tab 键索引的动作脚本。
  3. 如果您使用的是 Flash MX 2004，或者您使用的是 Flash MX Professional 2004 并且未使用“辅助功能”面板创建 Tab 键索引，那么应删除脚本中的 /* 和 */ 以取消注释该脚本：
    _root.logo_mc.tabIndex = 1;
_root.dealers_btn.tabIndex = 2;
_root.orders_btn.tabIndex = 3;
_root.research_btn.tabIndex = 4;
_root.text4_txt.tabIndex = 5;
_root.overview_btn.tabIndex = 6;
_root.powerplant_btn.tabIndex = 7;
_root.news_btn.tabIndex = 8;
_root.safety_mc.tabIndex = 9;
_root.text8_txt.tabIndex = 10;
_root.text9_txt.tabIndex = 11;
_root.bevel_mc.tabIndex = 12;


关于使用屏幕阅读器测试文档

您已经知道，创建 Flash 文档时，为了确保其运行正常，要对其进行定期测试，这一点很重要。如果您设计的文档要与屏幕阅读器这样的辅助技术一起使用，那么经常测试就更加重要。有关使用屏幕阅读器测试文档的相关资源的信息，请参阅“使用 Flash”帮助中的“测试具有辅助功能的内容”。


小结

祝贺您创建了具有辅助功能的 Flash 内容。在几分钟内，您学习了如何完成以下任务：

  • 指定屏幕阅读器可以访问您的文档
  • 提供文档标题和描述
  • 提供文档实例的标题和描述
  • 指定屏幕阅读器忽略文档中的元素
  • 将静态文本更改为动态文本以便实现辅助功能
  • 控制用户使用 Tab 键进行导航的顺序
  • 使用动作脚本控制读取顺序

Macromedia 维护着一个专门用于辅助功能的信息全面的 Web 站点。有关 Macromedia 产品所提供的辅助功能的详细信息，请访问 Macromedia 辅助功能 Web 站点：www.macromedia.com/go/flash_accessibility_cn。


概述

动作脚本语言是 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 的一部分，它给设计和开发人员带来了很多方便。通过使用动作脚本，您可以根据运行时间和加载数据等事件控制文档播放；为文档添加交互性，使之响应按钮单击等用户操作；将内置对象（例如按钮对象）与内置的相关方法、属性和事件结合使用；创建自定义类和对象；创建更加短小精悍的应用程序（相对于使用用户界面工具创建的应用程序），所有这些都可以通过可重复利用的代码来完成。

动作脚本是一种面向对象的脚本语言，可用于控制 Flash 内容的播放方式。在后续的课程中，您将了解动作脚本如何演化为动作脚本 2.0 以包含一组核心的语言元素，使开发面向对象的程序更加方便。

现在将使用动作脚本来完成以下任务：

  • 按照推荐的方法来命名实例
  • 初始化文档
  • 应用动作脚本语法
  • 定位动作脚本参考文档
  • 向动作脚本添加注释
  • 编写函数
  • 复制和修改函数
  • 检查语法和测试应用程序


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行以下其中一项操作：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Setting\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 scripts_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 scripts_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/QuickTasks/start_files 并双击 scripts_start.fla。

    注意：QuickTasks\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。


创建元件的实例

将动画影片剪辑的实例从“库”拖到舞台上的“全球定位系统”插图中。然后遵循建议的一贯做法，即命名该实例 ó 既为了提供代码提示，也因为在您的脚本中通常引用实例名称而非元件名称。代码提示是提示您正确动作脚本语法的工具提示。

  1. 在工具栏中，单击“选择”工具。在时间轴中选择该图层，然后单击该图层旁边的挂锁以对该图层解锁。
  2. 要准确地放置影片剪辑，请选择“查看”>“对齐”。如果尚未选择“贴紧对齐”和“对齐对象”命令，请选择这些命令。
  3. 从“库”面板中（“窗口”>“库”），将 map_skewed 拖到舞台的黑色背景区域。

    因为第一次从“库”面板中拖动对象时不会显示辅助线，所以您将释放该对象，然后再拖动它。

  4. 在舞台上再次拖动 map_skewed 影片剪辑，使对齐辅助线显示出来。使用辅助线将影片剪辑与 GPS 屏幕的上边缘和左边缘对齐。

    注意：如果放置不正确，请再次拖动该影片剪辑，或者按 Control+Z (Windows) 或 Command+Z (Macintosh) 组合键撤消所做的更改。

  5. 在舞台上选中 map_skewed 的实例，在属性检查器（“窗口”>“属性”）的“实例名称”文本框中键入 screen_mc。

    Flash 会在您用适当的后缀命名实例时显示代码提示：

    • 当为影片剪辑实例命名时，每次都应赋予实例一个 _mc 后缀，例如 screen_mc。
    • 当命名按钮时，应使用 _btn 后缀。
    • 当命名文本字段时，应使用 _txt 后缀。

    注意：有关能够提供代码提示的其他实例名称后缀的更多信息，请参阅“动作脚本参考指南帮助”中的“编写触发代码提示的代码”。


命名按钮实例

通过使用适当的后缀来提供代码提示，您可以为舞台上已有的两个按钮实例提供实例名称。

  1. 在时间轴中解除“按钮”层的锁定。
  2. 在舞台上，选择 play_button 这一实例（绿色大按钮）。
  3. 在属性检查器的“实例名称”文本框中，键入 onButton_btn 来命名该实例。
  4. 在舞台上，选择 button_stop 这一实例（红色小按钮）。
  5. 在属性检查器的“实例名称”文本框中，键入 offButton_btn 来命名该实例。


初始化文档

应用程序具有一个初始状态，它指定内容首次呈现给用户的样式。您应在文档的第 1 帧中初始化属性和变量。下面将指定映射影片剪辑在 SWF 文件首次播放时不可见。

  1. 选择“动作”图层的第 1 帧。如果“动作”面板没有打开，请选择“窗口”>“开发面板”>“动作”。

    动作 - 帧出现在面板的顶部，这表示您选择了将要在其中应用动作脚本的帧。验证您是否正在将动作脚本附加到所需的帧或对象上 - 这是一个好习惯。

    “动作”面板中包括一个“脚本”窗格（空白的文本输入区域），您可以在其中直接输入文本；还包括一个“动作”工具箱，用于选择要添加到脚本中的动作脚本；此外，还有一个脚本浏览器，其功能类似“影片浏览器”。

  2. 在“动作”面板的顶部，单击“插入目标路径”。
  3. 在“插入目标路径”对话框中，确认选择了“相对”（即相对路径）。从对话框的分层树结构中，选择 screen_mc。然后单击“确定”。

    目标路径告诉动作脚本某个对象在文档的整体结构内的位置。

  4. 在“脚本”窗格中 screen_mc 文本的结尾处单击，然后键入一个句点 (.)。
  5. 当您键入句点时，将出现影片剪辑的代码提示，因为您在命名实例时使用了 _mc 后缀。从代码提示列表中双击 _visible，并键入下列内容：

    = false;

    该行代码使得在舞台上看不到 screen_mc 影片剪辑。

    注意：如果代码提示不显示，则说明您没有在“动作”面板中选择代码提示作为首选参数。您可以在“脚本”窗格中直接键入 _visible。也可以单击“动作”面板右上角中的选项菜单来更改首选参数。从选项菜单中，选择“首选参数”，然后选择“动作脚本”选项卡上的“代码提示”。

在整个创作过程中，记住要经常保存您的文档。


关于动作脚本语法

所有的语言，无论是计算机语言还是人类的书面语或口语，都遵循一定的规则以便于理解。这些规则称为语法。

Flash 使用点语法，意为脚本的各个部分通过句点 (.) 链接在一起。其他动作脚本语法元素包括：

  • 动作脚本语句中的分号 (;)，类似于普通句子中的句点 (.)，表示语句的结束。
  • 括号 () 组参数，用在动作脚本语句中。
  • 与大括号 {} 组相关的动作脚本语句。您可以使用嵌套的大括号来创建语句的层次结构。

在本课稍后的内容中，您将学习使用一些用于测试语法的 Flash 功能。


定位动作脚本参考文档

在创作期间，如果想了解有关输入的动作脚本的其他信息，可以在“动作”工具箱或“脚本”窗格中选择该动作，然后单击“参考”按钮。“帮助”面板显示有关选定动作的信息。

  1. 在“动作”面板的“脚本”窗格中，双击 visible 以选中该术语。

    注意：在完成下一步后，您将更改“帮助”面板中的主题，并将离开此课程主题。单击“如何”选项卡以返回该主题。

  2. 在“动作”面板的顶部，单击“参考”图标。

    “帮助”面板中将会出现 visible 项。


向动作脚本添加注释

在动作脚本中，双斜杠 (//) 后面的文本是 Macromedia Flash Player 将忽略的注释文本。注释文本通常记录脚本的功能，这样其他开发人员就可以了解您的脚本。不过，您也可以使用注释来在调试时使部分脚本失活。作为一种良好的习惯，每次都应添加一些注释来解释您的脚本。

  • 在“动作”面板的“脚本”窗格中，将插入点置于代码行的开始处，并键入 //Initialize document to hide screen movie clip。按下 Enter 或 Return 键。

    “脚本”窗格中的文本将显示如下：

    //Initialize document to hide screen movie clip。
this.screen_mc._visible = false;

注意：如果有多行注释文本，则可以在注释开头使用 /* 代替双斜杠，使用 */ 标记注释结尾。


为按钮编写函数

动作脚本中的命令称作函数。函数是一种一次编写后可在文档中反复使用以执行某项任务的脚本。您将编写一个具有以下功能的函数：当用户松开鼠标按钮后使 screen_mc 影片剪辑出现 (visible = true)。

  1. 在“动作”面板的“脚本”窗格中，在最后一行代码后面单击，然后按 Enter 或 Return 键两次，并键入 //function to show animation。
  2. 按下 Enter 或 Return 键，并在“动作”窗格的顶部单击“插入目标路径”。从分层结构树中选择 onButton_btn，然后单击“确定”。
  3. 在“脚本”窗格中，键入句点 (.)，并从出现的代码提示列表中双击 onRelease。
  4. 在“脚本”窗格中，按下空格键并键入以下内容：

    = function(){

    您刚才完成的代码行应如下所示：

    this.onButton_btn.onRelease = function(){

    您已经知道了如何在“插入目标路径”对话框中选择对象。现在，请将实例名称直接输入“脚本”窗格。

  5. 按 Enter 或 Return 键并键入以下内容：

    screen_mc._visible = true;

  6. 按下 Enter 或 Return 键并键入 }; 来指定语句的结束。

    函数应如以下所示：

    //function to show animation
this.onButton_btn.onRelease = function(){
  screen_mc._visible = true;
};


复制和修改按钮函数

您刚才创建了这样一个函数：它会在用户单击鼠标按键然后松开时，将影片剪辑的 visible 属性设置为 true。您可能已经猜到隐藏 screen_mc 影片剪辑的函数的创建方法：当用户单击“关”按钮时，将影片剪辑的 _visible 属性设置为 false。现在，您就可以创建该函数。

  1. 在“脚本”窗格中，选择您刚才键入的整个函数，包括注释、大括号和分号。像往常那样使用 Control+C (Windows) 或 Command+C (Macintosh) 组合键复制文本。
  2. 在“脚本”窗格中，将插入点放置在最后一行代码的后面。然后按 Enter 或 Return 键两次，并像通常一样使用 Control+V (Windows) 或 Command+V (Macintosh) 组合键粘贴文本。
  3. 在复制的函数中，将 onButton_btn 中的文本更改为 offButton_btn。

    记住，先前您曾将 offButton_btn 这一实例名称指定给了一个实例。

  4. 在复制的函数中，将 screen_mc 影片剪辑的 visible 属性从 true 更改为 false。
  5. 在复制的函数中，将斜杠后面的注释文本更改为 function to hide animation。

    您的整个脚本应如以下所示：

    //Initialize document to hide screen movie clip。
this.screen_mc._visible = false;

//function to show animation
this.onButton_btn.onRelease = function(){
  screen_mc._visible = true;
};

//function to hide animation
this.offButton_btn.onRelease = function(){
  screen_mc._visible = false;
};


检查语法和测试应用程序

正如您在本课的前面部分所了解的那样，动作脚本要依靠正确的语法来保证正确的执行。Flash 为您测试语法提供了各种方式。

  1. 要检查语法，请执行以下操作之一：
    • 单击“动作”面板标题栏右上角的选项菜单，然后选择“检查语法”。
    • 单击“动作”面板顶部的“检查语法”按钮。

    如果语法正确，会显示一条消息表明该脚本没有任何错误。

    如果语法不正确，会显示一条消息，告诉您脚本包含错误；此时会打开“输出”面板，显示有关该错误的信息。

  2. 单击“确定”以关闭语法消息。
  3. 当您确认动作脚本不含语法错误之后，请保存文档并选择“控制”>“测试影片”。

    当 SWF 文件出现时，“全球定位系统”屏幕中不应出现动画，因为其初始 visible 属性被设置为 false。当您单击并松开顶部的绿色按钮时，即会调用将影片剪辑的 visible 属性设置为 true 的函数。此时会播放动画吗？最后，单击红色的“关闭”按钮来查看动画的 visible 属性是否又变成 false。

    在整个创作过程中，您可以随时测试 SWF 内容以确保它能够正常播放。


小结

祝贺您学完了有关使用动作脚本来撰写脚本的一些基础知识。您用很短的时间学会了如何完成以下任务：

  • 按照推荐的方法来命名实例
  • 初始化文档
  • 应用动作脚本语法
  • 定位动作脚本参考文档
  • 向动作脚本添加注释
  • 编写函数
  • 复制和修改函数
  • 检查语法和测试应用程序

要了解有关动作脚本的更多知识，请学习动作脚本课程创建应用程序。


概述

用户使用您在本课中创建的应用程序可以查看挑选出的产品的成本。查看后可以使用一个“计算”按钮来计算总成本。您将通过创建该应用程序来学习如何完成以下任务：

  • 复制输入文本字段和动态文本字段
  • 为文本字段指定实例名称
  • 添加 Button 组件
  • 声明变量和值
  • 为文本字段指定值
  • 编写函数
  • 为组件编写事件处理函数


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行以下其中一项操作：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 calculator_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\QuickTasks\start_files 并双击 calculator_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/QuickTasks/start_files 并双击 calculator_start.fla。

    注意：QuickTasks\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    注意：在完成本课程中的任务时，切记要经常保存您的工作。

  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。

    该表单已在 QTY 列中包括了一个输入文本字段，在 Price 列中包括了一个动态文本字段。您将复制 Shocks 行和 Cover 行的文本字段。


复制输入文本字段和动态文本字段

您将使用输入文本字段来创建表单。

  1. 单击供用户输入 CD 播放器数量的输入文本字段。按住 Alt 键，将字段的副本向下拖到 Shocks QTY 区域。

  2. 按住 Alt 键并单击刚才拖动的输入文本字段，然后将字段的新副本拖到 Cover QTY 区域。
  3. 按住 Alt 键并单击 CD 播放器价格的动态文本字段，然后将字段副本拖到 Shocks 价格区域。
  4. 按住 Alt 键并单击刚才拖动的字段，然后将该副本拖到 Cover 价格区域。


命名文本字段

在为动作脚本中的文本字段指定值之前，您首先需要在属性检查器中向每个文本字段提供一个实例名称。通过为实例名称附加 TXT 后缀，您可将对象标识为文本对象。

  1. 单击 QTY 列顶部的输入文本字段。在属性检查器（“窗口”>“属性”）的“实例名称”文本框中，键入 qty1_txt。
  2. 按照上面的步骤，分别将中部和底部的输入文本字段命名为 qty2_txt 和 qty3_txt。
  3. 单击 Price 列顶部的动态文本字段。在属性检查器的“实例名称”文本框中，键入 price1_txt。
  4. 按照上面使用的步骤，分别将列中部和底部的文本字段命名为 price2_txt 和 price3_txt。


添加和命名 Button 组件

组件是一些影片剪辑，您可通过它们轻松地将高级功能添加到文档中而无须了解高级动作脚本。您将使用 Button 组件来创建计算总价的“计算”按钮。因为所用的组件基于动作脚本 2.0，所以您需要先配置“发布设置”对话框以确保 Flash 内容能正常播放。

  1. 选择“文件”>“发布设置”。
  2. 在“发布设置”对话框的“Flash”选项卡上，如果尚未选定“动作脚本版本”弹出菜单中的“动作脚本 2.0”，请将其选定。
  3. 在时间轴中，单击“组件”层以选中它。
  4. 从“组件”面板（“窗口”>“开发面板”>“组件”）中，将 Button 组件拖到舞台中，并放在“计算”辅助线上。
  5. 在属性检查器的“参数”选项卡上，选中 Button 组件，单击“标签”行上的 Button 文本，并键入计算。然后按 Enter 或 Return 键。

    在“标签”文本框中键入的文本就是在组件上显示的文本。

  6. 在“实例名称”文本框中，输入 calculate 以便为该按钮提供一个实例名称。


声明价格的变量和值

要使您的应用程序能够对所选部件的数量与部件的价格进行乘法运算，您需要为动作脚本中的每个部件定义变量。变量的值就是部件的成本。

  1. 在时间轴中，单击“动作”层的第 1 帧，打开“动作”面板（“窗口”>“开发面板”>“动作”）。
  2. 在“脚本”窗格中，键入 //declare variables and values for car part prices。

    双斜杠 (//) 表示后面跟随的文本是注释。作为一种好习惯，每次都应添加注释来为脚本提供说明。

    注意：在执行本课程的步骤时，您可能希望关闭代码提示（一种提示正确的动作脚本语法的工具提示）。如果是这样的话，可以单击“动作”面板右上角中的选项菜单来关闭代码提示。选择“首选参数”，然后取消选择“动作脚本”选项卡上的“代码提示”。

  3. 按下 Enter 或 Return 键并键入以下内容以显示每个部件的成本：
    var priceCD = 320;
var priceShocks = 150;
var priceCover = 125;


为输入文本字段指定值

您将为输入文本字段指定值。当编写用于对数量和成本值进行乘法运算的动作脚本时，将会用到这些值。

  1. 在“脚本”窗格中，将插入点放在内容为 125; 的文本后面，按 Enter 或 Return 键两次并键入注释 //set initial values for the quantity text fields。
  2. 按 Enter 或 Return 键，并键入以下内容：
    qty1_txt.text = 0;

    qty1_txt 是您为 QTY 列下的第一个输入文本字段指定的实例名称。.text 是一个定义文本字段中的初始值的属性，您指定的值是 0。

  3. 按 Enter 或 Return 键并键入以下两行，以便将其他两个 QTY 字段的值设置为 0：
    qty2_txt.text = 0;
qty3_txt.text = 0;

    完成上述操作后，动作脚本应如下所示：

    //set initial values for the quantity text fields
qty1_txt.text = 0;
qty2_txt.text = 0;
qty3_txt.text = 0;


编写函数

函数是一种可反复使用以执行特定任务的脚本。您可以给函数传递参数，而该函数可以返回一个值。在本课中，每次用户单击“计算”按钮时，都会运行一个函数以对输入文本字段中的数据进行乘法运算，并在动态文本字段中返回值。现在，您将编写该函数。

  1. 在“脚本”窗格中，将插入点放在内容为 qty3_txt.text = 0; 的动作脚本之后，按 Enter 或 Return 键两次，然后键入以下注释：
    //calculate quantity times price
  2. 按 Return 或 Enter 键，并键入以下内容来创建在播放头进入第 1 帧（您将在该帧上附加脚本）时运行的函数：
    this.onEnterFrame = function (){
  3. 键入以下动作脚本，指定函数应如何为 airplane 的输入文本字段中的值进行乘法运算：
    price1_txt.text = Number (qty1_txt.text)*Number (priceCD);

    price1_txt 是您为舞台中最上面的价格输入文本字段指定的实例名称。

    .text 定义应出现在该文本字段中的文本，它是部件数与部件成本的乘积。部件成本为 $320，即您为 priceCD 变量设置的值。

  4. 按下 Enter 或 Return 键并键入以下两行：
    price2_txt.text = Number (qty2_txt.text)*Number (priceShocks);
price3_txt.text = Number (qty3_txt.text)*Number (priceCover);
};

    您的函数应如以下所示：

    //calculate quantity times price
this.onEnterFrame = function (){
  price1_txt.text = Number (qty1_txt.text)*Number (priceCD);
  price2_txt.text = Number (qty2_txt.text)*Number (priceShocks);
  price3_txt.text = Number (qty3_txt.text)*Number (priceCover);
};


为组件编写事件处理函数

为使 SWF 文件对鼠标单击等事件做出响应，您可以使用事件处理函数（与特定对象和事件关联的动作脚本）。您将使用 Button 组件的 on() 事件处理函数，它在用户单击该按钮时计算总价。

有关事件处理函数的更多信息，请参阅“动作脚本参考指南帮助”中的“处理事件”。

  1. 在舞台上，单击 Button 组件并转到“动作”面板。

    “动作”面板底部标记为“计算”的选项卡指示您将脚本直接附加到选定对象而不是帧上。

  2. 在“脚本”窗格中，键入以下注释：
    //Calculates total price
  3. 在注释后面，按 Return 或 Enter 键并键入以下内容来为您放在舞台上的 PushButton 组件创建处理函数：
    on(click) {

    您只键入了 on() 事件处理函数的开头。(click) 指定在用户单击“计算”按钮时应该发生的事件。

    Button 组件有自己的时间轴。在时间轴层次结构中，该组件时间轴是主时间轴的子项。要在此脚本中将 Button 组件时间轴的元素指向主时间轴，可以使用代码 with (_parent)。

  4. 将插入点放在您刚才键入的行的末尾，按 Enter 或 Return 键并键入以下内容：
    with(_parent){
  5. 按 Enter 或 Return 键，并键入以下内容完成处理函数：
    priceTotal_txt.text = Number (price1_txt.text) + Number (price2_txt.text) + Number (price3_txt.text);
  }
};

    完成上述操作后，您的脚本应如下所示：

    on(click) {
  with(_parent){
  priceTotal_txt.text = Number (price1_txt.text) + Number (price2_txt.text) + Number (price3_txt.text);
  }
}

您键入的事件处理函数指定了以下内容：priceTotal_txt 字段中的文本应为 Price1_txt、Price2_txt 与 Price3_txt 三字段中的值之和。


测试您的应用程序

下面将测试应用程序以确保它按照预期方式执行。

  1. 保存文档，然后选择“控制”>“测试影片”。
  2. 在独立 Flash Player 中的影片测试版本中，在 QTY 字段中键入数字，看 Price 字段中会显示什么。
  3. 单击“计算”按钮来查看所有部件的总价。


小结

祝贺您学会了如何创建应用程序。在几分钟内，您学习了如何完成以下任务：

  • 复制输入文本字段和动态文本字段
  • 为文本字段指定实例名称
  • 添加 Button 组件
  • 声明变量和值
  • 为文本字段指定值
  • 编写函数
  • 为组件编写事件处理函数

要了解更多有关动作脚本的知识，请学习“帮助”面板的“如何”选项卡上“基本动作脚本”系列中的课程。

上一页


概述

在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中，图层类似于堆叠在一起的透明纤维纸。在不包含内容的图层区域中，可以看到下面图层中的内容。图层有助于您组织文档中的内容。例如，您可以将背景画放置在一个图层上，而将导航按钮放置在另一个图层上。此外，您可以在一个图层上创建和编辑对象，而不会影响另一个图层中的对象。在本课中，您将通过完成以下任务来了解有关图层的知识：

  • 选择图层
  • 隐藏和显示图层
  • 锁定图层
  • 添加并命名图层
  • 更改图层的顺序
  • 以文件夹的形式组织图层
  • 添加蒙版图层
  • 添加引导层
  • 删除图层


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，在 Flash 中选择“文件”>“打开”。然后浏览到以下其中一个文件：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Program Files\Macromedia\Flash MX 2004\<语言>\First Run\HelpPanel\HowDoI\BasicFlash\start_files 并双击 layers_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Program Files\Macromedia\Flash MX 2004\<语言>\First Run\HelpPanel\HowDoI\BasicFlash\start_files 并双击 layers_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 layers_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。
  4. 在舞台上的“查看”弹出菜单中（时间轴的右上侧），选择“显示帧”，以便能够同时看到舞台和工作区。
  5. 如有必要，请向下拖动时间轴（“窗口”>“时间轴”）的下边缘以放大“时间轴”视图。

    您还可以使用滚动条在各图层之间滚动查看。


选择图层

您在活动图层上放置对象、添加文本和图形以及进行编辑。要使图层成为活动图层，请在时间轴中选中该图层，或在该图层中选中某个舞台对象。活动图层会在时间轴中突出显示，铅笔图标表示可以对它进行编辑。

  1. 在工具栏中，单击“选择”工具。
  2. 在舞台上，选择红色的汽车。

    时间轴中的铅笔图标表示“红色汽车”图层现在是活动图层。

  3. 在时间轴中选中“文本”图层。

    红色汽车上方和下方的文本块在舞台上均被选定，因为它们都位于“文本”图层中。


隐藏和显示图层

您可以隐藏图层以便查看其他图层上的内容。隐藏图层时，您可以选择同时隐藏文档中的所有图层，也可以选择分别隐藏各个图层。

  1. 单击图层上方的眼睛图标，以使“眼睛”列中出现红色的 X。

    所有内容都从舞台上消失。

  2. 依次单击该列中的每个红色 X，并观察该图层中的内容在舞台上再次出现。

    使用每个图层名称右侧的控件可以显示或隐藏图层中的内容。

    注意：要看到所有的图层，您可能需要使用滚动条。


锁定图层

在图层上的内容已符合您的要求后，您可以锁定该图层，以避免内容被您或处理该文档的其他人意外地更改。

  1. 在时间轴中，单击“锁定”列下面、“徽标”图层旁边的黑点。

    这时会出现一个挂锁图标，表明该图层现在已被锁定。

  2. 使用“选择”工具，尝试拖动出现在舞台顶部的徽标。

    您无法拖动该徽标，因为它所在的图层已被锁定。

    注意：如果您意外地拖动了未锁定的图层中的某些内容，按 Control+Z (Windows) 或 Command+Z (Macintosh) 组合键可以撤消更改。


添加并命名图层

您现在将添加图层、命名该图层，然后在该图层中添加图形元件。

  1. 在时间轴中，单击“汽车”图层。
  2. 单击时间轴下面的“插入图层”按钮。

    新的图层会出现在“汽车”图层的上方，并成为活动图层。

  3. 双击该图层的名称，键入 Background 作为该图层的新名称，然后按 Enter (Windows) 或 Return (Macintosh) 键。

    作为一种最好的习惯，应始终命名每个图层，并为图层指定一个有意义的名称，以指示该图层上的内容的类型。

  4. 在“库”面板（“窗口”>“库”）中，选择背景图形元件，并将它拖动到舞台上。

    由于“背景”图层位于除蒙版图层以外的所有图层之上，因此该图层中的对象出现在较低图层中的对象之上。


更改图层的顺序

很显然，您不希望背景覆盖舞台上的其他对象。通常，背景图层是时间轴上的最低一层。需要移动刚刚创建的“背景”图层。

  1. 在时间轴中，将“背景”图层从最上面的位置拖动到最下面的位置。

    现在，舞台上的所有对象都出现在背景之上。

  2. 保持“背景”图层仍然处于选中状态，在属性检查器的 X 文本框中输入 0，在 Y 文本框中输入 72。按 Enter 或 Return 键在舞台上精确定位“背景”图层。


以文件夹的形式组织图层

您可以创建图层文件夹以便组织图层并降低时间轴的混乱程度。时间轴包含两个带有导航对象的图层：一个图层用于导航按钮，另一个图层用于导航图画。需要为这两个图层创建一个名为 Navigation 的图层文件夹。

  1. 在时间轴中，选择“按钮”图层。
  2. 单击位于图层名称下面的“插入图层文件夹”按钮。

    注意：如果属性检查器显示帧的属性而不是影片剪辑的属性，请单击舞台上的 Background 影片剪辑。

  3. 双击图层文件夹名称并将该文件夹重新命名为 Navigation。
  4. 将 Navbar 图层和“按钮”图层拖动到 Navigation 文件夹中。

    两个图层缩进显示，以指示它们位于该文件夹内。

您可以单击展开箭头来展开和折叠文件夹以及包括的图层。


添加蒙版图层

使用蒙版图层提供了一种有选择地显示图层的某些部分或它下面的图层的简单方法。应用蒙版需要使一个图层成为蒙版图层，而使它下面的图层成为被遮盖的图层。

您将使用舞台上的矩形来遮盖道路图形和动画的一部分，以使动画更适合于舞台。

  1. 在舞台上，在“选择”工具处于选中状态的情况下，单击道路下面的矩形。
  2. 将此图形一直向上拖动，并将图形的左边缘与道路的左边缘对齐。
  3. 右键单击 (Windows) 或按住 Control 键单击 (Macintosh) 时间轴中的蒙版图层，并从上下文菜单中选择“蒙版”。

    该图层会转换为蒙版图层，并由一个蓝色的菱形图标表示。紧挨着该图层下面的图层链接到蒙版图层。被遮罩图层的名称会缩进，其图标会更改为蓝色的图层图标。

  4. 在时间轴中，将“道路” 图层拖动到蒙版图层，并将它放置在“汽车”图层的下面。

    蒙版图层以及它遮盖的图层将自动被锁定。

  5. 要查看蒙版效果，请选择“控制”>“测试影片”。
  6. 查看完蒙版效果后，关闭 SWF 文件窗口，返回文档。


添加引导层

到目前为止，您已了解了有关常规图层和蒙版图层的信息。第三种类型的图层是引导层。使用引导层可以存放您不希望在发布或导出的文件中出现的内容。例如，您可以将为使用该文档的其他人提供的说明放置在引导层上。在 Flash 中学习课程的过程中，您将注意到许多课程 FLA 文件的引导层中都包含占位符，这些占位符用来指明放置舞台对象的位置。现在，您将创建引导层。

  1. 在时间轴中，选择“背景”图层，然后单击“插入图层”按钮以创建新图层。
  2. 将新图层命名为“备注”，然后按 Enter 或 Return 键。
  3. 右键单击 (Windows) 或按住 Control 键单击 (Macintosh)“备注”图层，并从上下文菜单中选择“引导层”。

    图层名称旁边的图标指示该图层是引导层。

  4. 保持“备注”图层仍然处于选定状态，单击工具栏中的“文本”工具。然后，在汽车和道路上面的舞台区域中，输入“Production note:Animation with no stop (); actions loop by default”。
  5. 保存文档，然后选择“控制”>“测试影片”。

    添加到引导层中的内容不会出现在 SWF 文件窗口中。

  6. 查看完 SWF 文件后，关闭窗口以返回文档。


删除图层

由于您的文档中并不真正需要引导图层，因此您要删除它。

  • 在时间轴中，选定“备注”图层，单击“删除图层”按钮。


小结

祝贺您学会了如何处理 Flash 中的图层。在几分钟内，您学习了如何完成以下任务：

  • 选择图层
  • 隐藏和显示图层
  • 锁定图层
  • 添加并命名图层
  • 更改图层的顺序
  • 以文件夹的形式组织图层
  • 添加蒙版图层
  • 添加引导层
  • 删除图层

通过学习其他课程，可了解更多有关 Flash 的知识。


概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了许多在舞台上精确定位对象的方法，您可以选择自己喜欢的方法。在本课中，您将使用布局工具来创建用户界面。具体地说，您将完成以下任务：

  • 查看工作区标尺
  • 使用辅助线对齐对象
  • 更改舞台大小
  • 调整对象大小使之与舞台大小匹配
  • 使用对齐辅助线对齐对象
  • 使用“对齐”面板对齐对象
  • 使对象彼此贴紧
  • 使用属性检查器对齐对象
  • 使用网格和箭头键对齐对象

虽然本课程针对特定类型的对象使用特定的工具（例如，使用对齐辅助线对齐文本），但是并不存在关于对齐特定类型的对象的最佳方法的严格规则。在您自己的项目中，可以根据需要选择任何适用的工具。


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，在 Flash 中选择“文件”>“打开”。然后执行以下操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 layout_tools_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 layout_tools_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 layout_tools_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。
  4. 在舞台上的“查看”弹出菜单中（时间轴的右上侧），选择“显示帧”以同时查看舞台和工作区。
  5. 在工作区中远离舞台上对象的区域单击，以便不选择任何对象。


使用辅助线对齐对象

您可以使用标尺和辅助线来精确定位或对齐文档中的对象。您将添加辅助线来帮助您将文本块居中。

  1. 选择“查看”>“标尺”。

    水平和垂直标尺分别出现在舞台的上方和左侧。

  2. 单击水平标尺中的任何位置并向下拖动，直到到达 250 像素的水平位置。
  3. 单击垂直标尺中的任何位置并向左拖动，直到到达 375 像素垂直位置。
  4. 在工具栏中，单击“选择”工具。
  5. 在舞台上，单击文本块的左上角并将它拖动到两条辅助线的交叉点。

    当所选内容与辅助线贴紧时将出现一个小圆圈。

  6. 如果要删除辅助线，请选择“查看”>“辅助线”>“清除引导线”。


更改舞台大小

文档的舞台大小为 750 像素 x 500 像素。您将把舞台大小更改为 640 x 480，这是可以支持各种屏幕大小和分辨率的常用大小。

  1. 单击工作区中的空白区域，以取消选择文本块。
  2. 在属性检查器中，您将看到整个文档的属性。单击“大小”按钮。
  3. 在“文档属性”对话框中，输入 640 作为宽度，输入 480 作为高度，然后单击“确定”。

    文档大小会发生变化，但舞台上的对象仍然保持原来的大小。


调整对象大小使之与舞台大小匹配

如果您更改了舞台大小，舞台上的图画就会偏离舞台进入工作区。您可以很方便地调整图画大小使之再次与舞台大小匹配。

  1. 在舞台上，单击灰色山脉，将其选中。按住 Shift 键单击舞台顶部的蓝色旗帜，将其添加到选择内容中。
  2. 打开“对齐”面板（“窗口”>“设计面板”>“对齐”）。

    在“对齐”面板中将会出现工具提示，以显示对齐选项的名称。

  3. 在“对齐”面板中，选择“相对于舞台”；然后，在“匹配大小”下，选择“匹配宽度”。所选图画的大小将相应地变化，以匹配舞台的宽度。
  4. 仍然在“对齐”面板中，单击“左对齐”。

    图画将与舞台左边缘对齐。

  5. 在时间轴中，单击“斜面”图层，将其选中。
  6. 从“库”面板中（“窗口”>“库”），将斜角图形拖动到舞台底部的任何区域。
  7. 在“对齐”面板中，确认“相对于舞台”仍然处于选定状态，并单击“匹配宽度”。
  8. 单击“左对齐”和“底对齐”。

    斜角将与舞台底边缘对齐。

  9. 关闭“库”面板和“对齐”面板。


指定贴紧对齐设置

通过使对象将自身附着于其他对象和对齐工具，对齐功能提供了在舞台上精确放置对象的方式。您将指定贴紧对齐设置以显示水平和垂直辅助线，它们将帮助您在舞台上放置图画。

  1. 选择“查看”>“对齐”>“贴紧对齐”来设置该选项（如果尚未选定）。
  2. 选择“查看”>“对齐”>“编辑贴紧对齐”。
  3. 在“贴紧对齐”对话框的“影片边框”文本框中，输入 30 px（像素），使对象与 30 像素舞台边框贴紧。
  4. 确认 10 像素出现在水平和垂直“贴紧对齐容差”文本框中。

    贴紧对齐容差确定一个对象与另一个对象或对齐工具的距离必须在多大范围内才能贴紧对齐。

  5. 单击“确定”。


使用对齐辅助线对齐对象

您已指定贴紧对齐设置，现在，您将使用指定的贴紧对齐设置来帮助您在舞台上放置对象。

  1. 在工具栏中，单击“选择”工具。
  2. 在时间轴中，选择“汽车”图层。
  3. 从“库”面板中（“窗口”>“库”），拖动汽车图形并将其放置在舞台上正文文本旁边的灰色区域中的任何位置。
  4. 再次拖动汽车实例，使贴紧对齐辅助线出现。将汽车移近文文本，根据需要上下移动，直到出现居中对齐辅助线，这表示汽车相对于文本正文居中。

  5. 在汽车相对于正文文本居中的情况下（居中对齐辅助线会继续显示），将汽车沿着直线向舞台左侧拖动，直到辅助线贴紧您先前创建的 30 像素边框。

    您已使汽车与文本对齐，并贴紧对齐边框。


使用“对齐”面板对齐对象

先前，您使用了“对齐”面板使对象与舞台大小匹配。现在，您将使用“对齐”面板使每个对象相对于彼此居中，然后使每个对象相对于舞台居中。

  1. 使用“选择”工具，单击舞台上内容为“Introducing the World First Hybrid 4WD”的文本。
  2. 按 Shift 键并单击标题文本的第二行“2004 Trio QZ”，将其添加到选择内容中。
  3. 在“对齐”面板中（“窗口”>“设计面板”>“对齐”），取消选择“相对于舞台”并选择“水平中齐”。

    您已使这两行相对于其水平轴居中。接下来，您将组合标题文本，使两行相对于舞台居中。

  4. 使两行文本仍然保持选定状态，并选择“修改”>“组合”。
  5. 在“对齐”面板中，选择“相对于舞台”，然后再次选择“水平中齐”。

    选定“相对于舞台”后，对象将相对于舞台的水平中心对齐。

  6. 关闭“对齐”面板。


使对象彼此贴紧

您可以使舞台上的对象与舞台上的其他对象彼此贴紧，从而设置对象彼此对齐。您将使用“贴紧对象”功能，使导航栏与舞台顶部的旗帜对齐。

  1. 选择“查看”>“对齐”。在子菜单中，选择“贴紧对象”（如果尚未选定）。
  2. 在时间轴中，选择“导航”图层。
  3. 从“库”面板中，将导航图形拖动到舞台中蓝色旗帜下面的任何区域中，然后释放 nav 图形。

  4. 单击 nav 图形的左上角，然后拖动它，使圆形的贴紧指示器出现。
  5. 在看到贴紧指示器后，拖动导航栏的左上角，使之与蓝色旗帜左下角位置贴紧。


使用属性检查器对齐对象

使用属性检查器可以从舞台对象的注册点使对象在 x 和 y 舞台轴上精确对齐。注册点是元件对齐或旋转的基准点。您将使用属性检查器来对齐徽标。

  1. 在时间轴中，选择“顶端”图层。
  2. 从“库”面板中（“窗口”>“库”），将徽标拖动到舞台上的空白区域中。

  3. 在属性检查器中，保持徽标仍然处于选中状态，在 X 文本框中输入 20 ，在 Y 文本框中输入 8。按下 Enter 或 Return 键。

    徽标会移动到新的 x 和 y 舞台值。

    注意：您可以在“信息”面板（“窗口”>“设计面板”>“信息”）中查看和更改对象的注册点。网格中的黑色正方形表示注册点。要更改它，应单击网格中的另一个正方形。


使用网格和箭头键对齐对象

您可以使用网格来帮助您在舞台上放置对象。

  1. 选择“查看”>“网格”>“显示网格”。

    当您测试或发布文档时网格不出现。

    注意：如果要使对象与水平和垂直网络线对齐，还应选择“对齐网格”（“查看”>“对齐”>“对齐网格”）。在本课中，您不使对象与网格对齐。

  2. 在舞台上，选择您先前组合在一起的标题文本。
  3. 使用键盘上的向上箭头键轻轻地推动文本，直到标题文本中的第一行位于水平网格线上。请务必在标题文本和导航栏之间留出间隙。

    注意：您还可以使用向左箭头、向下箭头和向右箭头键沿着箭头方向在舞台上轻轻地推动对象。


小结

祝贺您学会了使用布局工具创建用户界面。在几分钟内，您学习了如何完成以下任务：

  • 查看工作区标尺
  • 使用辅助线对齐对象
  • 更改舞台大小
  • 调整对象大小使之与舞台大小匹配
  • 使用对齐辅助线对齐对象
  • 使对象彼此贴紧
  • 使用属性检查器对齐对象
  • 使用网格和箭头键对齐对象

有关 Flash 中的设计主题的详细信息，请学习“Flash 基础”系列课程中的另一课。


概述

在 Flash 中绘图时，创建的是矢量图形，它是直线、曲线、颜色和位置的数学表示。矢量图形是与分辨率无关的；您可以将图形重新调整到任意大小，或以任何分辨率显示它，而不会影响其清晰度。另外，与下载类似的位图图像相比，下载矢量图形的速度比较快。在本课中，您将通过完成以下任务来创建螺钉和徽标的矢量图形：

  • 创建多边形
  • 旋转形状
  • 在形状内裁剪出一个形状
  • 转换艺术作品
  • 复制笔触
  • 使用“直线”工具绘制直线
  • 选择并添加填充色
  • 组合形状
  • 使用“钢笔”工具创建徽标


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行下列操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 drawing_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\ Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 drawing_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 drawing_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

    Flash 在创作环境中打开。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    在完成本课程中的任务时，切记要经常保存您的工作。

  3. 选择“窗口”>“面板设置”>“训练布局”以配置工作区。


选择形状工具

形状工具提供一种创建图形（例如，椭圆、矩形、多边形和星形）的简单方法。您将使用“多边星形”工具来创建多边形。

  1. 在时间轴中，选择“内容”图层。
  2. 在工具箱中，选择“多边星形”工具。您可能需要单击“矩形”工具中的右下控件才能看到显示“多边星形”工具的菜单。

  3. 单击舞台旁边灰色工作区中的任何位置以显示您将创建的形状的属性。在属性检查器（“窗口”>“属性”）中，确认笔触颜色选定为黑色，笔触高度选定为 1 像素，笔触样式选定为“纯色”。

    笔触是描画形状的线条。

  4. 单击“填充颜色”控件并选择十六进制值为 #0000FF 的蓝色。

    填充颜色会出现在形状中的笔触内。


选择选项来创建多边形

您可以使用“多边星形”工具提供的选项来指定多边形中的边数；您还可以使用该工具的选项来创建星形。您将指定多边形有六条边。

  1. 在属性检查器中，在“多边星形”工具仍然处于选定状态时，单击“选项”。
  2. 在“工具设置”对话框中，确认“多边形”出现在“样式”弹出菜单中，并在“边数”文本框中输入 6。单击“确定”。


绘制多边形

Shift 键可帮助您沿着垂直和水平线来约束形状。

  • 按 Shift 键并将鼠标拖动到舞台的左侧（避开 “辅助线”图层中的数字）以绘制六边形，如下图所示：


旋转形状

创建形状后，您可以使用“变形”面板来指定形状旋转的精确度数。

  1. 在工具栏中，单击“选择”工具。在舞台上，在六边形内部双击，以同时选择笔触和填充。

    在形状内单击一次将只选择填充。

  2. 选择“窗口”>“设计面板”>“变形”。在“变形”对话框中，确认选中了“旋转”，然后在“旋转”文本框中输入 -15 以便将形状沿顺时针方向旋转 15 度。按下 Enter 或 Return 键。


使用裁剪功能

当在同一图层中的一个形状上创建另一个形状时，这两个形状是未组合的，上面的形状会“裁剪掉”下面形状所占的区域。您将在六边形内创建圆圈，然后裁剪该圆圈。

  1. 选择“查看”>“对齐”并选择“对齐对象”（如果尚未选定）。
  2. 在工具栏中，单击“椭圆”工具。在六边形内绘制圆圈时，按住 Shift 键约束形状（将六边形想象成时钟的形状，并从 10:00 边角点开始绘制圆，一直拖动到 4:00 边角点），如下图所示。

    注意：如果在绘制圆圈的过程中出错，按 Control+Z (Windows) 或 Command+Z (Macintosh) 组合键可以撤消圆圈。

  3. 在工具栏中，单击“选择”工具。在舞台上，在圆圈内部单击并按 Backspace 键或 Delete 键。


转变所绘图形的形状

使用“任意变形”工具，可以缩放、旋转、压缩、伸展或倾斜线条和形状。您将使用“任意变形”工具来压缩所绘制的图形。

  1. 在工具栏中，选择“任意变形”工具。双击舞台上的六边形，以同时选择笔触和填充。
  2. 将“任意变形”工具顶部中间的控制块向下拖动，使六边形转变为下列形状：


复制笔触

现在，您将选择并复制笔触以创建螺钉的下边缘。

  1. 使用“选择”工具，单击舞台或工作区上的任何位置（避开对象）以取消选择该形状。
  2. 按住 Shift 键并单击舞台上该形状的三条边（组成六边形的底部），将其选中，如下图所示：

  3. 按 Shift + Alt 组合键并稍稍向下拖动，以拖动三条边的副本，如下图所示：


使用“直线”工具绘图

使用“直线”工具，您可以沿任意方向绘制直线。

  • 在工具栏中，选择“直线”工具。在舞台上，从六边形到您向下拖动的笔触副本绘制四条垂直线，如下图所示：


选择并添加另一种填充色

您可以使用“油漆桶”工具来更改现有颜色并填充被线条包围的空白区域。您将使用“油漆桶”工具将填充色添加到您所绘图形的空白区域中。

  1. 在工具栏中，选择“油漆桶”工具。在“颜色”区域中，单击“填充颜色”控件并选择十六进制值为 #3366FF 的蓝色。
  2. 在舞台上，在线条内部单击以便将选定的颜色添加到空白区域中。


组合形状

您可以像前面那样将形状的笔触和填充作为单独的实体来处理，也可以将笔触与填充组合起来，以便将形状作为一个图形来处理。现在我们来操作后一种情况。

  1. 使用“选择”工具，在形状周围拖动以便同时选择笔触和填充。选择“修改”>“组合”。
  2. 单击填充区域，并根据需要将形状在舞台左侧四周移动以确定其位置。


使用“钢笔”工具创建徽标

“钢笔”工具提供了一种绘制精确的直线或曲线线段的方法。通过单击来创建直线线段上的点，通过单击并拖动来创建曲线线段上的点。您可以通过调整线条上的点来调整线段。您将使用“钢笔”工具来创建徽标。

  1. 在工具栏中，选择“钢笔”工具。
  2. 单击数字 1 旁边的点，然后单击数字 2 旁边的点以创建直线线段。

  3. 依次单击数字 3 和数字 4 旁边的点（就好像您在绘制点到点的图形），以创建组成徽标的直线线段。
  4. 要关闭路径，请将“钢笔”工具放置在第一个锚记点上（数字 1 旁边的点）。当位置正确时，钢笔笔尖旁边将出现一个小圆圈。单击以关闭路径。路径关闭后，它将用选定的填充色填充。

    默认情况下，选定的曲线点显示为空心圆圈，而选定的边角点显示为空心正方形。

  5. 使用“选择”工具，将指针在创建的徽标四周移动。

    当您将指针移动到边角点（您可以单击并拖动它以创建不同的角）时，指针会显示为以下形状：

    当指针移动到可以单击并拖动以创建不同曲线的曲线线段上时（徽标中没有曲线点），指针会显示为以下形状：


小结

祝贺您学会了如何使用 Flash 中的部分绘图工具。在几分钟内，您学习了如何完成以下任务：

  • 创建多边形
  • 旋转形状
  • 在形状内裁剪出一个形状
  • 转换艺术作品
  • 复制笔触
  • 使用“直线”工具绘制直线
  • 选择并添加填充色
  • 组合形状
  • 使用“钢笔”工具创建徽标

要了解更多有关在 Flash 创建图画的知识，请参阅“使用 Flash 帮助”中的“绘图”。


概述

元件是一种可重复使用的对象，而实例是元件在舞台上的一次具体使用。重复使用实例不会增加文件的大小，是使文档文件保持较小的策略中的一个很好的部分。元件还简化了文档的编辑；当编辑元件时，该元件的所有实例都相应地更新以反映编辑。元件的另一个好处是使用它们可以创建完善的交互性。

在本课中，您将使用元件和实例来完成以下任务：

  • 创建图形元件
  • 重制和修改实例
  • 创建影片剪辑元件
  • 通过添加特效来编辑元件


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行下列操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 symbols_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\ Configuration\HelpPanel\HowDoI\BasicFlash\start_files，然后双击 symbols_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 symbols_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

    该文档会在 Flash 创作环境中打开。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    在完成本课程中的任务时，切记要经常保存您的工作。

  3. 选择“窗口”>“面板设置”>“训练布局”以配置工作区。


关于创建元件

创建元件时，指定以下其中一个元件行为：

  • 图形
  • 影片剪辑
  • 按钮

在本课中，您将处理图形和影片剪辑元件。有关按钮元件的课程，请参阅给按钮添加动画和导航。


创建图形元件

图形元件很适用于静态图像的重复使用，或创建与主时间轴关联的动画。与影片剪辑或按钮元件不同，您不能为图形元件提供实例名称，也不能在动作脚本中引用图形元件。

您将选择舞台上的矢量图形并将它转换为图形元件。

  1. 在工具栏中，单击“选择”工具。
  2. 在舞台上，在汽车周围拖动，将其选中。

  3. 选择“修改”>“转换为元件”。
  4. 在“转换为元件”对话框中，输入 CarGraphic 作为名称并选择“图形”作为行为。
  5. 注册网格使用黑色的小正方形来指示注册点位于元件限制框内的什么位置。注册点是元件旋转时所围绕的轴，也是元件对齐时所沿的点。单击网格中的左上正方形选择注册点位置，然后单击“确定”。
  6. 舞台上的汽车现在是 CarGraphic 元件的实例。属性检查器显示图形元件实例的属性。

  7. 打开“库”面板（“窗口”>“库”）查看元件。

    您将在“库”面板中找到“CarGraphic”元件。Flash 将元件存储在库中。每个文档都有它自己的库，并且您可以在不同的 FLA 文件之间共享库。


重制和修改元件的实例

创建元件后，您可以在文档中重复使用它的实例。您可以修改单个实例的以下实例属性，而不会影响其他实例或原始元件：颜色、缩放比例、旋转、Alpha 透明度、亮度、色调、高度、宽度和位置。

如果稍后编辑元件，则该实例除了获得元件编辑效果外，还保留它修改后的属性。

您现在将重制汽车的实例，然后改变副本的色调。

  1. 在舞台上，选择汽车。按 Alt 键并将汽车向上拖动以创建另一个实例。

  2. 保持副本处于选中状态，从属性检查器的“颜色”下拉菜单中选择“色调”。
  3. 在 RGB 区域中，在“红色”弹出菜单中输入 0，在“绿色”弹出菜单中输入 0，在“蓝色”弹出菜单中输入 255。然后按 Enter 或 Return 键。

    重制的实例变为蓝色，但原始实例保持不变。


修改元件

通过双击元件的任何实例可以进入元件编辑模式。在元件编辑模式下进行的更改会影响该元件的所有实例。

  1. 执行以下其中一项操作可以进入元件编辑模式：
    • 在舞台上，双击汽车实例之一：
    • 在“库”面板中，双击 CarGraphic 元件。

    元件的名称会出现在场景 1 的旁边、工作区的顶部，这表明您处于指定元件的元件编辑模式下。

  2. 在工具栏中，选择“任意变形”工具，并在最上面的汽车周围拖动以选择整个汽车。

    在元件编辑模式下，该汽车为图形，您可以在元件内像对其他任何矢量图形一样对它进行操作。

  3. 将“任意变形”工具的中间右侧的大小调整控制块稍稍向右拖动以伸展该元件。

  4. 单击时间轴上面的场景 1，退出元件编辑模式。

    元件的两个实例均反映此变形。


创建影片剪辑元件

影片剪辑元件在许多方面都类似于文档内的文档。此元件类型自己有不依赖主时间轴的时间轴。您可以在其他影片剪辑和按钮内添加影片剪辑以创建嵌套的影片剪辑。您还可以使用属性检查器为影片剪辑的实例分配实例名称，然后在动作脚本中引用该实例名称。

您要将舞台上的轮胎转换为影片剪辑。

  1. 使用“选择”工具，单击舞台上的轮胎，将其选中，然后选择“修改”>“转换为元件”。
  2. 在“转换为元件”对话框中，输入 MCWheel 作为名称，并选择 MovieClip 作为行为。
  3. 这一次在注册网格中选择中心正方形作为注册点，因此影片剪辑的中心成为元件绕其旋转的轴。然后单击“确定”。

    舞台上的图像现在是库中 MCWheel 元件的实例。


为影片剪辑分配实例名称

为了在动作脚本中引用实例，并且作为一种通常的最好习惯，应始终为按钮和影片剪辑元件分配实例名称。（不能为图形元件分配实例名称。）

  • 在属性检查器中，保持 MCWheel 的实例在舞台上处于选定状态，在“实例名称”文本框中输入 wheel_mc。


将特效添加到影片剪辑中

您可以在元件编辑模式下在影片剪辑的时间轴内创建动画，该动画可以独立于主时间轴播放。您将在 MCWheel 元件中添加将导致该元件的所有实例旋转的特效。

  1. 使用“选择”工具，双击 wheel_mc 实例进入元件编辑模式。
  2. 右键单击 (Windows) 或按住 Control 键单击 (Macintosh) 该元件并选择“时间轴特效”>“变形/转换”>“变形”。
  3. 在“变形”对话框中的“特效持续时间”文本框中输入 60，以指定该特效跨时间轴中 60 帧。
  4. 在“旋转”文本框中，输入 1 并确认“旋转”文本框中填入的是 360。
  5. 单击“更新预览”来查看特效的预览，然后单击“确定”。

    特效跨越影片剪辑时间轴中的 60 帧。

  6. 单击时间轴上面的场景 1，退出元件编辑模式。
  7. 选择“控制”>“测试影片”来查看动画。


小结

祝贺您学会了有关元件和实例的知识。在几分钟内，您完成了以下任务：

  • 创建图形元件
  • 重制和修改实例
  • 创建影片剪辑元件
  • 通过添加特效来编辑元件

要了解有关 Flash 的更多知识，请学习“Flash 基础”系列课程中的其他课程。


概述

按钮是一种元件，它包含针对不同按钮状态（例如，当用户的鼠标指针放置在按钮上时或当用户单击按钮时）的特殊帧。如果对新的元件选择“按钮”行为，Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 将为按钮状态创建时间轴。您可以通过使用行为或通过编写动作脚本来给按钮添加导航。

在本课中，您将学习有关创建和修改按钮的知识，包括给按钮添加动画。具体地说，您将学习如何完成以下任务：

  • 根据组合的对象创建按钮
  • 命名按钮实例
  • 查看按钮的点击区域
  • 更改按钮的点击区域
  • 对齐按钮
  • 为按钮状态创建动画
  • 给按钮添加动作
  • 给按钮添加导航

如果您还不熟悉元件和实例，请先选择“帮助”>“如何”>“Flash 基础”>“创建元件和实例”，学习完那一课后再学习这一课。


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，在 Flash 中选择“文件”>“打开”。然后执行以下操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 buttons_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 buttons_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 buttons_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。
  4. 在舞台上的“查看”弹出菜单中（时间轴的右上侧），选择“显示帧”，以便能够同时看到舞台和工作区。
  5. 在工作区中远离舞台上对象的区域单击，以便不选择任何对象。


根据组合的对象创建按钮

您可以根据文本和图形（包括位图图像和组合对象）来创建按钮。在本课中，您要将徽标和一些文本转换为一个大型按钮。

  1. 在工具栏中，单击“选择”工具。在舞台上，选择组合的文本和徽标，然后选择“修改”>“转换为元件”。
  2. 在“转换为元件”对话框中，将元件命名为 BTNLogo，并选择“按钮”作为行为。
  3. 在注册网格中，确认左上角的正方形被选定为注册点，并单击“确定”。

    注册点是元件对齐和旋转的基准点。


命名按钮实例

作为一种最好的习惯，应命名舞台上元件的实例。动作脚本依赖实例名称来标识对象。

  • 在您创建的按钮仍然处于选定状态时，打开属性检查器（“窗口”>“属性”）。在“实例名称”文本框中，键入 logo_btn。


通过启用按钮来查看点击区

当“启用简单按钮”功能处于活动状态时，您可以查看按钮的比较简单的方面，例如点击区（按钮上可单击的区域）和用于按钮状态的颜色。比较复杂的按钮设计（例如，动画）并不显示。

  1. 在工作区中的空白区域中单击，以确保未选中任何对象。
  2. 选择“控制”>“启用简单按钮”，然后将鼠标指针移动到所创建按钮的不同区域上。

    按钮中可单击（以指针变为手的形状来指示）的唯一区域是文本区域和徽标。文本和徽标周围的白色区域不可单击。

  3. 再次选择“控制”>“启用简单按钮”来取消选择此项功能，以便可以编辑该按钮。

接下来，您将重新定义点击区域，以便按钮区域覆盖整个组合区域。


更改按钮的点击区域

您可以指定与默认点击区域大小不同的点击区域，方法是：给按钮元件的“点击”帧添加关键帧，然后绘制一个定义点击区域的形状。

  1. 在舞台上，双击所创建的徽标按钮以查看按钮时间轴。按钮时间轴中包含以下状态：
    • 弹起
    • 滑过
    • 按下
    • 点击
  2. 双击时间轴中的“层 1”名称，并将该图层重命名为“点击区”。
  3. 在 BTNLogo 时间轴中选择“点击区”图层的“点击”帧（第 4 帧），并按 F6 键添加一个关键帧。
  4. 在工具栏中，选择“矩形”工具。笔触和填充颜色并不重要。在舞台上，绘制一个尽可能完整地覆盖徽标和文本的矩形。

    该矩形现在定义了按钮的可单击区域。

  5. 单击舞台左上侧上面的“场景 1”，退出按钮的元件编辑模式。
  6. 选择“控制”>“启用简单按钮”。
  7. 在舞台上，再次将指针移动到文本上。

    点击区会变为您绘制的矩形形状。

  8. 选择“控制”>“启用简单按钮”，以取消选择此项功能。


对齐按钮

您可以使用“对齐”面板沿着水平和垂直轴对齐按钮。

  1. 在时间轴中，单击“内容”图层。
  2. 单击时间轴下面的“插入图层”按钮。
  3. 双击图层名称，键入“动画按钮”，作为该图层的新名称，然后按 Enter 或 Return 键。
  4. 在“库”面板中（“窗口”>“库”），选择“按钮 1”并将它拖动到舞台的右下边缘。位置不一定要很精确。

  5. 在属性检查器的“实例名称”文本框中，为按钮指定实例名称 links_btn。
  6. 将“库”面板中的“按钮 2”和“按钮 3”拖动到“按钮 1”的左侧。按钮之间的间隔应大致如下图所示：

  7. 使用“箭头”工具，通过拖动选择全部三个按钮。
  8. 通过选择“窗口”>“设计面板”>“对齐”打开“对齐”面板。确认没有选定“相对于舞台”，因为不需要使按钮相对于舞台对齐。
  9. 在“对齐”面板中，单击“垂直中齐”，然后单击“水平居中分布”。

    按钮将会在舞台上对齐。

  10. 关闭“对齐”面板。
  11. 在舞台上，单击工作区中的空白区域以确保未选中任何对象，然后选择“按钮 2”。在属性检查器中的“实例名称”文本框中，输入 contact_btn。选择“按钮 3”并将它命名为 sweepstakes_btn。


为按钮状态创建动画

您将在按钮 1 的“滑过”状态内创建影片剪辑，然后在影片剪辑中创建补间形状。补间形状会创建将颜色从灰色更改为红色的特效。

  1. 在舞台上，双击“按钮 1”，将其在元件编辑模式下打开。
  2. 在按钮 1 时间轴中，隐藏除“颜色”图层以外的所有图层。在“颜色”图层中，选择“滑过”关键帧。

    注意：通过单击图层名称旁边的“眼睛”列下面的点使红色 X 出现，以此来隐藏图层。

  3. 在舞台上，为按钮 1 选择黑色的椭圆形状。按 F8 键使椭圆成为元件。
  4. 在“转换为元件”对话框中，将元件命名为 按钮动画。选择“影片剪辑”（而不是“按钮”）作为行为，然后单击“确定”。
  5. 在舞台上，双击“按钮动画”元件，切换到元件编辑模式。
  6. 将图层 1 重命名为 Color Change。选择第 15 帧，然后按 F6 键以添加关键帧。
  7. 在播放头仍然保持在第 15 帧上时，选择舞台上的按钮形状，然后在属性检查器中，从“填充颜色”弹出菜单中选择明亮的红色。
  8. 在时间轴中，单击第 1 帧和第 15 帧之间的任何帧。在属性检查器中，从“补间”弹出菜单中选择“形状”。

    将播放头从第 1 帧拖动到第 15 帧以查看颜色变化。


给按钮添加动作

当用户单击按钮并且补间动画播放时，您希望播放头移动到按钮动画时间轴的末尾，然后停止。您将使用动作脚本来控制播放头在时间轴中的移动。

  1. 给“按钮动画时间轴”添加一个新图层，并将它命名为“动作”。
  2. 在“动作”图层上，通过按 F6 键将一个关键帧添加到第 15 帧上。
  3. 打开“动作”面板（“窗口”>“开发面板”>“动作”），并在必要时将其放大以同时查看“动作”工具箱和“脚本”面板。
  4. 保持“动作”图层的第 15 帧处于选定状态，转至“动作”工具箱的“全局函数”>“时间轴控制”类别，并双击 stop。

    使用 stop 动作可以指定播放头在到达第 15 帧时停止。

    在按钮动画时间轴中，“动作”图层的第 15 帧现在显示一个小的 a，这表明已为该帧附加了一个动作。

  5. 单击舞台上面的“场景 1”，退出元件编辑模式并返回主文档。
  6. 单击“动作”面板右上角的选项菜单控件，然后选择“关闭面板”，关闭该面板。
  7. 选择“控制”>“启用简单按钮”，以便可以测试按钮动画。
  8. 在舞台上，将指针移动到按钮上并单击该按钮。
  9. 选择“控制”>“启用简单按钮”，以取消选择此项功能。


给按钮添加导航

使用行为，您可以给按钮快速添加导航，而不必了解动作脚本。您将添加导航以便当用户单击按钮时打开某个网页。

  1. 在舞台上，选择按钮 1 的实例。
  2. 在“行为”面板中（“窗口”>“开发面板”>“行为”），单击“添加行为”按钮并选择“Web”>“转到网页”。

  3. 在“转到 URL”对话框中，选择 _blank 以便在新的浏览器窗口中打开该 URL。在 URL 文本框中，接受默认设置 http://www.macromedia.com 或输入另一个 URL。然后单击“确定”。
  4. 如果需要，选择按钮 2 和按钮 3 重复上面的步骤，以便在这些按钮中也添加导航。
  5. 单击“行为”面板右上角的选项菜单控件，然后选择“关闭面板”，关闭该面板。


测试 SWF 文件

您将测试文档，以查看该按钮动画并确认导航是否按要求工作。

  1. 保存文档，然后选择“控制”>“测试影片”。
  2. 将鼠标指针滚动到按钮 1 的实例上，以查看您创建的颜色动画。
  3. 单击该按钮以查看 Web 浏览器打开时是否进入指定的 URL。
  4. 如果您给其他两个按钮添加了导航，还应测试这些按钮。
  5. 查看完 SWF 文件后，请关闭 SWF 文件和 Web 浏览器窗口。


小结

祝贺您学会了有关按钮的知识。在几分钟内，您学习了如何完成以下任务：

  • 根据组合的对象创建按钮
  • 命名按钮实例
  • 查看按钮的点击区域
  • 更改按钮的点击区域
  • 对齐按钮
  • 为按钮状态创建动画
  • 给按钮添加动作
  • 给按钮添加导航

通过学习其他课程，可了解更多有关 Flash 的知识。


概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供多种文本功能和选项。本课介绍三种可添加到文档中的主要文本类型。您可以为希望出现在文档中的标题、标签或其他文本内容添加静态文本，也可以使用输入文本 选项，以允许观众与 Flash 应用程序进行交互，例如，在表单中输入他们的姓名或者其他信息。第三种文本类型是动态文本。动态文本字段用于显示会根据您指定的条件而变化的文本。例如，您可以使用动态文本字段来添加存储在其他文本字段中的值，例如两个数字的和。

学习完本课以后，一定要浏览“使用 Flash”帮助的“使用文本”中介绍的其他文本选项。

在本课中，您将通过完成以下任务来给文档添加文本和文本字段：

  • 创建不断加宽的文本块
  • 创建宽度固定的文本块
  • 编辑文本和更改字体属性
  • 选择设备字体
  • 添加输入文本字段
  • 复制文本字段
  • 为文本字段指定实例名称
  • 创建动态文本字段
  • 查看将文本字段链接到外部文本文件的动作脚本
  • 设置和检查拼写


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，在 Flash 中选择“文件”>“打开”。然后执行以下操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 text_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 text_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 text_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件并保留该文件到附属文件的链接。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。
  4. 在舞台上的“查看”弹出菜单中（时间轴的右上侧），选择“显示帧”，以便能够同时看到舞台和工作区。
  5. 在工具栏中，单击“选择”工具。然后在时间轴中，单击“静态文本”图层以选择将使用的图层。


创建不断加宽的文本块

您可以定义文本块的大小，也可以使用加宽到能够适合所书写文本的文本块。本课将从只向文档中添加文本开始。

  1. 在工作区中的空白区域单击，确保未在舞台上选定任何时间轴帧或对象。
  2. 在工具栏中，选择“文本”工具。
  3. 在文本属性检查器中，设置下列选项：
    • 在“文本类型”弹出菜单中，选择“静态文本”（如果它尚未被选中）。
    • 对于“字体”选择“Arial”。
    • 对于“字体大小”，输入“13”。
    • 单击文本颜色框并选择十六进制值为 #666666 的灰色。

    • 选择“左对齐”（如果它尚未被选中）。
  4. 在时间轴中，选择“静态文本”图层。
  5. 在“文本”工具仍处于选中状态时，沿着“文本 1”辅助线的左边缘单击舞台，然后键入“Trio ZX2004 Safety Features”。

    通过在“文本”工具处于选中状态时键入文本，创建一行在键入时加宽的文本块。在不断加宽的一行静态文本块的右上角，有一个圆形控制块。

  6. 如有必要，请在工具栏中单击“选择”工具并将所键入的文本拖到辅助线，从而使该文本在“文本 1”辅助线上对齐。

    注意：“文本 1”辅助线位于辅助线层上，该层不出现在 SWF 文件中。


创建宽度固定的文本块

除了创建一行在键入时不断加宽的文本以外，您还可以创建宽度固定的文本块。向宽度固定的文本块中输入的文本在块的边缘换到下一行。

现在，将创建一个尺寸固定的静态文本块。

  1. 确认“静态文本”图层仍在时间轴中处于选中状态，并使用“选择”工具取消选择舞台上的任何对象或时间轴帧（在工作区中远离对象的区域单击）。
  2. 在工具栏中，选择“文本”工具。
  3. 在属性检查器中，将文本大小更改为 10 磅。
  4. 在舞台上，将指针拖到“文本 2”辅助线的区域上。

    在可扩展的一行静态文本块的右上角有一个圆形控制块，而宽度固定的静态文本块有一个方形控制块。

  5. 在所创建的文本块内部，键入 Want to learn more?

    注意：您可以通过拖动文本块的方形控制块来更改它的宽度。另外，可通过双击方形控制块来将它转换为圆形扩展控制块。

  6. 如有必要，请在工具栏中单击“选择”工具并将所键入的文本拖到“文本 2”辅助线上，从而对齐文本。


编辑文本和更改字体属性

当您选择文本时，属性检查器会显示标准类型的格式功能。您可以使用属性检查器来更改选定文本对象的字体和大小属性。

  1. 在工具栏中，单击“选择”工具。在舞台上双击文本“提交您的联系信息”。
  2. 选定“提”字，然后键入“请提”，这样，该文本现在显示为“请提交您的联系信息”。
  3. 在工具栏中，单击“选择”工具。使用属性检查器选择粗体样式。
  4. 单击文本的“填充颜色”控件并选择另一种文本颜色（如另一种灰度）。


选择设备字体

当您在 Flash 文档中使用系统中安装的字体时，Flash 会将字体信息嵌入到 Flash SWF 文件中，以便确保字体正确显示。除了嵌入字体以外，还可以使用设备字体选项。该选项在观众的计算机上查找与指定的设备字体最相似的字体。只能对于静态文本使用设备字体。

您将指定选定文本使用设备字体。

  1. 当文本“请提交您的联系信息”在舞台上仍处于选中状态时，在属性检查器中的“字体”弹出菜单中选择“_sans”。
  2. 在属性检查器中，选择“使用设备字体”。

    如果计算机上装有 Arial，您将看不到文本有什么区别。


添加输入文本字段

您可以使用输入文本字段来允许观众有机会与 Flash 应用程序进行交互。例如，使用输入文本字段，可以方便地创建表单。

在后面一课（创建具有条件逻辑的表单以及发送数据）中，您将学习如何使用输入文本字段将数据从 Flash 发送到服务器。现在，您将添加一个可供观众在其中输入他们的名字的文本字段。

  1. 在时间轴中，选择“输入文本”图层。
  2. 使用“选择”工具，在工作区中远离舞台上对象的区域单击。
  3. 在工具栏中，选择“文本”工具。
  4. 在文本属性检查器中，设置下列选项：
    • 在“文本类型”弹出菜单中选择“输入文本”
    • 在“字体”弹出菜单中选择“Arial”。
    • 对于字体大小，输入“8”。
    • 单击文本颜色框，并选择深蓝色。
    • 选择“别名文本”按钮。

      “别名文本”按钮会对文本进行渲染，使文本在字号很小时更容易看清。对于输入文本，如果最终用户有 Macromedia Flash Player 7 或更高版本，则支持该选项。

    • 在“线条类型”弹出菜单中选择“单行”，并确认“在文本周围显示边框”处于选中状态。

      “单行”将文本显示在一行上。“在文本周围显示边框”用可见边框标明文本字段的边界。

  5. 在舞台上，在该区域中将指针拖到“名字”文本的右侧，以便创建输入文本字段。

  6. 如有必要，请使用“选择”工具重新定位输入文本字段。


复制文本字段

快速重制舞台上对象的一种方法就是在按住 Alt 键的同时拖动该对象。原始对象保持在原位置，这允许您拖动重制对象。您将使用 Alt 键为所创建的输入文本字段创建两个副本。

  1. 在舞台上，在“选择”工具处于选中状态时，单击所创建的输入文本字段并按键盘上的 Alt 键。将该文本字段的副本拖到“姓氏”的右侧。
  2. 按住 Alt 键单击刚才拖动的输入文本字段，然后将该字段的新副本拖到“电子邮件地址”。


为文本字段指定实例名称

舞台上的输入文本字段是动作脚本 TextField 对象的实例，您可以给它应用属性和方法。您最好给文本字段实例命名，以便您或其他处理该项目的人员能够在动作脚本中引用该实例。

  1. 选择放在“名字”旁边的输入文本字段。在属性检查器的“实例名称”文本框中输入“firstName_txt”。
  2. 选择放在“姓氏”旁边的输入文本字段。在属性检查器的“实例名称”文本框中输入“lastName_txt”。
  3. 选择放在“电子邮件地址”旁边的输入文本字段。在属性检查器的“实例名称”文本框中输入“eMail_txt”。

要了解有关 TextField 对象的更多信息，请参阅“动作脚本参考指南”帮助中的“使用文本”。


创建动态文本字段

在运行时，动态文本可以显示外部来源中的文本。接着，您将创建一个链接到外部文本文件的动态文本字段。您要使用的外部文本文件的名称是 safetyFeatures.txt。它与课程 FLA 文件位于同一个文件夹中。该 FLA 文件已经包含在测试或发布文档时显示文本的动作脚本。

  1. 在时间轴中，选择“动态文本”图层。使用“选择”工具在工作区中单击，以取消选择任何对象。
  2. 在工具栏中选择“文本”工具。
  3. 在文本属性检查器中，设置下列选项：
    • 从“文本类型”弹出菜单中选择“动态文本”。
    • 对于“文本属性”，将文本类型设置为 Verdana，将字体大小设置为 6。
    • 对于“线条类型”，选择“多行”以确保文本正确换行。
    • 单击文本颜色框并选择深灰色。
    • 选择“左对齐”作为段落属性（如果它尚未被选中）。
  4. 在舞台上，在两条水平隔线之间的区域中拖动，以创建文本字段。

  5. 在属性检查器的“实例名称”文本框中，将该动态文本字段命名为 newFeatures_txt。

    该文档中的动作脚本加载外部文本文件，该文件与您的文档位于同一个文件夹中。该动作脚本被设置为将文本加载到名为 newFeatures_txt 的字段中。


指定格式选项

“格式选项”对话框用于为文本指定边距和缩进设置。

  1. 在动态文本字段在舞台上仍处于选中状态时，在属性检查器中单击“格式”。
  2. 在“左边距”文本框中输入 5，并在“右边距”文本框中输入“5”。然后单击“确定”。

    现在，在该文本字段中，动态文本的左右边距都为 5 像素。


查看动态文本字段的动作脚本

您可以查看将文本从外部文本文件加载到动态文本字段中的动作脚本。该脚本使用 LoadVars 动作将 safetyfeatures.txt 内容加载到 newFeatures 文本字段中。

  1. 在时间轴中，选择“动作”图层的第 1 帧。
  2. 选择“窗口”>“开发面板”>“动作”，或者按 F9 键。

    该动作脚本如下所示：

    // 将文本作为变量加载，并将其分配给动态文本字段
Features_lv = new LoadVars();
Features_lv.onLoad = onText;
Features_lv.load("safetyfeatures.txt");
function onText() {

      newFeatures_txt.text = Features_lv.safetyFeatures;

}
  3. 关闭“动作”面板。


测试 SWF 文件

保存并测试该文档，确保动态文本正确加载。

  1. 选择“文件”>“保存”，然后选择“控制”>“测试影片”。

    在 SWF 文件窗口中，外部文本文件中的文本应当出现在所创建的动态文本字段中。（如果该文本不按预期方式显示，请检查输入的实例名称是否正确：newFeatures_txt。还要检查是否将练习文件的副本与原始文件 text_start 保存在同一个文件夹中。）

  2. 在输入文本字段中键入文本。
  3. 测试完该文件后，关闭 SWF 文件窗口。


拼写检查

Flash MX 2004 和 Flash MX Professional 2004 引入了一些新功能，允许您在文档中出现文本的大多数位置（包括文本字段、图层名称和动作脚本字符串）进行拼写检查。要进行拼写检查，请首先配置“拼写设置”选项，然后运行拼写检查器。

  1. 选择“文本”>“拼写设置”。
  2. 确认“检查文本字段的内容”处于选中状态，而且您已经选择相应的字典。根据需要选择任何其他选项。然后单击“确定”。
  3. 选择“文本”>“检查拼写”，并对拼写检查器所提供的对话框进行响应。完成拼写检查后，保存您的文档。

    注意：要对外部文件中的文本进行拼写检查，请使用与用来创建外部文件的应用程序相关联的拼写检查功能。


小结

祝贺您学会了给文档添加文本的一些基本方法。在几分钟内，您学习了如何完成以下任务：

  • 创建不断加宽的文本块
  • 创建宽度固定的文本块
  • 编辑文本和更改字体属性
  • 选择设备字体
  • 添加输入文本字段
  • 复制文本字段
  • 为文本字段指定实例名称
  • 创建动态文本字段
  • 查看将文本字段链接到外部文本文件的动作脚本
  • 设置和检查拼写

要详细了解可在给文档添加文本时使用的众多选项，请参阅“使用 Flash”帮助中的“处理文本”。


概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了功能强大的动画创建工具。在 Flash 中，大多数简单的动画都是通过使用被称为补间 的过程完成的。补间是“在中间”的简称，它是指填充两个关键帧之间的帧，以便第一个关键帧中显示的图形更改为第二个关键帧中显示的图形。

在 Flash 中可以创建两种类型的补间：补间动画 和补间形状。补间动画和补间形状的主要区别在于，补间动画针对组合对象或元件操作，而补间形状与不是元件且未组合的对象一起使用。

在本课中，您将学习如何完成下列任务：

  • 使用补间动画创建动画
  • 使用补间形状创建动画
  • 在动画中复制和粘贴关键帧
  • 更改动画的速度


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，在 Flash 中选择“文件”>“打开”。然后执行以下操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Program Files\Macromedia\Flash MX 2004\<语言>\First Run\HelpPanel\HowDoI\BasicFlash\start_files 并双击 animation_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Program Files\Macromedia\Flash MX 2004\<语言>\First Run\HelpPanel\HowDoI\BasicFlash\start_files 并双击 animation_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 animation_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。
  4. 在舞台上的“查看”弹出菜单中（时间轴的右上侧），选择“显示帧”，以便能够同时看到舞台和工作区。
  5. 如有必要，请向下拖动时间轴（“窗口”>“时间轴”）的下边缘以放大“时间轴”视图。

    您还可以使用滚动条在各图层之间滚动查看。


创建补间动画

您可通过以下方法来创建补间动画：在起始关键帧中为实例、组合对象或文本定义属性，然后在后续关键帧中更改对象的属性。Flash 在关键帧之间的帧中创建从一个关键帧到下一个关键帧的动画。

要创建补间动画，您将提取轮胎元件的一个实例并使其看上去在弹跳。

  1. 在时间轴（“窗口”>“时间轴”）中，双击“层 1”的标题并键入“TireAnim”。然后按 Enter 键或 Return 键以重命名该图层。
  2. 在“TireAnim”图层仍处于选中状态时，将“轮胎”影片剪辑从“库”窗口（“窗口”>“库”）拖到舞台上，并将它放在轮胎阴影上方。
  3. 如有必要，请使用“选择”工具重新定位轮胎。

  4. 在“选择”工具仍处于选中状态时，在“TireAnim”图层中，选择第 30 帧。然后按 F6 键插入一个关键帧。
  5. 选择第 15 帧并按 F6 键以添加另一个关键帧。
  6. 在播放头仍处于第 15 帧上时，按住 Shift 键沿着直线移动轮胎，并将轮胎向上拖动。

  7. 在“TireAnim”图层中，选择第 2 帧和第 14 帧之间的任何帧。在属性检查器中，从“补间”弹出菜单中选择“动作”。

    这两个关键帧之间的时间轴中会出现一个箭头。

  8. 选择第 16 帧和第 29 帧之间的任何帧。同样，使用属性检查器中的“补间”弹出菜单选择“动作”。
  9. 选择“文件”>“保存”以保存所做的更改。


创建补间形状

对于补间形状，请为一个关键帧中的形状指定属性，然后在后续关键帧中修改形状或者绘制另一个形状。正如对于补间动画一样，Flash 在关键帧之间的帧中创建动画。

现在，您将为轮胎的阴影设置补间，以便在轮胎弹跳时，阴影会移动并淡出。

  1. 单击“ShadowAnim”图层，将其选中。
  2. 选择第 30 帧并按 F6 键以插入一个关键帧，然后选择第 15 帧并按 F6 键以插入一个关键帧。
  3. 在播放头位于第 15 帧上时，选择“选择”工具。将轮胎阴影稍微向上和向右拖动。

  4. 在第 15 帧仍处于选中状态时，选择工具栏中的“滴管”工具，然后单击阴影对象。
  5. 如果尚未打开“混色器”，请选择“窗口”>“设计面板”>“混色器”，将它打开，然后将 Alpha 值从 25% 更改为 10%。

  6. 单击“混色器”的右上角的选项菜单控件，然后选择“关闭面板”，关闭该面板。
  7. 在“ShadowAnim”图层上，选择第 2 帧和第 14 帧之间的任何帧。在属性检查器中，从“补间”弹出菜单中选择“形状”。
  8. 在“ShadowAnim”图层上，选择第 16 帧和第 29 帧之间的任何帧。同样，使用属性检查器中的“补间”弹出菜单来选择“形状”。


在动画中复制和粘贴关键帧

为了使轮胎在弹跳时看上去逼真，应当让它在每次弹跳时都稍微压下去一些。您可以通过以下方法创建这种特效：在动画的第 1 帧中改变轮胎的形状，然后在第 30 帧中复制第 1 帧。

  1. 使用“选择”工具，选择“TireAnim”图层的第 1 帧。然后按 F6 键以添加一个关键帧。

    一个新关键帧会被添加，播放头将移到第 2 帧。

  2. 再次选择“TireAnim”图层的第 1 帧。
  3. 在工具栏中，选择“任意变形”工具。

    轮胎将被选中，并在它的周围出现变形控制块。

  4. 选择变形中心点（靠近影片剪辑中心的小圆圈），并将它拖到轮胎的底部。

    中心点将与下面中间的变形控制块对齐。

  5. 在舞台上，向下拖动上面中间的变形控制块，使轮胎的形状稍微压下去一些。

    如有必要，可拖动轮胎，使其在阴影上对齐。要查看位置，请将播放头拖到第 1 帧和第 2 帧上。

  6. 右键单击 (Windows) 或按住 Ctrl 键单击 (Macintosh)“TireAnim”图层的第 1 帧，然后从上下文菜单中选择“复制帧”。
  7. 选择“TireAnim”图层的第 29 帧，然后按 F6 键插入一个关键帧。
  8. 在“TireAnim”图层的第 30 帧中，右键单击 (Windows) 或按住 Ctrl 键单击 (Macintosh)，然后从上下文菜单中选择“粘贴帧”。
  9. 选择“控制”>“测试影片”来查看动画。
  10. 关闭 SWF 文件窗口以返回到创作环境。


更改动画的速度

当您测试动画时，可能已经注意到轮胎的弹跳速度相当慢。您可通过以下方法来更改动画的速度：更改每秒播放的帧数，并设置用来确定加速度和减速度的正扩大值和负扩大值。


更改速度（每秒帧数）

帧频用每秒帧数 (fps) 来度量，它是动画的播放速度。在默认情况下，Flash 动画以 12 fps 的速率播放，该速率最适于播放 Web 动画。但是，有时可能需要更改 fps 速率。现在，您将把帧频更改为每秒 36 帧，这会使轮胎看上去弹跳得更快。

  1. 在舞台上远离任何对象的区域单击。
  2. 在属性检查器的“帧频”文本框中键入 36。

    该帧频会应用于整个 Flash 文档，而不仅仅是该文档中的动画。


更改加速度和减速度

在默认情况下，补间帧以固定的速度播放。利用扩大值，您可以创建更逼真的加速度和减速度。正值以较快的速度开始补间，越接近动画的末尾，补间的速度越低。负值以较慢的速度开始补间，越接近动画的末尾，补间的速度越高。现在，您将向动画中同时添加正扩大值和负扩大值。

  1. 在“TireAnim”图层上，选择第 2 帧和第 14 帧之间的任何帧。然后在属性检查器的“扩大”文本框中键入 100。按下 Enter 或 Return 键。
  2. 在同一图层上，选择第 16 帧和第 29 帧之间的任何帧。然后在“扩大”文本框中键入 -100。按下 Enter 或 Return 键。
  3. 在“ShadowAnim”图层上，选择第 2 帧和第 14 帧之间的任何帧。然后在“扩大”文本框中键入 100。按下 Enter 或 Return 键。
  4. 在同一图层上，选择第 16 帧和第 29 帧之间的任何帧。然后在“扩大”文本框中键入 -100。按下 Enter 或 Return 键。


测试 SWF 文件

您将测试自己的文档以观看动画并查看它是否按预期方式工作。

  1. 保存文档，然后选择“控制”>“测试影片”。
  2. 观看完动画后，关闭 SWF 文件窗口。


小结

祝贺您学会了如何在 Flash 中创建对象动画。在几分钟内，您学习了如何完成以下任务：

  • 使用补间动画创建动画
  • 使用补间形状创建动画
  • 在动画中复制和粘贴关键帧
  • 更改动画的速度

您还可以使用时间轴特效来向文本、图形、图像和元件中快速添加动画特效。有关详细信息，请参阅“使用 Flash”帮助中的“创建动作”。

通过学习其他课程，可了解更多有关 Flash 的知识。


概述

Flash MX Professional 2004 提供了一种用幻灯片屏幕创建演示文稿的新方法。如果您可以这样想像：将媒体放在幻灯片屏幕上，添加从其他幻灯片继承媒体的嵌套幻灯片，并且在运行时使用内置控件在幻灯片之间导航，那么，您完全想像得到：创建一篇带有幻灯片屏幕的演示文稿会有多么方便。本课通过让您完成下列任务来演示幻灯片的简易性：

  • 给演示文稿幻灯片添加内容
  • 给按钮添加屏幕导航
  • 添加和命名幻灯片
  • 选择和移动幻灯片
  • 给新幻灯片添加内容
  • 给幻灯片添加过渡行为


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行下列操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\ HelpPanel\HowDoI\BasicFlash\start_files 并双击 presentation_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicFlash\start_files 并双击 presentation_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicFlash/start_files 并双击 presentation_start.fla。

    注意：BasicFlash\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

    该文档会在 Flash 创作环境中打开。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    在完成本课程中的任务时，切记要经常保存您的工作。

  3. 选择“窗口”>“面板设置”>“训练布局”以配置工作区。


查看屏幕的层次结构和屏幕的时间轴

给屏幕添加内容的方法与给舞台添加内容的方法大体相同，但屏幕也与嵌套的影片剪辑类似，它依赖于层次结构、嵌套的时间轴和继承。

  1. 如果看不到“屏幕轮廓”面板，请选择“窗口”>“屏幕”。

    “屏幕轮廓”面板显示演示文稿中每张幻灯片的缩略图视图以及演示文稿的层次结构。

    当您在“屏幕轮廓”面板中选择一个屏幕时，该屏幕会出现在文档窗口中。当您选择多个屏幕时，选定的第一个屏幕的内容会出现在文档窗口中。

  2. 在“屏幕轮廓”面板中，选择演示文稿屏幕。

    所有的幻灯片屏幕文档都包含一个演示文稿屏幕，该屏幕位于屏幕层次结构的顶层。设想演示文稿幻灯片作为主幻灯片时的情形：演示文稿幻灯片上的内容可以出现在文档中的所有幻灯片中。

    注意：不能删除或移动演示文稿屏幕。

    在该面板中，以缩进形式出现在演示文稿幻灯片下面的四张幻灯片代表嵌套屏幕或子屏幕，而演示文稿幻灯片是父屏幕。

  3. 打开“时间轴”（“窗口”>“时间轴”，如果尚未打开）。在“屏幕轮廓”面板中选择另一张幻灯片，以查看该屏幕的时间轴。

    每个屏幕都有其各自的时间轴。但是，对于带有屏幕的文档，永远看不到主时间轴。


查看屏幕属性

您可以根据选择幻灯片的位置来查看幻灯片的不同属性

  1. 在“屏幕轮廓”面板中，选择演示文稿缩略图。

    属性检查器允许您更改实例名称，这也是当屏幕出现在“屏幕轮廓”面板中时该屏幕的名称。

  2. 选择实际的演示文稿幻灯片（而非缩略图）。

    属性检查器现在显示与您处理舞台和文档属性时可能使用的控件相同的控件。


给演示文稿幻灯片添加内容

您将给演示文稿幻灯片添加导航按钮，让这些按钮出现在演示文稿中的每张幻灯片上。

  1. 在“屏幕轮廓”面板中，选择演示文稿幻灯片缩略图。在时间轴中，选择“导航”图层的第 1 帧。
  2. 从“库”面板中，将 btn（下一个元件）拖到屏幕上，并将它放在屏幕底部的黑带内。
  3. 在属性检查器中，在该按钮仍处于选中状态时，在“X”文本框中输入 280，在“Y”文本框中输入 165，以便放置该按钮。

    注意：所输入的坐标与幻灯片的默认中心注册点相关。有关屏幕中注册点的更多信息，请参阅“使用 Flash”帮助中的“指定动作脚本类和屏幕的注册点（仅限 Flash Professional）”。

  4. 在“实例名称”文本框中输入 forwardBtn。
  5. 将 btn（上一个元件）拖到幻灯片上，并使用属性检查器，在“X”文本框中输入 245，在“Y”文本框中输入 165。
  6. 在“实例名称”文本框中输入 backBtn。
  7. 在“屏幕轮廓”面板中，选择每张嵌套幻灯片以验证按钮现在出现在所有幻灯片上。

    注意：当您在嵌套屏幕上查看父屏幕上的内容时，它以浅灰色显示。


向按钮中添加屏幕导航行为

当您打开新的“Flash 幻灯片演示文稿”时，该文档已经包括允许用户使用键盘上的箭头键在幻灯片屏幕之间导航的功能。您还将向按钮中添加导航行为，以便为用户提供另一个在幻灯片之间导航的选项。

注意：在默认情况下，使用键盘上的箭头键，可以在同一层的屏幕之间（而非嵌套屏幕之间）导航。

  1. 在演示文稿幻灯片上，选择 forwardBtn 实例。在“行为”面板中（“窗口”>“开发面板”>“行为”），单击“添加”(+) 按钮，然后从菜单中选择“屏幕”>“转到下一张幻灯片”。
  2. 在演示文稿幻灯片上，选择 backBtn 实例。在“行为”面板中（“窗口”>“开发面板”>“行为”），单击“添加”(+) 按钮，然后从菜单中选择“屏幕”>“转到上一张幻灯片”。
  3. 选择“控制”>“测试影片”，并在出现的 SWF 文件窗口中单击相应的按钮，确保按钮按预期方式工作。测试完文档后，关闭该 SWF 文件窗口。


添加和命名幻灯片

在“屏幕轮廓”面板中，您可以使用上下文菜单方便地给演示文稿添加幻灯片。

  1. 在“屏幕轮廓”面板中，选择 title 缩略图。右键单击 (Windows) 或按住 Control 键单击 (Macintosh) 并从上下文菜单中选择“插入屏幕”。

    新屏幕会出现在“屏幕轮廓”面板中，并与标题幻灯片位于同一层。新幻灯片会自动从该演示文稿幻灯片继承媒体。

  2. 在“屏幕轮廓”面板中，双击新幻灯片的名称，然后将该幻灯片命名为 features。


选择和移动幻灯片

在“屏幕轮廓”面板中，可以复制、剪切、粘贴和拖动屏幕以更改它们在演示文稿中的顺序。您将选择三个屏幕、剪切它们并粘贴它们，以便它们作为功能幻灯片的子幻灯片进行嵌套。

  1. 在“屏幕轮廓”面板中，选择性能幻灯片。按住 Shift 键然后单击安全和处理幻灯片，以便将它们添加到选择范围中。
  2. 右键单击 (Windows) 或按住 Control 键单击 (Macintosh) 选定的幻灯片，并从上下文菜单中选择“剪切”。
  3. 在“屏幕轮廓”面板中，右键单击 (Windows) 或按住 Control 键单击 (Macintosh) 功能幻灯片，并从上下文菜单中选择“粘贴嵌套屏幕”。

    现在，这三张幻灯片会作为功能幻灯片的子幻灯片出现。


向新幻灯片中添加内容

功能幻灯片作为演示文稿幻灯片的子幻灯片会从演示文稿幻灯片继承属性。另外，由于功能幻灯片是已复制和粘贴的三张幻灯片的父幻灯片，所以添加到该幻灯片中的内容会出现在这三张子幻灯片上。

  1. 在“屏幕轮廓”面板中，选择功能缩略图。从“库”面板中，将“功能内容”元件拖到文档窗口中的任何位置。
  2. 在属性检查器中，为“功能内容”实例指定实例名称 features_mc。
  3. 在属性检查器中，在“X”文本框中输入 -275，在“Y”文本框中输入 -130，以便放置该实例。


添加过渡行为

虽然您的演示文稿已基本完成，但是您仍将添加过渡行为，以便使演示文稿更有趣。具体地说就是，您将添加某些行为，使内容淡化并使其看上去飞出文档窗口。

  1. 在“屏幕轮廓”面板中，选择 features 幻灯片。在“行为”面板中，单击“添加”(+) 按钮并从菜单中选择“屏幕”>“过渡”。
  2. 在“过渡”对话框中，从过渡列表中选择“淡化”并在该对话框的左下部分查看预览效果。确认对于持续时间选择了 2 秒，对于方向选择了“淡入”，然后单击“确定”。
  3. 在“行为”面板中，在“事件”列中单击“显示”以打开弹出菜单，然后选择“revealChild”。“revealChild”选项指定该行为将显示下一个子屏幕。

  4. 要添加淡化行为，请确认 features 幻灯片仍处于选中状态。在“行为”面板中，单击“添加”(+) 按钮并从菜单中选择“屏幕”>“过渡”。
  5. 在“过渡”对话框中，从过渡列表中选择“飞”，然后选择“飞出”作为方向。
  6. 在“持续时间”文本框中，输入 .5 作为时间长度以完成过渡。
  7. 在“起始位置”弹出菜单中，选择“左中”并观察过渡的预览效果，然后单击“确定”。

    在“行为”面板中，revealChild 现在会出现两次。但是，对于“飞”行为，您希望隐藏子屏幕。

  8. 在“行为”面板中，单击列表中的第二个事件（即刚添加的事件）。在弹出菜单中，选择“hideChild”。


测试演示文稿

您的演示文稿现在已完成并准备进行测试。

  1. 选择“控制”>“测试影片”。
  2. 使用“前进”和“后退”导航按钮在演示文稿中移动并查看过渡行为。


小结

祝贺您学会了如何用屏幕创建幻灯片演示文稿。在几分钟内，您学习了如何完成以下任务：

  • 给演示文稿幻灯片添加内容
  • 给按钮添加屏幕导航
  • 添加和命名幻灯片
  • 选择和移动幻灯片
  • 给新幻灯片添加内容
  • 给幻灯片添加过渡行为

要了解有关使用屏幕的更多知识，请参阅“使用 Flash”帮助中的“使用屏幕（仅限 Flash Professional）”。

上一页


概述

Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 提供了许多使用户能够参与交互操作的方法。另外，当您采用交互功能时，能够实现的就不只是按顺序播放每个时间轴帧了，这样，您在设计和开发时就有了更多的选择。在本课中，您将通过完成下列任务来学习一些实现交互功能的方法：

  • 创建新场景
  • 编写在场景之间导航的动作脚本
  • 编写在运行时播放动画影片剪辑的动作脚本
  • 使用行为播放 MP3 文件

注意：如果您有 Macromedia Flash MX Professional 2004，则可以使用屏幕创建文档。屏幕提供其他导航选项。例如，幻灯片屏幕已经包括内置的导航功能，允许用户使用键盘上的箭头键来在屏幕之间移动。有关屏幕的详细信息，请参阅 用屏幕创建演示文稿（仅限 Flash Professional）。


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，请在 Flash 中选择“文件”>“打开”。然后执行下列操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\ HelpPanel\HowDoI\BasicActionScript\start_files 并双击 interactivity_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\HelpPanel\HowDoI\BasicActionScript\start_files 并双击 interactivity_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicActionScript/start_files 并双击 interactivity_start.fla。

    注意：BasicActionScript\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

    该文档会在 Flash 创作环境中打开。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。

    在完成本课程中的任务时，切记要经常保存您的工作。

  3. 选择“窗口”>“面板设置”>“训练布局”以配置工作区。
  4. 在舞台上的“查看”弹出菜单中（时间轴的右上侧），选择“显示帧”以同时查看舞台和工作区。
  5. 在工作区中远离舞台上对象的区域单击，以便不选择任何对象。


命名按钮实例

您将为舞台上的按钮提供实例名称，以便您可以在动作脚本中引用这些实例名称。

  1. 在主时间轴上，选择“内容”图层。
  2. 在舞台的右下边，选择左侧的按钮。在属性检查器（“窗口”>“属性”）中，在“实例名称”文本框中键入 goScene_btn 以命名该元件的实例。

  3. 选择中间的按钮，并使用属性检查器来为该按钮指定实例名称 attachMovie_btn。
  4. 选择最右侧的按钮，并使用属性检查器来为该按钮指定实例名称 playSound_btn。


添加场景

在 Flash 中使用场景可以将文档组织成可包含内容（除其他场景外）的不连续部分。您将创建新场景并向其中添加内容。

  1. 选择“插入”>“场景”。

    您无法再看到场景 1 了，现在，舞台上方显示的是场景 2。舞台为空。

  2. 从“库”面板（“窗口”>“库”），将“动画”影片剪辑拖到舞台上。在影片剪辑处于选中状态时，使用属性检查器为该实例指定 x 坐标 (200) 和 y 坐标 (15)。按下 Enter 或 Return 键。

    该影片剪辑移到指定的舞台坐标。

  3. 使用属性检查器为“动画”影片剪辑指定实例名称 animation_mc。
  4. 将图层 1 重命名为“动画”。创建一个新图层并将其命名为“按钮”。将 BTNback 元件的实例拖到舞台上，然后将它放到该影片剪辑右侧的任何位置。
  5. 使用属性检查器为该按钮指定实例名称 back_btn。


在场景之间移动

在创作环境中可以在场景之间移动，方法是在“场景”面板中选择一个场景。

  1. 要打开“场景”面板，请选择“窗口”>“设计面板”>“场景”。
  2. 选择场景 1。


用 stop() 动作控制该文档

当您测试或发布包含多个场景的 Flash 文档时，默认情况下，场景会按照它们显示在“场景”面板中的顺序线性播放。您将对场景 1 使用 stop() 动作，以便时间轴的播放头停在场景 1 的第 1 帧处。

  1. 在场景 1 的主时间轴中，添加一个新图层并将其命名为“动作”。
  2. 单击“动作”图层的第 1 帧。在“动作”面板的“脚本”窗格（“窗口”>“开发面板”>“动作”）中，键入以下注释，并在后面键入在该帧上停止播放头的脚本：
    //在第 1 帧处停止播放头
stop();


将按钮链接到场景

现在，播放头会在第 1 帧处停止，您将添加一个动作脚本，该动作脚本会在您释放 goScene_btn 实例时将用户带到场景 2。

  • 按 Enter 或 Return 键两次，键入以下注释，然后编写在释放 goScene_btn 实例时将用户带到场景 2 的函数：
    //当释放 goScene_btn 时，此脚本会将用户带到场景 2
goScene_btn.onRelease = function (){
  gotoAndStop("Scene 2", 1);
};

    在刚键入的脚本中，您对于该按钮对象使用了 onRelease 方法。gotoAndStop 函数是一个时间轴控制函数，使用它可以指定场景和帧号。在本例中，您指定的是第 1 帧。


添加导航功能以返回到场景 1

您为了让用户返回场景 1 而在场景 2 中添加到该按钮的函数类似于您为了将用户带到场景 2 而编写的函数。

  1. 在“场景”面板中，选择场景 2。在时间轴中，创建一个新图层并将它命名为“动作”。
  2. 选择“动作”图层的第 1 帧。在“动作”面板的“脚本”窗格中输入以下内容：
    //当释放 back_btn 实例时，函数会将用户带到场景 1。
back_btn.onRelease = function (){
  gotoAndStop("Scene 1", 1);
  };

    该函数和场景 1 中函数的唯一区别是按钮的名称和场景的名称。

  3. 在“场景”面板中，选择场景 1。


在运行时播放影片剪辑

您可以将文档配置为在运行时播放影片剪辑。使用 attachMovie() 方法，即使您未在舞台上放置实例，也可以将“库”面板中影片剪辑的实例附加到舞台。

对于 attachMovie() 方法，必须导出动作脚本的元件并为它指定一个唯一的链接标识符（不同于实例名称）。

  1. 在“库”面板中，右键单击 MCTrio 元件并从上下文菜单中选择“链接”。
  2. 在“链接属性”对话框中，选择“为动作脚本导出”。
  3. 在“标识符”文本框中，确认链接名称显示为 MCTrio。
  4. 确认“在第一帧导出”处于选中状态，然后单击“确定”。

    在默认情况下，为与动作脚本一起使用而导出的影片剪辑加载到包含它们的 SWF 文件的第一帧前面。这会在播放第一帧之前产生一个延迟。当您为某个元素指定链接标识符时，可以指定将影片剪辑加载到第一个帧上，以免产生播放延迟。


使用 attachMovie() 方法播放影片剪辑

现在，您将使用 attachMovie() 方法加载影片剪辑并为该元件提供一个实例名称。由于舞台上并不存在该元件的实例，因此您将以编程方式创建实例名称。

  1. 在时间轴中，选择“动作”图层的第 1 帧。
  2. 在“动作”面板的“脚本”窗格中，将插入点放在最后一行代码的末尾。按 Enter 或 Return 键，然后键入以下内容，以便添加注释并创建新函数：
    //当释放 attachMovie_btn 实例时，函数会播放 trio_mc。
attachMovie_btn.onRelease = function(){

    接着，您将指定该函数执行的操作：它在根时间轴（也即主时间轴）上播放该影片剪辑。在您的脚本中，您将通过“链接属性”对话框中的链接标识符名称 (MCTrio) 引用该影片剪辑。

    另外，即使您未在舞台上放置 MCTrio 元件的实例，也将使用动作脚本来为该元件创建实例名称。您将指定的实例名称为 trio_mc。

  3. 在插入点位于脚本最后一行的末尾时，按 Enter 或 Return 键。然后键入以下代码：
    _root.attachMovie("MCTrio", "trio_mc", 1);

    在您刚键入的脚本中，数字 1 指的是要按其播放影片剪辑的图层上的深度。

    每个影片剪辑实例都有各自的 z 轴（深度），该轴确定影片剪辑在其父级 SWF 文件或影片剪辑中的堆叠顺序。当您使用 attachMovie() 方法在运行时创建新影片剪辑时，总是以方法参数形式为新剪辑指定深度。

    有关 attachMovie() 方法的详细信息，请参阅“动作脚本字典”帮助中的 attachMovie()。


为影片剪辑指定舞台坐标

除了为影片剪辑指定 z 轴以外，还必须指定 x 和 y 坐标，以便在运行时将影片剪辑放在舞台区域中。

  • 在“脚本”面板中的最后一行后面按 Enter 或 Return 键，然后键入以下代码：
    trio_mc._x = 275;
trio_mc._y = 200;
};


卸载影片剪辑

在播放影片剪辑之后，您需要一种方法来在用户转到场景 2 时将影片剪辑从舞台中删除。您可以通过修改 goScene_btn 的脚本来“卸载”影片剪辑。

  1. 在时间轴中，选择“动作”图层的第 1 帧。然后，在“脚本”窗格中，在用来将用户带到场景 2 的函数的内部，在以下脚本行的末尾单击以放置插入点：
      gotoAndStop("Scene 2", 1);
  2. 按 Enter 或 Return 键并键入以下脚本，以便在运行该函数时卸载影片剪辑，这样，在用户转到场景 2 时，就不会继续播放该影片剪辑：
    unloadMovie("trio_mc");

    goScene_btn 的整个函数应如下所示：

    //当释放 goScene_btn 实例时，此脚本会将用户带到场景 2
goScene_btn.onRelease = function (){
  gotoAndStop("Scene 2", 1);
  unloadMovie("trio_mc");
};

    您的整个脚本应如下所示：

    //在第 1 帧处停止播放头
stop();

//当释放 goScene_btn 实例时，此脚本会将用户带到场景 2
goScene_btn.onRelease = function (){
  gotoAndStop("Scene 2", 1);
  unloadMovie("trio_mc");
};

//当释放 attachMovie_btn 实例时，此函数会播放 trio_mc。
attachMovie_btn.onRelease = function(){
_root.attachMovie("MCTrio", "trio_mc", 1);
trio_mc._x = 275;
trio_mc._y = 200;


使用行为播放 MP3 文件

当您希望用动作脚本向文档中添加交互功能时，通常可以依赖行为来添加动作脚本。您将使用声音行为来播放库中的 MP3 文件。

  1. 在“库”面板中，右键单击 (Windows) 或按住 Control 单击 (Macintosh) ping.mp3 并从上下文菜单中选择“链接”。
  2. 在“链接属性”对话框中，选择“为动作脚本导出”并确认“在第一帧导出”处于选中状态。
  3. 确认 ping.mp3 出现在“标识符”文本框中，然后单击“确定”。
  4. 在舞台上，选择 playSound_btn 实例。
  5. 在“行为”面板中（“窗口”>“开发面板”>“行为”），单击“添加”(+) 按钮并选择“声音”>“从库中加载声音”。
  6. 在“链接 ID”文本框中，输入 ping.mp3，然后在“名称”文本框的下面输入 ping。然后单击“确定”。


测试文档

测试文档以验证交互功能按预期方式工作。

  1. 选择“控制”>“测试影片”。
  2. 在该 SWF 文件中，单击左边的按钮以播放场景 2。查看完场景 2 后，单击“后退”按钮。
  3. 单击场景 1 中的中间按钮以查看影片剪辑的播放情况。
  4. 单击右侧的按钮以播放 MP3 声音。
  5. 再次单击左侧的按钮以确认影片剪辑是否已卸载。


小结

祝贺您学会了如何创建交互文档。在几分钟内，您学习了如何完成以下任务：

  • 创建新场景
  • 编写在场景之间导航的动作脚本
  • 编写在运行时播放动画影片剪辑的动作脚本
  • 使用行为播放 MP3 文件

要了解有关“动作脚本”的更多信息，请学习“动作脚本基础”系列课程中的其他课程。


概述

您可以创建具有条件逻辑（允许 SWF 文件根据用户的交互以不同方式进行响应）的表单，并将表单数据从 SWF 文件发送到外部来源。在本课中，您将在完成下列任务时创建一个简单的表单：

  • 添加输入文本字段以收集表单数据
  • 创建按钮元件
  • 添加 stop() 动作
  • 编写用条件逻辑来验证表单的脚本
  • 将数据传递到 SWF 文件外部
  • 编写函数

在学习本课之前，应当熟悉函数和变量的编写；要了解这些，请学习课程 创建应用程序。。


设置工作区

首先，您将打开本课程的起始文件并设置工作区，以便使用最佳布局来学习课程。

  1. 要打开起始文件，在 Flash 中选择“文件”>“打开”。然后执行以下操作之一：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Program Files\Macromedia\Flash MX 2004\<语言>\First Run\HelpPanel\HowDoI\BasicActionScript\start_files 并双击 simpleForm_start.fla。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Program Files\Macromedia\Flash MX 2004\<语言>\First Run\HelpPanel\HowDoI\BasicActionScript\start_files 并双击 simpleForm_start.fla。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicActionScript/start_files 并双击 simpleForm_start.fla。

    注意：BasicActionScript\finished_files 文件夹包含课程 FLA 文件的完成版本，以供参考。

  2. 选择“文件”>“另存为”，并使用一个新名称将该文档保存到相同的文件夹中，以保存原始的起始文件。
  3. 选择“窗口”>“面板设置”>“训练布局”以修改用于课程学习的工作区。
  4. 如有必要，请向下拖动时间轴（“窗口”>“时间轴”）的下边缘以放大“时间轴”视图。


添加输入文本字段以收集表单数据

首先，在文档中插入一个可供观众在其中输入数据的文本字段。还将命名该文本字段，这样，当您以后在 Flash 应用程序中使用动作脚本时，就可以参考该文本字段。

  1. 在工作区中远离舞台上对象的区域单击，以便不选择任何对象。
  2. 在工具栏中，选择“文本”工具。
  3. 在属性检查器中，通过执行下列操作来设置文本属性：
    • 从“文本类型”弹出菜单中选择“输入文本”。
    • 从“字体”弹出菜单中选择“sans”。
    • 在“字体大小”文本框中输入“10”。
    • 单击文本颜色框，并选择深蓝色。
    • 验证“左对齐”处于选中状态。
    • 验证在“线条类型”弹出菜单中选中了“单行”。
  4. 在时间轴中，选择“输入文本”层的“第 1 帧”。
  5. 在舞台上，拖动“文本”工具，以便在 http:// text 的右侧创建一个输入文本字段。

  6. 如有必要，请使用“选择”工具拖动该文本字段或者使用箭头键调整位置。
  7. 在该输入文本字段仍处于选中状态时，在属性检查器中，在“实例名称”文本框中键入“url_txt”。

    您以后在添加动作脚本时将参考该实例名称。


给该表单添加“提交”按钮

“库”面板中包含将添加到该表单中的“提交”按钮元件。

  1. 从“库”面板（“窗口”>“库”）中，将“提交”按钮拖到舞台上，并将它放到 SubmitURL 辅助线上。

  2. 如有必要，请通过拖动该按钮或者使用箭头键来调整位置。
  3. 在属性检查器中，在“实例名称”文本框中键入“submit_btn”。


添加错误信息

您将添加一条消息，如果用户在输入数据之前单击“提交”按钮，就会看到该消息。

  1. 在时间轴中，在“标记”图层处于选中状态时，单击“插入层”按钮并将该层命名为 对话框。
  2. 选择“对话框”图层的第 5 帧。右键单击 (Windows) 或者在按住 Control 键的同时单击 (Macintosh) 选定层，并从上下文菜单中选择“插入空白关键帧”。
  3. 从“库”面板中，将“对话框”错误影片剪辑拖到舞台的中心。

  4. 在时间轴中，选择“按钮”图层的第 5 帧。将“重试按钮”元件从“库”面板拖到舞台上，并将该按钮放置在该错误信息文本的下面。

  5. 在该按钮仍处于选中状态时，在属性检查器中的“实例名称”文本框中输入“tryAgain_btn”。


添加确认消息

接下来，您要添加一条消息，用户提交文本字段中的输入项时会看到该消息。

  1. 在“对话框”图层中，选择第 10 帧。右键单击 (Windows) 或者在按住 Control 键的同时单击 (Macintosh) 选定帧，并从上下文菜单中选择“插入空白关键帧”。
  2. 从“库”面板中，将“对话框”确认影片剪辑拖到舞台的中心。
  3. 关闭“库”面板。


添加 stop() 动作

在将某个 Flash 应用程序加载到 Flash Player 中时，它自动循环播放。您使用动作脚本来控制播放头在时间轴中的移动。您将在应用程序的第一帧中添加 stop() 动作，以便用户可以在输入文本字段中输入内容。

  1. 在时间轴中，在“输入文本”图层处于选中状态时，添加一个新图层并将它命名为 动作。
  2. 选择“动作”图层的第 1 帧。
  3. 在“动作”面板（“窗口”>“开发面板”>“动作”）中，验证“第 1 帧”处于选中状态。

  4. 单击“动作”面板的“脚本”窗格，然后键入以下注释：//在第 1 帧处停止播放头。按下 Enter 或 Return 键。
  5. 键入“stop()”以添加停止动作。


为导航添加帧标签

当观众按“提交”按钮时，您希望 Flash 跳转到错误信息或者确认消息，具体情况取决于文本字段中的输入内容。对帧进行标记有助于在动作脚本中方便地参考它。这对于将播放头发送到特定帧非常有用。

接下来，您将添加有助于在 Flash 应用程序中导航的帧标签。

  1. 给“动作”图层的第 5 帧添加关键帧（“插入”>“关键帧”）。
  2. 在属性检查器中，在“帧标签”文本框中键入“错误”。按下 Enter 或 Return 键。

    标签文本和标记出现在时间轴的第 5 帧中。

  3. 给“动作”图层的第 10 帧添加关键帧。在属性检查器中，在“帧标签”文本框中键入“确认”。按下 Enter 或 Return 键。


为“提交”按钮添加条件逻辑

使用动作脚本，可以让 Flash 对信息进行比较，并根据您指定的条件执行操作。在本范例中，您将为 Flash 添加动作脚本，以便在用户未在文本字段中输入任何数据时执行某一操作，并在用户输入数据时执行另一操作。

  1. 选择“动作”图层的第 1 帧。在“脚本”窗格中，将插入点放在 stop(); 代码的后面。按下 Enter 或 Return 键。
  2. 键入以下注释：//为“提交”按钮添加验证用户输入的条件逻辑。按下 Enter 或 Return 键。
  3. 在“动作”面板中，单击“插入目标路径”按钮（位于该面板的顶部）。
  4. 在“插入目标路径”对话框中，确认已经选中了“相关”。在层次结构树中单击“submit_btn”，然后单击“确定”。
  5. 在“脚本”窗格中，在“submit_btn”后面键入一个句点 (.)，然后键入“onRelease”。
  6. 将插入点放在“onRelease”后面，在“脚本”窗格中键入“= function (){}”。
  7. 将插入点放在大括号之间，按 Enter 或 Return 键，然后在“脚本”窗格中键入“ if (url_txt.text == null || url_txt.text == ""){”。

    在动作脚本中，平行线相等于 或。

  8. 在插入点仍位于大括号中时，按 Enter 或 Return 键。
  9. 在“脚本”窗格中键入“gotoAndStop("error");”。按下 Enter 或 Return 键。
  10. 将插入点放在大括号后面，然后在“脚本”窗格中键入“else{”。按下 Enter 或 Return 键。
  11. 在“脚本”窗格中键入“gotoAndStop("confirm")”。按 Enter 或 Return 键，键入“}”，然后再次按 Enter 或 Return 键并键入“};”。

    您的脚本应如下所示：

    //Stops the playhead at frame 1
stop();
//Adds conditional logic for the Submit button that validates user input
this.submit_btn.onRelease = function(){
  if (url_txt.text == null || url_txt.text ==佑){
    gotoAndStop("error");
} else {
    gotoAndStop("confirm")
  }
};


将数据传递到 SWF 文件外部

您以通过各种方式从 Flash 应用程序发送数据，例如，在本课中，将数据发送到 Web 服务器以便在浏览器中加载 Web 页。在 else 语句后面，您将添加一个动作脚本，以便让 Flash 转到观众在输入文本字段中输入的 URL。

  1. 在“脚本”窗格中，将插入点放在 gotoAndStop("confirm") 行的前面。
  2. 然后，在“动作”工具箱中，选择“全局函数”>“浏览器/网络”并双击“getURL”。
  3. 将插入点放在 getURL() 括号中，键入 "http://"+url_txt.text，以便指定应当从 SWF 文件传递的数据。（不要在代码中留有空格。）

    您的脚本看起来应该是像下面这样：

    stop();
this.submit_btn.onRelease = function(){
  if (url_txt.text == null || url_txt.text ==佑){
    gotoAndStop("Error");
} else {
    getUrl ("http://"+url_txt.text);
    gotoAndStop("Confirm")
  }
};


为“重试”按钮编写函数

函数是一种可反复使用以执行特定任务的脚本。您可以给函数传递参数，而该函数可以返回一个值。在本范例中，当用户单击“重试”按钮时，会运行一个将播放头返回到第 1 帧的函数。

现在，您将编写该函数。在该脚本中，您将键入帧号，这是由于我们并未对第 1 帧进行标记。

  1. 在时间轴中，选择“动作”图层的第 5 帧。
  2. 在“脚本”窗格中，键入以下注释，//button 函数让用户返回到第 1 帧。按下 Enter 或 Return 键。
  3. 键入“tryAgain_btn.onRelease = function(){”，然后按 Enter 或 Return 键。
  4. 键入“gotoAndStop(1);”，然后按 Enter 或 Return 键并键入“}”以完成该脚本。


测试 SWF 文件

将通过输入 URL 并检查它是否按预期方式工作来测试文档。

  1. 选择“控制”>“测试影片”。
  2. 在出现 SWF 文件时，先单击“提交”按钮，然后再在输入文本字段中键入内容。

    出现错误信息。

  3. 单击“重试”按钮，然后在输入文本字段中输入有效 Web 站点的 URL。单击“提交”按钮。

    将在默认浏览器中打开该 Web 页。


小结

祝贺您学会了如何编写具有条件逻辑的脚本以及如何发送数据。在几分钟内，您学习了如何完成以下任务：

  • 给文档添加输入文本字段
  • 创建按钮元件
  • 添加 stop() 动作
  • 编写用条件逻辑来验证表单的脚本
  • 将数据传递到 SWF 文件外部
  • 编写函数

通过学习其他课程，可了解更多有关 Flash 的知识。


概述

在 Macromedia Flash MX 2004 和 Macromedia Flash MX Professional 2004 中，类是对象的蓝图。Flash 中的所有对象都有一个基础类；例如，所有的影片剪辑都有一个名为 getURL 的方法，getURL 是在类定义中为影片剪辑定义的。Flash 包含许多预定义的类，如 MovieClip 类、Array 类、Color 类和 CheckBox 类。

在本课中，您将学习如何创建和修改类。具体地说，您将学习如何完成以下任务：

  • 从现有的类创建对象
  • 创建自定义类
  • 结合使用数据类型定义和自定义类
  • 扩展现有的类

注意：这一课是为熟悉 Flash 和动作脚本基本概念的 Flash 开发人员设计的。


设置工作区

首先，您将查看已完成的文件，并将工作区设置为最适于课程学习的布局。

  1. 查看完成的文件。本课不包括起始文件。您可以在以下位置找到 handson1.fla、handson2.fla、handson3.fla、Product.as 和 Drag.as 的已完成文件（它们是将在本课创建的示例文件）：
    • 如果您使用的是 Windows 2000 或 XP 操作系统，请浏览到 <引导驱动器>\Documents and Settings\<用户名>\Local Settings\Application Data\Macromedia\Flash MX 2004\<语言>\Configuration\ HelpPanel\HowDoI\BasicActionScript\finished_files。

      注意：如果没有显示 Application Data 文件夹，则需要更改“Windows 资源管理器”设置才能查看该文件夹。

    • 如果您使用的是 Windows 98 操作系统，请浏览到 <引导驱动器>\Windows\Application Data\Macromedia\Flash MX 2004\<语言>\ Configuration\HelpPanel\HowDoI\BasicActionScript\finished_files。
    • 如果您使用的是 Macintosh 操作系统，请浏览到 <Macintosh HD>/Users/<用户名>/Library/Application Support/Macromedia/Flash MX 2004/<语言>/Configuration/HelpPanel/HowDoI/BasicActionScript/finished_files。
  2. 选择“窗口”>“面板设置”>“训练布局”以配置工作区。


关于类和对象类型

类 又被称为对象类型，它类似于蓝图。只有当您从类定义中创建或实例化对象之后，对象才存在。对象是类的实例。

属性是对象的特征。例如，当您对齐影片剪辑时，您更改的是影片剪辑对象的 _x 和 _y 属性。属性是附加到类的变量。属性可以是公共属性（即，可从类外部访问它），也可以是私有属性（即，只能在类内部访问它）。

在面向对象的术语中，方法是可针对对象执行的行为或过程。假想的球的 throw() 方法将知道球的大小和重量。方法能够识别对象及其所包含的全部属性，并且可以针对该对象操作。


从类创建对象

将使用可视化工具（TextField 类）和代码（使用 Date 类）创建现有的类。

  1. 打开新的 Flash 文档并将层 1 的名称更改为 文本。
  2. 在“文本”图层中，创建一个动态文本字段并为它指定实例名称 currentDate_txt。
  3. 创建“动作”图层。在“动作”图层的“第 1 帧”处于选中状态时，打开“动作”面板。
  4. 从名为 myDate 的 Date 类创建或实例化一个对象：
    var myDate:Date=new Date();
  5. 创建一个名为 currentMonth 且等于 getMonth() 方法的变量：
    var currentMonth:Number = myDate.getMonth();
  6. 跟踪 currentMonth 的值：
    trace (currentMonth);
  7. 保存并测试该文档。

    您应该会看到“输出”面板中有一个代表月份的数字。

    getMonth() 方法显示当月。getMonth() 方法从 0 开始编制索引，即，从 0（而不是 1）开始编号，因此所显示的数字比期望值小 1。

  8. 关闭“输出”面板和 SWF 文件窗口。


修改脚本

将修改脚本以补偿零索引。

  1. 在您创建 currentMonth 时，请给值添加 +1，然后测试您的文档，以确保出现预期的月份值。这行脚本应如下所示：
    var currentMonth:Number = myDate.getMonth()+1;
  2. 注释跟踪语句：
    //trace (currentMonth);
  3. 在跟踪语句下面，将文本框的 autoSize 属性设置为 true：
    currentDate_txt.autoSize = true;
  4. 使用文本框的文本属性，以“Today is mm/dd/yyyy”形式显示今天的日期。使用已创建的 currentMonth 变量，以及日期对象的 getDate() 和 getFullYear() 方法：
    currentDate_txt.text="Today is "+currentMonth+"/"+ myDate.getDate() + "/"+myDate.getFullYear();
  5. 验证脚本按如下方式显示：
    var myDate:Date=new Date();
var currentMonth:Number = myDate.getMonth()+1;
//trace (currentMonth);
currentDate_txt.autoSize = true;
currentDate_txt.text="Today is "+currentMonth+"/"+ myDate.getDate() + "/"+myDate.getFullYear();
  6. 保存并测试该文档。当前日期应当出现在 SWF 文件窗口中。

注意：刚创建的文档的示例完成文件（名为 handson1.fla）位于 finished files 文件夹中。有关路径，请参阅 设置工作区。


创建自定义类

尽管动作脚本包含对象的许多类（如 MovieClip 类和 Color 类），但是您在许多时候仍需要构造自己的类，以便可以基于特定的属性集或方法集创建对象。

要创建一个定义每个新对象的类，请为自定义对象类创建一个构造器，然后基于这个新类创建新的对象实例，如以下范例所示：

注意：下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

function Product (id:Number, prodName:Name, price:Number)
{
  this.id:Number = id;
  this.prodName:String = prodName;
  this.price:Number = price;
}

为了在动作脚本 2.0 中正确地定义类，所有类都必须带有 class 关键字，而且您必须在构造器的外部声明构造器中的所有变量。下面是一个范例：

注意：下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

class Product
{
//variable declaration
var id:Number
var productName:String
var price:Number
//constructor
function Product (id:Number, prodName:Name, price:Number)
 {
this.id  = id;
this.prodName = prodName;
this.price = price;
}
}

要从该类创建对象，现在可以使用以下代码：

注意：下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

var cliplessPedal:Product=new Product(1, "Clipless Pedal", 11);
var monkeyBar:Product=new Product(2, "Monkey Bar", 10);

但是，在动作脚本 2.0 中，不应当直接访问属于类结构的变量。您应当在将直接访问这些变量的类内部编写方法。获取和设置属性时应该会有不同的方法（大家都知道的“getter”和“setter”方法）。您必须为方法的返回值以及在调用方法时传递到该方法的所有参数指定数据类型。


为方法返回值指定数据类型

您必须在方法名和参数列表的后面为方法返回的值指定数据类型，如以下范例所示：

注意：下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

public function getProductName() :String
{
  return name;
}

如果未返回任何值（例如，设置了一个属性），则数据类型是 Void：

public function setProductName(productName:String) :Void
{
  this.productName=productName;
}


构建自定义类

现在，将用 getter 和 setter 方法构建一个新的 Product 类，并从该 Product 类创建一个对象。

  1. 通过执行下列操作之一来创建动作脚本文件：
    • 如果您使用的是 Flash MX 2004 Professional，请选择“文件”>“新建”>“动作脚本文件”（不是 Flash 文档）。使用名称“Product”保存该文档。
    • 如果您使用的是 Flash MX 2004，请打开文本编辑器（如“记事本”）。使用名称“Product.as”保存该文件（请记住让文件使用 AS 作为扩展名，以创建动作脚本文件。）
  2. 通过创建一个名为“Product”的且具有 id、prodName 和 description 参数的函数来为 Product 类创建一个构造器：
    function Product (id:Number, prodName:String, description:String)
 {}
  3. 在构造器函数中，将 Product 类的属性设置为与要创建的 setter 方法相等：
    setID(id);
setProdName(prodName);
setDescription(description);
  4. 在 class 关键字周围放置该构造器函数。一定要声明该类中使用的每个变量：
    class Product
{
  var id:Number;
  var prodName:String;
  var description:String

  function Product (id:Number. prodName:String, description:String)
{
    setID(id);
    setProdName(prodName);
    setDescription(description);
}
}
  5. 为该类的每个属性定义 getter 和 setter 方法，如下例所示。一定要将 Void 指定为 setter 方法的返回类型，并为 getter 方法指出返回的数据类型。
    class Product
{
    var id:Number;
    var prodName:String;
    var description:String

    function Product (id:Number, prodName:String, description:String) {
      setID(id);
      setProdName(prodName);
      setDescription(description);
}
    public function setID (id:Number) :Void
{
      this.id = id;
}
    public function setProdName (prodName:String) :Void
{
      this.prodName = prodName;
}
    public function setDescription (description:String)  :Void
{
      this.description = description;
}
    public function getID () :Number {
      return id;
}
    public function getProdName () :String {
      return prodName
}
    public function getDescription () :String {
      return description;
  }
}
  6. 保存文件。

    注意：刚创建的示例完成文件（名为 Product.as）位于 finished files 文件夹中。有关路径，请参阅 设置工作区。


从 Product 类创建两个对象

将创建一个新的 FLA 文件，然后从 Product 类创建两个对象。

  1. 打开一个新的 Flash 文档，将它保存到保存 Product.as 的同一位置。
  2. 在这个新文档中，在时间轴中选择“第 1 帧”。在“动作”面板中，使用下表中显示的数据从 Product 类创建两个对象（将创建的动作脚本出现在该表后面）。

    实例名称

    数据

    pedals | id | 0

            prodName Clipless Pedals

            description Excellent cleat engagement
    handleBars | id | 1

            prodName ATB

            description Available in comfort and aero design
  3. 验证已按如下方式创建了对象：
    var handleBars:Product = new Product (1, "ATB", "Available in comfort and aero design");
var pedals:Product=new Product(0,"Clipless Pedals","Excellent cleat engagement");
  4. 跟踪 pedals 的描述属性：
    trace (pedals.getDescription ());
  5. 保存并测试该文档。您应当会在“输出”面板中看到 pedals 的描述。

注意：刚创建的文档的示例完成文件（名为 handson2.fla）位于 finished files 文件夹中。有关路径，请参阅 设置工作区。


关于扩展现有的类

使用动作脚本 2.0 中的 extends 关键字，可以在新类中使用现有类的所有方法和属性。例如，如果您希望定义从 MovieClip 类继承了所有内容的类，则可以使用以下代码：

class Drag extends MovieClip
{}

现在，Drag 类从现有的 MovieClip 类继承所有属性和方法，您可以在 Drag 类定义中的任何位置使用 MovieClip 属性和方法，如下例所示：

注意：下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

class Drag extends MovieClip
{
    // constructor
    function Drag ()
    {
      onPress=doDrag;
      onRelease=doDrop;
    }
    private function doDrag():Void
    {
      this.startDrag();
    }
    private function doDrop():Void
    {
      this.stopDrag();
    }
}

注意：现在，“转换为元件”对话框提供一个类字段，您可以在该字段中将可视化对象（如影片剪辑）与在动作脚本 2.0 中定义的任何类相关联。


扩展 MovieClip 类以创建新类

将通过扩展内置的 MovieClip 类来创建新类。

  1. 新建一个 Flash 文档并将它命名为 Shape.fla。
  2. 使用绘画工具，在舞台上绘制一个形状。右键单击 (Windows) 或在按住 Control 键的同时单击 (Macintosh) 该形状，然后从上下文菜单中选择“转换为元件”。
  3. 在“转换为元件”对话框中，选择“影片剪辑”作为行为，然后单击“高级”。选择“为动作脚本导出”。
  4. 在“名称”文本框中，输入 myShape。
  5. 在“AS 2.0 类”文本框中，输入“Drag”。单击“确定”。

    这样就会将影片剪辑与将创建的 Drag 类关联。

  6. 使用属性检查器为该影片剪辑指定一个实例名称。然后，保存该 FLA 文件。

    注意：刚创建的文档的示例完成文件（名为 handson3.fla）位于 finished files 文件夹中。有关路径，请参阅 设置工作区。

  7. 通过执行下列操作之一来创建动作脚本文件：
    • 如果您使用的是 Flash MX 2004 Professional，请选择“文件”>“新建”>“动作脚本文件”（不是 Flash 文档）。使用名称“Drag”将该文档保存到保存 Shape.fla 的同一位置。
    • 如果您使用的是 Flash MX 2004，请打开文本编辑器（如“记事本”）。用名称 Drag.as 将该文件保存到保存 Shape.fla 的同一位置。
  8. 在刚创建的动作脚本文件中，创建一个名为“Drag”的新类和构造器：
    class Drag extends MovieClip
  {
    function Drag ()
    {
      onPress=doDrag;
  onRelease=doDrop;
  }
}
  9. 在该类中定义使用现有影片剪辑方法（startDrag() 和 stopDrag()）的私有方法：
    class Drag extends MovieClip
  {
function Drag()
 {
  onPress=doDrag;
  onRelease=doDrop;
}
private function doDrag():Void
{
this.startDrag();
}
private function doDrop():Void
{
  this.stopDrag()
}
}
  10. 保存该动作脚本文件。
  11. 测试 Shape.fla 文档。应当能够拖动影片剪辑。

注意：您刚才创建的名为 Drag.as 的动作脚本范例文件在 finished files 文件夹中。有关路径，请参阅 设置工作区。


小结

祝贺您学会了如何在动作脚本 2.0 中处理对象和类。在几分钟内，您学习了如何完成以下任务：

  • 从现有的类创建和使用对象
  • 创建自定义类
  • 在自定义类内部创建属性
  • 在自定义类内部创建方法
  • 扩展现有的类并利用继承功能

上一页


Flash MX Professional 2004 任务

关于此帮助
CHM Creator：SamStudio


此信息不可用。文档是定期更新的。请单击“更新”按钮检查是否有新文档。


索 引

A
ActiveX 控件
ASCII 值
 | 功能键
 | 键盘键
 | 其它键
 | 数字键盘键
按键, 捕获
安全性
 | 和策略文件
 | 将脚本移植到 Flash Player 7 1, 2, 3
 | 跨域数据访问 1, 2
按位运算符
B
包
 | 命名
本地变量
 | 范例
 | 和严格数据类型指定
 | 在函数中
比较运算符
变量
 | 避免名称冲突
 | 测试
 | 动态设置
 | 多个赋值
 | 发送到 URL
 | 关于
 | 和调试器变量选项卡
 | 和调试器监视点列表
 | 后缀
 | 检查和设置值
 | 命名
 | 命名规则
 | 确定范围
 | 确定数据类型
 | 已定义
 | 引用值
 | 在调试器中修改
 | 在脚本中使用
 | 在影片和服务器间传输
 | 传递内容
 | 转换成 XML
变量列表命令
变量选项卡, 调试器
编译时, 已定义
表达式
 | 比较值
 | 处理值
 | 给多个变量赋值
 | 已定义
标点平衡, 检查
标识符, 已定义
播放器, 执行应用程序
播放影片剪辑
布尔值
 | 比较
 | 已定义
捕获按键
C
参数
 | 已定义
 | 在括号中
 | 传递给函数
策略文件
 | 必须具有名称 crossdomain.xml
测试影片
 | 和 Unicode
 | 和键盘控制
层叠样式表
 | 对文本进行格式设置
 | 和 TextField.StyleSheet 类
 | 合并样式
 | 加载
 | 将样式分配到内置 HTML 标签
 | 应用到文本字段
 | 应用样式类
 | 用于 HTML 标签的示例
 | 用于 XML 标签的示例
 | 用于定义新标签
 | 在动作脚本中定义样式
 | 支持的属性
常数 1, 2
重复动作
冲突, 检测
 | 影片剪辑之间
 | 在影片剪辑和舞台点之间
重制, 影片剪辑
处理数字
初始化影片剪辑属性
创建对象
从远程文件获取信息
错误
 | 错误消息列表
 | 名称冲突
 | 语法
D
大括号
 | 检查匹配对
DOM（文本对象模型）, XML
代码
 | 格式设置 1, 2
 | 跟踪行
 | 显示行号
 | 选择一行
 | 自动换行
代码提示
 | 触发 1, 2
 | 使用
 | 手动显示
 | 未显示
 | 指定设置
代码中的缩进, 启用
代码中的行号, 显示
代码中的自动换行, 启用
导出脚本和语言编码
导航
 | 控制
 | 跳到某一帧或场景
导入
 | 脚本, 和语言编码
 | 类
导入类
等于运算符
 | 不同于赋值运算符
 | 严格
点语法
点运算符
调试
 | 编译器错误消息
动画, 元件和
动态类
动作
 | 重复
 | 已定义
动作工具箱
 | 黄色项目
动作脚本
 | 动作脚本 2.0 编译器错误消息
 | 动作脚本 2.0 概述 1, 2
 | 将动作脚本 2.0 类分配给影片剪辑
 | 在动作脚本 1 中不支持严格数据类型指定
动作脚本编辑器 1, 2
动作面板
断点
 | 关于
 | 和外部文件
 | 在调试器中设置
对象
 | 遍历子级
 | 创建
 | 访问属性
 | 和面向对象的编程
 | 数据类型
 | 调用方法
 | 已定义
对象列表命令
对象属性
 | 访问
 | 将值赋予
对于循环和实例成员
多种语言, 在脚本中使用
多维数组
多重继承，不允许
E
ECMA-262
 | 符合性
 | 规范
Escape 快捷键
F
Flash Player
 | 标准菜单视图
 | 方法
 | 获取最新版本
 | 将 SWF 文件缩放到
 | 屏蔽上下文菜单
 | 全屏显示
 | 调试版本
 | 通讯
 | 显示上下文菜单
Flash Player 7
 | 和 ECMA-262 符合性
 | 迁移现有的脚本 1, 2
 | 新的安全模型 1, 2, 3, 4
 | 新增的和经改进的语言元素
FLV（外部视频）文件
 | 预加载
fscommand() 函数
 | 命令和参量
 | 使用
 | 与 Director 通讯
发送信息
 | 给远程文件
 | 通过 TCP/IP
 | URL 编码格式
 | 以 XML 格式
范例脚本
方法
 | 对象，调用
 | 声明
 | 异步的
 | 已定义
 | 用于控制影片剪辑
访问对象属性
分号
父级影片剪辑, 已定义
附加, 声音
服务器, 打开持续连接
服务器端脚本
 | XML 格式
 | 语言
赋值运算符
 | 不同于等于运算符
 | 复合
 | 关于
G
getAscii() 方法
getURL() 方法
跟踪代码行
功能键，ASCII 键控代码值
构造函数
 | 概述
 | 已定义
构造函数，范例
关键字
 | 列出的
光标, 创建自定义
广播器对象
滚动文本
H
hitTest() 方法
HTML
 | 括在引号中的标签
 | 设置内置标签的样式
 | 使用 <img> 标签排列文本 1, 2, 3
 | 使用层叠样式表定义标签
 | 使用样式的示例
 | 在文本字段中使用
 | 支持的标签
HTTP 协议
 | 与服务器端脚本通讯
HTTPS 协议
函数
 | 本地变量
 | 定义
 | 返回值
 | 范例
 | 构造函数
 | 和方法
 | 将参数传递给
 | 内置
 | 调用
 | 异步的
 | 用于控制影片剪辑
 | 转换
 | 自定义
后缀
绘制
 | 线条和填充
 | 形状
获取鼠标指针位置
J
JavaScript
 | alert 语句
 | 国际标准
 | 和 Netscape
 | 和动作脚本
 | 将消息发送到
 | Netscape Navigator 文档
级别
 | 加载
继承
 | 和子类
 | 只允许从一个类继承
ID3 标签
IP 地址
 | 和安全性
 | 和策略文件
JPEG 文件
 | 加载到影片剪辑 1, 2
 | 预加载
 | 在文本字段中嵌入
计数器, 重复动作
基于组件的体系结构, 已定义
加载的 SWF 文件
 | 标识
 | 删除
检测冲突
检查
 | 已加载的数据
 | 语法和标点
键控代码，ASCII
 | 功能键
 | 获取
 | 其它键
 | 数字键盘
 | 字母和数字键
键盘控制
 | 和测试影片
 | 激活影片剪辑
键盘，ASCII 键控代码值
键入变量
监视点选项卡, 调试器
将备注添加到脚本
脚本
 | 测试
 | 导入和导出
 | 范例
 | 关于编写和调试
 | 就地固定
 | 纠正文本显示问题
 | 控制流
 | 控制执行
 | 迁移到 Flash Player 7 1, 2
 | 声明变量
 | 调试
 | 用于固定脚本的快捷键
 | 注释
脚本窗格
 | 关于
 | 上方的按钮
 | 使用脚本
脚本窗口（仅限 Flash Professional）
脚本导航器
交互性，在 SWF 文件中
 | 创建
 | 技术
节点
结合律, 运算符 1, 2
接口
 | 创建
 | 作为数据类型
结束语句
就地固定脚本
K
空值数据类型
快捷键
 | 用于固定脚本
L
loadMovie() 函数
loadVariables() 函数
LoadVars 对象
类
 | 不支持重载
 | 创建的示例
 | 创建和使用
 | 创建属性和方法
 | 创建外部类文件
 | 创建子类
 | dynamic
 | 导入
 | 分配给影片剪辑
 | 关于编译和导出
 | 和面向对象的编程
 | 获取/设置方法
 | 接口 1, 2
 | 解析类引用
 | 扩展
 | 类路径
 | 命名
 | public 和 private 成员属性
 | 实例成员和类成员
 | 已定义 1, 2
 | 以内联方式初始化属性
 | 用包整理
 | 在运行时初始化属性
 | 在运行时扩展
 | 指定导出帧
 | 只能在外部文件中定义 1, 2
类成员
 | 创建
 | 对于每个类仅创建一次
 | 和子类
 | 使用类成员的示例
类成员的 private 属性
类成员的 public 属性
类的获取/设置方法
类路径
 | 全局和文档级
 | 搜索顺序
 | 修改
 | 已定义
类文件，创建
类，内置
 | 扩展
 | 列表
联合运算
链接, 影片剪辑
链接标识符 1, 2
链接属性对话框 1, 2
连接字符串
逻辑运算符
M
Macromedia Director, 通讯
MIME 格式, 标准
moviename_DoFSCommand 函数
MP3 文件
 | 和 ID3 标签
 | 加载到影片剪辑
 | 预加载
密码和远程调试
面向对象的编程
名称冲突
命名变量 1, 2
命名约定
 | 包
 | 类
默认编码
目标路径
 | 输入
 | 已定义
 | 指定
N
Netscape DevEdge Online
Netscape, 支持的 JavaScript 方法
内置函数
O
on() 和 onClipEvent() 处理函数
 | 范围
 | 附加到影片剪辑
onClipEvent() 处理函数
P
排版印刷约定
平衡（声音）, 控制
Q
嵌套影片剪辑, 已定义
区分大小写
全局变量
 | 和严格数据类型指定
全局类路径
R
_root 属性和加载的影片剪辑
S
setRGB 方法
statements
 | 结束
 | trace 语句
 | 组合
SWD 文件, 已定义
SWF 文件
 | 保持原始大小
 | 创建声音控件
 | Flash Player 中的控制
 | 放在网页上
 | 加载到影片剪辑
 | 加载和卸载
 | 缩放到 Flash Player
 | 跳到某一帧或场景
 | 预加载
 | 在文本字段中嵌入
 | 传递信息
删除
 | 加载的 SWF 文件
 | 影片剪辑
设备字体, 遮蔽
设置代码格式 1, 2
深度
 | 管理
 | 确定实例
 | 确定下一个可用的
 | 确定影片剪辑的
 | 已定义
声音
 | 附加到时间轴
 | 控制
 | 平衡控件
事件, 已定义 1, 2
事件处理函数
 | 范围
 | 分配函数
 | 附加到按钮或影片剪辑
 | 检查 XML 数据
 | 已定义 1, 2
 | 由动作脚本类定义
 | 与 on() 和 onClipEvent()
事件处理函数方法
事件模型
 | on() 和 onClipEvent() 处理函数
 | 事件处理函数方法
 | 事件侦听器
事件侦听器
 | 范围
 | 由动作脚本类定义
时间轴变量
实例
 | 创建的示例
 | 已定义 1, 2
实例成员
实例化对象
实例名称
 | 动态设置
 | 已定义 1, 2
 | 与变量名称相比较
 | 指定
视频，导入的替代方法
“视图选项”弹出菜单 1, 2
鼠标位置, 获取
“输出”面板
 | 变量列表命令
 | 对象列表命令
 | 和 trace 语句
 | 选项
数据, 外部
 | 安全功能
 | 发送和加载
 | 和 LoadVars 对象
 | 和 XML
 | 和 XMLSocket 对象
 | 和服务器端脚本
 | 和消息
 | 检查是否已加载
 | 跨域 SWF 间的访问
数据类型
 | 布尔值
 | 对象
 | MovieClip
 | null
 | 确定
 | 声明
 | 数字
 | undefined
 | 为元素指定
 | 严格类型指定
 | 已定义
 | 转换 1, 2
 | 自动指定
 | 字符串
属性
 | 常数
 | 对象，访问
 | 访问
 | 声明
 | 已定义
 | 影片剪辑
 | 在运行时初始化
属性选项卡, 调试器
数值运算符
数字
 | 处理
 | 转换为 32 位整型
数字键盘，ASCII 键控代码值
数组, 多维
数组访问运算符
 | 检查匹配对
T
Tab 键, 和测试影片
TCP/IP 连接
 | 发送信息
 | XMLSocket 对象
text
 | 编码
 | 滚动
 | 获取测量信息
 | 确定 TextField 对象的所需大小
 | 使用 <img> 标签在图像旁排列文本
 | 在运行时分配到文本字段
文本
TextField 类
 | 创建滚动文本
TextField.StyleSheet 类
 | 创建文本样式
 | 和 TextField.styleSheet 属性 1, 2
 | 和层叠样式表
TextFormat 类
this 关键字
套接字连接
 | 范例脚本
 | 关于
特殊字符
跳到 URL
条件, 检查
调试
 | 编译器错误消息
 | 从远程位置
 | 调试播放器
 | 列出变量
 | 列出对象
 | 使用 trace 语句
 | 使用“输出”面板
 | 文本字段属性
 | 异常处理
调试播放器
调试器
 | 按钮
 | 变量
 | 从上下文菜单选择
 | Flash 调试播放器
 | 监视点列表
 | 设置断点
 | 使用
 | 属性选项卡
调用方法
停止影片剪辑
图标
 | 在调试器中
 | 在脚本窗格上方
突出显示语法
图像
 | 加载到影片剪辑
 | 在文本字段中嵌入
拖动影片剪辑
W
Web 应用程序, 持续连接
Unicode
 | 和测试影片命令 1, 2
 | 支持
URL 编码格式, 发送信息
UTF-8 (Unicode)
外部类文件
 | 创建
 | 使用类路径进行查找
外部媒体
 | 播放 FLV 文件
 | 加载 MP3 文件
 | 加载 SWF 文件和 JPEG 文件
 | 加载概述
 | 使用原因
 | 预加载 1, 2
外部源, 连接 Flash
未定义的数据类型
文本编码
文本字段
 | 避免变量名称冲突
 | 格式设置
 | 和 HTML 文本
 | 默认属性
 | 确定所需大小
 | 实例和变量名称比较
 | 使用层叠样式表进行格式设置
 | 显示属性以进行调试
 | 应用层叠样式表
 | 在嵌入的图像旁排列文本 1, 2
 | 在运行时创建和删除
文档级类路径
问号, 包括在字符串中
舞台, 将元件附加到影片剪辑
X
XML
 | DOM
 | 范例变量转换
 | 分层
 | 使用样式的示例
 | 通过 TCP/IP 套接字发送信息
 | 用 XML 方法发送信息
 | 在服务器端脚本中
XML 类, 方法
XMLSocket 对象
 | 方法
 | 检查数据
 | 使用
系统事件，定义
系统要求
小括号
 | 检查匹配对
消息框, 显示
斜杠语法
 | 动作脚本 2.0 中不支持
信息, 在 SWF 文件间传递
选项弹出菜单
 | 在调试器中
 | 在动作面板中 1, 2
 | 在“输出”面板中
循环 1, 2
 | 动作
Y
严格等于运算符
严格数据类型指定
 | 动作脚本 1 中不支持
 | 和本地变量
 | 和全局变量
颜色
 | 在动作工具箱中
 | 在脚本窗格中
 | 值, 设置
异步动作
异常处理
已加载的数据, 检查
音量, 创建滑动控件
引用变量
引用数据类型
影片剪辑
 | 遍历子级
 | 重制
 | 创建空实例
 | 创建子类
 | 方法
 | 方法, 用于绘制形状
 | 方法和函数比较
 | 分配按钮状态
 | 父级, 已定义
 | 附加 on() 和 onClipEvent() 处理函数
 | 共享
 | 管理深度
 | 函数
 | 和 _root 属性
 | 和 with 语句
 | 检测冲突
 | 将 MP3 文件加载到
 | 将 SWF 文件和 JPEG 文件加载到
 | 开始和停止
 | 控制
 | 列出变量
 | 列出对象
 | 嵌套, 已定义
 | 确定深度
 | 确定下一个可用的深度
 | 删除
 | 实例名称, 已定义
 | 使用键盘激活
 | 数据类型
 | 属性
 | 属性, 在运行时初始化
 | 添加参数
 | 调节颜色
 | 调用多个方法
 | 调用方法
 | 拖动
 | 用作遮罩
 | 在播放时更改属性
 | 在调试器中改变属性
 | 在文本字段中嵌入
 | 在舞台上附加到元件
 | 在运行时初始化属性
 | 在运行时创建
 | 指定实例名称
 | 子级, 已定义
用户事件，定义
优先级，运算符
与 Flash Player 通讯
语法
 | 大括号
 | 点
 | 分号
 | 规则
 | 检查
 | 区分大小写
 | 突出显示
 | 小括号
 | 斜杠
域名和安全性
语言, 在脚本中使用多种
远程调试
远程文件, 通讯
远程站点, 持续连接
原始数据类型
运算符
 | 按位
 | 比较
 | 等于
 | 点
 | 赋值
 | 和值进行组合
 | 结合律 1, 2
 | 逻辑
 | string
 | 数值
 | 数组访问
 | 优先级
运行时, 已定义
Z
在影片和服务器间传输变量
暂停（跟踪）代码
遮罩
 | 和设备字体
 | 忽略笔触 1, 2
侦听器对象
 | 注销
值, 在表达式中处理
执行顺序
 | 脚本
 | 运算符结合律
 | 运算符优先级
注册点, 和加载的图像
注释
术语
传递值
 | 按内容
 | 按引用
转换函数
转换数据类型 1, 2
转义序列
自定义函数
字符串
字符串运算符
子级影片剪辑, 已定义
子节点
子类
 | 创建
 | 和类成员
 | 为影片剪辑创建
资源, 附加
组合语句


A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z


索 引

A
安全性, Flash Player
安装 Flash 1, 2
B
帮助
 | 打印页面
 | 访问
 | 关闭目录
 | 联机
“帮助”面板
 | 更新
 | 使用
 | 搜索
编辑层和层文件夹
编辑栏
标尺
 | 更改单位
 | 使用
 | 显示和隐藏
播放头, 移动
补间帧, 拖动关键帧
C
测试应用程序
层
 | 编辑
 | 创建
 | 更改层高度
 | 更改轮廓颜色
 | 更改顺序
 | 更改显示的层数
 | 拷贝
 | 删除
 | 使用
 | 锁定
 | 添加层按钮
 | 添加图层文件夹
 | 选择
 | 隐藏和显示
 | 引导层
 | 用轮廓查看
 | 重命名
 | 组织
层文件夹
 | 编辑
 | 创建
 | 更改顺序
 | 拷贝内容
 | 删除
 | 锁定
 | 重命名
 | 组织
查看应用程序
插入关键帧命令
插入空白关键帧命令
插入图层命令
插图, 从库中添加
“场景上的命名锚记”首选参数
撤消级别首选参数
创作环境辅助功能
从 Macromedia Flash MX 2004 升级
D
打印选项首选参数（仅限 Windows）
导航控件, 添加
第三方资源
动画, 添加
“动作”面板
对齐
 | 辅助线
 | 网格
“对齐辅助线”命令
“对齐网格”命令
F
发布的应用程序, 在浏览器中查看
发布设置
 | 查看
 | 更改
发布应用程序
Flash
 | 关于
 | 激活
 | 入门
 | 系统要求
Flash MX 2004 系统要求
Flash MX Professional 2004 系统要求
Flash Player
 | 安全性
 | 更改或卸载
 | 关于
 | 系统要求
Flash Player 7 系统要求
发行备注
复制帧命令
辅助功能, Flash 创作环境中
辅助线
 | 对齐
 | 清除
 | 删除
 | 设置首选参数
 | 使用
 | 锁定
 | 显示
 | 移动
G
工具
 | 查看
 | 手形
 | 缩放
 | 选择
 | 自定义工具栏
工具栏
 | 使用
 | 显示和隐藏
 | 自定义
工作区, 显示和隐藏
构建应用程序, 教程
关键帧
 | 插入
 | 创建空白
 | 删除
 | 使用
 | 在补间帧序列中拖动
 | 转换为帧
关键帧命令
J
激活 Flash
“基于整体范围的选择”首选参数
“加亮颜色”首选参数
剪贴板的 PICT 设置首选参数（仅限 Macintosh）
剪贴板上的 FreeHand 文本首选参数
剪贴板上的渐变色首选参数（仅限 Windows）
剪贴板上的位图首选参数（仅限 Windows）
“剪贴板”首选参数
讲座
教程
 | 构建应用程序
 | 指南
交互性, 添加基本
警告首选参数
K
“开始”页
拷贝
 | 层
 | 层文件夹内容
课程，Flash 1, 2
空白关键帧命令
库
 | 将图像导入到
 | 添加插图
 | 用于项目的快捷键
“库”面板
 | 查看项目
 | 关于 1, 2
快捷键
 | 删除
 | 添加和删除
 | 用于对话框控件
 | 用于库项目
 | 用于面板
 | 用于面板控件
 | 用于树形控件
 | 用于“属性”检查器
 | 用于“属性”检查器控件
 | 用于舞台
 | 自定义
L
轮廓
 | 查看层内容
 | 更改层上的颜色
M
Macromedia Flash 开发中心
Macromedia Flash 支持
MIME 类型, 配置
媒体内容, 添加
面板
 | 保存自定义设置
 | 查看列表
 | 创建新组
 | 打开
 | 调整大小
 | 动作
 | 关闭
 | 关于
 | 库
 | 快捷键
 | 扩展
 | 默认布局
 | 排列
 | 取消组合
 | 删除自定义布局
 | 设置
 | 使用
 | 使用选项菜单
 | 停放
 | 拖动
 | 选择布局
 | 用于树形控件的快捷键
 | 折叠
 | 重置布局
 | 组合
面板设置命令
默认布局命令, 面板
Q
“启动时”首选参数
切换选择首选参数
清除关键帧命令
R
认证和培训
S
SWF 文件, 针对服务器 MIME 类型配置
删除
 | 层和层文件夹
 | 帧或关键帧
删除帧命令
上下文菜单, 关于
时间轴
 | 编辑帧
 | 播放头
 | 播放头居中
 | 层高度, 更改
 | 层名字段
 | 层顺序, 更改
 | 层文件夹顺序, 更改
 | 插入帧
 | 处理帧
 | 调整大小
 | 关键帧
 | 关联预览选项
 | 关于
 | 将关键帧转换为帧
 | 拷贝和粘贴帧
 | 删除帧或关键帧
 | 使用
 | 锁定层
 | 锁定层文件夹
 | 停放到应用程序窗口
 | 拖动
 | 拖动帧
 | 外观, 更改
 | 显示的层数, 更改
 | 显示帧缩略图
 | 延长层
 | 隐藏层
 | 用轮廓查看层
 | 预览选项
 | 帧
 | 帧居中按钮
 | 帧显示, 更改
时间轴特效, 添加
“时间轴选项”首选参数
矢量插图, 添加
试用模式
 | 购买 Flash
 | 在版本之间切换
手形工具
首选参数
 | 编辑
 | 常规
 | 场景上的命名锚记
 | 撤消级别
 | 打印选项（仅限 Windows）
 | 基于整体范围的选择
 | 加亮颜色
 | 剪贴板
 | 剪贴板的 PICT 设置（仅限 Macintosh）
 | 剪贴板上的 FreeHand 文本
 | 剪贴板上的渐变色（仅限 Windows）
 | 剪贴板上的位图（仅限 Windows）
 | 警告
 | “启动时”选项
 | 切换选择
 | 设置
 | 时间轴选项
 | 显示工具提示
 | 字体映射默认设置
首选参数命令
树形控件, 快捷键
“属性”检查器
 | 关于 1, 2
 | 快捷键
 | 使用面板和
锁定层和层文件夹
缩放
缩放工具
T
图层命令
图像, 导入到库
W
网格
 | 编辑
 | 对齐
 | 使用
 | 显示
为 Flash Player 配置服务器
位图图像, 消除锯齿
文本, 添加
文档, 创建新
文档编辑模式
舞台
 | 关于
 | 缩放
 | 显示整个
 | 用于选择的快捷键
X
系统要求
 | Flash MX 2004
 | Flash MX Professional 2004
 | Flash Player 7
显示辅助线命令
显示工具提示首选参数
显示全部命令
显示网格命令
显示帧命令
新功能 1, 2
行为, 添加
选择层
Y
引导层
应用程序
 | 测试
 | 发布和查看
 | 范例
 | 在浏览器中查看发布的
预览帧缩略图
元件编辑模式
Z
粘贴帧命令
帧
 | 播放头居中
 | 插入
 | 更改视图
 | 拷贝和粘贴
 | 删除
 | 使用
 | 缩略图显示
 | 通过拖动进行拷贝
 | 显示
 | 显示内容
 | 显示缩略图
 | 显示在时间轴中
 | 在时间轴中编辑
 | 在时间轴中拖动
 | 转换关键帧
帧居中按钮
帧命令
帧视图按钮
帧视图菜单
指导性媒体
重命名层和层文件夹
注册
主工具栏
“自定义工具栏”命令
自定义快捷键对话框
“字体映射默认设置”首选参数
资源 1, 2
组件, 添加和配置


A | B | C | D | F | G | J | K | L | M | Q | R | S | T | W | X | Y | Z


索 引

A
Accordion 组件
 | Accordion 类
 | 参数
 | 创建具有它的应用程序
 | 使用
 | 使用外观
 | 使用样式
 | 自定义
addEventListener
Alert 类
 | 方法
 | 属性
Alert 组件
 | Alert 类
 | 参数
 | 创建具有它的应用程序
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 自定义
安装
 | 检查
 | 指导
安装组件
B
Binding 类
Button 组件
 | Button 类
 | 参数 1, 2
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 属性
 | 自定义
包
本地类路径
编辑元件, 针对组件
编译剪辑
 | 处理
 | 在“库”面板中
标签
组件
 | 调整大小
C
CellRenderer
 | 方法
 | 使用
 | 属性
CellRenderer API
CellRenderer 组件
CheckBox 组件
 | CheckBox 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 属性
className
clickHandler
ComboBox 事件
ComboBox 组件
 | ComboBox 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 使用
 | 使用外观
 | 使用样式
 | 属性
ComponentMixins 类
CSSStyleDeclaration 1, 2
CustomFormatter 类
CustomValidator 类
菜单激活器
参数
 | 查看
 | 定义
 | 可检查, 位于元数据语句中
 | 设置 1, 2
 | 添加到新组件
处理事件
初始化方法, 实现
创建组件
 | 编辑元件图层
 | 编写动作脚本
 | 编写动作脚本的过程
 | 编写构造函数
 | 处理事件
 | 创建 SWC 文件
 | 创建某个类的子类
 | 导出
 | 导入 SWC 文件
 | 定义版本号
 | 定义参数
 | 定义的 UIComponent 类
 | 定义的 UIObject 类
 | 辅助功能
 | 公共事件
 | 扩展组件类
 | 类文件的代码范例
 | 设置外观
 | 事件元数据
 | 实现核心方法
 | 使用 SWC 文件进行实时预览
 | 使用元数据语句
 | 添加参数
 | 添加事件
 | 添加提示文本
 | 添加图标
 | 选择父类
 | 选择类名称
 | 选择元件名称
 | 选择元件所有者
 | 样式
 | 组件元件
D
DataGrid 类
 | 方法
 | 属性 1, 2
DataGrid 组件
 | 参数
 | 创建具有它的应用程序
 | 进行交互
 | 类
 | 了解
 | 视图
 | 使用
 | 使用外观
 | 使用样式
 | 数据模型
 | 自定义
DataGridColumn 类
 | 方法
DataHolder 组件
DataProvider API
 | 事件
 | 属性
DataProvider 类
 | 方法
DataSet 类
DataSet 组件
DataType 类
DateChooser 类
 | 方法
 | 属性
DateChooser 组件
 | DateChooser 类
 | 参数
 | 创建具有它的应用程序
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 自定义
DateField 类, 方法
DateField 组件
 | DateField 类
 | 参数
 | 创建具有它的应用程序
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 属性
defaultPushButton
DeltaPacket
 | 关于
 | 与组件一起使用
DepthManager
 | 方法
 | 类
detail 1, 2
大小方法, 实现
代码提示, 触发
导出自定义组件
导入类
第 1 版的组件结构, 与第 2 版的不同之处
第 1 版组件
 | 升级
第 2 版组件
 | 好处和说明
 | 和 Flash Player
第 2 版组件结构
 | 使用 SWC 文件进行实时预览
 | 与第 1 版的不同之处
动作脚本
 | 为新组件编写
 | 为新组件编写的工作流程
E
EndPoint 类
F
faultactor 1, 2
faultcode 1, 2
faultstring 1, 2
FLA 文件资源, 为组件文件存储
Flash MX 2004, 可用组件
Flash MX Professional 2004, 可用组件
Flash Player
 | 和组件
 | 支持
Flash Professional
 | RDBMSResolver 组件
 | XUpdateResolver 组件
 | 组件类型 1, 2
FocusManager
FocusManager 类
FocusManager 组件
 | FocusManager 类
 | 参数
 | 创建具有它的应用程序
 | 使用
 | 自定义
Form 类
范例主题
方法
 | 初始化, 实现
 | 大小, 实现
 | 定义 getter 和 setter
 | 实现
父类, 为新组件选择
辅助功能
 | 创作
 | 和组件
 | 用于自定义组件
G
getter, 为属性定义
构造函数, 为新组件编写
光晕主题
H
handleEvent 方法
J
继承
 | 在第 2 版组件中
焦点
焦点导航, 创建
接口
 | TransferObject
 | TreeDataProvider
K
“库”面板
扩展类
L
Label 类
Label 组件
 | Label 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用样式
 | 属性
 | 自定义
List 类
 | 构成
 | 滚动
List 组件
 | List 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 了解
 | 事件
 | 使用
 | 使用样式
 | 属性
 | 自定义
Loader 组件
 | Loader 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 属性
 | 自定义
Log 类
类
 | Accordion
 | Alert
 | Binding
 | Button
 | CheckBox
 | ComboBox
 | ComponentMixins
 | CustomFormatter
 | CustomValidator
 | DataGrid
 | DataGridColumn
 | DataSet
 | DataType
 | DateChooser
 | DateField
 | EndPoint
 | FocusManager
 | Label
 | List
 | Loader
 | Log
 | Menu
 | MenuBar
 | NumericStepper
 | PendingCall
 | ProgressBar
 | RadioButton
 | ScrollPane
 | SOAPCall
 | TextArea
 | TextInput
 | 创建子类
 | 导入
 | 和组件继承性
 | 扩展 1, 2
 | 媒体
 | 名称, 用于自定义组件
 | 数字步进器
 | WebService
 | UIComponent
 | UIObject
 | 文件, 为组件存储
 | 选择父类
 | 样式表
类别
 | UI 控件
 | 管理器
 | 媒体
 | 屏幕
 | 数据
类路径
 | 本地
 | 更改
 | 和 UserConfig 目录
 | 了解
 | 全局
M
Macromedia DevNet
Macromedia Flash 技术支持中心
Media 类
 | 方法
 | 事件
 | 属性
MediaController 组件
 | 参数
 | 了解
 | 使用
MediaDisplay 组件
 | 参数
 | 了解
 | 使用
MediaPlayback 组件
 | 参数
 | 了解
 | 使用
Menu 类
 | 方法
 | 属性
Menu 组件
 | 菜单项类型
 | 参数
 | 初始化对象属性
 | 创建具有它的应用程序
 | 关于 XML 属性
 | 进行交互
 | 类
 | 使用
 | 使用外观
 | 使用样式
 | 添加分层菜单
 | 向动作脚本揭示项目
 | 自定义
MenuBar 类
 | 方法
 | 属性
MenuBar 组件
 | 参数
 | 创建具有它的应用程序
 | 进行交互
 | 类
 | 使用
 | 使用外观
 | 使用样式
 | 自定义
媒体
 |  | 使用行为
媒体组件 1, 2
 | 参数
 | 创建应用程序
 | 进行交互
 | 了解
 | 使用
 | 使用外观
 | 使用样式
 | 使用“组件检查器”
 | 行为, 将 MediaController 与 MediaDisplay 关联
 | 行为, 将 MediaDisplay 与 MediaController 关联
 | 行为, 使用标签帧线索点导航
 | 行为, 使用幻灯片线索点导航
 | 自定义
名称
 | 类
 | 元件, 用于自定义组件
N
NumericStepper 类
 | 方法 1, 2
 | 属性 1, 2, 3
NumericStepper 组件 1, 2
 | NumericStepper 类
 | 参数 1, 2
 | 创建具有它的应用程序 1, 2
 | 事件 1, 2, 3, 4
 | 使用 1, 2
 | 使用外观 1, 2
 | 使用样式 1, 2, 3
 | 自定义 1, 2
O
on()
onFault 1, 2, 3
P
PendingCall 类
PopUpManager 类
PopUpManager 类, 方法
ProgressBar 组件
 | ProgressBar 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 属性
 | 自定义
屏幕 API
屏幕阅读器, 辅助功能
Q
全局
 | 类路径
R
RadioButton 组件
 | RadioButton 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 属性
 | 自定义
RDBMSResolver 组件
 | 参数
 | 方法
 | 事件
 | 使用
 | 属性
RPC 组件 API
 | 和 XMLConnector
 | 用于 WebServiceConnector
S
ScrollPane 组件
 | ScrollPane 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用外观
 | 使用样式
 | 属性
 | 自定义
separator
setSize()
setter, 为属性定义
SOAPCall 类
SOAPFault 1, 2
StyleManager 类
StyleManager 类, 方法
SWC 文件
 | 处理
 | 创建
 | 导入
 | 和编译剪辑
 | 解释的文件格式
设置外观
 | 用于自定义组件
深度, 管理
事件
 | 处理
 | 对象
 | 公共事件
 | 广播
 | 添加
 | 元数据 1, 2
 | 侦听器
实例
 | 设置样式
实例, 设置样式
实例样式
实时预览
 | 用于自定义组件
视图
 | Menu 组件
使用动作脚本添加组件
数据绑定类
数据模型
 | Menu 组件
数据组件
属性检查器
数字步进器类
 | 方法
 | 属性
数字步进器组件
 | 创建具有它的应用程序
 | 事件 1, 2, 3, 4, 5
T
Tab 键顺序, 组件的
tabIndex
TextArea 组件
 | TextArea 类
 | 参数
 | 创建具有它的应用程序
 | 事件
 | 使用外观
 | 使用样式
 | 属性
 | 自定义
TextInput 组件
 | TextInput 类
 | 参数
 | 创建具有它的应用程序
 | 方法
 | 事件
 | 使用
 | 使用样式
 | 属性
 | 自定义
TransferObject 组件
 | 方法
Tree 类
 | 属性
Tree 组件
 | XML 格式设置
 | 参数
 | 创建具有它的应用程序
 | 类
 | 使用
 | 使用外观
 | 使用样式
 | 自定义
TreeDataProvider 接口
 | 方法
 | 属性
提示文本, 用于自定义组件
调整组件大小
W
Web 服务, WSDL 文件
Web 服务类
 |  | Web 服务
WebService 类
WebServiceConnector
 | multipleSimultaneousAllowed 参数
 | suppressInvalidCalls 参数
 | WSDLURL 参数
 | 参数
 | 操作参数
 | 方法摘要
 | 事件摘要
 | 使用
 | 属性摘要
WebServiceConnector 组件
UIComponent 类
 | 定义的
 | 和组件继承性
UIObject 类, 定义
WSDL 文件
 | 获取更新
 | 用于 Web 服务
外观
 | 编辑
 | 应用
 | 应用到子组件
外观的链接标识符
外观属性
 | 设置
 | 在原型中更改
文档
 | 概述
 | 术语指南
文档中的术语
X
XML
 | 设置 Tree 组件的格式
XML 属性
XMLConnector
 | 参数
 | 方法摘要
 | 和架构
 | 类
 | 事件摘要
 | 属性摘要
XMLConnector 组件
系统要求
XUpdate
XUpdateResolver 组件
 | 参数
 | 事件
 | 使用
 | 属性
消息 URL http
 | //www.macromedia.com/macromedia/events/online/ondemand/index.html
行为
 | 视频, 控制视频播放
Y
颜色
 | 设置样式属性
样式
 | 继承, 跟踪
 | 确定优先顺序
 | 设置 1, 2
 | 设置全局
 | 设置自定义
 | 用于自定义组件
 | 在实例上设置
 | 支持的
样式声明
 | 创建自定义
 | 默认类
 | 全局
 | 设置类
样式属性
 | color
 | 获取
 | 设置
印刷惯例, 在组件文档中
用户界面 (UI) 控件
用于开发组件的代码范例
语法, 用于元数据语句
预览组件
远程过程调用 (RPC), 用于 WebServiceConnector
远程过程调用组件
元件
 | 名称, 用于自定义组件
 | 所有者, 用于自定义组件
元件编辑, 针对组件
元件图层, 为新组件编辑
元数据
 | 标记
 | 解释
 | 可检查属性
 | 事件 1, 2
 | 语法
元数据的标记
元数据语句中的可检查属性
元素 1, 2
原型
Z
侦听器
 | 函数
主题
 | 创建
 | 应用
自定义
 | color
 | 文本
自定义样式表
自定义组件的图标
子类, 用于替换外观
资源, 其他
子组件, 应用外观
组件
 | DateField
 | DepthManager
 | Flash Player 支持
 | FocusManager 类
 | 安装
 | 动态添加
 | 继承
 | 结构
 | 类别
 | 类别, 已介绍
 | 媒体
 | 删除
 | 添加到 Flash 文档
 | 调整大小
 | 在 Flash MX 2004 中可用
 | 在 Flash MX Professional 2004 中可用
组件的版本号
“组件检查器”面板
组件类文件代码范例
组件类型
 | Accordion
 | Alert
 | Button
 | CellRenderer
 | CheckBox
 | ComboBox
 | DataGrid
 | DataHolder
 | DataProvider
 | DataSet
 | DateChooser
 | DateField
 | Flash Professional 1, 2
 | Label
 | List
 | Loader
 | Menu
 | MenuBar
 | NumericStepper 1, 2, 3, 4
 | PopUpManager 类
 | ProgressBar
 | RadioButton
 | RDBMSResolver
 | ScrollPane
 | StyleManager 类
 | TextArea
 | TextInput
 | TransferObject
 | Tree
 | WebServiceConnector
 | UI 控件
 | XMLConnector
 | XUpdateResolver
 | 管理器
 | 媒体
 | 数据
 | 数字步进器
 | 远程过程调用
组件文件, 存储
组件元件, 创建
组件源文件
“组件”面板


索 引

A
ActiveX 控件
Adobe Illustrator 文件
 | 导出
 | 导入
Adobe Photoshop 文件
 | 导出
 | 导入
ADPCM 压缩，用于声音
AICC
 | 跟踪测验结果
 | 通信概述
 | 为 Web 承载准备兼容文件
 | 向兼容的 LMS 发送跟踪信息
AIFF 声音，导入
align 属性
Alpha 效果
 | 局部透明度
 | 实例属性
AVI 文件, 导出
AutoCAD DXF 图像
AutoCAD DXF 文件，导入
按钮
 | 按下状态
 | 编辑和测试
 | 测试
 | 创建
 | 点击状态
 | 辅助功能说明
 | 关闭可访问的标签
 | 禁用和启用
 | 可访问的标签
 | 启用
 | 弹起状态
 | 添加声音到
 | 脱节的图像变换
 | 为辅助功能命名
 | 选择已启用
 | 帧的状态
 | 指针经过状态
按钮元件
按下状态（按钮）
B
base 属性
bgcolor 属性/参数
BMP 文件
 | 导出
 | 导入
版本控制
 | 编辑站点
 | 打开文件
 | 定义站点
 | 远程文件夹设置疑难解答
“绑定到”对话框
“绑定索引”对话框
“绑定”选项卡
 | “绑定属性”窗格
 | 在“组件检查器”面板中
磅值，选择
保存
 | “保存并压缩”命令
 | 除去删除的项目并
 | 文档
 | 文档为模板
 | 文件, 项目中
“保存并压缩”命令
“保存”命令
背景颜色
笔触
 | 粗细, 选择
 | 工具栏功能键
 | 拷贝
 | 默认颜色, 选择
 | 墨水瓶工具, 修改
 | “属性”检查器, 选择
 | 填充, 转换为
 | 透明, 应用
 | 线条样式, 选择
 | 选取工具, 选择
 | 颜色, 用填充颜色交换
 | 用填充颜色交换颜色
 | 转换为填充
笔触，选择
 | 粗细
 | 默认颜色
 | 使用“属性”检查器
 | 线条样式
 | 使用选取工具
比特率选项，用于 MP3 声音压缩
编辑
 | 导入位图图像
 | 符号
 | 改变线条和形状
 | 柔化对象的边缘
 | 文本
编辑多个帧按钮
编辑封套
 | 单位
 | 放大
 | 用于声音
编辑符号命令
编辑所选项目命令
边距，文本
变量, HTML 模板
变形
 | 对象
 | 文本
 | 指针
 | 组合
变形点
变形面板
 | 撤消变形
 | 拷贝对象
 | 倾斜对象
编译剪辑, 在“库”面板中
标尺单位菜单
表单屏幕
 | 动作脚本类
 | 关于
 | 默认可见性
 | visible 参数
 | 文档结构和
表单应用程序
 | 表单屏幕
 | 默认表单屏幕
 | 新建
表单应用程序模板
标识符, 分配给声音
播放 Flash 内容
播放模式，图形实例
播放一次选项
部分选取工具
 | 调整线段
 | 显示锚记点
补间
 | 动画 1, 2
 | 关于
 | 形状 1, 2
 | 沿着路径
 | 元件颜色
 | 运动路径
补间动画
 | “补间动画”选项
 | “创建补间动画”命令
 | 断开层和运动路径的链接
 | 关于
 | 将层和运动路径链接起来
 | 沿着路径
补间形状
 | 关于
 | 形状提示
补间帧，拖动关键帧
部署 Flash SWF 文件
不透明无窗口或透明无窗口模式和
不透明无窗口模式, 和辅助功能
不要替换现有项目选项
C
擦除整个舞台
classid 属性
codebase 属性
createTextField 方法
采样比率
 | 用于 ADPCM 声音压缩
 | 用于原始声音压缩
参数, 用于屏幕
测试
 | 可访问的内容
 | “生成大小报告”选项
 | 声音
 | 项目
测试按钮，在声音属性对话框中
测试场景命令 1, 2
测试影片命令 1, 2
测验
 | 参数
 | 测试
 | 导航选项
 | 模板
 | 为 Web 承载准备
 | 向模板添加交互式学习组件
“测验”组件
层
 | 断开被蒙住的层的链接
 | 在 Flash Player 中
 | 绝对路径
 | 目标路径中的名称
 | 声音
 | 选择全部内容
 | 已引导
 | 遮罩
 | 遮住其他的层
层次结构, 父子关系的影片剪辑
层叠对象
查看菜单, 更改文档显示
插入关键帧命令
插入空白关键帧命令
“插入目标路径”按钮
查找和替换
 | 概述
 | 屏幕
 | 声音
 | 视频
 | 位图
 | 文本
 | 颜色
 | 字体
场景
 | 测试下载性能
 | 查看
 | 重命名
 | 创建
 | 复制
 | 更改顺序
 | 删除
 | 下载性能, 测试
 | 在每一层上选择任何内容
 | 粘贴到
“场景”面板
超级链接, 在 Flash Player 中查看
撤消按钮，在变形面板中
撤消变形
撤消步骤
 | 重做, 对屏幕
 | 使用“历史记录”面板
 | 和重做
“撤消”命令
尺寸
 | 发布 Flash SWF 文件
 | 为文档设置
 | 文档默认
重复
 | 步骤
 | 命令
“重复”命令
重命名项目或项目文件夹
重制符号命令
重制影片剪辑行为
“重做”命令
创建
 | 新文档
 | 用于调试文件的密码
创建拷贝按钮，在变形面板中
窗口, 打开新
垂直翻转命令
垂直文本
 | 创建
 | 流向
 | 首选参数
从模板新建命令
从右至左的文本流向选项
粗细，线
D
DataHolder 组件
DataSet 组件
 | 参数
 | 访问数据
 | 加载
 | 通用工作流程
 | 传输对象
devicefont 参数
打开文档
“打开”命令
Dreamweaver UltraDev, 更新 SWF 文件
DXF 序列文件, AutoCAD DXF 图像
大小报告
打印
 | 从创作环境中
 | FLA 文件
 | Flash Player 上下文菜单
打印边距命令（仅限 Macintosh）
打印机，支持的
打印命令
“带宽设置”
 | 设置
 | 时间轴图表
 | 已定义
淡出选项, 用于声音
淡入或淡出
单行选项，动态文本
单帧选项
导出
 | 从编辑应用程序中导出 FLV 文件
 | 调色板
 | 透明度
 | 图像
 | Windows 元文件
导出器, Flash 视频
导出文件格式
导航
 | 在测验中
导入
 | FLV 文件
 | 具有透明度的位图
 | 链接 QuickTime 视频
 | 嵌入的视频剪辑
 | 声音
 | 调色板
 | 位图图像
 | 用于移动设备的声音
导入的视频, 格式
导入命令
导入文件
 | 导入到当前 Flash 文档
 | FLV 格式
 | FreeHand 和 Fireworks PNG
 | QuickTime 4 支持的格式
 | 文件序列
 | 支持的格式
滴管工具
点击精确度首选参数
点击状态（按钮）
点语法, 目标路径
动画
 | 比作影片剪辑的图形
 | 编辑多个帧
 | 编辑时间轴中的帧
 | 播放一次
 | 补间
 | 插入帧
 | 创建关键帧
 | 单帧
 | 断开层和运动路径的链接
 | 翻转序列
 | 辅助功能和
 | 绘图纸外观
 | 将层和运动路径链接起来
 | 将库项目拖到关键帧中
 | 将帧显示为绘图纸外观轮廓
 | 静止图像
 | 时间轴中的帧
 | 移动整个
 | 运动路径
 | 在几个帧中扩展背景图像
 | 在时间轴中修改或删除帧
 | 帧频
 | 逐帧
 | 转换为影片剪辑元件
动画, 补间
 | 类型
 | 实例
 | 形状
 | 组
动态文本
 | 创建
 | 丰富文本格式
 | HTML 格式
 | HTML 选项
 | 设置选项
 | 已定义
动态文本的变量选项
动态文本字段
 | 辅助功能说明
 | 在交互式学习组件中命名
动作脚本
 | 辅助功能属性
 | 检测屏幕读取器
 | 屏幕和 1, 2
 | Tab 键
 | 用于屏幕的类
“动作”面板, 实例信息
抖动颜色, GIF 文件 1, 2
独立 Flash Player
读取顺序
 | 在动作脚本中
 | Flash Player 中的默认
在“辅助功能”面板中
对齐
 | 对象 1, 2
 | 容差, 为对象设置
 | 文本块
 | 文本字符
 | 像素 1, 2
对齐, HTML（发布设置）
对齐对象命令
对齐面板
对齐像素命令
“对齐”选项, 用于补间动画 1, 2
对象
 | 变形, 恢复
 | 变形时拷贝
 | 擦除
 | 层叠
 | 对齐 1, 2
 | 翻转
 | 分组
 | 封套功能键, 修改
 | 辅助功能选项, 定义
 | 还原变形的
 | 画图顺序
 | 剪切
 | 拷贝
 | 扭曲
 | 匹配大小
 | 倾斜
 | 任意变形
 | 删除
 | 上移一层
 | 使可访问
 | 使用选取框选择
 | 缩放
 | 调整大小
 | 拖动
 | 下移一层
 | 选择
 | 选择突出显示
 | 旋转
 | 已变形, 复制
 | 移到最后
 | 移到最前
 | 移动
 | 用封套功能键修改
 | 在屏幕读取器面前隐藏
 | 粘贴
多边形模式，套索工具
多边星形工具
多个时间轴, 和屏幕
多行选项，动态文本
多语言内容
 | 应用程序范例
多语言文本
 | 编码语言
 | 非 Unicode 外部文件和
 | 概述
 | #include 动作和
 | system.useCodepage 属性
 | 文本变量
 | XMLConnector 组件
 | 用“字符串”面板创建
多语言文本中的 #include 动作
“多重选择”交互组件
 | 添加和删除干扰项
 | 在“组件检查器”面板中进行配置
 | 资源名称
E
EPS 文件
 | 导出
 | 导入
 | 在导入的 FreeHand 文件中
F
发布
 | 关于
 | 项目
发布命令
发布配置文件, 项目
发布设置
 | 创建的文件格式
 | 放映文件
 | 生成 HTML
发布预览命令
Fireworks PNG 文件，导入
FLA 文件
 | 保存
 | 打印
Flash 表单应用程序
Flash 幻灯片演示文稿
Flash MX 模式, 另存为
Flash 内容, 对齐和裁剪
Flash Player
 | 层
 | 超级链接, 查看
 | 辅助功能和
 | 配置 Web 服务器
 | 屏幕读取器的默认读取顺序
 | 上下文菜单
 | 上下文菜单, 自定义
 | 上下文菜单应用程序范例
 | Unicode 支持
 | 文本编码
 | 文件, 导入
 | 文件格式
 | 下载, 模拟
 | 支持的打印机
Flash SWF 文件, 分发
Flash 项目面板
Flash 应用程序
 | 辅助功能选项
 | 为辅助功能命名
Flash, 退出
FLV 文件
 | 从编辑应用程序中导出
 | 导出
 | 导入
 | 动态播放外部
FreeHand 导入设置对话框
FutureSplash 播放文件，导入
反馈选项, 为交互式学习组件设置
范例
 | 多语言内容
 | Flash Player 上下文菜单
 | 辅助功能
 | 可扩展性 API
 | 设备字体遮罩
 | 使用
 | 文本增强功能
 | 新闻阅读器
 | 照片剪贴簿
翻转对象
翻转命令，用于动画
放射状渐变选项
放映文件
 | 创建
 | 独立影片
 | 用独立播放器播放
防止导入选项
分发
 | 对象到顶部、底部、左侧、右侧或中间
 | 对象到图层
 | Flash SWF 文件
分离命令
 | 实例和
 | 位图和
 | 文本和 1, 2
 | 元件实例和
 | 组和
分散到图层命令
丰富式媒体模板
丰富文本格式，在文本字段中
封套功能键
_parent 别名
覆盖声音设置选项
符号
 | 按钮
 | 按钮, 创建
 | 编辑
 | 补间颜色
 | 查看定义
 | 创建
 | 断开与实例的链接
 | 复制
 | 交换
 | 空, 创建
 | 类型
 | 实例, 创建
 | 实例, 断开
 | 实例属性
 | 锁定
 | 图形
 | 图形对象, 转换
 | 已定义
 | 影片剪辑
 | 元件编辑模式
 | 在当前位置编辑
 | 在新窗口中编辑
 | 转换图形对象
 | 字体
父屏幕, 已定义
复制元件
复制帧命令
辅助功能
 | 按钮和输入文本字段的自动标签
 | 按钮和文本字段标签
 | 测试内容
 | 创建 Tab 键顺序
 | 动画和
 | Flash Player 和
 | Flash 应用程序的标题和说明
 | 关闭按钮和文本字段标签
 | 关闭选定对象的
 | 键盘浏览
 | 可访问对象的说明
 | Macromedia Flash 辅助功能 Web 页
 | 命名按钮和文本字段
 | 命名对象
 | 默认的读取和 Tab 键顺序
 | 屏幕读取器
 | 实例名称和
 | 使用动作脚本创建读取顺序和 Tab 键顺序
 | 使用动作脚本检测屏幕读取器
 | 听力受损用户
 | 为整个 Flash 应用程序定义
 | 影片剪辑
 | 应用程序范例
 | 在动作脚本中创建属性
 | 在“辅助功能”面板中创建读取顺序
 | 支持的配置
 | 自动标签
 | 组件
子项
辅助功能, 为屏幕创作
“辅助功能”按钮, 在“属性”检查器中 1, 2
“辅助功能”面板 1, 2
 | “快捷键”选项
 | “描述”选项
 | 名称与自动标签
 | “名称”选项
 | “使对象可访问”选项
 | “使子对象可访问”选项
 | Tab 键顺序
 | “Tab 键索引”选项
 | “自动标签”选项
父子关系
G
GIF 动画文件
 | 导出
 | 导入
 | 发布
GIF 文件
 | 导出
 | 导入
 | 发布
 | GIF89a 文件格式
改变线条和形状
钢笔工具
 | 绘制曲线路径
 | 绘制直线
 | 曲线点
 | 使用
 | 首选参数
 | 调整锚记点
 | 指针
 | 转角点
高级效果，对于元件实例
跟踪测验结果
跟踪位图命令
跟踪文本
更新按钮，在声音属性对话框中
更新声音
更新数据包
 | 解析程序组件
工具
 | 部分选取
 | 滴管
 | 多边星形
 | 钢笔
 | 矩形
 | 墨水瓶
 | 铅笔
 | 任意变形
 | 刷子
 | 套索
 | 填充变形
 | 椭圆
 | 文本
 | 线条
 | 橡皮擦
 | 选取
 | 颜料桶
工具栏，笔触颜色和填充颜色控件
共享库
 | 使用资源
 | 添加声音到
 | 字体元件
共享库资源
 | 运行期间
 | 在创作过程中, 概述
 | 在创作过程中更新或替换
“公用库”子菜单
关闭项目
关键帧
 | 补间
 | 补间动画
 | 补间形状
 | 补间帧序列, 拖动
 | 插入
 | 持续时间, 扩展
 | 创建
 | 创建空白
 | 动画, 逐帧
 | 关联声音
 | Sorenson Spark 编解码器,
 | 删除
 | 声音, 关联
 | 图像, 扩展
 | 在补间帧序列中拖动
 | 在两者之间选择任何内容
 | 帧, 转换
 | 逐帧动画
关键帧命令 1, 2
轨道, QuickTime
滚动文本 1, 2
过渡
 | 补间动画
 | 用于屏幕
H
height 属性 1, 2
HTML
 | 标记参考
 | 发布模板
 | 发布设置
 | 格式, 文本字段
 | 模板
 | 选项, 动态文本字段
“HTML 对齐”发布设置
还原变形的对象
和屏幕读取器的读取顺序
滑过状态（按钮）
幻灯片屏幕
 | 参数
 | 动作脚本类
 | 关于
 | 默认导航
 | 文档结构和
 | 隐藏时的默认行为
幻灯片演示文稿
 | 幻灯片屏幕
 | 默认幻灯片屏幕
 | 新建
灰度图像，在导入的 FreeHand 文件中
回复命令
绘图纸外观
绘图纸外观标记
 | 更改显示
 | 移动
绘图纸外观轮廓按钮
绘制
 | 擦除线条或形状
 | 重叠形状
 | 重绘几何形状的容差
 | 点击精确度容差
 | 对齐对象
 | 对齐线条终点
 | 对齐像素
 | 对象, 对齐
 | 多边形和星形
 | 改变线条和形状
 | 钢笔工具
 | 工具概述
 | 将线条转换为填充
 | 交互式介绍
 | 精确线条和曲线
 | 扩展形状
 | 锚记点
 | 锚记点, 调整
 | 锚记点, 显示形状上的
 | 铅笔工具
 | 曲线, 平滑
 | 曲线, 优化
 | 曲线点和转角点
 | 柔化填充边缘
 | 伸直和平滑线条
 | 伸直线条的容差
 | 刷子笔触
 | 填充边缘, 柔化
 | 调整线段
 | 椭圆和矩形
 | 线段, 调整
 | 显示形状上的锚记点
 | 线条, 直线 1, 2
 | 线条终点, 对齐
 | 像素, 对齐
 | 星形
 | 形状, 修改
 | 圆角矩形
绘制边框和背景选项，动态文本
绘制曲线
 | 精确
 | 平滑
 | 使用钢笔工具
 | 优化
绘制线条
 | 擦除
 | 改变
 | 精确
 | 平滑和伸直
 | 伸直容差
 | 直线 1, 2
 | 转换为填充
绘制形状
 | 重叠
 | 重绘几何形状的容差
 | 改变
 | 扩展
 | 显示锚记点
 | 修改
混合选项，用于形状补间
混合，在导入的 FreeHand 文件中
混色器
“获取更多命令”选项
J
Internet Explorer
JPEG 文件
 | 导入
 | 发布
架构
 | 编辑架构项目设置 1, 2
 | 编码器
 | 种类
 | 种类和编码器
 | 导入示例架构
 | 格式程序
 | 架构项目设置
 | 架构项目属性
 | 数据类型
 | 添加架构字段
 | 添加组件属性
 | Web 服务
 | XML 数据源
“架构”选项卡
 | 在“组件检查器”面板中
加载的文档, 控制
加载默认颜色选项
加载顺序选项
加载图形行为
加载外部影片剪辑行为
渐变色
渐变填充
 | 创建或编辑
 | 在导入的 FreeHand 文件中
 | 导入和导出
 | 使用纯色和
 | 应用
 | 用填充变形工具调整
渐变指针
检查器。请参阅“组件检查器”面板
键盘控制
 | 可访问的内容中
剪切命令
剪切屏幕
剪贴板, 导入
箭头键，移动对象
将文本呈现为 HTML 选项
将线条转换为填充命令
交错
 | GIF 文件
 | JPEG 文件
 | PNG 文件
交互式学习组件
 | 从时间轴中删除
 | 反馈选项
 | 公用库资源, 管理
 | Knowledge Track 选项
 | LToolboxClass 脚本
 | 累积跟踪数据
 | 添加到文档
 | 在文档中
 | 问题文本, 添加
 | 系统要求
 | 在测验中修改
 | 注册图形干扰项
 | 资源
 | 组件, 添加
“交换元件”对话框
接近网页最适色调色板
解决库项目对话框
解析程序组件
 | 更新数据包
静态图像, 导出帧
静态文本
 | 创建
 | 和屏幕读取器读取顺序
 | 为辅助功能而更改为动态文本
 | 已定义
静止图像
 | 导出
 | 关于
矩形工具
 | 关于
 | 圆角矩形功能键
绝对目标路径
K
Knowledge Track 选项, 为交互式学习组件设置
开始时间控件，用于声音
开始拖动影片剪辑行为
开始选项，用于声音
拷贝
 | 对象 1, 2
 | 历史记录步骤
 | 屏幕
可扩展性 API
可选择的文本
可选择选项
 | 动态文本
 | 文本
空白关键帧命令
空隙大小功能键，颜料桶工具
空元件，创建
控制菜单, 测试场景和测试影片
库
 | 包括在 Flash 中
 | 创建永久
 | 从其他 Flash 文件打开
 | 公用
 | 解决资源之间的冲突
 | 声音
 | 使用共享
 | 资源, 解决冲突
 | 组件
库面板项目
 | 编辑
 | 查找未使用的
 | 重命名
 | 排序
 | 删除
 | 添加到文档
 | 在另一文档中使用
“库”面板
 | 编辑项目
 | 查找未使用的项目
 | 重命名项目
 | 打开
 | 导入的文件, 更新
 | 对项目排序
 | 将项目添加到文档
 | 宽显示
 | 列
 | 删除项目
 | 使用
 | 使用文件夹
 | 调整大小
 | 图形对象, 转换为元件
 | 文件夹, 使用
 | 选项菜单
 | 在另一文档中使用项目
 | 窄显示
“库”命令
快捷键
 | 创建
 | “辅助功能”面板上的选项
 | 为屏幕读取器命名
快速命令
扩大选项
 | 用于补间动画 1, 2
 | 用于补间形状
扩展填充命令
L
loadMovie 动作和层
LOOP 参数发布设置
loop 属性/参数
LToolboxClass 脚本, 在交互式学习组件中查看和编辑
累积跟踪数据, 在交互式学习组件中访问
类名称, 用于屏幕
“历史记录”面板
 | 保存命令
 | “保存为命令”选项
 | 步骤, 复制和粘贴
 | 步骤, 重复
 | “重放”按钮
 | 概述
 | 屏幕
 | 清除历史记录列表
连接器组件
链接文本块
连接线首选参数
链接选项
 | 用于声音
 | 字体元件
链接选项，文本
亮度实例属性
亮度效果
另存为模板命令
“另存为”命令
流选项，用于声音
路径
 | 补间
 | 调整锚记点
路径表达式
 | 数据绑定
轮廓命令
M
MacPaint 文件，导入
Macromedia Authorware, 播放 Flash SWF 文件
Macromedia Director, 播放 Flash SWF 文件
Macromedia Fireworks
 | 编辑导入位图图像
 | 导入文件
Macromedia FreeHand 文件
 | 导出
 | 导入
 | 用剪贴板导入
MediaController 组件
 | “关联显示”行为
 | 链接到 MediaDisplay
 | 所述
 | 添加到文档
MediaDisplay 组件
 | 关联控制器
 | 链接到 MediaController
 | 所述
 | 添加到 Flash 文档
 | 线索点
MediaPlayback 组件
MENU 参数发布设置
menu 属性/参数
MIME 类型, Flash Player
movie 参数
MP3
 | 声音, 导入
 | 压缩, 用于声音
MSAA (Microsoft Active Accessibility)
锚记点
 | 轻推
 | 删除
 | 添加
 | 调整
 | 拖动
 | 移动
 | 在形状上显示
 | 在转角和曲线之间转换
美国航空工业 CBT 委员会, 向兼容的 LMS 发送跟踪信息
面板
 | “场景”
 | 动作
 | 对齐
 | Flash 项目
 | 混色器
秒按钮，在编辑封套中
名称
 | 为辅助功能选择
命令
 | 下载
 | 运行
“命令”菜单
 | “编辑命令列表”选项
 | 不可重复的步骤
 | 创建和管理命令
 | “获取更多命令”选项
 | 运行命令
 | 再次使用命令
模板
 | 变量
 | 表单应用程序
 | 创建
 | 创建文档
 | 发布
 | 范例
 | 丰富式媒体
 | 用于屏幕
 | 屏幕演示文稿
 | 视频
 | 使用
 | 速记变量
 | 演示文稿
 | 移动设备
 | 照片幻灯片
“模拟下载”命令
默认的读取和 Tab 键顺序
默认调色板
默认文本方向选项
默认压缩选项，用于声音
墨水瓶工具
魔术棒功能键，套索工具
目标对象, 添加和删除
目标路径
 | 表达式
 | 层名
 | 关于
 | 绝对
 | 相对
 | 指定
N
Netscape Navigator
扭曲对象
O
overlayChildren 参数
P
PICT 文件
 | 导出
 | 导入
PLAY 参数发布设置
play 属性/参数
playHidden 参数
pluginspage 属性
PNG 导入设置对话框
PNG 文件
 | 导出
 | 导入 1, 2
 | 发布
 | PNG 过滤器选项
PrintJob
 | addPage 方法
 | 对象和类
 | orientation 属性
 | pageHeight 属性
 | pageWidth 属性
 | paperHeight 属性
 | paperWidth 属性
 | send 方法
 | start 方法
 | 使用动作脚本类
匹配打印机选项
匹配内容选项
拼写检查
 | 关于
 | 设置
 | 使用
品质选项，用于 MP3 声音压缩
平滑功能键，选取工具
平滑曲线和线条
平滑曲线首选参数
屏幕
 | 编辑内容
 | 编辑始祖屏幕
 | 表单屏幕
 | 表单应用程序, 创建
 | 参数
 | 查找和替换
 | 撤消和重做步骤
 | 重做和撤消步骤
 | 创作辅助功能和
 | 创作环境
 | 导航和控制, 行为
 | 第一个, 添加
 | 顶层屏幕
 | 动作脚本和 1, 2
 | 动作脚本类, 更改
 | 多个, 选择
 | Flash 表单应用程序
 | Flash 幻灯片演示文稿
 | 父屏幕
 | 复制或剪切
 | 工作流程
 | 过渡行为
 | 幻灯片屏幕
 | 幻灯片演示文稿, 创建
 | 宽度和高度, 查看
 | 类名称
 | 类名称, 在属性检查器中
 | 类型, 选择
 | 命名
 | 模板, 使用
 | 默认屏幕和实例名称
 | 内容, 编辑
 | “屏幕轮廓”窗格 1, 2
 | 嵌套, 查看
 | 嵌套屏幕, 添加
 | 删除
 | 上下文菜单
 | 时间轴和
 | 实例名称
 | 实例名称, 查看和更改
 | 始祖屏幕, 编辑
 | 树形视图
 | “属性”检查器, 使用
 | 添加第一个屏幕
 | 添加新屏幕
 | 拖放
 | 完全呈现内容
 | 文档, 创建新的
 | 文档窗口, 查看
 | 文档结构和层次结构 1, 2
 | 文档类型
 | x 和 y 坐标
 | 新的, 添加
 | 兄弟屏幕
 | 选择类型
 | 演示文稿模板
 | 移动
 | 影片浏览器和
 | 用于导航和控制的行为
 | 在同一层上添加
 | 在舞台上移动子屏幕
 | 粘贴
 | 注册点, 查看
 | 注册点, 更改
 | 注册点, 网格
 | “自动对齐”选项, 用于注册点网格
 | 子屏幕 1, 2, 3
 | 组件和
屏幕读取器
 | 创建读取顺序和 Tab 键顺序
 | 概述
 | 使用动作脚本检测
 | 隐藏对象
“屏幕轮廓”窗格
 | 关于
 | 调整大小
 | 显示和隐藏
 | 选择屏幕
 | 展开和折叠
Q
QUALITY 参数发布设置
quality 属性/参数
QuickTime
 | 链接视频, 导入
 | 目录路径, 设置视频
 | 视频, 在 Flash 中预览
 | 图像, 导入
 | 文件, 导出
 | 文件, 发布
 | 影片
 | 影片, 仅导入声音
启用简单按钮命令
铅笔工具
 | 绘画模式
 | 绘制
 | 平滑曲线
 | 伸直线条
嵌入字体
 | XML 表
 | 选择
切线手柄，调整
清除关键帧命令
清除命令
倾斜
 | 使用变形面板
 | 对象
曲线
 | 绘制，使用钢笔工具
 | 伸直和平滑
 | 调整点和切线手柄
 | 调整线段
 | 拖动切线手柄
 | 优化
取消全选命令
取消组合命令
区域填充
全屏命令
确认线首选参数
确认形状首选参数
R
RDBMSResolver 组件
 | 参数
 | 更新
 | 结果
 | 通用工作流程
RGB 颜色，导入和导出
“热件”交互组件
 | 添加和删除干扰项
 | 在“组件检查器”面板中进行配置
 | 资源名称
热区干扰项, 添加和删除
“热区”交互组件
 | 在“组件检查器”面板中进行配置
 | 资源名称
任意变形工具
容差，对齐对象
柔化填充边缘命令
S
salign 参数
SALIGN 参数发布设置
SCALE 参数发布设置
scale 属性/参数
SCORM
 | 跟踪测验结果
 | 通信概述
 | 为 Web 承载准备兼容的交互式学习组件
 | 向兼容的 LMS 发送跟踪信息
Silicon 图形文件，导入
Sound Designer II 文件，导入
src 属性
SWF 文件
 | 播放
 | 打印帧
 | 导入
 | 防止导入
 | JPEG 压缩
 | 快捷菜单
 | 替换系统字体
 | 循环
 | 帧加载顺序
swliveconnect 属性
Sun AU 文件，导入
System 7 声音，导入
system.useCodepage 属性
色调实例属性
色调效果
删除
 | 场景
 | 对象
 | 屏幕
 | 线
 | 项目, 并保存文档
 | 帧或关键帧
删除渐变色选项 1, 2
删除屏幕
删除帧命令
上下文菜单
 | 用于屏幕
 | 在 Flash Player 中自定义
上移一层命令
“上移一层”行为
设备字体 1, 2
设备字体遮罩
 | 应用程序范例
“设备字体”发布设置
伸直功能键，选取工具
伸直曲线，线条
“生成大小报告”选项
声音
 | ADPCM 压缩
 | 按钮, 添加到
 | 版本, 创建单独的
 | 测试
 | 查找和替换
 | 重用以减小文件大小
 | 导入
 | 封套, 编辑
 | 封套线
 | 共享库, 添加到
 | 减小文件大小的技巧
 | 开始和停止
 | 开始时间控件
 | 开始同步选项
 | 在可访问的应用程序中
 | 控件, 编辑
 | 在库中
 | 流和事件
 | 流同步
 | MP3 压缩
 | 默认压缩选项
 | 起始点, 设置
 | 声音属性对话框
 | 事件和流
 | 事件同步选项
 | 属性
 | 停止时间控件
 | 停止同步选项
 | 同步
 | 文件大小, 减小技巧
 | 选项菜单
 | 循环
 | 循环播放以减小文件大小
 | 压缩菜单选项
 | 压缩用于导出
 | 移动设备
 | 音量, 控制
 | 有效使用
 | 原始压缩
 | 在关键帧中开始播放和停止播放
 | 帧, 添加到
 | 终止点, 设置
声音对象, 使用声音
声音属性对话框
“使对象可访问”选项 1, 2
事件声音
事件选项，用于声音
时间轴
 | 编辑 1, 2
 | 别名, 父
 | 动画帧
 | 多个时间轴
 | 父别名
 | 关键帧, 创建
 | 关键帧, 删除
 | 绘图纸外观帧
 | 将关键帧转换为帧
 | 绝对目标路径
 | 拷贝和粘贴帧
 | 目标路径
 | 目标路径, 绝对
 | 目标路径, 相对
 | 用于屏幕
 | 拖动帧
 | 在影片剪辑中
 | 帧, 插入
 | 帧, 绘图纸外观
 | 帧, 删除
时间轴特效
 | 编辑
 | 对象类型
 | 删除
 | 说明和设置
 | 添加
时间轴帧
 | 拷贝和粘贴
 | 删除
 | 拖动
实例名称
 | 和可访问的对象
 | 用于屏幕
实例属性对话框
实例，元件
 | 重命名
 | 创建
 | 断开与元件的链接
 | 分离
 | 交换
 | 命名
 | 属性, 更改
 | 信息, 获取
 | 信息面板
 | 行为
 | 行为, 改变
 | 选择
 | 颜色和透明度, 改变
 | 已定义
矢量图形
 | 从导入位图图像进行创建
 | 用剪贴板导入
 | 与位图比较
视频
 | 饱和度
 | 编辑视频剪辑
 | 查找和替换
 | 带宽选项
 | 导入的文件格式
 | 对比度
 | FLV 文件, 播放外部
 | FLV 文件, 从编辑应用程序中导出
 | FLV 文件, 导入
 | 更新嵌入的视频
 | 关键帧间隔
 | 灰度系数
 | 回放, 控制
 | 快速压缩
 | 链接 QuickTime
 | 亮度
 | 模板
 | Sorenson Spark 编解码器
 | 视频品质设置
 | 属性, 更改
 | 提示创建
 | 同步帧频
 | 行为, 控制视频
 | 行为, 添加和控制
 | 压缩, 关于
 | 压缩, 配置文件
 | 压缩, 自定义配置文件
 | 帧频
 | 组件
视频编辑
 | 尺寸
 | “导入至”选项
 | 合并剪辑
 | 开始和停止导入点
 | “音频轨道”选项
视频导入向导
 | 编辑视频剪辑
 | 导入嵌入的视频 1, 2
 | 高级设置
 | 压缩配置文件
“使影片可访问”选项
使用发布预览命令进行预览
使用“历史记录”面板重做步骤
“使子对象可访问”选项
 | 所述
 | 影片剪辑和
始祖屏幕, 已定义
首选参数
 | 垂直文本
 | 钢笔工具
 | 绘画设置选项
 | “显示钢笔预览”选项
 | “显示精确光标”选项
 | “显示实心点”选项
数据
 | 受管与非受管
数据绑定
 | 绑定属性
 | 处理架构
 | 输入路径表达式
数据管理
数据连接
 | 和 Flash Player 安全性
数据流, 测试性能
“数据流图表”, 在“带宽设置”中
输入文本
 | 创建
 | 丰富文本格式
 | HTML 格式
 | 已定义
输入文本字段
 | 辅助功能说明
 | 关闭可访问的标签
 | 可访问的标签
 | 为辅助功能命名
属性
 | 声音
 | 元件实例
属性命令
“属性”检查器
 | 笔触和填充颜色控件
 | 更改单位
 | 工具
 | 屏幕, 用于
 | 声音属性
 | 实例
 | 视频, 更改属性
 | 文档属性
 | 修改文档属性
 | 移动对象
 | 字体属性
刷子工具
 | 设置刷子大小和形状
 | 锁定填充功能键
 | 涂色
 | 涂色模式
 | Wacom 压敏绘图板
水平翻转命令
水平文本流向
锁定命令
锁定填充功能键
缩放
 | 对象
 | 通过拖动
缩放按钮，在编辑封套中
缩放选项，用于补间动画
缩进，文本
T
Tab 键顺序
 | 查看
 | 在动作脚本中
 | 辅助功能的默认
 | 在“辅助功能”面板中
 | 概述
targetPath 函数
TGA 文件，导入
TIFF 文件，导入
弹起状态（按钮）
套索工具
 | 多边形模式
 | 魔术棒功能键
 | 魔术棒设置功能键
 | 选择对象
特殊实例颜色属性
替换
 | 声音
 | 视频
 | 位图
 | 文本
 | 颜色
 | 字体
替换字体
 | 查看
 | 关闭警告
 | 删除
 | 指定
填充
 | 边缘, 柔化
 | 从线条创建
 | 工具栏功能键
 | 渐变
 | 渐变或位图, 调整
 | 拷贝
 | 扩展
 | 默认颜色, 选择
 | 柔化边缘
 | 锁定渐变色或位图, 用 1, 2
 | 调整渐变或位图
 | 透明, 应用
 | 位图
 | 文本, 为
 | 线条, 创建
 | 选择默认颜色
 | 颜料桶工具, 应用
 | 颜色, 用笔触颜色交换
 | 应用透明
 | 用笔触颜色交换颜色
 | 用颜料桶工具应用
填充变形工具
添加形状提示命令
“填空”交互组件
 | 在“组件检查器”面板中进行配置
 | 资源名称
调色板
 | 导入和导出
 | 将当前调色板保存为默认
 | 默认
 | web 安全
 | 修改
 | 最适色彩
调试文件, 用密码保护
“调整到路径”选项, 用于补间动画 1, 2
调整对象大小 1, 2
停止时间控件, 用于声音
停止拖动影片剪辑行为
停止选项，用于声音
同步声音
同步选项，用于补间动画
同步选项，用于声音
透明度
 | alpha
 | 补间
 | 导出
 | 局部
 | 调节单独的颜色值
 | 在导入位图图像中保留
透明无窗口模式, 和辅助功能
涂色
 | 工具
 | 用颜料桶工具封闭空隙
图像
 | 导出
 | 导入 1, 2
图形
 | 创建元件实例
 | 加载行为
 | 设置动画选项
图形对象, 转换为元件
图形干扰项, 在交互式学习组件中注册
图形元件
 | 关于
 | 用行为控制
“退出”命令
拖动对象
拖动对象, 添加和删除
“拖放”交互组件
 | 在“组件检查器”面板中进行配置
 | 资源名称
椭圆工具
W
Wacom 压敏绘图板 1, 2
WAV 声音
 | 导出
 | 导入
Web 安全调色板
Web 承载, 准备交互式学习组件
Web 服务
 | 和应用程序
 | 架构
Web 服务器, 为 Flash Player 配置
WebServiceConnector 组件
 | 参数
 | 迟滞解码
 | 通用工作流程
width 属性 1, 2
Windows 元文件
 | 导出
 | 导入
visible 参数, 用于表单屏幕
wmode 属性/参数
Unicode
 | Flash Player 支持
 | 字体选择
URL, 在 HTML 文件中列出
WSDL 文件
UTF-16 BE 和 UTF-16 LE
UTF-8
外部图像编辑器, 和导入的位图
弯曲对象
“完整”命令
网页 216 色调色板
为
为 Dreamweaver UltraDev 更新 Flash SWF 文件
位图, 查找和替换
位图属性对话框
位图填充
 | 变形
 | 应用
位图图像
 | 编辑
 | 导入
 | 导入时保留透明度
 | 分离
 | 设置属性
 | 设置压缩选项
 | 无损压缩
 | 消除锯齿 1, 2
 | 修改填充的区域
 | 压缩为 JPEG 或 PNG 文件
 | 用剪贴板导入
 | 与矢量图形比较
 | 转换为矢量图形
为运行时共享导出选项
为运行时共享导入选项
文本
 | 磅值，选择
 | 报告, 在 HTML 文件中
 | 编辑
 | 边距
 | 变形
 | 查找和替换
 | 创建
 | 定宽或定高
 | 动态格式
 | 动态文本选项
 | 对齐
 | 多语言
 | Flash Player 中的 Unicode
 | 分离 1, 2, 3
 | 滚动 1, 2
 | 加宽文本块
 | 剪贴板, 导入
 | 锯齿
 | 链接到 URL
 | 排列, 水平或垂直
 | 拼写检查
 | 嵌入字体
 | 设备字体
 | 使用户可以选择
 | 属性, 选择
 | 水平或垂直流向
 | 替换
 | 填充颜色
 | 调整文本块的大小
 | URL, 链接
 | 文本字段
 | 消除锯齿
 | 选择
 | 选择设备字体
 | 选择样式
 | 选择字体
 | 颜色, 选择
 | 用户可以选择, 使
 | 用剪贴板导入
 | 优化
 | 在“字符串”面板中翻译
 | 遮罩
 | 字段
 | 字符位置
 | 字体, 选择
 | 字体和段落属性
 | 字体替换
 | 字体元件, 创建
文本报告, 在 HTML 文件中
文本变量
 | 在多语言文本中使用
文本工具
文本块
 | 加宽
 | 调整大小
 | 外观
 | 选择 1, 2
文本增强功能
 | 应用程序范例
文本字段
 | 动态创建和删除
 | 动态设置属性
 | 丰富文本格式
 | 为辅助功能命名
 | 用事件触发脚本
文本字体
 | 轮廓
 | 嵌入
 | 设备
 | 属性 1, 2
 | 替换缺失
 | 选择 1, 2
 | 选择设备
 | 元件, 创建
文档
 | 保存 Flash
 | 保存为 Flash MX 格式
 | 背景颜色, 设置
 | 标尺单位, 设置
 | 表单应用程序
 | 层
 | 超级链接, 在 Flash Player 中查看
 | 尺寸, 设置
 | 除去删除的项目并保存
 | 创建新的幻灯片应用程序或表单应用程序
 | 从模板创建
 | 打开
 | 打开新窗口
 | 大小报告, 生成
 | Flash Player, 加载到
 | 幻灯片演示文稿
 | 回放, 优化
 | 加速显示
 | 加载到 Flash Player 中
 | 快速显示
 | 另存为模板
 | 轮廓显示
 | 模板, 创建
 | 模板, 另存为
 | 屏幕层次结构
 | 删除的行, 除去并保存
 | 上下文菜单, 自定义
 | 属性, 设置
 | “属性”检查器, 修改
 | 退出, 保存
 | 退出时保存
 | 完整显示
 | 文本和字体, 优化
 | 舞台大小, 设置
 | 消除锯齿显示
 | 新, 创建
 | 新建
 | 修改
 | 颜色, 优化
 | 应用程序, 创建新的幻灯片或表单
 | 用于多个文档的选项卡
 | 优化文本和字体
 | 优化颜色
 | 优化元素和线条
 | 元素和线条, 优化
 | 在“属性”检查器中修改
 | 针对回放优化
 | 帧频, 设置
文档, 设置
 | 背景颜色
 | 标尺单位
 | 尺寸
 | 属性
 | 舞台大小
 | 帧频
文档编辑模式
“文档”命令
文件
 | 保存, 项目中
 | 查找缺少的, 项目中
 | 打开, 版本控制
 | 打开, 项目中
 | 导入
 | 关闭, 项目中
 | 删除, 项目中
 | 移动, 项目中
文件格式
 | 导出
 | 导入
 | 替代格式
文件夹
 | 重命名, 项目
 | 在“库”面板中
 | 删除, 项目中
 | 项目
 | 移动, 项目中
问题文本, 添加到交互式学习组件
舞台大小
舞台，橡皮擦
无字距微调选项
X
XLIFF
XML 数据源
 | 架构
XML 文件
 | 导入到“字符串”面板
 | 用动作脚本加载
 | “字符串”面板中的格式
XMLConnector 组件
 | 参数
 | 多语言文本
 | 通用工作流程
XUpdate 数据包
XUpdateResolver 组件
 | 参数
 | 更新
 | 接收结果
 | 通用工作流程
下移一层命令
“下移一层”行为
“下载设置”命令
下载速度, 测试
线
 | 间距
 | 伸直
 | 橡皮擦工具, 删除
 | 选择粗细
 | 选择连接
 | 选择样式
 | 用墨水瓶工具修改
 | 用橡皮擦工具删除
 | 转换为填充
显示, 加速文档
显示钢笔预览首选参数
显示警告消息选项
“显示精确光标”首选参数
显示实心点首选参数
显示形状提示命令
线条工具
线条样式对话框
线性渐变选项
相对目标路径
项目
 | 版本控制
 | 保存文件
 | 测试
 | 查找缺少的文件
 | 重命名
 | 创建
 | 创建文件夹
 | 打开
 | 打开文件
 | 发布
 | Flash 项目面板
 | 关闭
 | 关闭文件
 | 删除文件或文件夹
 | 添加文件
 | “项目”弹出菜单
 | 选择发布配置文件
 | 移动文件或文件夹
橡皮擦工具
像素对齐
消除锯齿
 | 导出的 GIF
 | 导出的 PNG
 | 剪贴板上的对象
 | 位图
 | 文本
 | 形状
消除锯齿命令
效果菜单, 在属性检查器中
新建符号命令
新建命令
“新建文档”对话框
新建字型选项，在库面板中
新闻阅读器应用程序范例
信息面板
 | 实例信息
 | 移动对象
形变
行距
行为
 | 重制影片剪辑
 | 关联控制器
 | 关联显示
 | 加载图形
 | 加载外部影片剪辑
 | 开始拖动影片剪辑
 | 控制实例
 | 屏幕导航和控制
 | 屏幕过渡
 | 上移一层
 | 视频, 控制视频回放
 | 视频, 添加和配置
 | 停止拖动影片剪辑
 | 下移一层
 | 已标记帧线索点导航
 | 移到最后
 | 移到最前
 | 在帧或标签处停止
 | 在帧或标签上的 GotoAndPlay
形状
 | 擦除
 | 重叠
 | 对齐
 | 翻转
 | 分组
 | 拷贝
 | 扩展
 | 倾斜
 | 使用选取工具改变形状
 | 缩放
 | 修改
 | 选择
 | 旋转
 | 粘贴
 | 识别和重绘
形状提示，用于补间形状
兄弟屏幕
修改绘图纸标记按钮
选取工具
 | 改变形状
 | 平滑功能键
 | 伸直功能键
 | 选择对象
选项卡, 用于多个文档
选择
 | 不规则选择区域, 使用
 | 场景, 全部内容
 | 场景中的任何内容
 | 对象
 | 关键帧, 两个关键帧之间的任何内容
 | 连接线
 | 两个关键帧之间的任何内容
 | 取消选择
 | 锁定组或元件
 | 套索工具, 使用
 | 文本和文本块
 | 向选择中添加内容
 | 选取框, 使用
 | 隐藏选择边缘
 | 直边选择区域, 使用
“选择屏幕”对话框
选择突出显示，对象
旋转
 | 对象
 | 90 度
 | 顺时针或逆时针
 | 通过拖动
旋转与倾斜命令
“旋转”选项, 用于补间动画 1, 2
循环
 | 动画序列
 | 可访问的内容中
循环选项
 | 关于
 | 用于声音
Y
压缩菜单，用于声音
压缩配置文件
压缩声音
颜料桶工具
 | 空隙大小功能键
 | 锁定填充功能键
 | 应用填充
颜色
 | 背景
 | 笔触颜色和填充颜色工具栏控件
 | 编辑并创建纯色
 | 补间
 | 查找和替换
 | 创建并编辑纯色
 | 打开颜色选择器
 | 导入和导出调色板
 | 滴管工具, 拷贝
 | 复制
 | 将当前调色板保存为默认值
 | 默认笔触和填充颜色，选择
 | 默认调色板
 | 删除
 | 删除所有
 | 设置最大
 | 使用“属性”检查器选择
 | Web 安全调色板
 | 为文本选择
 | 文档背景
 | 修改调色板
 | 选择纯色
 | 颜色选择器，打开
 | 用滴管工具拷贝
 | 用“属性”检查器修改
 | 优化
 | 在颜色样本面板中排序
颜色选择器，打开
颜色样本面板
 | “保存为默认值”选项
 | 保存颜色选项
 | 加载默认调色板
 | 排序
 | 清除颜色选项
 | 替换颜色选项
 | 添加颜色选项
 | Web 216 选项
 | 修改调色板和
演示文稿模板
页面设置命令（仅限 Windows）
移到最后命令
“移到最后”行为
移到最前命令
“移到最前”行为
移动
 | 对象
 | 整个动画
移动设备
 | 模板
 | 声音
已引导选项
隐藏
 | 在屏幕读取器面前的对象
隐藏边缘命令
音频流
影片剪辑
 | 创建元件实例
 | 符号
 | 父项, 已定义
 | 辅助功能说明
 | 父子关系
 | 控制
 | 嵌套
 | 时间轴
 | 用行为控制
 | 元件实例, 创建
 | 子项, 已定义
 | 子项的辅助功能
影片浏览器
 | 查找文本框
 | 关于
 | 过滤显示的项目
 | 用于屏幕
 | 上下文菜单
 | 实例
 | 实例信息
 | 显示元件定义
 | 选项菜单
 | 选择项目
用西式键盘输入亚洲字符
用于调试文件的密码
用于幻灯片屏幕的 autoKeyNav 参数
优化
 | GIF 颜色
 | PNG 颜色
 | 曲线
 | 文档
优化选项
右声道，用于声音
元件编辑模式 1, 2, 3
原始压缩，用于声音
运动路径
 | 创建
 | 断开层链接
 | 链接层
 | 调整或对齐补间元素
 | 隐藏
运动引导层命令
运行命令
Z
“在当前位置编辑”命令
在新窗口中编辑命令
在帧或标签上的 GotoAndPlay 行为
在帧或标签上的 GotoAndStop 行为
增强元文件 (Windows)
 | 导出
 | 导入
粘贴
 | 对象
 | 历史记录步骤
 | 屏幕
粘贴到当前位置命令
粘贴命令
粘贴帧命令
照片幻灯片模板
照片剪贴簿应用程序范例
遮罩层
 | 创建
 | 关于
 | 链接其他的层
帧
 | 编辑多个
 | 插入
 | 打印
 | “带宽设置”, 测试性能
 | 导出为静态图像
 | 动画, 编辑
 | 动画, 在时间轴中
 | 多个, 编辑
 | 关键帧, 转换
 | 绘图纸外观
 | 静态图像, 导出为
 | 拷贝和粘贴
 | 删除
 | 时间轴, 动画帧
 | 时间轴, 拖动
 | 添加声音
 | 通过“带宽设置”测试性能
 | 通过拖动进行拷贝
 | 图像, 注册
 | 显示为绘图纸外观轮廓
 | 在动画中编辑
 | 在时间轴中拖动
 | 粘贴
 | 注册图像
 | 转换关键帧
帧按钮，在编辑封套中
“真或假”交互组件
 | 在“组件检查器”面板中进行配置
 | 资源名称
帧命令
帧频
 | 在动画中
 | 设置
帧频选项
直线，用钢笔工具绘制
中心点
注册点
 | 更改
 | 显示坐标
注册各帧中的图像
逐帧动画
“逐帧图表”, 在“带宽设置”中
转到命令
转换立体声成单声
 | 用于 ADPCM 声音压缩
 | 用于 MP3 声音压缩
 | 用于原始声音压缩
转换为符号命令
自定调色板
自定义选项，用于声音
自动标签
 | 辅助功能的概述
 | 关闭
“自动标签”选项
自动处理任务
子对象
 | 使可访问
“字符串”面板
 | 编辑文本
 | 导入 XML 文件
 | 发布
 | 翻译文本
 | 概述
 | 更改舞台语言
 | 默认语言
 | 添加字符串
 | XML 文件格式
 | 选择语言
 | 自动语言检测
字符位置
字距微调
子屏幕
 | 查看
 | 已定义
 | 在舞台上移动
子屏幕的“隐藏屏幕”选项
字体
 | 查找和替换
 | 创建字体元件
 | 嵌入
 | 嵌入和设备
 | 设备
 | 设置文本属性
 | 属性
 | Unicode
 | 选择 1, 2
 | 选择大小
 | 选择嵌入的范围
 | 映射
 | 优化
字体元件
 | 标识符字符串
 | 链接选项
资源名称
 | “多重选择”交互组件
 | “热件”交互组件
 | “热区”交互组件
 | “填空”交互组件
 | “拖放”交互组件
 | “真或假”交互组件
组
 | 编辑
 | 创建
 | 分离
 | 锁定
 | 选择
组合命令
组件
 | 辅助功能和
 | 交互式学习组件和
 | 在“库”面板中
 | MediaController
 | MediaDisplay
 | MediaPlayback
 | 屏幕和
“组件检查器”面板
 | “绑定”选项卡
 | 测验参数与
 | 导航选项和
 | “多重选择”交互组件和
 | 反馈选项和
 | “架构”选项卡
 | Knowledge Track 选项和
 | “热件”交互组件和
 | “热区”交互组件和
 | “填空”交互组件和
 | “拖放”交互组件和
 | “真或假”交互组件和
最多颜色选项
最适色彩调色板
左声道选项，用于声音
“作为库打开”命令


safetyFeatures=ZX CLASS STABILITY  The ZX2004 premieres a new generation of DSC optimized for our combination of excellent handling and all-wheel drive. We call it ZX Class Stability . It's an advanced stability control system that helps counteract understeering or oversteering while cornering on virtually any road surface.