ActionScript 3.0 是一种强大的面向对象编程语言,它标志着 Flash Player Runtime 演化过程中的一个重要阶段。
设计 ActionScript 3.0 的意图是创建一种适合快速地构建效果丰富的互联网应用程序的语言,这种应用程序已经成
为 Web 体验的重要部分。
历史
ActionScript 是一种基于 ECMAScript 的编程语言,用来编写 Adobe Flash 电影和应用程序。
ActionScript 1.0 最初随 Flash 5 一起发布,这是第一个完全可编程的版本。Flash 6 增加了几个内置函数,
允许通过程序更好地控制动画元素。
在 Flash 7 中引入了 ActionScript 2.0,这是一种强类型的语言,支持基于类的编程特性,比如继承、接口和严格的数据类型。
Flash 8 进一步扩展了 ActionScript 2,添加了新的类库以及用于在运行时控制位图数据和文件上传的 API。
Flash Player 中内置的 ActionScript Virtual Machine(AVM1)执行 ActionScript。通过使用新的虚拟机
ActionScript Virtual Machine(AVM2),
Flash 9(附带 ActionScript 3)大大提高了性能。
下载flash9 http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email
ActionScript 的老版本(ActionScript 1.0 和 2.0)提供了创建效果丰富的 Web 应用程序所需的功能和灵活性。
ActionScript 3 现在为基于 Web 的应用程序提供了更多的可能性。它进一步增强了这种语言,提供了出色的性能,
简化了开发的过程,因此更适合高度复杂的 Web 应用程序和大数据集。
ActionScript 3 可以为以 Flash Player 为目标的内容和应用程序提供高性能和开发效率。
ActionScript 3 符合 ECMAScript Language Specification 第三版。它还包含基于 ECMAScript Edition 4 的功能,
比如类、包和名称空间;可选的静态类型;生成器和迭代器;以及非结构化赋值(destructuring assignments)。
随着 Web 应用程序项目需求的增长,也要求 ActionScript 引擎有重大的突破。
ActionScript 3 引入了一个新的高度优化的 ActionScript Virtual Machine(AVM2),与 AVM1 相比,AVM2
的性能有了显著的提高。这使 ActionScript 3 代码的执行速度几乎比以前的 ActionScript 代码快了 10 倍。
Flash Player 9 中包含 AVM2(ActionScript 3.0 的脚本语言引擎),设计它的目的是提供互联网应用程序开发人员
所需的性能和特性。为了向后兼容现有的内容,Flash Player 将继续支持 AVM1。
ActionScript2上说过它增加了强制变量类型和新的类语法,它实际上在最终编译时变成了ActionScript 1,
而ActionScript 3.0运行在AVM2上,一种新的专门针对ActionScirpt 3代码的虚拟机。
基于上面的原因,
ActionScript 3.0影片不能直接与ActionScript 1和ActionScript 2影片直接通讯(ActionScript 1和ActionScript2
的影片可以直接通讯,因为他们使用的是相同的虚拟机;如果要ActionScirpt 3影片与ActionScirpt 1和ActionScript 2的影片通讯,
只能通过local connection),但是你会发现ActionScript 3的改变更深远更有意义。
下面是各个版本的代码示范:
ActionScript 1
function Example(){
this.num = 1;
}
Example.prototype.str = "text";
Example.prototype.doubleNum = function(){
this.num *= 2;
}
ActionScript 2
代码:
class Example {
public var num:Number;
private var str:String = "text";
public function Example(){
this.num = 1;
}
public function doubleNum():Void {
this.num *= 2;
}
}
注意当编译时,上面的ActionScript 2类会变成ActionScript 1范例那样。
ActionScript 3
代码:
package {
public class Example {
public var num:Number;
protected var str:String = "text";
public function Example(){
this.num = 1;
}
public function doubleNum():void {
this.num *= 2;
}
}
}
ActionScript 3有怎样的不同呢?
ActionScript 3是不同的,非常的不同。因为不同在实际应用上所以需要一个全新的虚拟机来运行它。
但是本质上,它仍是ActionScript,作为 ActionScript你可能 已经注意到了在ActionScript 1和ActionScript 2
中的许多命令和程序概念仍然非常好的适用于ActionScript 3.0.尽管上面的范例代码非常小,我们至少可以看出
语法已经改变了。
在某些地方ActionScript 3.0与ActionScript 2.0代码看上去非常相似但并不总是这样,
最终在As2.0与As3.0中直接转换经常会比较困难。
这些改变是非常必要的,在印象中 ActionScript 3.0有很高的功效,在开发过程中不仅是效率(这
一点在一些小的但工作量较大的项目中得到证实)还有就是ActionScript 3.0在Flash Player中的
回放速度要比ActionScript 2代码快10倍。好,你可能会发现在ActionScirpt 1和ActionScript 2
中的许多并不复杂的任务在ActionScript 3.0中的代码长度会是原来的两倍长。但是最终你获得是
它的高速和效率。