前 言 Flex是事件驱动的面向对象应用程序框架和编程语言,读者用它可以构建出引人注目且容易扩展的RIA,这些RIA都运行于Adobe Flash开以环境中。 历史上,Web应用程序开发的侧重点在于能够快速推向市场,但这一优势往往以牺牲最终用户的易用性为代价。Flex既确保了集中部署的快速转换模型,又为实现易用性提供了强大支持。 初次接触Flex的人往往面临一些独特的挑战。第一个挑战是许多开发人员不熟悉事件驱动技术。虽然他们大致了解事件驱动的概念,但缺乏长期的使用经验。这种情况下,很难充分发挥这种技术的长处,更重要的是无法让自己的工作更有成效。 第二个挑战源于许多开发人员长期固守当前的技术领域。由于习惯于现有的思维方式,这些人往往会把自己在HTML中得到的经验移植到Flex中。这种做法虽然勉强可行,但束缚了开发人员的创造力。 第三个挑战是与Flex本身的强大功能相伴而生的复杂性。尽管Flex本质上并不复杂,但毕竟很多Web应用程序技术都是过程式、非事件驱动的,因此读者很可能在接触简单示例时感觉比较容易,而一旦深入钻研则会觉得难度陡增。 本书将针对这些挑战并给出解决方案,而这也是本书的独到之处。对于第一个挑战,本书会通过不断提醒读者该如何利用事件对象来强调Flex的事件驱动本质。而且,我们还将针对同一任务给出多种实现方式,并分析每种方式的利弊,以加速读者的理解。 至于第二个挑战,我们不会否定读者已有的技能,也明白读者可能拥有另一种Web技术背景。我们也有同样的经历,体验过摆脱已经习惯的思维模式时的心理转换过程。本书时不时会对如何利用某项功能给出建议。 谈到第三个挑战--?复杂性,本书的使命就是让读者在短时间内成为一位高效率的Flex开发人员。为此,我们综合运用了一些技巧,包括设计一些容易理解的小示例。而且,我们也会尽量利用读者现有的技能,将使用其他技术和使用Flex解决同一个问题联系起来。另外,本书所有章节都是按构建应用程序的逻辑顺序组织的,先介绍简单的内容,然后循序渐进地讨论新知识。 请读者放心,这本书你选对了。我们就是要使你的技能和职业生涯更上一层楼。然而,有一个问题我们目前还解决不了,那就是当用户万分感激并对您大加赞赏时,您该怎么办--?这个问题必须由您自己来回答! 本书的结构 第1章简要介绍Flex。本章讨论Flex适合解决的问题及解决方法。之后,为读者提供说服所在部门、消费者或客户接受Flex的重要理由。本章还将概述Flex的工作原理和事件的概念,明确Flex在Adobe产品套件中所处的位置。 第2章介绍构建Flex应用程序涉及的工具集、环境和语言。为了加深读者对事件的理解,本章将对事件的内容进行详细的介绍。 第3章介绍Flex的核心语言--?ActionScript。ActionScript是一门符合ECMAScript标准的面向对象语言,它成就了Flex。本章讨论数据类型、操作符、循环和条件等概念。熟悉ActionScript是必需的,因此读者有必要尽早掌握这门语言。 第4章介绍应用程序的布局。本章讨论如何定位显示对象和使用容器对视觉对象分组。 第5章开始介绍如何通过表单捕获用户输入。Flex具有类似于HTML的表单输入控件,但也包含很多HTML中没有的控件。 第6章接着第5章的主题,继续讨论如何使用Flex的验证程序来验证用户输入。从易用性的角度讲,事先验证可以节省用户的时间,省去不必要的麻烦。 第7章转而介绍如何使用格式化程序对原始信息进行格式化。经常与验证程序一起使用的格式化程序解决了手工格式化数据的难题。 第8章探索Flex中最常用的结构--?基于列表的组件。列表是一种数据驱动组件,它可以以列表形式自动呈现数据源中的数据。 第9章补充第8章的内容,深入探讨下一代基于列表的组件,这些组件是Flex 4中新增的Spark组件的一部分。 第10章继续讨论列表,但专门介绍创建自定义列表的方法,包括简单的方法和使用全功能的项渲染器自定义显示。本章还将介绍支持行内编辑的编辑器。 第11章专门讨论事件。之前介绍过如何以最低限度标准使用事件,该章通过深入介绍事件的工作机制,把对它的应用提升到一个新的层次上来。 第12章展示如何在应用程序中添加导航组件,以便用户在不同功能间切换。 第13章讨论扩展应用程序导航功能的弹出式窗口,探索应用程序如何通过来回发送信息与弹出式窗口进行通信。 第14章介绍应用程序流主题,并讨论Flex中称为“视图状态”的独特功能。通过这种机制在应用程序中配置不同的视图,可以节省很多时间,同时也提供了在视图间切换的便捷方式。 第15章开始讨论有关数据操作的主题,尤其是在应用程序与后端服务间实现数据交换。这包括连接到支持Flex本地二进制协议(AMF)的服务器、HTTP上的XML以及Web服务。 第16章介绍对象和类。毕竟,Flex是一种面向对象的语言。虽然基于标签的MXML语言令人愉悦,但熟悉创建和使用ActionScript对象的方法只会不断地提升读者的开发技能。 第17章详细介绍将占用大量开发时间的自定义组件。自定义组件是把应用程序分解成小型、易管理、可重用部分的主要手段。 第18章专注于应用程序的结构,并介绍Flex的可重用特性,例如在多个项目之间共享自定义组件以及编译共享功能库。 第19章更深入地介绍应用程序结构。本章考虑架构,设计了一个Flex应用程序,并使用RobotLegs MVC框架实现一个具有良好架构的应用程序。 第20章讨论自定义体验。这一主题包括使用Flex的CSS样式、皮肤和主题。本章还将介绍图像和字体。 第21章介绍Flex最酷的功能--?效果。效果是应用程序中吸引眼球的元素。同时,本章还会讨论如何通过效果增强程序的易用性。 第22章是讨论自定义内容的最后一章,详细介绍拖放功能。拖放功能惹人喜爱,但从易用性的角度来说,拖放通过加快工作流来使用户减少一些单击操作。 第23章讨论图表。本章介绍各种类型的图表并对每种类型的使用时机给出建议。此外,本章还将讨论图表的组成部分,以及如何定制图表。 第24章讲述测试与调试。此时,项目临近结束,进入了QA(质量保证)周期。读者知道怎样调试应用程序和如何隔离问题是关键所在。Flex内置了许多相关功能,但这一章也将讨论第三方工具。 第25章介绍完成项目的最后步骤。项目收尾包括为应用程序添加打印功能,使用包装器加载应用程序,以及制定版本规划以便部署应用程序的生产版本。 第26章是附送的一章,可以在线阅读。这一章深入介绍如何使用XML,XML是一种广泛使用的语言。由于Flex第一个支持了E4X语法,因此在Flex中可以像使用Flex本地对象一样使用XML。这一章可以在Manning出版社的网站http://www.tupwk.com.cn/downpage上下载。 作者在线 购买了本书意味着你已获得免费访问Manning出版社所运营的私有Web论坛的权利,在这个论坛上你可以对本书发表评论,可以提出技术问题并从作者和其他读者那里获得帮助。要访问论坛并且订阅其内容,可以在Web浏览器中输入该网页提供了各种信息,包括注册后如何访问论坛,可以获得什么类型的帮助,以及论坛的行为准则。 Manning出版社对读者的承诺是,提供一个读者之间以及读者和作者之间能够开展有意义的交流的平台,但是并不承诺作者必须要参与到何种程度,作者对于论坛的贡献是志愿的(并且是无偿的)。我们建议你向作者多提出一些富有挑战性的问题,以免他们失去兴趣! 只要本书还在印刷销售,作者在线论坛和以前讨论的存档都可以在出版社的网站上访问。 作者简介 Tariq Ahmed是一位卓越的Web应用程序的先驱人物,在这一领域已经有了超过15年的经验,先后为Bell Canada和Reuters等公司引荐了下一代Web技术。他最早将Adobe Flex引入eBay,随后该技术又被其他团队采用。作为Adoble Flex社区专家,Tariq始终致力于推广这一技术并通过他的社区Flex网站(CFLEX.Net)和个人博客为社区提供支持。Tariq目前担任Amcom Technology公司的产品开发经理,负责管理一个RIA工程师和商业智能分析师团队。 Dan Orlando是一位知名的RIA架构师,专注于企业级Flex和AIR应用程序开发。作为前沿技术平台的的可靠信息来源,Dan经常接受广播媒体和纸质媒体的采访,包括PHP Architect杂志、Flex and Flash Developer杂志、Amazon Web Services Developer Connection、Adobe Developer Connection、IBM developerWorks、等。 John C. Bland II是Katapult Media公司的创办者,这是一家关注软件和Web开发,使用ColdFusion、Flash平台、PHP、Java、。NET平台和Objective-C(iPhone、Mac OSX等)等技术的公司。Katapult为世界范围内的小型和大型客户开发自定义软件和Web产品。作为2009年的Adobe Community Expert,John仍在努力回馈帮助他成长为出色开发人员的社区。John会定期更新他的Geek Life博客,网址为。 Joel Hooks是具有ActionScript 3、Flex和Python经验的Flash平台开发人员。在职业生涯的前13年,Joel是一名3D动画师和图形设计人员,从事相关的计算机基础培训应用程序的工作。他对编程的兴趣可以追溯到很久以前,对于应对软件开发中面临的技术挑战,他乐此不疲。在ActionScript 3问世后,Joel终于找到了一个既能架构有用的工具,又允许他利用自己作为视觉艺术师的经验的平台。Joel对技术有很高的热情,而且十分享受探索框架、库和工具的过程,他的工作因此总是充满趣味和挑战。 关于书名 根据认知科学的研究,人们最容易记住的事情是他们在自发探索中发现的事情。 尽管在Manning出版社中并没有专门研究认知的科学家,我们仍然确信为了使学习变得持久,必须经历探索、实践和(很有趣的)温习这几个阶段。只有在对新的事物进行了积极的探索之后,人们才能够理解并记住新的事物,也就是所谓的掌握新的事物。人类在实践中学习,示例驱动是所有具备实战性质图书的基本部分。这个特点鼓励读者尝试新的事物,实践新的代码,探索新的思想。 关于书名,这里还有一个更加世俗化的理由:我们的读者都很忙。他们由于工作需要或者为了解决一个问题而寻求书籍的帮助。他们要求图书既要深入浅出,又能在他们需要的时候为其提供需要的内容。他们需要的是能够帮助其增强实战能力的书籍。本书就是为这个目的而编写的。 封面插图 本书封面插图的名称是“An Armenian”,该插图来自于一本介绍奥斯曼帝国服饰的画册(由伦敦老邦德街的William Miller于1802年1月1日出版)。画册的扉页已经遗失,因此我们无法确定它的创作时间。画册目录中以英语和法语来标识图画,每张图画有创作它的两位艺术家的姓名,他们无疑会为自己的艺术品能够美化200年后上市的一本计算机编程图书的封面而感到惊讶。 Manning出版社的一位编辑在位于曼哈顿西26街“Garage”的古董跳蚤市场购买了这本画册。卖主是住在土耳其安卡拉的一个美国人,交易的时间发生在那天他准备收摊的时候。Manning出版社的编辑随身没有携带购买这本画册所需的足够现金,并且卖主礼貌地拒绝了他使用信用卡和支票。因为卖主当天晚上要飞回安卡拉,所以似乎已经没有希望了。那么是怎么解决这个问题的呢?无非就是一个通过握手来约定的老式的君子协议。卖主提议通过银行转账付款,编辑仅仅在纸片上抄下了收款银行的信息,随后画册就到了他的手里。不用说,第二天他就将钱付给了卖主。我们感谢这位陌生人能够如此信任我们的同事,这使我们回忆起很久以前浪漫温情的时代。 来自奥斯曼帝国画册的图片,就像在本书封面上出现的图片一样,穿越时空将两个世纪之前服饰习俗的丰富性和多样性呈现在我们眼前。这些图片令人回忆起与我们隔离又相距遥远的时期(以及除了通信极其发达的今天之外的其他每个历史时期)。 从那以后,服饰习俗已经改变了,那个时期不同地域的丰富多彩的服饰文化也逐渐褪色。现在甚至连区分两个来自不同大陆的居民常常都是困难的。也许我们应该尽量乐观地看待这些变化,文化上、视觉上的差异已经转变为更加多样化的个人生活上的差异,或者更加多样化和有趣的智力上和技术生活上的差异。 我们使用来自这本画册中的图片作为本书的封面,这使我们欣赏到两个世纪前丰富、多样的地域生活。Manning出版社的编辑们使用这种方式来赞美计算机行业中的独创性和主动性以及其中无尽的趣味性。