ActionScript3.0是革命性的
一、全新的“显示对象”架构
FlashPlayer9中加入了一套新的AS虚拟机器(AVM2),它提供了一套新的显示API,相对于之前的版本执行和渲染效率提高了不少。在AS3以前FLASH中的可编程的显示对象只有MovieClip和TextField,架构很简洁,他们都是直接从Object类继承的。在AS2的面向对象体系引入以后,一个MC类的属性和方法加起来近百个,目的就是为了让AS对MC的控制能够“随叫随到”,但是以牺牲效率为代价的。例如我们动态复制了几个MC到特定的坐标,而没有任何交互需求,但这些新的MC实例却依然具有了很多我们并不需要的属性和方法,因此很多编程人员都会抱怨MC是一个笨重的类。
FP9中新的显示架构彻底颠覆了“MovieClip是灵魂”的设计(AS2那套东西已不再沿用了),这个重大的更新主要体现在对显示对象的抽象更细致、清晰了。简单说来从概念上划分为了显示对象、容器对象、可交互对象,在这个基础上提供了更便捷地遍历显示列表的方法,添加、删除可视元素的方法、自动化地深度管理等。

从功能上详细提供了15个可视对象类,这就让我们能够根据实际需要选择合适的对象来实例化,而避免无用消耗。对这些显示对象的具体特性可查阅帮助文档,这是AS3显示编程的灵魂。

二、清晰的事件机制
从AS2中就引入了事件侦听模型,但由于AS1和AS2编程的随意性以及AS开发人员更多的是设计转行的,很多人还是习惯使用_mc.onRelese = function(){},甚至是on(release){},这些不同实现的优劣这里就不再重复讨论了,很多文档都有详细地对比说明。正是因为事件侦听模型的巨大优势,所以在AS3中有且只有只一种事件模型,它是支持了W3C DOM3事件规范的标准,对于它提供的各种广播事件也需要熟记于心。
在新的事件模型中,this对象能够自动找到它的原始对象实例,而不用再使用Delegate这种和怪异地方式来指定事件处理函数的上下文引用了。
更多细节需要参阅文档,熟悉这个新的事件模型是很有必要的,对于交互编程而言,这个是重点之一。
AS2是不支持事件流的,现在你不用再为此头疼了,因为支持事件流是AS3的事件机制的又一重大更新,对于事件流的捕获、目标、冒泡这三个过程你需要很清楚,每当你初始化一个交互元素时,你就需要在脑海中迅速地按顺序触发这些过程,这是交互编程的重点之二。
三、更为便捷的库元件绑定和文档类绑定
在AS2中我们如果需要重新初始化一个目标MC的实例,通常会采用duplicateMovieClip或者attachMovie来实现,但这两个实现都存在弊端和不便,局限性比较大。AS3提供了一种更便捷的方式来实例化一个目标元素的实例。在AS2的组件开发中我们通常都会使用库元件的类绑定,但在UI和程序协同、构造函数传参方面还是不太方便。而AS3中我们完全可以用AS自由控制库元素实例化到舞台上,例如:
//如果只是想显示库中元素,那么你没有必要额外建立FileUpload文件,编译器会帮你自动搞定
//在AS中实例化一个图片上传UI
var picUpload_mc = new FileUpload();
//添加到舞台上显示
stage.addChild(picUpload_mc);
对于库绑定的细节需要详细了解,其中还涉及到一些实际问题的实现方式,例如如何在类中访问绑定库元件中的元素等。但我个人认为利用AS3提供的这一新功能,能够更好得设计程序的架构,更符合MVC的开发原则,具体实现还需要在以后的研究中来探索,也希望和大家一起交流。
如果你接触过Flex开发,那么文档类的绑定就很熟悉了,这是FLASH开发环境所不提供的,但在FLASH CS3中提供了这一功能,目的还是规范开发。
四、丰富的功能包支持
就FLASH CS3开发而言,Adobe沿用了Flash之前版本的一些类库,主要都在fl.*包中,在这个基础上有更新了一些顶级包,同时又提供了一些新的包,主要都在adobe.utils中。除此以外,你还可以使用Flex作为开发平台,Flex提供了更为丰富的功能包和组件。
五、语法特性
AS3语法特性上也有一些变化变化,目前我针对下面几个做过测试:
1、在Number类型的基础上,新增了int和uint类型。
2、类型检测方面增加了is和as两个运算符,AS3提供了运行时的类型检测,在这之前只是提供编译检测。
3、各种数据类型的值在undefined时,现在都会给一个特定的默认值(编程中需要格外小心)。
4、对于函数的执行,需要严格匹配参数个数,并提供了一种…(rest) 形式的参数来支持任意多参数的调用。
5、面向对象体系更细致了,增加了包的概念,增加了inernal和final的两个修饰符,对于类中public、private、proteced的访问权限也都有变化,对于重写超类的方法需要利用override关键字做申明。
六、其他特性
上面的五点是我目前接触到的,同时也是个人认为最重要、最有进步的变革,除此之外还有一些重要的变化特性,例如在二进制、socket通信、E4X、正则表达式、文本显示、全屏模式等方面也都有一定的改进,有待于在实际操作中来熟悉。
Very interesting and amusing subject. I read with great pleasure.
小区租房(www.88471.cn)再次造访博主的博客,小踩一下吧,新年新气象,愿博主事事顺心~
青岛seo(www.qcseo.com)不错,路过小踩一下,顺祝博主新年大吉大利,欢迎回访哦~
呵呵~~!
汽车票(www.cn-piao.com)春节过去了,新的一年又开始了,让我们在新的一年共同努力吧。
博主高手,学习了!
Interesting and informative. But will you write about this one more?
贵博客从整体布局来看,无疑是古典大家风格与后现代主义感观色彩完美结合的典范。从文章内容与行文的手法来看,既不失豪放派的大胆恢弘,又深含婉约派的柔婉细腻。总而言之,言而总之,是一个博客中的精品,精品中的博客。
门禁考勤(www.china-sp.org)
博客弄的不错啊~呵呵~看的俺心痒痒~俺也回去捣鼓捣鼓去。
灯(www.goodjiancai.com)博客很精彩,学习过了,感谢博主的分享,继续更新啊,期待中。。。。
机械产品(www.cn-products.com)
在学习中进步~看了楼主博客,学到了不少东西~多谢多谢~呵呵~
不错~!
Thank you! You often write very interesting articles. You improved my mood.
来了~踩一脚~呵呵~给你空间增添人气哦~最近还好吧~
Are you a professional journalist? You write very well.