之前在北京出差时和《程序员》刘大编辑深聊过AS3相关话题,聊得投机,刘编说希望我对目前国内外AS3/Flex书籍写些书评。结果答应之后,一连两月都没能安排时间写出来,很不好意思。直到8月份项目间隙中才写完了AS3方面的书评,刊登在9月份《程序员》上。10月份将刊登Flex部分的书评。刊登的文章因为杂志篇幅稍作了修整,下面是原文(3050字)。
本次书评主要讲述的是纯ActionScript3开发方面的书籍,不涉及Flex/AIR程序开发。 ActionScript是用于开发Flash/Flex RIA程序的前端脚本语言,其运行平台是Adobe Flash Player。Flash Player从9.0版本开始正式支持ActionScript3,虚拟机执行效率提高了约十倍。Adobe AIR推出后,ActionScript3同时也成了AIR程序开发的主要语言。 ActionScript3完全摒弃了ActionScript2和ActionScript1的混乱和非标准的OOP支持,彻底重建成为一门标准、强大的OOP语言,遵从ECMAScript 4 draft版的规范。熟悉Java和C#的读者,会发现转型学习和使用ActionScript3,非常简单和容易。 ActionScript和JavaScript 可以说是同族兄弟,因为都是基于ECMAScript标准。ActionScript3更是超前的实现了ECMAScript 4 draft版的大部分特色功能,也就是所讲下一代的JS2将具备的功能。
语言知识类书籍:
《Essential ActionScript 3》
 这本厚达900多页的大部头著作是由Colin Moock完成的, 由笔者喜爱的O’Reilly公司出版。该书 2007年5月底完稿,2007年底8月左右正式在Amazon上亮相。 Colin Moock的Essential ActionScript书系列从ActionScript2时代起一直很受欢迎。这次ActionScript3语言颠覆性的变化也导致了Colin Moock的这本新书完全重写,耗时巨大。本次新书和以往对比,去除了对设计模式的讲解,更加关注于ActionScript3语言本身的教学和知识点的深入。 该书最大特点是详尽,从ActionScript3的语法改变,到Flash Player 9 API的重要变化,到重要机制的深层运作机理都基本覆盖到了。 整书分为三部分来讲述的: 1. ActionScript3语言基础: 这一部分以语法为主线来讲述,共19章,约占整书1/2的篇幅还稍多。从ActionScript3的OOP基础语法讲起,类的定义、变量、方法、函数、循环、数据类型、数组、讲起到事件机制、异常、范围、命名空间,XML使用,以Flash Player的安全机制为结束。这部分中对垃圾回收和安全机制的深层讲述尤其值得重点关注。 2. 显示编程与互动: 本部分重点讲述的是ActionScript3的显示编程API用法(包括位图操作、矢量编程、动态文本框),以及事件流机制在显示编程中的应用,共8章。 本部分中尤其推荐“屏幕更新”(Screen Updates)一章,对显示编程的更新机制有详细讲解,对中高级开发人员来说非常实用。 3. ActionScript3的部分应用: 这部分共4章,关注ActionScript开发以及和Flash创作工具Flash CS3的结合上,涉及了读取外部显示资源(位图、编译好的SWF等)、Flash CS3中的类绑定、以及打包输出swc(注:类似于jar文件)。 从书的篇幅安排来看,针对人群偏向于初学者,对语法知识点的讲解足够详细,重点知识全部涉及到了。对中高级开发人员来讲,做为一本开发参考书来购买也很合算,里面的一些使用细节和机理讲述对日后开发有指导意义。虽然价格不菲,但考虑到900多页的货真价实,绝对是物有所值。 谈一下本书不足之处,对于读取外部数据和文件,包括读取后台数据方面的知识散落于事件讲述中,没有独立成线,对初学者而言不太友好,也不便查找。另外,作者可能限于篇幅原因,对ActionScript3的新的重要功能“正则表达式”选择了不讲述,也是缺憾之一。本书过多的注重于语法和使用细节,对初学者固然友好,但对于其他语言转来的开发者或是有一定编程基础的开发人员,就略显散乱,不能很快的掌握整个语言架构的脉络和概貌。
《Flash ActionScript3 殿堂之路》
本书是笔者拙作,2007年9月简体中文版由电子工业出版社发行,2008年3月繁体中文版由台湾松岗出版社发行。本书是国内第一本与国际同步出版的ActionScript书籍,抱着抛砖引玉的心情,为国内的ActionScript开发界贡献一点力量。 ActionScript3与ActionScript2相比重大变化发生在两个方面,一,就是基于ECMAScript 4 draft新标准的OOP思想的全面引入,彻底摒弃了ActionScript2不标准的OOP支持; 二,ActionScript3的核心类和Flash Player 9 API的彻底重构,使得整体架构一改以往ActionScript版本顶级类过多、API混乱的局面,清晰高效。 所以本书是以两条主线——ActionScript3中的OOP思想实现;ActionScript3核心类和Flash Player API的新架构体系——来构建整本书的五个部分。 第一部分:ActionScript3语言基础,共4章,约占1/6篇幅。讲解ActionScript3语言发展历程、开发环境、面向过程式编程的基本语法。其中,关于ActionScript3中函数特有的使用技巧值得一读。 第二部分:ActionScript3面向对象编程,共6章,约占1/4篇幅多,为重点篇幅。以封装思想来讲述类成员、包和访问控制、以及ECMAScript 4 draft的特色功能namespace在ActionScript3中的使用;以复合和继承讲述ActionScript3中继承机制,和与复合方式的比较;以多态思想来讲述里氏代换原则、向下转换原则、抽象类在ActionScript3中的实现、以及接口在ActionScript3中的使用方式。 第三部分:ActionScript3核心类,共6章,占1/5篇幅。以一章概述核心类变动缘由和整体成员划分,然后细讲数组、字符串、正则、XML和异常五个主要成员。 第四部分:ActionScript3主要的Flash Player API,共3章,占1/10篇幅。以一章篇幅写所有API总体概览和变动原因,及第三方开源资源介绍。一章讲ActionScript3事件机制,一章讲ActionScript3读取外部数据和网络通讯基础。 第五部分:ActionScript3视觉编程,共7章,占1/4篇幅多,重点篇幅。以一章讲述Flash Player 的显示架构的变化,解析新显示架构的设计思想。重点讲述新显示架构主要大类的使用、实际的库元件类绑定几种开发方式、事件流机制和互动编程。 本书读者需要有基本的编程知识(语言不限),略偏向于ActionScript中级及以上开发人员阅读。本书前四部分中,都以标注方式,在重点之处都标明了与Java和C#语言的异同,适合其他语言开发者转型阅读。 本书的缺点有:第三和第四部分偏重于脉络,不够详细和深入,比如正则,只做了基础的使用方法和介绍,对一些非重点但实用的API都采用了略讲或是不讲,需要读者自行学习,比如日期类Date。第五部分中,略讲了位图、矢量图、文本和动画编程。其中笔者认为文本编程对于实际开发是比较重要的部分,不少经验和技巧限于篇幅没能展开,是一个遗憾。
实例应用类书籍:
ActionScript3 Cookbook:
 O’Reilly公司的又一本好书,由Darron Schall, Keith Peters和 ActionScript界很熟悉的作者Joey Lott合编的。本书是O’Reilly公司编程语言Cookbook系列书中的一本。所谓Cookbook系列,很容易理解,是以一个个开发主题来编写的代码实用例子,在实际开发中可以随时根据目录找到自己所需要的例子,比帮助文件中的例子更加丰富一些,偏重实战。 本书的理念简单,没有理论,实例为主。所以对本书的介绍也简单,一共24个主题,其中重点主题有运行时环境、数字数学、数组、显示列表(Display List)、绘图遮罩、位图、文本、滤镜和转换、动画编程、正则表达式、声音、视频、持久化数据、XML、加载外部数据。 本书从学习角度看,偏向于初学者;但从工具书角度看,开发实例比较丰富,开发者不妨常备一本,开发时碰到需要的代码实例,立刻在本书中翻一翻。 本书简体中文版已由电子工业出版社在2007年11月出版,翻译质量不错,中规中矩。
设计模式书籍 设计模式的思想是相同的,但由于各个语言语法区别和自身限制,实现的方式各有不同。ActionScript3语言也是一样,比如,由于构造函数不能设置为private或protect,单例模式就要使用一些独特方式实现;ActionScript3不支持Abstract关键字,因此要完全实现抽象类和抽象成员时,又有独特的实现方式。 在设计模式思想方面,个人认为两本经典书必备,一本当然是“四人帮”的《设计模式》,另外一本就是国人阎宏的《Java与模式》。而在ActionScript3语言与设计模式方面,首推O’Reilly的《ActionScript 3.0 Design Patterns》,作者William B. Sanders, Chandima Cumaranatunge。

《ActionScript 3.0 Design Patterns》架构清晰,思路成熟,它以常见的三类模式划分方式讲述了常用的一些设计模式: 1. 创建模式:主要讲述了最常见的工厂模式和单例模式。 2. 结构模式:主要讲述了装饰器、适配器和复合模式。 3. 行为模式:主要讲述了重要的命令模式、观察者模式、策略模式和状态模式。 最后在讲述了这些模式之后,作者还讲述了一些架构模式方面的知识,如MVC思想和对称代理。本书有实例贯穿始终,便于学习和参照。 另外, AS3设计模式方面还有一本《Advanced ActionScript 3 with Design Patterns》,是由Joey Lott老兄和Danny Patterson编写。但这本书,就显得有些不够成熟。在模式的讲解和安排上缺乏清晰的主线,还有一定的欠妥之处,比如居然将MVC当成第一个模式讲解,笔者个人是颇为不赞同的,也容易误导初学者。除此之外,本书的代码多而讲解少,也并不适合初学者,倒是适合随时查找翻阅。ActionScript3设计模式方面的书本来就不多,因此也在此一并略加介绍。 以上书评纯属笔者个人意见,欢迎大家到AS3天地会 http://bbs.actionscript3.cn交流意见,分享经验。
|