ActionScript 3.0与旧版兼容

按照惯例, Flash Player为旧版的影片提供了全面的向下兼容。任何能用旧版 Flash Player运行的影片也能用Flash Player 9运行。然而Flash Player 9采用新型的ActionScript虚拟机,因此兼容的背后,难免会出现如下问题:

  • 用ActionScript 3.0代码编写的单一SWF文件不能兼有ActionScript 1.0 或 2.0代码。
  • 用ActionScript 3.0代码的编写SWF文件能加载用ActionScript 1.0 或2.0编写的SWF文件。但是,它不能访问被加载SWF文件中的变量和函数。
  • 用ActionScript 1.0 或2.0编写的SWF文件不能加载用ActionScript 3.0编写的SWF文件。 这说意味着用Flash 8 或 Flex Builder 1.5 及更早版本发布的SWF文件不能加载使用ActionScript 3.0代码的SWF。

这一规则唯一例外的情况就是,我们可以 通过调用loadMovieNum()(level参数为0)方法,把ActionScript 2.0 的SWF文件用ActionScript 3.0 SWF文件来替换, 前提是该 ActionScript 2.0 SWF文件没有预先加载任何影片到自己的层中。

总之, 如果要同用ActionScript 3.0编写的SWF文件协同工作,就必须升级用ActionScript 1.0 或2.0编写的SWF文件。比如说,你用ActionScript 2.0编写一个媒体播放器,这个媒体播放器加载 ActionScript 2.0编写的不同的影片, 你就不能用 ActionScript 3.0 来创作该影片并试图加载到媒体播放器中,你应该将该播放器升级到ActionScript 3.0。

相反地,你可以用ActionScript 3.0编写一个媒体播放器, 该播放器可以简单加载ActionScript 2.0 影片。

下表小结了旧版 Flash Player加载ActionScript 3.0 影片和代码执行方面的局限,当然也包括用不同版本 ActionScript编写SWF文件之间跨脚本的局限。

支持功能 运行环境
  Flash Player 7 Flash Player 8 Flash Player 9
能加载发布的SWF文件 7 及更早版本 8 及更早版本 9 及更早版本
包含的虚拟机 AVM1 AVM1 AVM1 和 AVM2
运行用ActionScript编写的SWF文件 1.0 和 2.0 1.0 和 2.0 1.0 和 2.0及3.0
支持功能* 创作影片使用
  ActionScript 1.0 和 2.0 ActionScript 3.0
加载影片执行代码 仅ActionScript 1.0和 2.0 ActionScript1.0 和 2.0及ActionScript3.0
制作跨脚本影片 仅ActionScript 1.0 和 2.0 ** ActionScript 3.0***

* Flash Player 9 及更早版本的影片. Flash Player 8 及更早版本的影片可以加载、显示和执行。仅有ActionScript 1.0 and 2.0跨脚本。

**ActionScript 1.0 and 2.0 通过 LocalConnection.

***ActionScript 3.0 通过 Local Connection.

发表评论