Flex中文帮助 1-2章

本文为 刘刚 翻译

第一章 Flex是如何工作的

该部分文档的内容是为用户提供关Adobe®Flex 工作机制的一个快速综述。通过本章节的学习,你可以创建你的第一Flex 应用程序,并将它与你以前所熟悉Web开发技术进行比较,以领Flex的内涵和精髓。

第一节构建并运Flex应用程

Flex是一个提供开发设计和运行支持的架构,它可以使开发人员创建利Adobe® Flash® Player 9作为前台的“富客户端互联网应用程/rich Internet applications/RIA”,以满足用户更为直观和极具交互性的在线体验。

Flex应用程序的典型步骤如下(通常是这样)

  1. 1. 选取一系列预先定制好的、用于设计应用程序界面的组件(如表格、按钮等等
  2. 2. 布置组件以设计用户界面
  3. 3. 使用样式和主题来增强视觉方面的设计
  4. 4. 添加动态行为(例如程序部件之间的相互作用)
  5. 5. 定义并连接所需的数据库服务
  6. 6. 将源代码编译SWF文件,然后Flash Player中运行。

一个典型Flex应用程序包括如下元素

1. Flex framework

Adobe® Flex 2 framework包含了创RIA所需要的所有组件,它们是:用于应用程序布局规划的容器;针对用户界面和从用户处获取数据的控制(例如文本框和按钮);广泛支持的数据绑定、数据格式化、以及有效值验证;事件驱动的开发模式Flex framework被包含在公用组件库SWC)文件中。

2. MXML

Flex应用程序至少包含有一MXML文件,它被作为该程序的主文件MXML是一种标记语言,它是基XML的一种实现,用来创Flex应用程序。你可以使用它去声明程序中所使用的标签结构的定义。

3. ActionScript 3.0

你可以使ActionScript 3.0为应用程序添加动态行为,它是基ECMAScript的一种实现,类似JavaScript。你可以ActionScript作为一个脚本块,MXML文件中直接进行添加;或者创建一个单独ActionScript文件,然后将它们导入MXML文件中。

4. CSS

你可以通过设置组件的属性properties)来改变组件(按钮、列表框等)的视觉样式。例如,按钮组件有一fontFamily属性,你可以使用它来进行字体的设置。样式的属性通常有四种方法来进行控制:通过主(theme)CSS文件中进行定义;MXML文件中的样式块中进行定义;在组件的实例中进行设置。

  1. 5.图形资与很多应用程序一样Flex包含了各种各样的图形资源,如图标和图象
  2. 6. 数据

一些组件被使用来进行数据显示combo boxdata grid)的工作。同时,你还可以使用各种方式来将这些组件与数据联系起来,如使用数组、收集对象、数据模型、以及外部XML数据资源,等等

Flex应用程序是如何编译和发布的:所有的元素都被编译或连接到你Flex应用程序中,就象下图所示

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex应用程序被编译成一SWF文件,然后Flash Player下运行。当一个源代码被编译时,它就被转换ActionScript类(译者注:这正Flex精髓的地方之一,即提供MXMLActionScript的转换),并与图形和其它资源合并SWF文件里。在运行时SWF文件与所需的外部库、服务和数据源进行交互。

一般Flex应用程序并不需要服务器端所提供的支持。因此,你可以在你的本地计算机上编译它们,然后Web服务HTML页面中发布给你的用户。

当然,你还可以FlexAdobe® Flex Data Services 2Cold Fusion Flash Remoting Service、或者其JavaJ2EE Service服务器技术结合起来,进B/S结构的网络应用程序的开发

MXML:一切开始的地方你可以MXML中使Flex所提供的组件来定义用户界面。这里有一个MXML程序文件的例子

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Panel> <mx:TextArea text="Say hello to Flex!" /> <mx:Button label="Close" /> </mx:Panel> </mx:Application>

如果你XML已经很熟悉了,就能一眼识别出这个例子的格式MXML代码的头两行包含了版本号、编码、以及命名空间的信息,文档的主体包含的是程序的具体内容Flex应用程序所有的具体内容都被放<mx:Application>标签对中。同时,你还可以在父标签对中嵌套其它的子标签对(译者注:反正标签是成对出现的,这点一定要记住)。该例子创建了一个简单的程序,它在屏幕上显示Say hello to Flex!”的文字。在该程序中,声明TextAreaButton组件,并设置了它们相应textlabel属性。

备注:MXML文件中的每个标签都有前mx,它Flex的设计命名空间。

程序被编译后运行,如下图所示:

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

第二节连接数据

请记住,Flex应用程序中对数据的操作最重要的事情是Flex应用程序并不直接与一个数据库进行连接。因此Adobe® Flex Builder 2没有提供直接连接数据的工具。你可以通过使MXMLActionScript代码来操作和管理数据。

Flex中,你可以使用几种方法去操纵和管理数据,它们大多数相关的内容已经超出了在这里进行简要介绍的范围(更多的信息,请查看后面的章节)。不管怎样,请想象一种可以连接外部数据的方法,随后的例子将演示XML结构的数据进行连接。

数据的生成

Flex应用程序并不直接与一个数据库进行连接,所以你需要使用某种类型的服务来支持对数据的使用。在随后的例子中,将使HTTPService组件PHP所产生的一XML文件中获取数据。

连接数据库的第一步是生成将Flex程序中使用到的数据。在PHP的应用中,你将采用如下的步骤

  1. 1. 创建一个数据库(MySQL
  2. 2. 编写一PHP脚本连MySQL数据库并生XML格式的数据。

这些步骤同样适合于在其它工作平台上生成的数据(ASP.NET JSP等)。

连接外部数据源

PHP所生成XML格式数据,你可以使HTTPService组件来请求获取数据,就象这样

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:HTTPService

id="productsRequest"

url="http://www.somesite.com/products.php" />

...

HTTPService组件定义了一个请ID,你将使用这ID来控制提供数据URL或者服务器与数据之间的绑定。

外部数据与数据驱动控制的绑定

通过数据与数据驱动控制(data-driven control)的绑定,你就可以处HTTPService的结果XML数据),就象这样

<mx:DataGrid x="20" y="80" id="productGrid" width="400" dataProvider="{productRequest.lastResult.products.items}" >

<mx:columns>

<mx:DataGridColumn headerText="Name" dataField="name" />

<mx:DataGridColumn headerText="Price" dataField="price" />

</mx:columns> </mx:DataGrid>

数据绑定的语法显示在数据控制dataProvider属性中(在波浪形的括号里),它包含HTTPServiceIDlastResult方法、以XML文件的数据结构。在这个例子中XML数据源的数据结构看起来就象这样

<XML>

<products>

<item>

<name>Mobile Phone</name>

<price>$199</price>

</item>

<item>

<name>Car Charger</name>

<price>$34</price>

</item> ...

通过设dataField属性,项目数据nameprice)作为数据栅格中每一列的数据。

在运行时加载数据

你还可以Flex程序开始运行时加载数据,就象随后所示,在 HTTPService中向某个特定URL发送一个请求

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="productsRequest.send()" >

当你creationComplete方法添加到应用程序标签里后,数据会在运行时进行加载并交于数据驱动控制(在这个例子中是数据栅格)。

你还可以HTTPService请求添加到一个控制事件上而不是程序里的标签中,就象如下所示

<mx:Button x="50" y="8" label="Get Data" click="productsRequest.send();" />

Flex提供许多方法去连接、管理、格式化、以及校验数据。你可以通过使用远程程序调用、数据服务、或者其它企业级技术来操纵和管理数据。

第三节关Flash Player安全性方面的问题

出于安全方面的考虑,在客户端Flash Player中运行的应用程序,只有在满足如下条件之一的情况时才能访问远程的数据源,

1. 应用程序所编译SWF文件与远程数据源位于同一个域中

  1. 2. 使用代理proxy),并且你SWF文件位于和代理相同的服务器上Adobe Flex Data ServicesFlex应用程序提供了一个完整的代理管理系统。同时,你还可以通过使用一web脚本语言,ColdFusionJSPPHPASP来创建一个简单的代理服务
  2. 3. crossdomain.xml(跨域策/cross-domain policy)文件在数据源的宿Web服务器上crossdomain.xml文件允许位于其它域中SWF文件对数据源的访问。

第四节Flex应用程序设计界面布局

让我们来详细分析一下前面那Say Hello to Flex“的简单例子,你可以通过设置组件的属性值来控Flex应用程序的界面布局,就象如下所示

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Panel layout="absolute" width="80%" height="80%"> <mx:TextArea text="Say hello to Flex!" top="10" bottom="70" left="10" right="30"/> <mx:Button label="Close" right="30" bottom="40"/> </mx:Panel> </mx:Application>

许多容器组件都允许以绝对坐标的方式创建布局,这就意义着你可以使用精确xy的坐标来放置组件。你还可以对应其父容器的相对位置来放置组件并约束它们,使它们在应用程序的界面放大或缩小时仍然保持其彼此的位置。

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

在这个例子中,面/Panel组件的布局属性被设置为绝对值方式,同时所有容器的大小都被设置为应用程序的百分之八十。两个组件TextAreaButton)被放置到距离面板容器边界的特定象素位置上。

使用风格和主题增强视觉方面的设计

如果样/style的属性值没有被指定,它们将由整个程序中运行的主/theme来进行控制。在默认情况下Flex应用程序使Halo主题(就象上面那个例子那样)。当然,你可以修改默认的主题或者干脆自己创建一个。你还可以简单地指定新的样式定义来改变默认的主题样式,就象这样<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Style>

TextArea {

font-size: 36px;

font-weight: bold;

}

</mx:Style>

<mx:Panel layout="absolute" width="80%" height="80%" x="122" y="24"> <mx:TextArea text="Say hello to Flex!" top="10" bottom="70" left="10" right="30"/>

<mx:Button label="Close" right="30" bottom="40"/> </mx:Panel> </mx:Application>通过明确地TextArea组件定义一个样式,应用程序现在看起来就会象这样了:

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

在这个例子中,一种新样式MXML文件中<mx:Style>标签里进行了定义。如同我们前面所提到过的,你还可以通过修改主题或应用新主题、使用一个外CSS文件、或者设置单独的样式属性来达到设置新样式的目的。

将一个样式单导入MXML文件中,你需要添加如下的代码<mx:Style source="styles.css" />

第五节事件和行为的使

HTML应用程序的原理是由客户端发出请求,并从服务器端得到反应。与之不相同的是,Flex应用程序是基于事件/event-based。举个例子,当用户单击一个按钮时,便会触发一个事件。应用程序本身,不是指服务器,包含了识别事件的逻辑并采取相应的行动。

当事件被触发时修改组件的属性

对某个组件以编程方式进行操作时,为了对某个事件作出反应,必须首先要引用它,这时你就需要赋予它一ID值,如下所示

<mx:Panel id="myPanel" layout="absolute" width="80%" height="80%" x="122" y="24">

随后你就可以将行/behavior添加到应用程序上,当某个事件被触发时改变组件的属性值,就象这样

<mx:Button label="Close" right="30" bottom="40" click="myPanel.visible=false"/>

当按钮被单击时,面板的可见属性值被设置false

使ActionScript功能函数你也可以通过编ActionScript功能函数,并在事件中调用它来达到相同的目的,在这种情况下,按钮组件的单击事件如下所示

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Style source="styles.css" />

<mx:Script>

<![CDATA[ public function close() : void { myPanel.visible = false; }

]]> </mx:Script>

<mx:Panel id="myPanel" layout="absolute" width="80%" height="80%" x="122" y="24"> <mx:TextArea text="Say hello to Flex!" top="10" bottom="70" left="10" right="30" /> <mx:Button label="Close" right="30" bottom="40" click="close();" />

</mx:Panel> </mx:Application>

ActionScript功能函数是MXML文件里<mx:Script>块中进行定义的,然后引用到按钮的单击事件上。

单独ActionScript代码

为了MXML文件中更好地分离ActionScript代码,你可以将它们放到单独ActionScript文件中而不是作为函数,然后再将它们导入MXML文件里,如下所示<mx:Script source="myFunctions.as" />

运用行为和变换增强丰富的视觉互动Flex应用程序是事件驱动的,这就意味着你可以在程序运行时使用事件去添加丰富的视觉互动性。为了实现它,你使用了一个事件触发器,用其来描述一个行为。

在前面的例子中,面板组件visible属性值被设置false因而不可见。你还可以通过使用行为来制造出更强的视觉效果。

下面的例子创建了一个行为,该行为首先创建好一种效果,然后把它绑定到组件hideEffect属性上(触发器)

<mx:Fade id="myFade"/>

<mx:Panel id="myPanel" layout="absolute" width="80%" height="80%" hideEffect="{myFade}" >

当关闭按钮被单击时,面板组件淡出而不是消失。

触发器和效果还可以组合到更为复杂的行为中,其被称之为变/transitions

第六节在应用程序中添加多态页面

有几种方法在一Flex应用程序中创建多态页面。你可以使ViewStack组件、创建单独MXML文件、或者使用视图状态。视图状态可以被看作是一个组件或组件群构成的预定义的用户界面布局。你可以使用视图状态为程序表现出不同的视觉效果。每一种视图状态都是基于一种基础的状态,并进行继承和扩展。

在随后的例子中,当用户在组件上滚动鼠标时,基础状态发生变化。

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

当一个视图状态被调用时(通过用户的鼠标在组件上滚动时产生的事件),一种效果(或一种变换)改变了用户界面的外观。

使用视图状态方式ViewStack方式还MXML文件方式,取决于你想从一个页面到另一个页面进行变化的范围、用户界面的复杂性、以及实Flex程序的构架。

第七节开始使Flex

现在,想必你Flex的概念有了一个基础的认识,让我们开始创Flex应用程序吧。

使Flex Builder

通过使用新项目向/New Flex Project Wizard创建一Flex项目File > New > Flex Project)。设计,编译,以及调Flex应用程序所需的所有工具,都被包括Flex Builder中了。

使Flex SDK

创建一个文件名后缀MXML的文本文件,在其中添MXML文件的基本元素(上述例子中的头两行代码),然后使用文档资料(特别Adobe Flex2 Language Reference)去研究各种组件的用法。编译和调试工具是以命令行的方法提供的。

第二章 Flex 2应用程序开发入门

本章节的内容包含了Flex系列产品的概述,以及关Flex基础理论的相关教程。

Flex

Flex提供了为专业开发人员所熟知的、基于标准的编程模式,以及一套发布高品RIAs的设计产品RIAsweb应用程序带来了快速响应并且内容丰富的桌面软件,以满足更有效力的用户体验Flex使用了卓越超凡Adobe® Flash® Player 9,允许开发人员无缝地扩展浏览器的能力,发布丰富并且快速响应的客户端应用、与服务器端更为健壮的整合功能、以及面向服务器端的体系构架。

Flex产品系

Flex产品系列包括了进行设计、开发、发布整RIA所需的一系列产品。它们是

  1. 1. Adobe® Flex? 2 SDK
  2. 2. Adobe® Flex? Builder? 2
  3. 3. Adobe® Flex? Data Services 2
  4. 4. Adobe® Flex? Charting 2

Flash Player 9

Flex应用程序在浏览器中运行时,它们采用了先进Flash Player 9运行时环境去执行客户端的逻辑,渲染图形、播放动画、声音以及视频Flash Player 9提供了对高性ActionScript 3.0的支持,一如即往地展示了它极具革新技术的表达力Flash Player为开发人员提供了一个设计用户界面的平台,无论是客户端还是客户计算机上的表现/presentation-tier的逻辑执行。因Flash Player能够在所有主流的操作系统和浏览器上运行,所以你并不需要去为某个浏览器或平台进行程序定制。

另外,Flash Player 9中运行Flex应用程序可以与浏览器中所显示JavaScriptHTML互动。因此,你可以Flex融合到一个已经存在web站点或者应用程序中,包括与其它基于浏览器的构架,AjaxJavaScript库一起协同工作。

Flex Software Development Kit 2

Flex系列产品中的核心Flex Software Development Kit (SDK)Flex 2 SDK是技术实现和程序编制的基础集合,它使你可以使Flex系列产品来创建应用程序Flex 2 SDK包含Flex构架(类库),Flex编译器,调试器MXMLActionScript编程语言,以及其它实用程序Flex SDK还包括了核Flex构架类库的源代码,使你可以学习这些类的代码并扩展它们以备你自己的使用

Flex SDK可以作为一个独立包进行使用,或者集成Flex BuilderFlex Data Services

Flex应用程序MXMLActionScript源文件组成。(译者注:简而言这MXML是用来进行用户界面布局设计的标签语言ActionScriptFlash Player的编程语言。)

Flex Builder 2

Flex Builder是一个使Flex SDKFlex Data ServicesFlash Player来开发应用程序的集成开发环境IDE)。Flex Builder IDE为开发人员提供了各种工具用来进行开发、设计、

Flex应用程序,其中包括集成的增量编译器和单步调试器。因为它Flex 2 SDKFlex程序模型Flex编程语言紧密集成,所Flex Builder可以提高开发小组中所有成员的生产力

Flex Builder是建立Eclipse工作平台上的(一种对于开发工具的开源平台)。因此Flex Builder可以作为一个独立的产品或Eclipse的插件来进行安装,并且能够Eclipse工作平台上数以百计的商业和开源项目中受惠

Flex Builder提供了一套针MXMLActionScript、层叠样式表CSS)的代码编辑器,帮助你更加容易地管理代码的源代码操纵工具,以及帮助排除程序中故障的调试器。对于用户界面的设计, Flex Builder支持可视化的设计视图,它可以使开发人员或者设计人员去布Flex组件,定制它们的外观,以及如何与用户进行互动

Flex Builder设计视图的界面如下所示

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex Builder进行程序编制的界面如下图所示:

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex Data Services 2

通过使Flex Data Services,大大地增强Flex 2 SDK的功能性Flex Data Services新增了对企业信息的支持,以及对Flex 2 SDK的数据服务架构。你可以J2EE应用服务器上或servlet容器里Flex Data Services发布为一个标准web应用程序Flex Data Services能够简化操作服务器上数据的编程模式。

Flex Charting 2

以图表或图形来显示数据的方式可以使用户更容易理解数据的使用。你可以将一个简单的数据表格,通过设置它的颜色、标题、以及二维表现方式来展示为条形、圆饼形、线形、或者其它类型的图表

Flex图表组件扩展Flex的构架,增加了对大多数常用图表类型的支持,包括条形、圆饼形、线形、标图形和气泡形。图表组件是动态地在客户计算机上进行渲染的,从而使它可以非常容易地平铺、翻滚、以及其它增强用户体验的互动性。你还可以使用颜色和标题来使图形更有可读性。

一个简单的图表如下所示:Flex应用程序的特性Flex中,开发人员可以开发出符合各种需求类型的应用程序,它们是

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客
  1. 1. 用户数据收
  2. 2.
  3. 3. 在客户端处理用户的输入,包括过滤和数据校
  4. 4. 直接反馈用
  5. 5. 多步骤处
  6. 6. 支持大数据
  7. 7. 实时数据推
  8. 8. 偶尔的客户端连

Flex发布模Flex平台支持范围广泛的发布模式,它们是

1. 客户端模式,即应用程序只运行在客户端上而不需要服务器资源

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

2. 使用简单RPC访问服务器数据,即使HTTPServiceHTTP GETPOST请求)WebService(通过使SOAP)。

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

3. Flex Data Services模式,可以提供更为高级的特性,如数据同步、安全增强等等

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex Data Services增强RPC服务支持使AMF协议去访RemoteObjects。这样,你就可以访问远程服务器上Java对象JavaBeansEJBsPOJOs)。同时Flex Data Services还提供了一个代/proxy以方便对服务器端数据的存取。

Flex Builder的界面模

Flex Builder提供两种界面模式:即开发设计模式、调试模式。你可以在主菜单中Window>Perspective>下对两者进行切换。Flex开发界面模式

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

打开开发界面模式,你将看到代码编辑器,它包括了导航/Navigator view、调试/Problems view、以及概述视图栏

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex Builder中的代码提示

代码编辑器包含了许多特征可以帮助开发人员简化他们的工作。其中最重要的特征称之为代码提/内容协/Content Assist(译者注:内容协助是其英文的直译,不太好,所以根据它的实际意思意译成代码提示),它将在你输MXMLActionScriptCSS代码时给出完整的提示。请键Control+Space以打开代码提示。

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex Builder中设Flex应用程序

在开发界面中有两种设计方式:代码输入方式和可视化设计方式,你可以自由地在两者之间进行切换。当你选择可视化设计方/Design mode时,Flex界面上将出现设计面/design canvas、所支持的组/Components、以Flex属性/Properties views

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex调试模式你可以在代码编辑器中查看和编辑出错或被警告的代码。同时,你还可以设置断点、或单步执行来帮助你进行程序的调试。

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

编译应用程序

每当项目资源作出改动后Flex Builder便会自动地FlexActionScript 3.0编译SWF,并与相应HTML页面一起放置到项目的输出文件夹中。

Flex中文帮助 1-2章 - 贫嘴的鱼 - 贫嘴的鱼的博客

 

转自:http://www.airia.cn/flex/std/booshelpcn/index_1_2.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游鱼_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值