September 16, 2008

ActionScript 3 书评

ActionScript3天地会公测中...

之前在北京出差时和《程序员》刘大编辑深聊过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》
9780596526948_lrg.jpg
这本厚达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 殿堂之路》

20033502.jpg

本书是笔者拙作,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:
9780596526955_lrg.jpg
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。
9780596528461_lrg.jpg

《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交流意见,分享经验。

TrackBack

TrackBack URL for this entry:
http://www.kingda.org/cgi-bin/mt/mt-tb.cgi/252

Comments (24)

我是台湾的读者,您的书小弟也买了一本,希望您能继续推出更多更好的相关书籍。

昨天在《程序员》看到了,还有关于ECMAScript的文章,不错啊。

lulu:

不错的书评,打算买本Essential ActionScript3看看了

黑人:

黑羽哥啊,我都老大不小了,可还是什么也没学会,想学FLASH吧,还是一个菜鸟,想看看你的AS3殿堂之路,但是经济困难,你能不能给我发一个电子版啊,发到我邮箱里面,谢谢了!

正在学AS3:

前辈,您好,留一个邮箱吧,一起讨论FLASH,

菜鸟:

很难的一个程序,高手来看看!
var names:Array=new Array["John Q.Smith","Jane Doe","Mike Jones"];
function orderLastName(a,b):int
{
var lastName:RegExp=/\b\S+$/; //这句是什么意思?
var name1=a.match(lastName); //a和b都代表什么意思?match是什么?
var name2=b.match(lastName);
if (name1 {
return -1; //为什么要加返回值?返回值表示什么?有什么意义?
}else if (name1>name2)
{
return 1;
}else
{
return 0;
}
}
names.sort(orderLastName);
trace(names);

呵呵,怎么感觉对书的简介较多,评论性质的文字较少呢?

to oliwen:
因为这是发在《程序员》杂志上的,不少非AS程序员对Flash RIA本身还不是很了解,所以介绍要稍多一些。

不用他好多年了,

董岳:

哈哈,在《程序员》上看到了你的书评,一个字,牛的不行!哈哈!!

葆龄:

哇,黑大叔好牛啊!哈哈哈

不亏是经常看书的,写的评论有水平。

不错...支持一下

老黑啊~~~
日志又长草咯~~~啊哈哈

支持支持,,,学习了

不管怎样,应该一直学习……
支持黑哥

flashzone:

拜读大作很久了,受益匪浅。不过今天才发现你的blog,以后会经常来光顾的。正好你介绍的其他几本书最近都囫囵吞枣的过了一遍,很多东西有待消化。我一直都做E-learning,以后多向你请教。

小天狼星:

我是初学者 flashcs3入门之后就再买了殿堂之路 感觉里面的例子不多 可能我太嫩了 好多都还看不懂 编程学过C和C++的皮毛 黑大侠能不能给我指条路 或者推荐一本好书 好让我自己的水平在短时间得到有效的提高?
在这里现行谢过了啦。嘿嘿

谢谢.......学习了

燕郊商盟http://www.yanjiao66.cn

燕郊商盟http://www.yanjiao66.cn

瑞zone:

刚拿到你的书,兴奋之中 想学习,可以给个蓝色理想的邀请码吗?我周边的同学对这个也不感兴趣,所以......

笔走龙蛇:

黑羽:
原先学AS2一半路程就停止,从新学习AS3.经过你的书籍指点有些开窍。但是本人发现一点:书的印刷质量不是很好,而且纸张质量也不是很好。嘿嘿,职业病。

留下高见,发表评论

个人信息不会外泄,请放心填写。

姓名和Email必填。

发表评论后,请耐心等待,不要频繁刷新。提交完成后,刷新一下本页即可看到您的评论。^_^

请输入验证字符"z" :
文字广告:你是站长吗?注册阿里妈妈赚广告费

最近发表

归档

全部
Creative Commons License
此 Blog 中的日记
遵循以下授权:
Creative Commons
(创作共用) 授权
.
Google PageRank
本站被Adobe官方MXNA新闻聚合器收录
本站被蓝色理想BXNA收录
\n"; for ($i = 0; $i < count($arr_xml['URL']); $i++) { if( isset($arr_xml['PostID'][$i]) && $arr_xml['PostID'][$i] > 0 ) continue; echo "
  • ".$arr_xml['BeforeText'][$i]." ".$arr_xml['Text'][$i]." ".$arr_xml['AfterText'][$i]."
  • \n"; } echo ""; } } function tla_updateLocalXML($url, $file, $time_out) { if($handle = fopen($file, "a")){ fwrite($handle, "\n"); fclose($handle); } if($xml = file_get_contents_tla($url, $time_out)) { $xml = substr($xml, strpos($xml,'(.*?)', '"'); $n = 0; while (isset($out[$n])) { $retarr[$out[$n][1]][] = str_replace($search_ar, $replace_ar,html_entity_decode(strip_tags($out[$n][0]))); $n++; } return $retarr; } tla_ads(); ?>