闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   无论老手还是新手,只要有自己的想法和建议,请大家积极投稿本栏目
当前位置 :首页>业界杂谈>七嘴八舌>列表

ActionScript3.0是革命性的

[来源:SimpleLife blog | 作者:小力 | 时间:2008-05-03 | 点击:  | 收藏本文  【 】]
上个周末去书店时碰巧看到了AS3 CookeBook,我记得在apollo的alpha版快出来的时候,7yue就推荐过这个小册子,只不过我已经习惯了AS1和AS2,对于一个新技术的学习还是持保守态度,加上这一年以来项目需求中更多的是DHTML+AJAX的工作,也无暇去了解AS3,一直都以为它只是对AS2的一个扩充,是Adobe换汤不换药的商业行为。可当我翻看了下CookeBook的目录,然后又针对性地看了几节以后,心里顿时有了一种很激动、兴奋的感觉,AS3并不是对AS2的补充,而是颠覆性的,它对Flash的发展是革命性的。

  上周开始抽空研究AS3,目前我还一直都处于兴奋状态,恨不得能够不睡觉地把Help文档通读一遍,就我目前的认识对AS3的重大转变先写个引子,希望对AS2开发者给个友好提示,如果你不抵触学习新技术,那么还是尽快转到AS3来吧(PS:目前接触时间有限,文中有理解不当或者错误之处望谅解、指出,随后的学习中会我也会继续发布一些体会)。

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

  从功能上详细提供了15个可视对象类,这就让我们能够根据实际需要选择合适的对象来实例化,而避免无用消耗。对这些显示对象的具体特性可查阅帮助文档,这是AS3显示编程的灵魂。
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自由控制库元素实例化到舞台上,例如:

//在库中将目标MC的导出类设置为FileUpLoad
//如果只是想显示库中元素,那么你没有必要额外建立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、正则表达式、文本显示、全屏模式等方面也都有一定的改进,有待于在实际操作中来熟悉。

  PS:虽然近一年没有怎么系统地做Flash的东西了,但从WEB前端的发展动态来看,Flash的交互性越来越被重视了,就目前应用而言,除了在WEB上的RIA以外,在PC桌面应用上,依托于apllo或者yahoo Widget这样的运行时环境,Flash的应用应该会更有前景,界面丰富、交互灵活、相对较低的开发门槛,这些都是他的优势所在。(手机开发没有接触,这个平台对FlashPlayer的支持版本不太清楚,但我相信只要有利益存在,技术自然会被商业驱动起来的。)

文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:FLASH虚拟社区的可行性分析
下一篇:Adobe宣布Open Screen Project,RIA战争是否会升级?
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  业界杂谈
  业界前沿   资源分享
  经验技巧   七嘴八舌
  热门文章
·flv制作工具大全
·2006年Flex大型优秀网站欣赏
·Adobe Flex编码指南v1.2(AS3 Flex3程
·电脑flash绘画心得
·flash使用习惯上的一些建议分享
·什么是真正的Flash高手
·一个老Flash程序员对国内flash界的看
·为什么说计算机动画不能完全代替传统
·不要着急买Flex 3的书
·ActionScript 3.0 以及 Flex 2 的有关
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号