第1部分:ActionScript 3语言基础 第2部分:ActionScript 3 面向对象编程 第3部分:ActionScript 3 核心类 第4部分:ActionScript 3主要的Flash Player API 第5部分:ActionScript 3视觉编程
具有高度互动性、丰富用户体验及功能强大的客户端,是目前网络开发的迫切需求。 Adobe 公司的 Flash Player 凭借其全球 97% 的桌面电脑占有率和跨平台的优势,成为了事实上的下一代的 RIA ( Rich Internet Application ,丰富因特网程序)主力。 Adobe 公司于 2006 年年中推出了强大的 ActionScript 3 语言,和支持 ActionScript 3 的新一代的虚拟机 AVM 2 。经测试, AVM 2 执行 ActionScript 3 代码比以前的 ActionScript 2 代码执行效率要快 10 倍以上。
ActionScript 3 ,与 ActionScript 2 和 1 有本质上的不同,是一门功能强大的、面向对象的、具有业界标准素质的编程语言。它是 Flash Player 运行时功能发展中的重要里程碑。 ActionScript 3 是快速构建 Rich Internet Application 的理想语言。
由于 Adobe 的 Flex 和 Flash 的成功,在业界已经掀起了 RIA 应用新浪潮!雅虎( Yahoo! )、 eBay 、 Google 都相继推出基于 ActionScript 的 RIA 应用程序和 ActionScript API 库。著名的应用案例有 Yahoo Maps 、 eBay AIR 拍卖程序、 Google Analytics 和 Google Finance 、微软的 Wallop 社区,等等。
ActionScript 3 有以下优势:
对面向对象编程( OOP )语言的完全支持。核心语言基于 ECMAScript ( ECMA 262 )标准,对 OOP 架构深层优化。
彻底更新的显示对象系统架构。
采用了先进的 E4X ,使 XML 成为 ActionScript 3 语言的内建数据类型( native support )。操作直白、简单。与 ActionScript 2 比较,极大地减轻了 XML 数据处理工作量。
全面支持正则表达式。正则表达式也成了 ActionScript 3 的内建数据类型, ActionScript 3 对字符串的处理能力空前增强。
标准的 DOM 3 事件实现。 Flash API 全面支持事件机制。
异常处理机制。 异常包括信息全面、易于调试和处理。 Flash API 全面支持异常处理机制。
此外, ActionScript 3 积极迈向开源,赢得开源社区的欢迎。包括 AVM 2 虚拟机开源 ,源码赠送与 Mozilla 的 Tamarin 项目。 Tamarin 项目的开源,意味着 ActionScript 3 虚拟机的开源。从而 ActionScript 3 也将成为智慧无穷的开源社区的首选!
2007 年 6 月 11 日推出了 Adobe Intergrated Runtime ( AIR ) Beta 版,正式实现新一代的 RIA 概念——跨系统运行时( cross-operating system )的 RIA 程序。首次允许 RIA 程序访问本地资源,并进行离线存储,跳出了浏览器的限制,模糊了浏览器和桌面程序的界限,在线和离线的界限。 AIR 具有革命性的前瞻视角,被业界誉为 RIA 的第二次革命。而 ActionScript 3 就是用于开发 AIR 程序的主要核心语言。
ActionScript 3 的时代已经到来!我们正在迎接它的辉煌!
本书的目标与特色
ActionScript 开发界缺少一本真正的以面向对象思想来讲解的书籍,缺少从 ActionScript 3 语言架构上来分析的书籍。无论国内还是国外目前都缺少这样一本书。很多 ActionScript 开发人员都只停留在知道 OOP 语法、会熟练运用 ActionScript 3 提供的类库 API 阶段,而对 OOP 思想和 ActionScript 3 整个系统架构脉络一知半解。买椟还珠,这是很可惜的。
本书尝试以系统架构师的眼光,以面向对象思想为主轴,讲述 ActionScript 3 中面向对象的精髓和应用。从 ActionScript 3 系统架构的高度,清楚明白地讲解 ActionScript 3 的 API 设计原因、原理和应用。
面向对象思想和 ActionScript 3 系统架构就是 RIA 开发的任督二脉,打通之后,你就会觉得所有 ActionScript 3 知识都是共通共融、浑然一体的,从而再学习广阔的 ActionScript 3 开源世界中的其他东西时,也会觉得高屋建瓴、势如破竹 、轻松如意。
在本书中,对于 ActionScript 3 中的面向对象讲解的广度和深度都远超过目前所有书籍。从广度上说,涵盖了 OOP 语法、重要 API 的运用、核心类包的结构……从深度上说,详细地解释了面向对象实现上的重大变化和实现细节,透彻地阐述了新一代的显示编程架构及应用。比如 ActionScript 3 的几大新特色、重要的 OOP 法则、 ActionScript 3 语言本身在哪些地方使用了设计模式。从实用上说,每一个重要的应用都有实际的代码例子相结合,例如,有类绑定的种种实际做法和 UIMovieClip 类与 Flex 结合应用等。本书不仅仅介绍相关语法和运用,更重要的是解释如何设计与怎样使用。
本书希望把你真正带往 ActionScript 3 编程的殿堂。
本书是一本“面向原因式”的书籍( Why-Oriented Book )。让你对所有细节的设计用意和原因清清楚楚。
以 ActionScript 3 语言设计的本意和思路,深浅结合,讲解各个部分。尽可能使读者在了解 ActionScript 3 语言的同时,更好地把握 ActionScript 3 语言的思想。
重视实际运用,例子丰富。不算文中代码片段,仅完整类文件就近两百个,为编程提供实际的指导。本书在撰写所有部分时,力求达到两点:与实际的代码例子结合;讲述 ActionScript 3 语言关于该部分的内部实现和技术细节。
以面向对象思想( OOP )为重点,例子和比喻结合。系统讲述了 OOP 思想及其在 ActionScript 3 中的运用。并结合 ActionScript 3 本身的语言架构加以详细的分析。
横向比较其他优秀 OOP 语言。本书中有大量涉及到 ActionScript 3 和 Java 、 C# 等语言相比较的地方,使得已有其他 OOP 语言基础的读者可以快速了解 ActionScript 3 的独特之处,快速上手。
清楚地阐述 ActionScript 2 和 ActionScript 3 的不同及原因。对于 ActionScript 3 大部分相对于 ActionScript 2 的改动,本书不但一一指出,还从理论上解释为何改变,以及相关的实现,使 ActionScript 2 程序员快速上手 ActionScript 3 ,并对 ActionScript 2 代码移植有相当大的帮助。
本书为何而写
长时间以来,国内 ActionScript 方面的书籍总是落后国外同类书籍一年到两年,很大程度上影响了 ActionScript 在国内的推广和国内爱好者水平的提高。本书作者从事大型 ActionScript 2 RIA 项目开发已有数年经验,在 Flash Player 8.5 出现、 ActionScript 3 推出测试版开始,就已开始研究其架构,积累了丰富的第一手开发笔记。因此,本书的写作与国际 ActionScript 3 的研究发展是完全同步的。
笔者在电子工业出版社的大力协助下,以严谨的学术态度撰写本书。笔者衷心期望,本书出版时,不仅是国内 ActionScript 界第一本与国际同步的书籍,也能抛砖引玉,加速推动国内 ActionScript 3 的研究开发步伐。
本书为谁而写
本书所讲的知识用于 Flash 、 Flex 下的 ActionScript 3 应用程序开发。本书的读者应具有基本的编程知识(不限语言),至少应理解变量、循环、函数等基本编程概念。
写一本从 ActionScript 3 初学者、 ActionScript 3 中级爱好者到其他 OOP 语言(如 C# 、 Java )开发者都能看的书,是一件很有野心的事,事实上也难以完全做到。
但据笔者观察,国内 ActionScript 爱好者水平参差不齐。有部分 ActionScript 2 高手,但更多的是 ActionScript 2 或 1 中级爱好者,以及准备从 Flash Designer ( Flash 设计)转向 ActionScript 3 的新手。更有广大的其他 OOP 语言的读者,比如 C# 、 Java 等,拥有良好的 OOP 基础,准备转向 ActionScript 3 。随着 RIA 革命的到来,未来还有更多的、潜在的 ActionScript 爱好者。
这样的现状促使我向这个不可能的任务做一些力所能及的努力。经过分析,这几个群体有比较明显的特征,使得我可以在讲述的同时有所侧重,择善结合。
你可能喜欢比较浅显的比喻和详细的讲解。有时告诉你原因,比简单罗列代码告诉你怎么做,可以更快让你理解根本,进入状态。本书正是这样一本 Why-Oriented Book 。本书与其他书的一个最大不同就是 “面向原因”( Why-Oriented Book ) 的讲述方式,让你对每部分内容的由来清清楚楚。
如果你对 ActionScript 一点都不熟,那么恭喜你,你赶上好时候了。 ActionScript 3 比以往的 ActionScript 2 或 ActionScript 1 要好学很多,好记很多。原因就是 ActionScript 3 的结构更加标准和统一。不信,举个小例子,在 ActionScript 2 中创建一个视觉元件的实例有 attachMovie() 、 createChildAtDepth() 、 createClassObject() ……等八九种方法,每种方法都有自己的参数,而且要手动管理元件深度。而在 ActionScript 3 中,一切都统一为 new 元件名 () 就可以了。深度统一且自动管理。这样的改进实在太多了!
所以抛开相对混乱的 ActionScript 1 和 ActionScript 2 ,放心大胆地学习 ActionScript 3 吧。能直接学习 ActionScript 3 ,绝对是新手的福气!
你往往具有一定水平和能力, ActionScript 2 各个方面都有涉猎,但都不深。你需要有针对性的细节点拨和思路指导。你往往不喜欢婆婆妈妈的讲解,最喜爱具体的代码例子。但往往对自己掌握的程度估计不足,对自己知道的东西不加以深究,和高手的差距就在这里。本书用章节“ * ”号(有相当数量)和进阶知识这两个部分来针对这个群体。
众所周知,知识的讲解应当是一个整体,不能每个知识点都有初级、中级、高级之分。你清楚的东西,对你而言就是初级。你不清楚的东西,往往就是高级。你知道并了解,但是不知道细节的东西,那就是中级。因此对于中级爱好者,我建议,在你快速翻完了本书所有“ * ”号和进阶知识之后,有空时你最好从头详细读一下其他章节。我相信,你绝对不虚此“读”。很多有用的知识点和 ActionScript 3 技术上的实现细节,你可能还不清楚。举个小例子,比如, “加 Label 的 continue 、 break 的用法”,不少读者可能就不太清楚。
加油,高手的称号指日可待!
你有一定的开发经验和知识水平,知道很多 ActionScript 2 细节。但是 ActionScript 2 和 ActionScript 3 区别如此之大,你会感觉到有点沮丧。但,沮丧不久,你就会被 ActionScript 3 标准的架构、优雅的实现和无限的潜能所吸引。
你甚至发现 ActionScript 3 其实比 ActionScript 1 、 ActionScript 2 要好学很多 ,好记很多。再过不了多久,你会发现 ActionScript 3 是如此好用,如此方便,如此先进,以致于不可能再转回 ActionScript 2 了。这时候就逼你的老板用 ActionScript 3 开发产品吧。 It's your time 。
本书中有大量地方标注了和 ActionScript 2 不同的地方,可以让你快速地进入 ActionScript 3 的工作状态。并且提供了很多 ActionScript 3 中独有的技术细节和小技巧,为你日后的开发扫清很多小地雷。
恭喜你,其实 ActionScript 3 比它前辈的任何一个版本都接近 C# 、 Java 这两种语言。你学习 ActionScript 3 ,将是真正的事半功倍。
你真正想要知道的是, ActionScript 3 和 C# 、 Java 有哪些不同点? ActionScript 3 编程有哪些部分需要重点学习? API 有哪些不同,哪些是重点?在 ActionScript 3 中哪些细节需要注意?
在本书中对大部分涉及到语言差异的地方都做了标注。你要做的是,看一下每章前面的导读,抓住重点,快速浏览章节。融会贯通这些基本的不同点之后,重点掌握 ActionScript 3 视觉编程部分和熟悉一些关键的 API 。当然,我特别建议你有空时能从头详细读一遍本书,很多 ActionScript 3 独有的技术细节和小技巧可能是你需要了解的。
你会发现, ActionScript 3 编程是这么的方便和美妙! ActionScript 3 这个标准的 OOP 语言,用起来是这么熟悉和顺手!和 Flash 合作编出的界面是这么漂亮优雅,易于拓展!强烈推荐你花点时间看一看第 1 章。