Flex中文帮助 第三章 Flex基础

第三章 Flex

Flex是基于组件来进行开发的,为了更有效率地设计和开发应用程序,你应该熟悉这些开发模式以及操作步骤。

第一节创建一Flex应用程序

应用程序模

Flex创建一个应用程序时,你使用组件(容/containers和控/controls)来描述用户的操作界面。例如,容器可以是一个用来进行数据输入的表格容器,如一个盒/Box或一个栅格/Grid;而控件就是该表格中的元素,如一个按/Button或文本输入/Text Input field

举个例子,在随后的图例中显示了两种不同的盒子容器,它们分别包含了三个按钮控件和一ComboBox控件

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

FlexMVC模型

为了增强系统的复用性和可维护性,应该采用具有良好体系架构的模型,Model-View-ControllerMVC

  1. 1. 模型/Model组件封装了数据和与数据相关的行为
  2. 2. 视图/View组件定义了应用程序的用户界面
  3. 3. 控制/Controller组件则负责处理程序中的数据连接

web服务器的运用

通常地,会涉及到web服务器类型有

  1. 1. web服务器,它们仅将用户的请求回复一个简单的静HTML页面。在这种情况下,你需要Flex应用程序SWF文件嵌入到一HTML页面中
  2. 2. web应用服务器,JRunColdFusionPHP,它们可以动态地生成页面。在这种情况下,你将使用到与服务器技术相关的库,并动态地处理它们的内容
    1. 3. J2EE应用服务器servlet容器。向一J2EE应用服务器servlet容器发出请求,JRunTomcatWebSphere,通常你需要使Flex Data Services
    2. 程序开发的通常步Flex应用程序,通常会采用如下的步骤进行
    1. 1. 在一个文本编辑器或集成开发环境(IDE)中,Adobe Flex BuilderEclipseIntelliJ中插MXML根标签。
      1. 2. 添加一个或更多容器
      2. 3. 在容器中添加控件,如输入栏、按钮和输出栏
      3. 4. 定义一种数据模型
      4. 5. 添加一web服务器HTTP服务器,或向远Java对象发送请求
      5. 6. 为数据输入添加验证
      6. 7. 为组件添加脚本
      7. 8. 将应用程序编译SWF文件。

发布应用程你可以将应用程序发布成一个编译好SWF文件,或者如果Flex Data Services的话

则可以将应用程序发布为一MXMLActionScript文件。客户端进行访问的格式分别是http://hostname/path/filename.swf http://hostname/path/filename.mxml

第二节 Flex编程模

Flex包含Flex类库、MXMLActionScript编程语言,如下图所示:

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

当然,Flex还包Flex编译器和调试器,它们并没有在图中示出。

你可以混MXMLActionScriptFlex应用程序。事实上, MXMLActionScript编程语言都提供了访Flex类库的能力。通常的做法是:使MXML去定义用户界面的元素,使ActionScript 去定义客户端的逻辑并进行控制

Flex类库包括Flex组件、管理器和行为。在基于组件的开发模型下,开发人员可以

运用预先做好的组件。

ActionScript添加Flex应用程序

ActionScript可以出色地完成如下任务

  1. 1. 处理事
  2. 2. 处理错
  3. 3. MXML语句中将数据对象绑定Flex控件
  4. 4. 定制组件

在随后的例子中,为按钮控件的点击事件添加了事件监听/event listener。当用户点击按钮时,TextInput控件中的文本拷贝TextArea控件中。

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

<?xml version="1.0"?> <!-- ?xml标签必须位于第一-->

<!--MXML根元素标--> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<!--定义一个面板容器来放置控-->

<mx:Panel title="My Application">

<!--TextInput控件用来进行用户输--> <mx:TextInput id="myInput" width="150" text=""/>

<!--TextArea控件用来进行输--> <mx:TextArea id="myText" text="" width="150"/>

<!--按钮控件来触发拷--> <mx:Button id="myButton" label="Copy Text" click="myText.text=myInput.text;"/>

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

前面的例子是MXML中直接插ActionScript代码。尽管这种技术只需要一两

ActionScript代码,但是对于更为复杂的逻辑实现,你就需要<mx:Script>块中定

ActionScript,就象如下所示那样

<?xml version="1.0"?> <!-- ?xml标签必须位于第一-->

<!--MXML根元素标--> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script> <![CDATA[

//定义一ActionScript功能函private function duplicate():void { myText.text=myInput.text; }

]]> </mx:Script>

<!--定义一个面板容器来放置控--> <mx:Panel title="My Application">

<!--TextInput控件用来进行用户输--> <mx:TextInput id="myInput" width="150" text=""/>

<!--TextArea控件用来进行输--> <mx:TextArea id="myText" text="" width="150"/>

<!--按钮控件来触发拷--> <mx:Button id="myButton" label="Copy Text" click="duplicate();"/>

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

在本例中,你使ActionScript 功能函数来实现了一个事件监听器。这样做的好处是使 MXML代码ActionScript代码分离,以提供更好的健壮性和灵活性。

使用数据绑

Flex提供简洁的语法来实现组件间的、或与数据模型的绑定。随后的例子中,在波浪括号/{ }里的数值TextArea控件TextInput控件的文本属性联系起来。当用户TextInput控件中输入文本时,它会自动地拷贝TextArea控件中去

<?xml version="1.0"?> <!--?xml tag must start in line 1 column 1 -->

<!-- MXML root element tag. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<!--Flex controls exist in a container. Define a Panel container. --> <mx:Panel title="My Application">

<!--TextInput control for user input. --> <mx:TextInput id="myInput" width="150" text=""/>

<!--Output TextArea control. --> <mx:TextArea id="myText" text="{myInput.text}" width="150"/>

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

使用事件去处理错误正如你可以使用事件去实现程序的功能,你也可以使用它们对错误进行处理。下面的例子显示了如何设计一个针web服务器操作的错误事件的监听器

<mx:Script> <![CDATA[

public function showErrorDialog(error:String):void { //具体功能实... }

]]> </mx:Script> ... <mx:WebService id="WeatherService" ...">

<mx:operation name="getFoo" fault="showErrorDialog(event.fault.faultString);"/> </mx:WebService>

控制应用程序的外控制应用程序的外观,常涉及到如下内容

1. 大小/Sizes,即组件或应用程序的高度和宽度

    1. 2. 样式/Styles,即一组特性,如字体、排列方式、颜色等。它们都是通过层叠样式CSS)来进行设置的
      1. 3. 皮肤/Skins,即可以进行改变的组件视觉元素
      2. 4. 行为/BehaviorsFlex组件在视觉或听觉效果方面的变化
  1. 6. 视图状/View state可以让你通过修改它的基础内容,来改变组件或程序的内容和外观

7. 变换/Transitions可以让你定义屏幕上发生改变的视图状态。

使用数据服务

Flex被设计为可以与许多类型的服务器打交道,从而提供对本地和远端逻辑的访问。提供数据访问MXML组件被称之为数据服务器组/data service componentsMXML包含了如下几种类型的数据服务器组件

  1. 1. WebService提供对使SOAPweb服务器的访问
  2. 2. HTTPService提供对返回数据HTTP URLs的访问

3. RemoteObject通过使AML协议提供Java对象(Java Beans EJBsPOJOs)的访问。该选项目前仅适用Flex Data ServicesMacromedia ColdFusion MX 7.0.2.

FlashFlex

开发一Flex应用程序与开发一Macromedia Flash Professional 8程序有所不同,即使两者都会最终被编译SWF文件。Flash Professional使用了一些概念,如时间/Timeline,动画帧/,图/layers来组织和控制程序中的内容。而Flex中则抛弃了这些内容,转而使MXML标签来设计用户界面组件和连接数据源。

FlashFlex的开发模型各不相同,但Flash仍然是一个非常强大的工具,用来创建定制的组件和视觉方面的资源,然后以外SWC文件的形式导入Flex中。

第三节创Flex Data Services应用程序

当你使Flex Data Services来开发应用程序时,就能体会该数据服务架构的强大功能。

Flex Data Services

Flex Data ServicesJava应用服务器上Java容器中执行,提供如下列所示的强大功能

  1. 1. 增强的数据服务
  2. 2. 与多个客户端进行数据共
  3. 3. 支持客户端到客户端的通
  4. 4. 自动服务器数据推
  5. 5. 客户端对服务器端资源的可靠访
  6. 6. 数据服务日
  7. 7. 增强的远程过程调用RPC)功能

Flex数据管理服

Flex数据管理服/Data Management Service可以让你开发出使用分布式数据的应用程序。该特性可以实现诸如数据同步、数据复制、偶尔连接等功能Flex Data Services的数据管理服务、消息服务RPC服务都是基于低层的消息构造而建立的,如下图所示:

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

消息构/messaging infrastructure可以使 Flex应用程序连接消息目的地,发送消息,以及接收从其它客户端发来的消息。消息客户端可以Flex应用程序或者其它类型的客户端,Java Message ServiceJMS)客户端。消息构造由服务器端的消息服务,和Flex客户端程序相应的消API所组成。

第四节使Flex图表组件

在图表或图形中显示数据的能力,可以使用户更加容易地解释数据以及它们之间的内在联系。Flex中,不再仅仅是出现一些简单的数据表格,你可以使用各种各样的图表形式去显示你的数据。它们是

1. 区域形图/Area charts

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

2. 气泡形图/Bubble charts

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客
  1. 3. 烛形图/Candlestick charts
    1. 4. 柱形图/Column charts
    2. 5. 高低开合形图/HighLowOpenClose charts
  2. 6. 线形图/Line charts
Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客 Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客 Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客 Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

7. 饼形图/Pie charts

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

8. 标绘形图/Plot charts

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

除了上述图形类型,你还可以扩CartesianChart控件来创建定制的图表。

定义图表数据

所有的图表控件都使dataProvider属性去定义图表的数据。图表组件使用一个简单的、或基于列表的数据提供/data provider,类似于一维数组。

数据提供器由两部分组成:数据对象的收集APIAPI是类执行的一套方法和属性,而数据提供器Flex组件和数据之间创建了一个抽象的层次。

第五节使MXML

MXML是一XML语言,你可以使用它去布Adobe Flex应用程序的用户界面。你还可以使MXML去定义其它的方面,如存取服务器端的数据,将用户组件与服务器端数据源进行绑定等

MXML看起来与你所熟悉HTML很类似,然而MXML更为结构化,并提供更为丰富的标签集MXMLHTML之间最大的不同之处在于,MXML所定义的应用程序将被编译SWF文件并Flash Player进行渲染,它提供HTML程序更为丰富的和动态的用户界面。

你可以MXML应用程序编写成一个文件或多个文件。同时MXML还支持MXMLActionScrip所定制的组件。

编写一个简单的应用程序

随后的简单程序显Hello World”,该例子包含<mx:Application>标签和两个子标签,即<mx:Panel>标签和<mx:Label>标签。<mx:Application>是所Fles应用程序的根标签<mx:Panel>标签定义了一个面板容器,它包括了标题栏、状态信息、边界、以及容纳子对象的内容区域<mx:Label>标签中使用了一Label控件用来显示文本

<?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >

<mx:Panel title="My Application" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" >

<mx:Label text="Hello World!" fontWeight="bold" fontSize="24" />

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

将文件保存hello.mxml。请注意MXML文件的后.mxml必须是小写。然后编译并运行所生成SWF文件,结果如下所示

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

MXML标签ActionScript类的关

Adobe是通ActionScript类库来实Flex应用程序的。类库包括了组件(容器和控件),管理类,数据服务类等等。事实上,你是在使用类库所支持MXMLActionScript来开Flex应用程序

MXML标签ActionScript类或类的属性相对应FlexMXML标签并编译成相应SWF文件。举个例子FlexActionScript按钮类/Button class来定义按钮控件。MXML中,你使用如MXML语句来创建一个按钮控件

<mx:Button label="Submit" />

当你使MXML标签来声明一个控件时,事实上你就创建了相应那个类的一个实例对象。上MXML语句创建了一个按钮对象,并初始化它label属性值。

MXML相关的技术标准

MXM相关的技术标准有

1. XML标准XML文档使用标签去决定结构化信息的内容,以及它们之间的关系

2. 事件模型标准Flex事件模型是文档对象模/Document Object Model DOM)第三级事件的一个子集,该模型是World Wide Web ConsortiumW3C)起草制定

3. Web服务标Flex提供与服务器交互MXML标签,遵循Web服务描述语/Web Services Description LanguageWSDL)的规则。具体包括了简单对象访问协/Simple Object Access ProtocolSOAP)和超文本传送协/Hypertext Transfer ProtocolHTTP

4. Java

Flex提供了与服务器Java对象交互MXML标签,包plain old Java objectsPOJOs),JavaBeans和企业/Enterprise JavaBeansEJBs

5. HTTP

Flex提供了相应MXML标签去支持标准HTTP GETPOST请求,以及HTTP返回数据的处理

6. 图形标

Flex还提供了相应MXML标签去使JPEGGIFPNG图象。Flex还能够SWF文件Scalable Vector GraphicsSVG)文件导入到应用程序中

7. 层叠样式表标MXML样式的定义和使用遵循W3C Cascading Style Sheets CSS)标准

第六节使ActionScript Adobe Flex开发人员还可以使ActionScript去扩展应用程序的功能性ActionScript提供了MXML更为低层的、更细致的、更为强大的功能。

ActionScript

ActionScript是一种运用Adobe Flash Player的编程语言,它core JavaScript非常类似。ActionScript 3.0的特性完全实现ECMAScript for XML (E4X)

MXML程序中ActionScript

ActionScript极大地扩展Flex开发人员的能力。通过使ActionScript,你可以定义事件监听器,获取或设置组件的属性,处理回调功能,创建新的类、包和组件等。

你可以运用如下所示方法Flex中使ActionScript

  1. 1. <mx:Script>标签中插ActionScript代码块
  2. 2. 调用存储system_classes目录结构中的全ActionScript功能函数
  3. 3. user_classes中的外部类和包来处理更为复杂的任务
  4. 4. 使用标准Flex组件
  5. 5. 使ActionScript类扩展已有的组件
  6. 6. 使ActionScript创建新的组件
  7. 7. Flash创建环境中创建新的组件SWC文件)

ActionScript的编

Flex应用程序的逻辑实现是ActionScript类,MXML文件,SWF文件,外部组件共同组成。最后Flash PlayerSWF文件并在客户端机器上进行运行。

你可以MXML文件中使ActionScript代码段Flex编译器将MXML文件和它的子文件变换成一个单独ActionScript类。同时,你还可以MXML文件中导ActionScript类,这些类会被添加到最后SWF文件中。

随后的例子显示了源文件是如何生SWF文件,并通J2EE服务器发送给客户端的:

Flex中文帮助 第三章 Flex基础 - 贫嘴的鱼 - 贫嘴的鱼的博客

Flex应用程序中使ActionScript

当你编写一Flex应用程序时,使MXML去布置用户的界面,使ActionScript去处理与用户的交互。你可以使用不同的方法ActionScriptMXML混合在一起。

Flex应用程序中使ActionScript,你可以<mx:Script>标签中添加脚本块,或者包含外部ActionScript文件。另外,你还可以MXML程序中导入外部的类文件或整个类的包。

ActionScript组件

通过使ActionScriptFlex程序中进行引用的方式,你可以创建可复用的组件。使ActionScript所创建的组件可以包含图形元素、定制的商业逻辑、或扩展已存在Flex组件。

例如,你可以定义一个定制的按钮,它Flex的按钮控件派生出来,就象这样

package myControls { public class MyButton extends Button { public function MyButton() {

...

}

...

} }

这个例子中,你MyButton.as文件里编写MyButton控件,并将文件保存Flex应用程序的根目录myControls子目录下。然后Flex应用程序中引用你定制的按钮控件,如MyApp.mxml文件里,就象这样

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

xmlns:cmp="myControls.*" >

<cmp:MyButton label="Jack"/>

</mx:Application>

本例中,你首先定cmp命名空间,用它来放置你定制的组件,然后使用该命名空间为前缀MXML标签对组件进行引用。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游鱼_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值