浅谈as2.0与as3.0

尽管as2.0是as3.0的升级版,但它们之间还是有很多不同的,而且as3.0对as2.0来说是变革性的。

1、as2.0引入了面向对象编程的概念,但它并不是完全面向对象的语言,它只在编译过程中支持OOP(面向对象)语法。尽管as2的面向对象不全面,但却是首次将OOP引入了Flash,而AS3是一个完全OOP的标准化面向对象语言。as3.0里不真正支持抽象类,但可以根据Java里抽象类的特征用as3.0来模拟出抽象类。

2、在编译阶段,as2采用的是AVM1(ActionScript vitual machine),而as3采用的是AVM2。新一代虚拟机采用了OOP思想,在执行速度上比起avm1几乎快了10倍,同时还提供了异常处理。以前我们在使用AS2时,一旦出错,AVM1选择的是静默失败,我们根本不知道是什么地方出错了,会浪费大量的时间去查错,而AVM2与目前主流的编译器一样,有异常处理,运行出错会输出错误提示,大大提高了我们的编程效率。

3、as3的事件机制采用监听方式,与as2的onClipEvent不同,as3里所有的事件都直接继承Event对象,最终继承自祖先Object,所有的事件都继承自相同的父亲,结构相同,提高了重用性。所有事件都需要触发器,监听器,执行器三种结构的,这样使得这门语言非常坚强,非常标准。而在as2里,代码显得有点儿繁复,难懂,因为它可以这样写,也可以那样写,可以在元件(MovieClip)里写,也可以在按钮里写,可以在这个位置写,也可以在那个位置写,显得很乱,可读性太差,执行效率也很降低。

4、as3引入了封装的概念,这使得程序安全性大大提高,各个对象之间的关系也通过封装,访问控制而得以确定,避免了不可靠的访问给程序带来的意外产生。

5、as2对XML的存取需要解析,而as3则将XML视作一个对象,用点语法可以方便地存取XML对象的属性,大大提高了效率。

6、as3采用了容器的思想,在as2的时候,无论我们做什么,都要用到MovieClip,这显得有些浪费。


你可能感兴趣的:(flash,AS3,虚拟机,flash,as,oop,面向对象编程)