外部 API 是 ActionScript 中的一部分,它为在 ActionScript 与充当 Flash Player 容器的“外部应用程序”(通常是 Web 浏览器或独立放映文件应用程序)中所运行的代码之间进行通信提供了一种机制。在 ActionScript 3.0 中,外部 API 的功能是由 ExternalInterface 类提供的。在 Flash Player 8 之前的 Flash Player 版本中,使用 fscommand() 动作与容器应用程序进行通信。ExternalInterface 类替代了 fscommand(),是 JavaScript 与 ActionScript 之间的所有通信的推荐使用机制。
ExternalInterface 类是一个子系统,通过它可以轻松地实现从 ActionScript 和 Flash Player 到 HTML 页中的 JavaScript 或任何包含 Flash Player 实例的台式机应用程序的通信。
ExternalInterface 类只在以下情况下可用:
在所有受支持的 Internet Explorer for Windows 版本(5.0 和更高版本)中
在容器应用程序(例如使用 Flash Player ActiveX 控件实例的台式机应用程序)中
在支持 NPRuntime 接口的任何浏览器中(当前包括 Firefox 1.0 和更高版本、Mozilla 1.7.5 和更高版本、Netscape 8.0 和更高版本以及 Safari 1.3 和更高版本)。
在其它所有情况下(例如,在独立的播放器中运行),ExternalInterface.available 属性均返回 false。
从 ActionScript 中,可以在 HTML 页上调用 JavaScript 函数。与 fscommand() 相比,外部 API 可提供以下改进功能:
可以使用任何 JavaScript 函数,而不仅仅是可与 fscommand() 函数一起使用的函数。
可以传递任意数量的、具有任意名称的参数;而不是仅限于传递一个命令和一个字符串参数。这为外部 API 提供了比 fscommand() 大得多的灵活性。
可以传递各种数据类型(例如 Boolean、Number 和 String);不再仅限于 String 参数。
可以接收调用值,该值将立即返回到 ActionScript(作为进行的调用的返回值)。