第二节获取并显示数据
为了在应用程序中使用数据
,
Adobe Flex
包括了
与
HTTP servers
,
web services
或
remote object services
(
Java objects
)进行交互的组件,这些组件被称之为远程过程调用
(
RPC
)服务组件。
与
Adobe ColdFusion
,
PHP
或类似的服务器技术不同
,
Flex
应用程序并不直接连接数据库。举个例子,你可以在一
个
Flex
文件中插
入
HTTP service
来实现
与
ColdFusion
文件的交互,以获
取
MySQL
数据库中的数据,转换
成
XML
,然后返馈
给
Flex
应用程序。
在本节中,你将学习创建一个简单
的
blog
阅读器。你使用了被称之
为
HTTPService
的
RPC service
组件
从
RSS
中获取数据,然后将数据绑定
到
Label
、
DataGrid
、
TextArea
和
LinkButton
控件上。
为了完成这个项目,执行的步骤如下:
- 1
.
设置项目
- 2
.
检查要访问的远程数据源
出于安全的原因,在客户端计算机
上
Flash Player
中运行的应用程序,只有在满足如下条件之一的情况下,才能访问远程的数据:
a
.
应用程序
的
SWF
文件与远程数据源位于同一个域中。
b
.
使用代理,同
时
SWF
文件与代理位于同一个服务器中。
c.
在数据源的宿
主
web
服务器上安
装
crossdomain.xml
(跨域策略)文件
。
本节中例子使用的是第三种方法
。
插入并配
置
blog
阅读
器
在本小节,你将学习创建一
个
blog
阅读器
。
-
- 1.
在导航视图中选
择
Lessons
项目,选
择
File > New > MXML Application
并创建一个
叫
BlogReader.mxml
的文件
。
- 2
.
将
BlogReader.mxml
设置为被编译的默认文件
。
- 3.
在
MXML
编辑器的设计模式下,从组件视图中拖拉出一个面板容器,并设置它的相应属性值
:
Title: Blog Reade
r
Width: 47
5
Height: 40
0
X: 10
Y: 10
- 4
.
在设计模式下,从组件视图中拖拉出如下组件到面板容器里
:
DataGri
d
TextAre
a
LinkButto
n
- 5
.
使用鼠标将控件布置成垂直排列的、左对齐的列
。
- 6
.
选
择
DataGrid
控件并设置相应属性
:
Id: dgPost
s
X: 20
Y: 2
0
Width: 40
0
7
.
选
择
TextArea
控件并设置相应属性
:
X: 20
Y: 17
5
Width: 40
0
8
.
选
择
LinkButton
控件并设置相应属性
:
Label: Read Full Pos
t
X: 20
Y: 225
界面布局看起来就象这样
:
9.
点击工具条上
的
Source button
切换成编辑器源代码模式。
在
BlogReader.mxml
文件中输入如
下
MXML
代码
:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel x="10" y="10" width="475" height="400" layout="absolute
"
title="Blog Reader"
>
<mx:DataGrid x="20" y="20" id="dgPosts" width="400"
>
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="col1"/>
<mx:DataGridColumn headerText="Column 2" dataField="col2"/>
<mx:DataGridColumn headerText="Column 3" dataField="col3"/>
</mx:columns
>
</mx:DataGrid
>
<mx:LinkButton x="20" y="225" label="Read Full Post"/
>
<mx:TextArea x="20" y="175" width="400"/
>
</mx:Panel> </mx:Application>
10.
保存文件,完成编译后运行。一个浏览器窗口将打开,如下所示。
到这一步,应用程序还没有显示任
何
blog
信息。接下来的一步是使用一个称之
为
HTTPService
的
RPC
服务组件来获
取
blog
的信息。
插
入
HTTPService
组件
对
于
blog
阅读器这个项目,其数据源来自
于
http://www.adobe.com/go/mchotinblog
。你使
用
HTTPService
组件来访
问
blog
的
XML
。该组件发
送
HTTP GET
或
POST
请求,并获取反馈回来的数据。
1.
在源代码模式下,
在
<mx:Application>
标签中输
入
<mx:HTTPService>
标签
:
<mx:HTTPService
id="feedRequest"
url="http://weblogs.macromedia.com/mchotin/index.xml"
useProxy="false"/>
url
属性指明了被请求文件所在的位置。在本例中,
该
URL
一直是有效的,但是你仍然
需要确定它是否已经发生改变
。
useProxy
属性表明你并不打算在服务器上使用代理。因
为
Matt's blog
上面
有
crossdomain.xml
设置,所
以
Flash Player
可以访问该服务器上的远程数据。接下来提示应用程序向指定
的
URL
发送请求
。
2.
在
<mx:Application>
标签后,添
加
creationComplete
属性(粗体显示)
:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="feedRequest.send()
" >
你的应用程序每次启动时
,
HTTPService
组件
的
send
()方法将被调用。该方法向指定
的
URL
发
出
HTTP GET
或
POST
请求,并得
到
HTTP
回应。在本例中
,
RSS feed
将返
回
XML
数据。
接下来,检
测
RSS feed
的获取是否成功。然后将数据绑定
到
Label
控件上,就象这样
:
3.
在
<mx:Panel>
标签中,
将
title
属性的值用随后的表达式替换
:
title="{feedRequest.lastResult.rss.channel.title}"
当
HTTPService
组件返
回
XML
时,在名
叫
lastResult
的
ActionScript
对象中进行剖析
。
lastResult
对象的结构反映
了
XML
文档的结构
。
XML
的结构通常如下所示
:
<rss>
<channel
>
<title
>
other child nodes of <channel
>
<item
>
<title>
other child nodes of <item
>
</item
>
..
.
HTTPService
组件
的
lastResult
对象反映了这种结构,你的代码看起来就象这样
:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute
"
creationComplete="feedRequest.send()"
>
<mx:HTTPServic
e
id="feedRequest
"
url="http://weblogs.macromedia.com/mchotin/index.xml
"
useProxy="false" /
>
<mx:Panel x="10" y="10" width="475" height="400" layout="absolute
"
title="{feedRequest.lastResult.rss.channel.title}"
>
<mx:DataGrid x="20" y="20" id="dgPosts" width="400">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="col1"/>
<mx:DataGridColumn headerText="Column 2" dataField="col2"/>
<mx:DataGridColumn headerText="Column 3" dataField="col3"/>
</mx:columns
>
</mx:DataGrid
>
<mx:LinkButton x="20" y="225" label="Read Full Post"/
>
<mx:TextArea x="20" y="175" width="400"/
>
</mx:Panel
>
</mx:Application>
4.
保存文件,编译完运行。
组
装
DataGrid
控
件
在应用程序中,使
用
DataGrid
控件显示新近贴子的标题
。
-
- 1.
在源代码模式下,
在
<mx:DataGrid>
标签中输入随后
的
dataProvider
属性
:
<mx:DataGrid x="20" y="20" id="dgPosts" width="400"
dataProvider="{feedRequest.lastResult.rss.channel.item}
" >
- 名称
为
item
的
XML
结点
为
DataGrid
控件提供数据。
在
XML
中这个结点是重复的,所以它
在
DataGrid
中也是重复的
。
- 2.
在第一
个
<mx:DataGridColumn>
标签里,键入如随后所示
的
headerText
和
dataField
属性值
:
<mx:DataGridColumn headerText="
Posts
" dataField="
title
" />
DataGrid
控件的第一列用来显示标题。实现它是通过确定包含标题数据
的
XML
中的字段,然后输入这个字段作
为
dataField
的属性值。
在
dataProvider
属性
(
item
)中指定
的
XML
结点,名
为
title
的子结点中包含了所需的信息
。
-
- 3.
在第二
个
<mx:DataGridColumn>
标签中,输入如随后所示
的
headerText
,
dataField
和
width
属性值
:
<mx:DataGridColumn headerText="
Date
" dataField="
pubDate
"
width="150"
/>
- DataGrid
中的第二列用来显示日期。在本例中,包含数据的字段被称之
为
pubDate
。
- 4.
删除第三
个
<mx:DataGridColumn>
标签,因为我们在这里并不需要第三列
。
<mx:DataGrid>
标签看起来就象这样
:
<mx:DataGrid x="20" y="20" id="dgPosts" width="400"
dataProvider="{feedRequest.lastResult.rss.channel.item}">
<mx:columns>
<mx:DataGridColumn headerText="Posts" dataField="title" />
<mx:DataGridColumn headerText="Date" dataField="pubDate" width="150"
/>
</mx:columns> </mx:DataGrid>
5.
保存文件,编译后运行。
显示所选的项
当用户
在
DataGrid
控件中进行选择时,你希望应用程序
在
TextArea
控件中只显示贴子的头几行内容。
在
XML
供给器的项结点中,这个信息被包含在一个称之
为
description
的字段里
。
1.
在源代码模式中,
在
<mx:TextArea>
font-size: 10.5pt; color: #000000;
分享到:
相关推荐
在"Flex中文帮助No4章A.pdf"中,你可能会学习到Flex应用的基础结构,包括MXML和ActionScript两种主要的编程语言。MXML是一种声明式语言,用于定义用户界面的布局和组件,而ActionScript则是一种面向对象的脚本语言,...
这个压缩包“Flex从入门到精通源代码”显然是针对初学者或者想要深入理解Flex技术的开发者设计的,包含书中示例的源代码,帮助读者更好地理解和实践Flex编程。 在《Flex从入门到精通》这本书中,作者可能涵盖了以下...
Flex4,全称为Adobe Flex 4,是Adobe公司推出的一款用于构建富互联网应用程序(Rich Internet Applications,RIAs)的框架,主要基于ActionScript和MXML。这个框架在2010年发布,提供了更为强大的图形渲染能力,以及...
ActionScript则是Flex的编程语言,基于ECMAScript,用于实现逻辑控制和交互功能。 在"Flex从入门到精通"这套教程中,你将学习: 1. **基础知识**:了解Flex开发环境的搭建,包括安装Adobe Animate CC或Flex ...
这个压缩包文件包含的源代码是《Flex从入门到实践》这本书的第2、5、6、7章的实践案例,旨在帮助读者深入理解和掌握Flex的基本概念、组件使用、数据绑定以及高级特性。 第2章:基础篇 在这一章中,你将学习Flex的...
第4章 运用ActionScript3.0 4.1 Flash平台框架 4.2 显示编程 4.3 事件模型 4.3.1 事件类和类型 4.3.2 事件进程 4.3.3 事件流 4.3.4 Event Dispatcher类 4.4 Flash Player API 4.4.1...
《SuperMap iClient for Flex从入门到精通》第一章节主要介绍了如何使用SuperMap iClient for Flex构建Web GIS应用,这是基于Apache Flex技术的客户端开发包,适用于创建跨浏览器、跨平台的富客户端GIS应用程序。...
FLEX快速入门.zip 用户在界面输入的数据可能不适合应用系统。在Flex应用程序中,可以使用validator来确保表单里的字段值满足某些标准。例如,你可以使用validator来确定用户输入有效的电话号码,确定字符串大于最小...
MXML是一种声明式语言,常用于构建Flex界面,而ActionScript是面向对象的编程语言,用于编写逻辑代码。MXML可以嵌入ActionScript,反之亦然,这使得两种语言可以无缝集成。在Flex项目中,你可能会看到MXML文件定义...
Flex白皮书是Adobe官方发布的技术文档,通常包含Flex框架的概述、技术特点、开发环境的搭建、基本组件介绍以及如何创建第一个Flex应用等内容。它为开发者提供了全面的框架理解,是初学者入门的必备资料。 2. **...
第4章:数据绑定与事件处理 数据绑定是Flex中连接UI与业务逻辑的重要机制。这一章会讲解如何实现数据的双向绑定,以及事件监听和处理机制,包括Event和ChangeEvent等事件类型。 第5章:状态管理和皮肤设计 Flex允许...
4. **面向对象编程**:Flex支持面向对象编程(OOP)原则,包括封装、继承和多态。类是OOP的核心,它定义了一组数据属性(字段)和行为(方法)。通过创建对象实例,你可以使用类的属性和方法。继承允许一个类(子类...
### Flex Blazeds入门教程详解 #### 一、引言 Flex Blazeds入门教程,由刘铭朝撰写于2008年3月21日,旨在解决开发者在搭建Flex与LCDS(Flex Data Services)工程时遇到的常见问题。这篇教程不仅详细介绍了创建项目...
2. Flex运行机制 Flex的运行基于SWF文件,这种文件格式经过压缩,下载速度快,可以在安装了Flash Player的浏览器或独立环境中运行。Flex代码通常由MXML(一种XML衍生语言)和ActionScript(一种借鉴JavaScript和...
1. Flex编程:包括MXML和ActionScript的基础,以及如何创建用户界面组件和事件处理。 2. BlazeDS配置:如何在服务器端设置BlazeDS,包括服务定义和服务映射。 3. AMF通信:理解Action Message Format的工作原理以及...
Flex是由Adobe公司开发的一套用于构建RIA的开源框架,它基于ActionScript编程语言和MXML标记语言。MXML是Flex中的一个重要组成部分,它类似于HTML,用来描述用户界面的布局和组件。通过MXML,开发者可以以声明式的...
第1章_Flex基础入门