我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Flex是如何工作的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Flex是如何工作的

小编给大家分享一下Flex是如何工作的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Flex是如何工作的

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

Flex学习第一节:构建并运行Flex应用程序

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

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

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

◆Flex学习手册中一个典型的Flex应用程序包括如下元素:

1.Flexframework

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

2.MXML

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

3.ActionScript3.0

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

4.CSS

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

5.图形资源

与很多应用程序一样,Flex包含了各种各样的图形资源,如图标和图象。

6.数据

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

Flex应用程序是如何编译和发布的:

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

一般的Flex应用程序并不需要服务器端所提供的支持。因此,你可以在你的本地计算机上编译它们,然后在Web服务的HTML页面中发布给你的用户。
当然,你还可以将Flex与Adobe?FlexDataServices2、ColdFusionFlashRemotingService、或者其它Java和J2EEService服务器技术结合起来,进行B/S结构的网络应用程
序的开发。

MXML:一切开始的地方

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

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"> <mx:Panel> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"/> <mx:Buttonlabelmx:Buttonlabel="Close"/> </mx:Panel> </mx:Application>

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

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

Flex学习第二节:连接数据

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

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

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

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

创建一个数据库(如MySQL)。

编写一个PHP脚本连接MySQL数据库并生成XML格式的数据。
这些步骤同样适合于在其它工作平台上生成的数据(如ASP.NET、JSP等)。

◆连接外部数据源

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

<mx:Applicationxmlns:mxmx:Applicationxmlns: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-drivencontrol)的绑定,你就可以处理HTTPService的结果(XML数据),就象这样:

<mx:DataGridxmx:DataGridx="20"y="80"id="productGrid"width="400"  dataProvider="{productRequest.lastResult.products.items}"> <mx:columns> <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Name"dataField="name"/> <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Price"dataField="price"/> </mx:columns> </mx:DataGrid>

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

<XML> <products> <item> <name>MobilePhone</name> <price>$199</price> </item> <item> <name>CarCharger</name> <price>$34</price> </item> ...

通过设置dataField属性,项目数据(name和price)作为数据栅格中每一列的数据。

◆在运行时加载数据

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

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

当你将creationComplete方法添加到应用程序标签里后,数据会在运行时进行加载并交于数据驱动控制(在这个例子中是数据栅格)。
你还可以将HTTPService请求添加到一个控制事件上而不是程序里的标签中,就象如下所示:

<mx:Buttonxmx:Buttonx="50"y="8"label="GetData" click="productsRequest.send();"/>

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

Flex学习第三节:关于FlashPlayer安全性方面的问题

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

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

使用代理(proxy),并且你的SWF文件位于和代理相同的服务器上。AdobeFlexDataServices为Flex应用程序提供了一个完整的代理管理系统。同时,你还可以通过使用一种web脚本语言,如ColdFusion、JSP、PHP或者ASP来创建一个简单的代理服务。

安装crossdomain.xml(跨域策略/cross-domainpolicy)文件在数据源的宿主Web服务器上。crossdomain.xml文件允许位于其它域中的SWF文件对数据源的访问。

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

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

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute"> <mx:Panellayoutmx:Panellayout="absolute"width="80%"height="80%"> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"left="10"  right="30"/> <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"/> </mx:Panel> </mx:Application>

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

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

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

如果样式/style的属性值没有被指定,它们将由整个程序中运行的主题/theme来进行控制。在默认情况下,Flex应用程序使用Halo主题(就象上面那个例子那样)。当然,你可以修改默认的主题或者干脆自己创建一个。你还可以简单地指定新的样式定义来改变默认的主题样式,就象这样:

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute">  <mx:Style> TextArea{  font-size:36px;  font-weight:bold;  }  </mx:Style>  <mx:Panellayoutmx:Panellayout="absolute"width="80%"height="80%" x="122"y="24"> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"left="10"right="30"/>  <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"/> </mx:Panel> </mx:Application>


通过明确地为TextArea组件定义一个样式,应用程序现在看起来就会象这样了:

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

<mx:Stylesourcemx:Stylesource="styles.css"/>

Flex学习第五节:事件和行为的使用

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

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

对某个组件以编程方式进行操作时,为了对某个事件作出反应,必须首先要引用它,这时你就需要赋予它一个ID值,如下所示:
<mx:Panelid="myPanel"layout="absolute"width="80%"height="80%"x="122"y="24">
随后你就可以将行为/behavior添加到应用程序上,当某个事件被触发时改变组件的属性值,就象这样:
<mx:Buttonlabel="Close"right="30"bottom="40"click="myPanel.visible=false"/>当按钮被单击时,面板的可见属性值被设置为false。

◆使用ActionScript功能函数

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

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute"> <mx:Stylesourcemx:Stylesource="styles.css"/>  <mx:Script> <![CDATA[  publicfunctionclose():void{  myPanel.visible=false;  }  ]]> </mx:Script>  <mx:Panelidmx:Panelid="myPanel"layout="absolute"width="80%"  height="80%"x="122"y="24"> <mx:TextAreatextmx:TextAreatext="SayhellotoFlex!"top="10"bottom="70"  left="10"right="30"/> <mx:Buttonlabelmx:Buttonlabel="Close"right="30"bottom="40"click="close();"/> </mx:Panel> </mx:Application>

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

◆单独的ActionScript代码

为了从MXML文件中更好地分离出ActionScript代码,你可以将它们放到单独的ActionScript文件中而不是作为函数,然后再将它们导入到MXML文件里,如下所示:

<mx:Scriptsourcemx:Scriptsource="myFunctions.as"/>

◆运用行为和变换增强丰富的视觉互动性

Flex应用程序是事件驱动的,这就意味着你可以在程序运行时使用事件去添加丰富的视觉互动性。为了实现它,你使用了一个事件触发器,用其来描述一个行为。
在前面的例子中,面板组件的visible属性值被设置为false因而不可见。你还可以通过使用行为来制造出更强的视觉效果。
下面的例子创建了一个行为,该行为首先创建好一种效果,然后把它绑定到组件的hideEffect属性上(触发器):

<mx:Fadeidmx:Fadeid="myFade"/> <mx:Panelidmx:Panelid="myPanel"layout="absolute"   width="80%"height="80%"  hideEffect="{myFade}">

当关闭按钮被单击时,面板组件淡出而不是消失。
触发器和效果还可以组合到更为复杂的行为中,其被称之为变换/transitions。

Flex学习第六节:在应用程序中添加多态页面

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

当一个视图状态被调用时(通过用户的鼠标在组件上滚动时产生的事件),一种效果(或一种变换)改变了用户界面的外观。
使用视图状态方式、ViewStack方式还是MXML文件方式,取决于你想从一个页面到另一个页面进行变化的范围、用户界面的复杂性、以及实现Flex程序的构架。

Flex学习第七节:开始使用Flex

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

◆使用FlexBuilder

通过使用新项目向导/NewFlexProjectWizard创建一个Flex项目(File>New>FlexProject)。设计,编译,以及调试Flex应用程序所需的所有工具,都被包括在FlexBuilder中了。

◆使用FlexSDK

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

以上是“Flex是如何工作的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Flex是如何工作的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Flex是如何工作的

小编给大家分享一下Flex是如何工作的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex是如何工作的该部分文档的内容是为用户提供关于Adobe?Flex工作机
2023-06-17

cdn是如何工作的

CDN(内容分发网络)是一种通过在全球分布式网络中放置服务器来加速内容传输的技术。它的工作原理如下:1. 缓存内容:CDN将原始内容(如网页、图片、视频等)缓存在离用户最近的服务器上。这些服务器通常被称为边缘节点。2. 内容路由:当用户请求
2023-08-25

Flex Builder的作用是什么

Flex Builder是一个用于创建和管理Flex应用程序的集成开发环境(IDE)。它提供了一个图形化界面,使开发人员可以轻松地创建、编辑、编译和调试Flex应用程序。它还提供了丰富的工具和功能,帮助开发人员快速开发和部署具有交互性和多媒
2023-08-24

Python中import是如何工作的

这篇“Python中import是如何工作的”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中import是如何工
2023-07-06

React中Hooks是如何工作的

React中Hooks是如何工作的?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. React Hooks VS 纯函数React Hook 说白了就是 Re
2023-06-15

Cassandra的索引是如何工作的

Cassandra 使用基于哈希的分布式哈希表来存储数据,并使用索引来快速查找数据。Cassandra 的索引工作方式如下:Secondary Indexes:Cassandra 支持二级索引,允许用户在表的非主键列上创建索引。当在非主键列
Cassandra的索引是如何工作的
2024-04-09

Node.js Socket.io库:它是如何工作的?

Node.js Socket.io库是一个用于创建实时应用程序的JavaScript库。它允许应用程序在客户端和服务器之间建立双向通信。
Node.js Socket.io库:它是如何工作的?
2024-02-11

Android中服务是如何工作的

在Android中,服务是一种可以在后台运行的组件,可以执行长时间运行的操作或监听外部事件。服务可以在应用程序中启动,停止或绑定到其他组件。服务可以通过以下方法启动:使用startService()方法启动服务。该方法会调用服务的onSt
Android中服务是如何工作的
2024-04-03

Python中的列表是如何工作的?

Python中的列表是一种非常常用的数据结构。它可以用于存储一系列的元素,并且允许进行各种操作,如添加、删除、修改和访问元素等。在本文中,我们将详细介绍Python中的列表是如何工作的,并附上具体的代码示例。Python中的列表是一个有序的
2023-10-22

Python中的字典是如何工作的?

Python中的字典是如何工作的?字典是Python中一种非常重要的数据结构,它以键值对的形式存储数据,并且可以根据键快速地获取对应的值。本文将详细介绍字典的使用方法和底层实现机制,为读者深入理解字典提供帮助。创建字典在Python中,我们
2023-10-22

代理服务器是如何工作的

代理服务器是一种充当客户端与目标服务器之间的中间人的服务器。其工作原理如下:1. 当客户端发送请求时,请求首先被发送到代理服务器。2. 代理服务器收到请求后,会检查请求的类型,例如HTTP请求、FTP请求等。3. 根据请求的类型和配置,代理
2023-09-21

r语言函数是如何工作的

在R语言中,函数是一段具有特定功能的代码块,可以被多次调用以执行相同的操作。函数通常由关键字function开始,后跟函数名称和参数列表,然后是由大括号包围的函数体,函数体中包含函数执行的代码。当函数被调用时,传递给函数的参数将被传递给函
r语言函数是如何工作的
2024-03-06

Spark延迟执行是如何工作的

Spark延迟执行是指Spark在执行任务时,并不立即执行所有的转换操作,而是将它们保存在内存中,直到需要执行动作操作为止。这种延迟执行的方式可以优化任务的执行,提高性能。具体来说,Spark程序中的转换操作会被转换成一个有向无环图(DA
Spark延迟执行是如何工作的
2024-03-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录