使用外部 API 的基础知识

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

虽然在某些情况下可以独立运行 SWF 文件(例如,如果您使用 Adobe® Flash® Professional 来创建 SWF 放映文件),但在大多数情况下,SWF 应用程序作为另一个应用程序中的元素来运行。通常,包含 SWF 的容器是 HTML 文件;在少数情况下,SWF 文件用于台式机应用程序的全部或部分用户界面。

当处理更高级的应用程序时,您可能会发现,需要在 SWF 文件和容器应用程序之间建立通信。例如,网页通常使用 HTML 格式来显示文本或其他信息,并包含 SWF 文件以显示动态可视内容,如图表或视频。在这种情况下,您可能需要建立此类通信,以便当用户单击网页上的按钮时,它将更改 SWF 文件中的某些内容。ActionScript 包含一种称为外部 API 的机制,它有助于在 SWF 文件中的 ActionScript 与容器应用程序中的其他代码之间建立这种类型的通信。

重要概念和术语

以下参考列表包含与此功能相关的重要术语:

容器应用程序
Flash Player 在其中运行 SWF 文件的应用程序,如 Web 浏览器和包括 Flash Player 内容的 HTML 页面或在网页中加载 SWF 的 AIR 应用程序。

放映文件
一个包含 SWF 内容和 Flash Player 嵌入版本的可执行文件。您可以使用 Flash Professional 或独立的 Flash Player 来创建放映文件。放映文件通常用于以 CD-ROM 形式分发 SWF 文件,或在以下类似情况下进行 SWF 文件分发:下载文件大小不是问题,并且 SWF 作者希望确保用户能够运行 SWF 文件,而无论用户计算机上是否安装了 Flash Player。

代理
中介应用程序或代码,它代表一个应用程序(“调用应用程序”)调用另一应用程序(“外部应用程序”)中的代码,并将值返回到调用应用程序。可以出于各种不同的原因来使用代理,其中包括:
  • 通过将调用应用程序中的本机函数调用转换为外部应用程序所理解的格式,简化进行外部函数调用的过程。

  • 解决禁止调用方直接与外部应用程序进行通信的安全问题或其他限制问题。

串行化
将对象或数据值转换为某种格式,这种格式可用于通过消息在两个编程系统之间传递值,如通过 Internet 或在一台计算机上运行的两个不同应用程序之间进行传递。

完成示例

提供的许多代码示例是用于演示的较小的代码清单,而不是完整的工作示例或用于检查值的完整代码。由于使用外部 API 需要(根据定义)编写 ActionScript 代码以及容器应用程序中的代码,因此测试示例涉及创建一个容器(例如,包含 SWF 文件的网页)和使用代码清单与该容器交互。

要测试 ActionScript 与 JavaScript 之间的通信的示例,请执行以下操作:

  1. 使用 Flash Professional 创建一个新文档并将该文档保存到您的计算机上。

  2. 从主菜单中,选择“文件”>“发布设置”。

  3. 在“发布设置”对话框中,在“格式”选项卡上确认选中了“Flash”和“HTML”复选框。

  4. 单击“发布”按钮。这将在同一个文件夹中生成一个 SWF 文件和一个 HTML 文件,且两个文件的名称与您用于保存 文档的名称相同。单击“确定”以关闭“发布设置”对话框。

  5. 取消选择“HTML”复选框。现在 HTML 页即生成,您将修改该页来添加适当的 JavaScript 代码。取消选择“HTML”复选框可确保在您修改 HTML 页之后,Flash 在发布 SWF 文件时不会使用新的 HTML 页覆盖您所做的更改。

  6. 单击“确定”以关闭“发布设置”对话框。

  7. 使用 HTML 或文本编辑器应用程序打开由 Flash 在您发布 SWF 文件时创建的 HTML 文件。在 HTML 源代码中,添加开始和结束 script 标签,并将示例代码清单中的 JavaScript 代码复制到其中:

    <script> 
    // add the sample JavaScript code here 
    </script>
  8. 保存该 HTML 文件并返回到 Flash。

  9. 选择时间轴的第 1 帧中的关键帧,并打开“动作”面板。

  10. 将 ActionScript 代码清单复制到“脚本”窗格中。

  11. 从主菜单中,选择“文件”>“发布”以使用您所做的更改更新该 SWF 文件。

  12. 使用 Web 浏览器打开您编辑过的 HTML 页,查看该页并测试 ActionScript 与 HTML 页之间的通信。

要测试 ActionScript 与 ActiveX 容器之间的通信的示例,请执行以下操作:

  1. 使用 Flash Professional 创建一个新文档并将该文档保存到您的计算机上。您可能想要将它保存在容器应用程序预计能够在其中找到 SWF 文件的文件夹中。

  2. 从主菜单中,选择“文件”>“发布设置”。

  3. 在“发布设置”对话框中,在“格式”选项卡上确认仅选中了“Flash”复选框。

  4. 在“Flash”复选框旁边的“文件”字段中,单击文件夹图标以选择 SWF 文件将发布到的文件夹。通过设置 SWF 文件的位置,您可以(举例而言)将文档放在一个文件夹中,而将发布的 SWF 文件放在另一个文件夹(例如包含容器应用程序的源代码的文件夹)中。

  5. 选择时间轴的第 1 帧中的关键帧,并打开“动作”面板。

  6. 将示例的 ActionScript 代码复制到“脚本”窗格中。

  7. 从主菜单中,选择“文件”>“发布”以重新发布该 SWF 文件。

  8. 创建并运行您的容器应用程序,以测试 ActionScript 与容器应用程序之间的通信。

有关使用外部 API 与 HTML 页面通信的完整示例,请参阅以下主题: 这些示例包含完整代码,其中包括 ActionScript 和容器错误检查代码,您在使用外部 API 编写代码时将用到这些代码。有关使用外部 API 的另一个完整示例,请参阅《ActionScript 3.0 参考》中 ExternalInterface 类的类示例。