最近,因为项目开发需要,得用as2实现一些较复杂的功能,发现as2的和as3的一些差异,总结如下:
1、as2没有as3中const关键字
2、as2没有as3中包的概念,包路径在类名处定义、类没有public等限制符3、as2没有as3中ByteArray、Dictionary、Sprite、Timer、Event EventDispatcher、DisplayObject、SimpleButton等对象
4、as2没有数据类型int,只有Number,因此有时对值比较需要用int()方法对number数值类型进行取整
5、as2中Object的写法:{name:"小张"},不支持{"name":"小张"}这样写,会报语法错误
6、as2没有for each的用法,只能用for in遍历
7、as2的显示列表机制和as3完全不同,没有as3中addChild方法,只能借助attachmovie或duplicateMovieClip方法实现,不能像as3中可以随意的把一个movieclip添加到另外一个mc中显示
8、as2中自定义类实例化时,需要在库中导出链接并关联类,
9、as2中派发事件的方式:AsBroadcaster,类似于as3中eventDispatcher类功能,事件侦听方式也不一样
10、as2中方法没有默认参数的概念
11、as2中MovieClipLoader对象加载文件,init后才能读取元件
12、switch判断,as2中采用的是全等判断,而as3从则是普通判断,例:
var ff:Object = {}
ff.aa = "3";
var aa:Number = ff.aa;
switch(aa)
{
case 3:trace(123);break;
default:trace(234);
}
13、as2没有is、as,只能通过typeof来判断类型,判断数组只能通过if(type == "object" && o.length == undefined)//通过length属性来判断是不是数组
14、as2中数组array没有splice等好用方法
15、as2写方法时需要非常注意this的用法,具体是哪个对象的应用,比较容易出错
16、as2中get set 方法只能写成public
17、as2便利mc所有对象的方法:for(i in mc),和as3不一样。
欢迎补充。