文档库 最新最全的文档下载
当前位置:文档库 › flash as2.0 与 as3.0的本质区别

flash as2.0 与 as3.0的本质区别

flash as2.0 与 as3.0的本质区别


一.flash as2.0 与 as3.0的本质区别?

二.flash当中的变量类型和定义方法与java,C++有那些相同和不同。

三.初学flex编程应该怎样学?从什么地方开始。


问题一:
首先说下as2,as2实际上是as1的升级版,引入一面向对象的概念,但并不是完全面向对象的语言,只是在编译过程中支持OOP语法。as2的面向对象虽然不全面,但是却是首次将OOP带到了FLASH,而AS3是一个完全基本OOP的标准化面向对象语言,最重要的就是as3不是as2的简单升级,而完全是两种思想的语言。可以说,as3全面采用了面向对象的思想,而as2则仍然停留在面向过程阶段,举个例子,就像VB和C#的感觉。

所以as3绝不是as2的升级版,在as3里,可以看到java和c#的影子,确实,这三种语言大部分思想都是一致的,只有一些小的区别,比如as3引入了命名空间的概念,但是不支持比如委托,在包封装及外部访问上也引入了一些新概念。
在编译阶段,as2采用的是AVM1(actionScript vitual machine),而as3采用的是AVM2。新一代虚拟机采用了OOP思想,在执行速度上比起avm1也快了10倍。还提供了异常处理。以前我们在使用AS2时,一旦出错,AVM1选择的是静默失败,让人根本不知道什么地方出错了,会浪费大量的时间去查错,而AVM2与目前主流的编译器一样,会有异常处理,运行出错会输出错误提示,工作效率大大提高。如果做个对比,我想说,AVM1就是大刀长矛,而AVM2就是手枪,大刀和长矛也能杀敌,但是只在面对弱智的敌人才能发挥作用,面对一个大型项目,不用点现代化工具是不行滴。

as2与as3的部分区别,只说一些大的区别,小的不同太多,就不谈了:
1.运行时异常机制处理,这个刚才说过了。

2.事件机制,这也是很多人拿起as3就不知所措的原因,初学者会发现连一个按钮点击的方法都写不出来。实际上as3的事件机制采用的是监听的方式,和as2onClipEvent不同,as3里所有的事件都是需要触发器,监听器,执行器三种结构的,这样做的好处就是使得这个语言非常的坚强,非常大标准化。不像as2,奇形怪状的代码漫天飞,可以这样写,也可以那样写,代码变得繁复难懂,可读性太差,执行效率也大大降低。要特别说明的是,as3的所有事件都直接继承event对象,而event是直接继承自BOSS类object,结构多么完美。所以在as3中,所有的事件都继承自相同的父亲,结构相同,提高了重用性。

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

4.XM

L,我觉得这是最令人激动人心的改变,现在as3程序员可以很轻松也很自豪的说,我们是使用XML人群中最快乐的人。AS2时代对XML的存取仍然需要解析,而AS3则创新的将XML也视作一个对象,存取XML就像存取普通对象的属性一样方便,用点语法就可以,无疑大大提高了效率。

(写了这么多,如果楼主不给分,我就死给你看!)

5.最关键的一点,容器的概念,AS3采用了容器的思想,告别了as2一个MovieClip打天下的局面。对于as2程序员来说,可能不能理解,我mc用的好好的,干嘛不让我用啊。但是当你真正的了解as3的思想的时候,当你真主的体会到OOP的好处的时候,你会觉得as3的容器的思想的完全正确的。as2时代,我们做什么都用mc,而as2时代的mc也是直接继承自object,这给了mc极大的权限,极其多大方法属性,而有时我们只需要放一个背景图,这样做就造成了极大的浪费。说实在话as2和as3比起来就是浪费之神,所以as2编出的swf绝对比as3编译出来的swf要大上几倍。as3把所有你用到的显示对象都分开,mc的属性方法都被瓜分开来,举个例子,你去水果超市买水果,就肯定比直接去大型超市买要方便,更节约时间,时间就是金钱,那就是很大的节省。

当然还有很多不同,如果想继续交流,可以联系我。

问题二:
以as3为例,在变量命名方便基本和java c#一样,都分为值类型和引用类型,唯一有一点不太相同,不过在使用过程中,不对使用造成影响。java的值类型都不是对象,c#的值类型都是system下的对象,而且都是别称,如int其实就是System.Int32,而as3中完全遵循OOP,一切都是对象,每个值类型都是对象,比如int就有int类。但在使用过程中都是一样的,从这里也可以看出OOP的好处,你不需要关心底层的变化,使用的时候也完全感觉不到底层存在什么区别。

问题三:
关于学习的问题,我的建议是,学新东西,首先要有毅力,不要去看电子书,要买实体书看,要做笔记,能不能学会一种知识,不是从什么地方学的问题,而是学习方法的问题。学习方法不对,不管有多好的老师也教不出好学生。学习的问题我也和很多热爱学习的同志们说过,关键靠自己。
好的学习方法,我总结大致因该具备以下条件:
1.坚持看书,一本书至少看过3遍(注:指实体书,而非电子书)
2.坚持做笔记,加强记忆。
3.如果是初学者,我建议抄程序,培养程序感,必要时可以背默关键字。

1.as 2.0与 3.0,最不同的就是运行flash时的虚拟机不同,前者是AVM1,后者是AVM2,当然后者要比前者快很多。
2.as 3.0所采用的编程方式是与java非常类似的面向对象编程方式,不论在语法上还是在

设计思路上,而C++,也如此,只不过C++没有java那样完全面向对象,因为它是从C语言上加上了面向对象的思想 ,但不完全。
3.只要你有java C++基础,那学 AS是非常轻松的

4.不过AS不能像java C++那样操作底层数据,如存储数据等,必须通过后台语言如php asp 等来实现,而且运行大规模数据时会慢一些。

5.as 2.0以往是主要面向过程的编程方式,也就是说想到哪就可以写到哪,但到3.0之后就不行了,你必须把每一块程序都写到一个类中,让类和类之间进行联系。凡事都是类的理念。

6,其实不同的事情有很多,但是也可以这么讲,AS3.0与AS2.0是一样的,只是语法不同了,编程思路不同了,但核心内容不变,也就是说,如果你精通AS2.0,那么,你离精通3.0就不远了。因为你在编程进对算法的掌握和思想都是相通了。

7.至于如何学flex,如果是初学的话,那看书,上网看教程,都可以,如果是想往更高级学习时,就得靠自己了,靠自己去研究了,看帮助,去深层次研究。

相关文档
相关文档 最新文档