关闭

关闭

关闭

封号提示

内容

首页 Flex企业应用开发实战.pdf

Flex企业应用开发实战.pdf

Flex企业应用开发实战.pdf

上传者: kanjingcai 2010-12-19 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《Flex企业应用开发实战pdf》,可适用于IT/计算机领域,主题内容包含Flex企业应用开发实战兰 天 曲鹏东 孙高飞 姜建卫 著本书由业界位拥有近年企业级应用开发经验的资深专家撰写权威性毋庸置疑。全书共分为大部分涵盖企符等。

Flex企业应用开发实战兰 天 曲鹏东 孙高飞 姜建卫 著本书由业界位拥有近年企业级应用开发经验的资深专家撰写权威性毋庸置疑。全书共分为大部分涵盖企业级应用开发的整个生命周期。首先介绍了FlexFlash的工作机理和利用Flex开发企业级应用必须掌握的基础知识和核心元素接着剖析了Flex与Java的通信机制以及Flex企业应用的客户端架构和服务器端架构再接着详细讲解了BlazeDS框架的使用方法和工作原理并通过迭代的方式完整地演示一个真实的Flex企业级应用的开发全过程实战性极强最后重点探讨Flex应用性能优化等方面的高级知识。值得一提的是本书公开了作者努力开发出来的、经实际项目检验过的Flex企业应用框架的源代码具有非常高的参考价值。本书对Flex的基础知识着墨不多所有内容都围绕FlexJava这一企业级应用开发技术展开侧重于对Flex技术原理、企业级应用的架构思想和实现方法的讲解所以书中的内容不会随着Flex版本的升级而过时。封底无防伪标均为盗版版权所有侵权必究本书法律顾问北京市展达律师事务所图书在版编目(CIP)数据Flex企业应用开发实战兰天曲鹏东孙高飞姜建卫著北京:机械工业出版社ISBNⅠFⅡ兰曲孙姜Ⅲ软件工具程序设计JAVA语言程序设计ⅣTPTP中国版本图书馆CIP数据核字()第号机械工业出版社(北京市西城区百万庄大街号邮政编码)责任编辑:陈佳媛  李 荣印刷年月第版第次印刷mmmm印张标准书号:ISBN定价:元凡购本书如有缺页、倒页、脱页由本社发行部调换客服热线:()购书热线:()投稿热线:()读者信箱:hzjsjhzbookcomhttp:wwwchinapubcom兰天资深Java技术专家擅长JavaEE企业级应用开发有余年开发和项目管理经验。精通FlexFlexJava企业级应用开发技术的实践者和倡导者。在Flex开发者社区内有一定的权威性目前在RIAChina和AIRIA两个专业Flex社区担任开发版块的版主。多年来一直从事电力行软件的开发对企业模型、应用建模、权限资源管理、SOA和业务规则引擎等有一定的研究。曲鹏东资深Java技术专家和架构师擅长JavaEE企业级应用开发有近年开发经验实战经验丰富。精通FlexFlexJava企业级应用开发技术的实践者和倡导者主导并参与了多个Flex项目的开发。多年来一直从事电力行业应用软件的开发不仅对面向对象设计方法、设计模式有深刻的理解而且对Web开发、工作流、企业应用建模和数据访问框架等也有深入的认识。孙高飞资深Java技术专家和项目经理擅长JavaEE企业级应用开发有近年软件开发经验实战经验丰富。精通FlexFlexJava企业级应用开发技术的实践者和倡导者。多年来一直从事电力行业的软件开发Delphi和JSF开发经验丰富对报表开发平台、模型算法和各种关系数据库都有较深入的研究。姜建卫资深Java技术专家和软件设计师擅长JavaEE企业级应用开发有近年软件开发经验实战经验丰富。精通FlexFlexJava企业级应用开发技术的实践者和倡导者。多年来一直从事电力行业的软件开发主持开发了基于Quartz的自动化排程框架、基于RIA的用电营销系统和基于搜索引擎和内容库的知识管理系统对JSP、JSF、Hibernate、iBatis等技术颇有研究。作者简介Abouttheauthorshttp:wwwchinapubcomFlex和Java已经被实践证明为非常优秀的企业级应用开发技术组合之一。本书阐述了这一组合的基本原理和架构并结合作者多年的开发经验给出了企业级应用框架的示例以及设计和性能优化的思路是一本学习Flex和Java联合开发的优秀书籍。段少婷Adobe开发者社区(http:wwwadobecomcommunitiesusergroups)经理作为国内第一本以Flex和Java为主题、完全针对企业级应用开发的书本书可谓不可多得。它在介绍Flex的一些重要基础知识的同时还深入浅出地将企业应用开发中的一些核心元素和最佳实践呈现在了读者面前。针对企业应用开发中普遍采用Java技术的现状这本书将利用Flex和Java开发企业级应用的架构思想、设计方法和实现原理做了全面阐述同时还讲解了一些非常实用的高级技巧颇具参考价值强烈向所有企业级应用开发者推荐。李文磊RIAMeeting(http:wwwriameetingcom)创始人以Flash为代表的RIA技术是未来年内最有潜力的技术之一。如果用Java实现稳健跨平台的业务逻辑用快速便捷的Flex实现美观的、交互性强的展现层逻辑二者双剑合璧实属开发企业级应用的不二利器。本书作者实战经验丰富对企业级RIA系统的开发方法和思想进行了详实的讲解特此推荐!黑羽RIA天地会(riacom)创始人在JAVA的世界中创建程序界面的做法一般是使用MVC框架(比如JSF,Struts等)然后通过Ajax在页面中实现用户交互。但在Web的今天这种大费周折的实现方式已远无法满足程序设计的需求。Flex的出现弥补了JAVA的不足FLEX与JAVA的结合结束了传统BS应用开发的噩梦《Flex企业级应用开发实战》的出现填补了企业级FLEX图书市场的空白强烈向所有JAVA开发者推荐。谈熠中国Flash开发者交流会(wwwswfshcom)创办人如果你用Java进行企业级应用开发强烈建议客户端使用Flex技术因为这样你能轻松高效地开发出稳定的、跨平台的、用户体验良好的企业级应用。如果你想学习如何用FlexJava这一技本书赞誉Praisehttp:wwwchinapubcom术组合开发企业级应用强烈建议你阅读本书因为它完美地阐述了这一技术的使用方法和思想精髓是目前唯一一本也是最好的一本你值得拥有。Java开发者社区本书的出版弥补了两大空白其一是Flex企业级应用开发类图书的空白其二是FlexJava类图书的空白。它以Flex的底层机制为切入点系统地讲解了FlexJava开发企业级应用的思路、方法和技巧极具参考价值。架构师社区Vhttp:wwwchinapubcom作为兰天的朋友和兰天所在论坛的管理员我有幸在第一时间拿到本书也很有幸与读者分享我的所见所想。事实上在拿到书后我先简单地翻阅了几章就再也忍不住通宵通读了这本著作。毋庸置疑对于每一位从事Java开发的人来说这都是一本必备的参考书同时也是一本重新认识和学习如何使用FlexonJava构建企业级项目的实践指南。阅读本书时让我感触最深的莫过于以下两点。一是兰天团队对于FlexonJava设计模式的执着追求。他们更多地不是追求Flex带来的酷炫效果而是在用心思考用户需求以及项目需求本身。这让我想起平日里时常与身边从事RIA开发的朋友聊到的话题“如果只是停留在‘炫’这个字上RIA技术可能永远只是小众的儿戏。”而我们所要做的是告诉大家IT世界本该如此。二是本书非常细致地解释和剖析了在Flex项目实践中会遇到的种种问题。我想他们不仅在向我们介绍如何使用Flex更是在指引我们思考Flex技术所带来的巨大革新。通读本书你会感觉到兰天在向你述说一段励志般的Flex开发的故事。这些让我想起两年前与兰天初识的一幕。记得在年的时候我看到兰天在论坛里发表书中所提到的“电力系统与FlexGIS”的帖子当时我不禁为之感叹并邀请兰天加入版主队伍希望他为网友分享更多的心得。之后围绕这一话题的点击率超过余次。那时我在想他一定经历了些什么或者说他一定想说点什么。没想到他不仅逐步完善了项目更是把自己所经历的这些写成书与我们分享其精神可嘉。兰天所带来的这些经验和心得是难得可贵的。如果你是一位愿意正视和关注用户体验的开发者或者是架构师、企业领导。在进行了一系列的调查和筛选后你会发现有这么一项叫做Flex的技术它就像是一直为你而准备的助你解决用户的种种问题以及他们提出的各种极富创意的个性化需求。通过部署Flex前端能让你的产品变得更具有价值、更适应当今市场。而本书则解决了那些在应用了新技术后所带来的种种困惑和疑难。它包含了前期架构上的思考、对Flash平台的详尽解析、FlexonJava项目开发历程、前端与后端的交互以及专为Flex设计的优化方案。最后希望你与我们一样满怀信心地开始一项新的旅程带给用户更多的惊喜并像兰天一样以此为乐。姬军艾睿网(AIRIA)创始人推荐序Forewordhttp:wwwchinapubcom传统Web应用的开发是基于BS模式的Web应用的表示层建立于HTML页面之上而HTML只适合于文本BS模式的应用已经不能满足用户对更高的、全方位的用户体验(音频、视频等)的要求。CS模式的应用又不能满足现代用户在数据共享、协同操作等方面的要求。在如今这个以用户为中心的时代用户体验越来越重要用户不仅要求应用要像CS模式的应用那样具有良好的交互性而且要求应用要像BS模式的应用那样具有部署灵活和跨平台的优势。RIA技术便是在这种需求下应运而生的它同时具备BS模式和CS模式应用的双重优势很好地满足了现代用户的需求。对于企业应用而言企业可以通过RIA技术继续使用现有的应用程序模型(包括JEE和NET)轻松构建更为直观、更易于使用、更迅速而且可以脱机使用的应用程序无需大规模替换现有的Web应用。同时RIA还可以帮助企业提供多元化的业务效益包括提高产品销量、提高品牌忠诚度、延长用户在网站的停留时间、避免较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等。近年来RIA一直是业界巨头竞相角逐的重点领域因为业界一直流传着这样一句话:“拥抱RIA拥抱软件开发的未来!”Adobe的Flex在RIA领域有先发优势而且至今仍然是这个领域的领头羊和佼佼者。Flex出现以后BS企业应用在人机交互方面开始发生革命性变化。笔者第一次接触Flex时就被它强大的UI渲染能力所震撼使用Flex开发的BS企业应用在人机交互方面的能力远远强于传统的CS技术很难想象在浏览器中也能够开发出如此酷炫的应用。在随后的使用过程中笔者发现使用Flex开发BS应用的效率远远高于传统的JSP、ASP等技术甚至高于Delphi、VB等传统的快速开发工具。这是因为Flex提供了更加简洁的组件开发机制使我们能够快速构建新的组件同时其强大的数据绑定功能也免去了编写大量赋值语句的工作。我们都知道Java以开发稳定的、可跨平台的企业应用而著称。如果能够利用Flex开发易用性好、交互性强、外观炫丽的人机界面使用Java开发稳定且可跨平台部署的业务逻辑那将是多么美妙的一件事啊!令人振奋的是Flex确实可以与Java完美地结合!快速开发出稳定的、易用的、用户体验良好的BS应用将不再是梦想。如今FlexJava这一技术组合正在逐渐被业界所接受在很多行业的大型企业应用(比如前言Prefacehttp:wwwchinapubcomSAP、淘宝、中国移动等)中都能看到它们的身影。与很多Flex技术的忠实用户一样我们坚信FlexJava技术必定会成为开发企业应用的主流技术之一。笔者的团队使用FlexJava技术组合成功地开发了电力营销管理信息系统和输电GIS系统并在两个供电企业上线运行实实在在地感受到了这一组合的威力和给用户带来的震撼体验。因此笔者特别想与广大同行分享这方面的经验、心得和曾经遇到过的困惑。期望能通过这本书与大家探讨使用FlexJava技术开发企业应用的技术要领力求使广大同行不被开发中的技术问题所困扰从而将更多的精力投入到对业务领域模型的研究中去。本书首先阐述了Flex的工作原理然后循序渐进地讲解了FlexJava企业应用开发的基础知识、核心知识、架构方法和思想、应用的实现过程和原理以及性能优化方面的主题。书中对Flex开发的基础知识着墨不多所有内容都是围绕企业应用开发展开的侧重于对技术原理和解决问题的思路的讲解所以书中的内容不太容易随着Flex版本的升级而过时。本书适合所有有一定Java开发经验的读者阅读通过本书你将亲身体会到FlexJava技术的强大之处。同时喜欢JavaFX、Silverlight等RIA技术的开发人员也可以从本书中找到相似问题的解决方案。写书的过程是艰辛的它与写代码的感觉完全不同!因此借本书出版之际我们要感谢一直在背后默默支持我们的家人家庭的温暖是我们不断前进的动力!感谢机械工业出版社所有参与过本书出版工作的同志们他们的专业精神令我们感动。最后特别感谢“闲云野鹤”网友提供的宝贵资料感谢他大公无私的分享精神!由于我们的水平有限错误及疏漏之处在所难免恳请广大读者批评指正。作者年月VIIIhttp:wwwchinapubcom作者简介赞誉推荐序前言第章Flex企业应用开发入门BS企业应用开发者的噩梦噩梦结束新时代来临Flex概述FlashPlayer的工作模型FlashPlayer的帧执行模型FlashPlayer渲染模型Flash中的事件机制小结第章Flex企业应用开发基础MXML语言用MXML表示ActionScript对象查看由MXML文件所翻译的ActionScript代码IMXMLObject接口客户端保持状态客户端MVC数据绑定实现数据绑定的方法数据绑定发生的时机可以用于数据绑定的属性数据绑定的用途使用Bindable元数据标记绑定到函数、对象和数组使用可绑定属性链进行工作Flex中的组件化编程认识Flex组件和组件容器组件生命周期与布局组件的失效机制使用ActionScript创建自定义组件异步调用异步调用导致模型数据不一致异步调用导致用户反复(误)操作小结第章Flex企业应用开发中的主要元素企业应用的特点FlexApplicationSystemManagerPreloaderApplication的作用和主要属性目录Contentshttp:wwwchinapubcom通过SWFLoader加载Application域及跨域访问FlexModule创建模块模块的编辑与编译模块文件的加载主应用和模块的交互Flex库文件SWCFlex编译模式、链接模式与RSL使用系统RSLFramework其他的系统RSLRSL的摘要使用私有RSL小结第章FlexonJava企业应用架构分布式的异构系统所带来的挑战与解决方案确定Flex客户端系统和Java服务器端通信框架保持客户端系统与服务器端系统的数据一致性大规模企业应用面临的挑战和应采取的解决方案问题和需求解决方案Flex客户端工程路径规划小结第章BlazeDS框架详解BlazeDS介绍什么是BlazeDS使用BlazeDS的原因BlazeDS功能特色BlazeDS体系结构BlazeDS的组件构建一个简单的BlazeDS应用消息的传输过程BlazeDS的序列化机制FlexClient和FlexSessionBlazeDS的配置配置MessageBrokerServletservicesconfigxmlChannel和EndpointService、Adapter和DestinationLoggingSecurity运行期配置BlazeDS的整合小结第章FlexBlazeDS应用开发实例需求分析数据库设计用FlashBuilder配置企业应用开发环境创建一个FlashBuilder工程修改FlexSDK包文件链接类型创建一个FlexLibrary工程客户端人机界面设计服务器端配置服务器端实现客户端实现Xhttp:wwwchinapubcom客户端数据模型客户端Proxy及工具类客户端界面及界面逻辑复杂查询实现小结第章将范例应用改进为真正的企业应用简化FlexRemoteObject的异步调用如何使用户等待远程调用的结束加入简单的身份认证功能使Flex应用脱离开发环境部署到运行环境存在的问题封装BlazeDS及封装后的系统调用方式封装RemoteObject及封装后的调用方式小结第章Flex打印Web打印方案原生打印宿主打印外部打印为什么使用Flex来打印使用PrintJob打印深入了解PrintJob实战PrintJob实现一个票据打印组件组件结构IReceiptPrinter和DefaultReceiptPrinterReceiptTemplateTemplateDescriptorTemplateLoader为组件编写示例小结第章Flex企业应用性能优化Flex的内存垃圾回收机理引用计数法标记清除法垃圾回收的时机强制执行垃圾回收的技巧导致内存泄漏的常见情况FlashBuilder的内存泄漏分析工具用于性能查看的Flash的系统API其他有关内存泄漏的问题有关提高Flex应用性能的技巧小结第章Flex企业应用开发的其他技术与网页进行交互通过参数接受外部信息使用navigateToURL方法调用JavaScriptExternalInterfaceAPI在Flex中使用FlashCS所开发的控件Flex访问NetFluorine的安装和配置Flex通过Fluorine访问NET小结附录FlexBuilder中的项目如何迁移至FlashBuilderXIhttp:wwwchinapubcomFlex企业应用开发入门BS企业应用开发者的噩梦BS架构已凭借其易于部署、维护和可扩展性强等特性成为企业应用的主流架构模式。在BS企业应用开发平台中JavaEE以其开放的标准、跨平台的优势赢得了广大企业应用开发者的青睐经过多年的发展已相当成熟和稳定并拥有非常丰富的开源框架是目前企业应用(尤其是大规模企业应用)的首选开发平台。但是几乎所有BS企业应用开发者都意识到了这个问题:“JavaEE中的展现层(人机交互界面)技术不太理想不论是早期的JSP还是近年来推出的JSF都难以满足企业应用中复杂的人机交互界面开发的需求。”企业应用中除了存在复杂的业务逻辑之外也存在一些复杂的“界面逻辑”也就是控制人机交互的逻辑。比如以下需求:以表格形式大批量输入数据时用户期望回车之后就能够自动将输入焦点跳转到同一行的下一格中当在最后一格按下回车后能够将输入焦点跳转到下一行的第一格中。当数据表格因数据列太多而无法全部显示时用户期望能够锁定左侧几列当拖动水平滚动条时被锁定的几列不动其他列滚动这样更方便用户查看数据。用户期望在当前窗口中弹出一个“模态”窗口以输入一些数据在用户没有关闭弹出窗口时不能操作父窗口。从一个列表中选择几行数据然后通过鼠标“拖动”到另外一个列表中。以上几个例子都是企业应用中常见且典型的人机界面交互场景它们在传统的CS企业应用中广泛存在已被广大用户所习惯和接受。然而在基于HTML的人机界面交互技术中它们都要使用JavaScript来完成其难度较大有时还受限于浏览器的种类和版本并且由于缺乏有效的跟踪调试工具程序调试起来非常困难。一旦用户对界面不满意修改工作几乎会让人疯狂。笔者和同事曾经利用JSF进行过这样的人机界面开发非常沮丧受了很大的挫折开发复杂的人机界面已经成了开发者挥之不去的“噩梦”。这使得很多用PB、VB、Delphi进行过企业应用开发的朋友都非常怀念使用那些传统CS工具通过拖拽和摆放控件就可以轻松完成第章http:wwwchinapubcom复杂人机交互界面开发的美好时光。噩梦结束新时代来临广大用户和开发者们迫切要求改进人机交互界面质量和开发效率的呼声是推动技术发展的巨大动力。年月RIA(RichInternetApplication富因特网应用)这一概念在ColdFusion(被Macromedia公司收购)创始人提交给Macromedia公司(被Adobe公司收购)的白皮书中诞生了。年Adobe推出了其RIA开发平台Flex随后在年又推出了Flex。Flex具有里程碑意义是RIA领域的一个标志性产品。使用Flex开发的应用以其华丽、轻巧、灵动的用户体验在Web开发领域获得了巨大成功。从此RIA成为近年来炙手可热的技术。RIA技术的诞生主要为了解决当前Web应用中人机界面单调、交互性弱、开发效率低下、用户体验差等一系列问题旨在开发出在浏览器下能够运行同CS应用一样甚至远超CS应用交互能力的Web应用。随着时间的推移以Flex为代表的RIA应用已经越来越流行当你打开wwwjoocecom等网站时你会被其绚丽的人机界面所震撼。在Web游戏、Web虚拟现实、WebGIS等领域RIA技术更是大显身手。甚至有人说未来的十年就是RIA的十年。对于一个企业应用开发者来讲通过一年多FlexJava的电力企业应用开发实践笔者深切地感受到了以Flex为代表的RIA技术的强大和高效率于是非常迫切地想与广大RIA技术爱好者们分享自己在这方面的经验和心得希望能帮助更多企业应用开发者结束人机交互界面开发的噩梦踏上愉快的企业应用开发之旅。笔者在这里简述一下自己团队的经历和所开发项目的情况以鼓舞与我们的经历相同或相似的广大开发者采用Flex开发企业应用的信心。笔者所在团队一直致力于为电力企业提供基于信息一体化的解决方案。从年开始我们使用Delphi为电力企业开发了大量软件为了跟上BS应用的时代潮流自年以来我们将Delphi开发的EIP(EnterpriseInformationPlatform)平台全部用Java重写和升级并在该平台上相继为电力企业开发了OA系统、流程化的物资管理系统、流程化的工作票管理系统等Web企业应用。年月我们开始为用户开发基于Web的电力营销系统该系统是电力企业的核心系统同时用户还要求我们开发基于Web的电力GIS系统。由于以前在Delphi下开发过电力营销系统所以我们知道电力营销系统中有大量复杂的人机交互界面而WebGIS系统则要求有强大的图形处理能力。这就使我们的团队面临巨大的挑战:“以往研发的OA系统、物资管理系统和工作票管理系统的展现层都是采用JSF开发的虽然JSF比JSP和Struts开发效率高但经过近年的使用我们知道JSF技术开发复杂人机界面的效率仍然很低JS脚本无法跟踪调试界面视图复用困难缺乏功能强大的图表组件绘图能力弱。使用这样的技术开发有大量复杂人机界面的电力营销系统和要求有强大绘图能力的WebGIS系统会导致开发周期漫长产品界面质量下降系统难以维护等一系列问题。”因此我们将目光转向了据说能够极大提高用户体验的RIA技术。年时RIA技术主Flex企业应用开发实战http:wwwchinapubcom要有三种产品:微软的Silverlight、甲骨文的JavaFx、奥多比的Flex。为了选择合适的开发技术团队根据CMMI规范开展了一次技术决策活动提出的技术选型原则和要求如下:必须支持Java作为后台语言且能够与JSFJSP开发的系统集成使所有的系统都能建立在EIP平台之上从而形成信息一体化的解决方案。必须有成功案例可以借鉴成功案例多则优先考虑。有成熟的IDE支持拖拽编程和跟踪调试。如果能基于我们所熟悉的Eclipse集成开发环境则会优先考虑。为此开发团队进行了两个星期的资料搜集和调研根据第条要求首先排除了Silverlight根据第条和第条要求排除了JavaFx最终选择了Flex。年月至年月我们对Flex的功能进行了深入的了解和学习并在团队内部进行了培训。由于团队主要成员既熟悉CS下的Delphi开发又熟悉JavaEE下的JSPJSF技术因此学习Flex并不觉得困难很快制定出了支持Flex的系统架构方案和EIP平台的支持升级方案。随后升级EIP平台和开发业务系统的项目组开始分别行动进行大规模的开发。年月基于Flex的电力GIS系统开发完毕年月电力营销系统的一期工程完成并在用户现场正式运行新系统能够与用户较早开发的OA系统、物资系统、工作票系统等集成在一起。电力营销系统这个项目主要数据如下:主功能(主界面)近项业务流程个复杂报表多张套打发票张系统的运行环境如下:系统共有万用户数据共有多个基层班站使用该系统基层班站通过M电信光纤所组成的VPN与服务器相连截止到本书开始写作时使用Flex开发的电力营销系统已经正式运行了个月。笔者认为这些系统之所以可以较快完成并让用户感到满意一方面是因为复用了自主研发并已经成熟应用于多个项目中的EIP平台另一方面则是因为Flex所提供的高效开发能力这在以往使用JSFJSP是不可能实现的。图是笔者开发的企业应用集成工作台(EIP平台中的一部分)。该集成工作台旨在为企业用户提供一个进入信息系统的统一入口和可个性化定制的操作平台。该工作台提供了如下的功能要素:功能导航栏。根据登录用户的身份列出用户的授权操作功能工作流系统中与当前用户相关的工作单信息需要查看的系统消息以及公共的服务功能。导航栏右上角有一个隐藏按钮使得导航栏可以隐藏(逐渐缩至工作台左侧)。导航栏右下角有一个改变导航栏形状的按钮当用鼠标按住该按钮并拖动时导航栏的高和宽可以随之改变。双击导航栏中的任何一个叶子节点都可以打开功能窗口功能窗口可以是由Flex开发的窗口第章Flex企业应用开发入门 http:wwwchinapubcom也可以是HTMLJSPJSF开发的网页(主要是集成以前用JSPJSF技术开发的子系统中的页面)。窗口管理器。集成工作台可以管理所有由该工作台打开的Flex窗口点击“恢复桌面按钮”则可以将所有打开的窗口全部最小化当鼠标经过最小化的窗口上时窗口会略微变大并向上滑出窗口的标题提示用户当前是何窗口鼠标点击最小化的窗口后该窗口就会恢复原来的大小和位置。快捷方式管理。用户可以从导航栏拖拽一个功能到桌面的任意位置创建一个快捷方式这样尽管导航栏中用户授权操作的功能很多但常用的功能就可以通过双击快捷方式打开弥补了导航栏中查找常用功能的不便之处方便用户操作。图Flex版企业应用集成工作台图显示的是笔者开发的可最小化的窗口控件该窗口是一个通用控件当点击窗口右上角的最小化按钮上时窗口就可以最小化(最小化是一个逐渐缩小和平移到桌面底部的过程)同时会发出一个最小化事件开发者可以侦听该事件以决定是否允许窗口最小化。当鼠标移动到最小化后的窗口上时该小窗口会略微变大并向上滑出窗口的标题提示用户当前是什么窗口鼠标点击最小化的窗口后该窗口就会恢复原来的大小和位置。同时发出一个恢复事件用户可以侦听该事件决定是否允许窗口恢复。窗口恢复是一个逐渐变大和改变位置的平滑过Flex企业应用开发实战导航栏隐藏按钮桌面恢复按钮系统关闭按钮快捷方式功能导航栏导航栏形状改变按钮最小化后的窗口http:wwwchinapubcom程。窗口在最小化后不再接受其他的鼠标和键盘输入以防止用户误操作。该窗口右上角有一个关闭按钮点击该按钮可以关闭窗口同时发出一个窗口关闭事件开发者可以侦听该事件以决定是否允许窗口关闭。比如关闭窗口时如果用户输入的数据未保存则可以利用该事件弹出保存数据提示。图可最小化的窗口图是笔者所在团队开发的电力WebGIS系统主窗口通过Flex可以更快、更好地完成GIS中的绘图和鼠标控制等功能从而开发出高品质的GIS产品。以上的人机界面只是抛砖引玉通过以上三个人机界面的实例相信大家对Flex强大的人机界面开发能力有一定了解并对使用Flex进行Web应用开发产生了浓厚的兴趣。笔者相信当你掌握Flex开发以后一定能够在较短的时间内开发出更加绚丽和更加强大的人机界面。那么大家现在所要做的就是立即行动起来与我们一起进入RIA的世界充分发挥你的想象力和创造力!第章Flex企业应用开发入门 http:wwwchinapubcom图电力WebGIS系统主窗口Flex概述Flex是排版打印软件和图形渲染软件巨头Adobe公司在其著名的Flash平台(FlashPlayer)上用ActionScript语言开发的一套RIA软件开发套件(SDK)及其集成开发环境。FlexSDK由Flex框架类库、Flex编译器、调试器、MXML和ActionScript编程语言以及其他工具组成。FlashBuilder则是其集成开发环境FlashBuilder构建在开源集成开发环境Eclipse之上目前版本是FlashBuilder。利用FlashBuilder开发者可以通过拖拽的方式开发人机界面用ActionScript语言编写代码调用Flash及FlexSDK所提供的API进行RIA开发然后用FlashBuilder编译器进行编译编译后的产品可以运行在Flash虚拟机中同时FlashBuilder集成了调试工具和性能查看工具可以跟踪ActionScript代码的执行和观察内存变化。从开发出的产品层面来看经过编译后的Flex应用和组件库是一系列可以运行在Flash虚拟机中的SWF文件。SWF文件由一系列有顺序的“帧”(Frame)构成“帧”中包含编译后的ActionScript字节码以及所需的数据比如图像、声音和视频。FlashPlayer按照“帧”的先后顺序“试图”以固定的频率执行每一帧中的代码以显示图形或者播放动画及语音。注意在本书中读者会经常看到Flash虚拟机和FlashPlayer这两个词实际上FlashPalyer就是Flash虚拟机ActionScript代码在FlashPlayer这个虚拟机中运行以执行客户端逻辑、显示图形、播放动画、声音和视频。目前最新的版本为FlashPlayerFlex应用必须运行在FlashPlayer或更高版本上。Flex企业应用开发实战http:wwwchinapubcom至此可能有的朋友会问如果没有开发Flash动画的经验能不能使用Flex进行开发呢?以笔者的经验来看没有Flash动画开发经验完全可以用Flex进行企业开发。当然了解Flash的一些原理则更有助于Flex开发。笔者在初学Flex开发时对Flash相关的一些概念感到非常迷惑尽管能够使用Flex进行开发但总感觉不够扎实。因此笔者花费了一些时间和精力掌握了Flash的一些原理节将为大家介绍这些概念和原理学习这些内容将有助于大家对Flex的理解尤其有助于使用Flex进行企业级应用开发。FlashPlayer的工作模型FlashPlayer主要由两大部件组成如图所示。图FlashPlayer的构成顾名思义ActionScript虚拟机负责执行编译后的ActionScript字节码而图形渲染引擎则用来绘制“显示列表”(DisplayList)中的图形对象。FlashPlayer的帧执行模型在FlashPlayer中ActionScript字节码的执行与图形渲染是两个完全分离的过程。FlashPlayer播放每一帧时都按以下步骤进行:)FlashPlayer发出事件(Event)。这些事件包括由Timer、Mouse、ENTERFRAMES、URLLoader等对象所发出的事件。如果你不了解事件的概念请阅读节中的内容。)用户代码被执行。在这个阶段执行所有侦听第步中FlashPlayer发出的事件的代码。这里的用户代码指的是ActionScript虚拟机以外的由开发者所编写的代码。在这里FlexSDK也属于用户代码。)RENDER事件被派发。RENDER事件的派发是由用户代码中调用flashdisplayStage对象的invalidate()方法所引起的Stage(舞台)是Flash中显示对象的根容器。关于显示对象和Stage请参照节中的内容。从帮助文档和Flex组件源代码来看invalidate()只是告知FlashPlayer当前的显示列表已经发生变化或者说已经失效该方法并不直接派发RENDER事件而是由FlashPlayer在渲染显示列表之前检查显示列表是否失效。如果显示列表已经失效则会在渲染新显示列表前派发RENDER事件给用户代码最后的执行机会。)最后的用户代码被执行。侦听第步RENDER事件的代码在此处被执行这是用户代码在渲染显示列表前最后更改显示列表的机会。在此阶段用户代码调用Stage对象的invalidate()第章Flex企业应用开发入门 FlashPlayerActionScript虚拟机(AVM)图形渲染引擎(GR)http:wwwchinapubcom方法则不会再派发新的RENDER事件。在代码清单中我们在RENDER事件的侦听方法onRender中调用了stageinvalidate()方法但没有侦听到RNEDER事件。如果在ENTERFRAME事件的侦听方法中调用stageinvalidate()则会导致FlashPlayer派发RENDER事件。代码清单invalidate()方法的用途<xmlversion=""encoding=""><mx:Applicationxmlns:mx="http:wwwadobecommxml"layout="absolute"xmlns:ns="*"width=""height=""frameRate=""addedToStage="onAddToStage(event)"><mx:Script><!CDATAprivatefunctiononAddToStage(event:Event):void{thisstageframeRate=thisstageaddEventListener(EventRENDER,onRender)thisaddEventListener(EventENTERFRAME,onEnterFrame)}privatefunctiononRender(event:Event):void{race("现在是渲染前的RENDER事件派发过程!")在此处调用stageinvalidate()不会再派发RENDER事件if(thisstage){thisstageinvalidate()}}privatefunctiononEnterFrame(event:Event):void{trace("现在进入新一帧")**如果去掉注释下面代码会导致RENDER事件的派发。if(thisstage){thisstageinvalidate()}*}><mx:Script><mx:Application>FlashPlayer渲染出最新的显示列表。渲染显示列表的过程中不会有任何用户代码被执行这是一个黑箱操作开发者无法参与。Flash执行一帧的整个过程如图所示。至此希望读者在心中牢记Flash执行每一帧所经历的三个阶段:用户动作阶段Flex企业应用开发实战http:wwwchinapubcom失效动作阶段渲染动作阶段图FlashPlayer执行帧中的渲染图形过程根据SWF文件规范每个SWF文件中都设定了帧的播放频率即每秒播放的帧数简称FPS(FramesPerSecond)。读者不禁会问:“如果应用中某帧的ActionScript代码执行量较大消耗较多的CPU时间FlashPlayer会不会为了保证设定的FPS而漏掉该帧的一些执行代码呢?”答案是否定的。FlashPlayer不会漏掉帧中任何需要执行的代码和任何需要渲染的图形。有人把FlashPlayer看成一个弹性的跑道执行ActionScript代码和渲染图形是跑道上的两个阶段正常情况下FlashPlayer按照SWF文件中的FPS设置去执行每一帧当某帧中代码执行时间与渲染图形时间之和超过了FPS设定的时间那么执行一帧的时间就会超过FPS设定的时间如同弹性跑道发生了变形。图形象地展示了FlashPlayer的弹性跑道模型。图FlashPlayer的弹性跑道模型因此SWF文件中设定的FPS是开发者期望的最大帧播放速度而不是帧的实际播放速度帧的实际播放速度小于或者等于FPS。FlashPlayer渲染模型显示列表是FlashPlayer以后才有的Flash渲染模型这是一个非常重要的模型已经有很多资料对此进行了讲解本书只对其进行一些简要的介绍以便于还不太了解这一模型的读者可以快速掌握。显示列表就是在运行期间Flash图形渲染引擎在屏幕上渲染出的“树”状结构的图形对象只有在显示列表中出现的显示对象才能在屏幕上出现。当显示对象从显示列表中移出后它就第章Flex企业应用开发入门 Player事件用户代码用户动作失效动作渲染动作用户代码Palyer渲染图形渲染前置事件代码执行图形渲染重量级代码执行重量级图形渲染帧帧帧http:wwwchinapubcom不能在屏幕上显示。运行时的显示列表结构如图所示。图Flash运行期渲染的显示列表在运行时Flash如何从无到有构造出这样的树状显示列表呢?步骤如下:)Flash在首次加载SWF时会自动创建一个“舞台”(Stage)显示对象然后自动将这个舞台对象加到显示列表中如图所示。图创建并加载舞台对象到显示列表)查找SWF文件的主类然后创建SWF文件主类的实例并将SWF文件主类的实例作为舞台对象的第一个孩子添加到舞台对象的显示对象列表中如图所示。图创建SWF文件主类的实例并将其作为舞台实例的第一个孩子Flex企业应用开发实战SWF文件主类(Sprite类或Sprite子类)舞台显示对象显示对象容器显示对象容器显示对象容器显示对象显示对象舞台实例舞台实例当前显示列表FlashPlayer舞台

用户评论(9)

0/200
  • 一见不疑 2012-01-24 10:00:04

    哎呀,为啥没看评论就下载了呢,真恶心

  • lovezpf 2011-11-30 00:16:48

    靠,不待这样的,只有第一章和第四章

  • zhmkof 2011-07-26 22:07:05

    还行吧,虽然只有四章,但是哥只是冲着工作机制那几页内容下载的

  • 210.2.28.2 2011-07-21 06:19:11

    敢不敢传个完整的?

  • leng 2011-07-17 17:51:51

    就是不全啊

点击加载更多内容

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/11
仅支持在线阅读

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部