- 浏览: 416180 次
- 性别:
- 来自: 济南
最新评论
-
nianshi:
slideDown就是show的滑动效果版本, slideUp ...
Jquery零碎代码收藏 -
nianshi:
以后编写JS代码,少写<div onclick=&quo ...
Jquery零碎代码收藏 -
nianshi:
获取匹配元素相对父元素的偏移var p = $("p ...
Jquery零碎代码收藏 -
nianshi:
获取匹配元素在当前窗口的相对偏移var p = $(" ...
Jquery零碎代码收藏 -
wuchu:
谢谢
Flex 读取XML配置文件总结
在任何的web应用开发中,在不同的组件中传递数据是一件非常重要的事情, flex的应用开 发也不例外,今天讲一下flex的event.
在 flex中所有的UIComponent都持有flash.events.EventDispatcher对象,通过改对象我们能够让一个 application中的不同UIComponent广播自己的event.,让监听自己event的组件能够获得消息.当事件触发时执行响应的操作, 这样的一种事件驱动方式能够是代码很容易维护,和阅读.
事件的职能除了通知监听事件的组件还有就是传递数据.在事情触发的时候将数据传 递给下一个组件,让下一个组件来完成接下去的工作是一个非常好的实 践.我们通过继承flash.events.Event对象来编写自己的event,并且让自己的event包含我们想要传递的数据.
例如ProductEvent他继承了flash.events.Event同时本身又持有product对象,这样使得下一个组件能够获得 product的所有信息,从而继续对product进行处理.
{
import flash.events.Event;
import valueObjects.Product;
public class ProductEvent extends Event
{
public var product:Product;
public function ProductEvent(product:Product,type:String,bubbles:Boolean = false ) {
super (type,bubbles);
this .product = product;
}
public override function clone():Event {
return new ProductEvent(product,type,bubbles);
}
}
}
有 了ProductEvent对象我们现在要做的就是如何使用这个对象使他在不同的组件中传递.在下面的示例中当我们点击add Botton的时候就会调用itemAdded()方法,改方法创建了一个ProductEvent实例,并且通过调用 this.dispatchEvent(e)方法来广播这个event,同时注意在这个mxml的顶部声明了自己所持有的event是何种类型,还有 event的名字,这个名字将被别的组件用来判断是何种event被触发.
< mx:Canvas xmlns:mx = " http://www.adobe.com/2006/mxml "
horizontalScrollPolicy = " off "
verticalScrollPolicy = " off " >
< mx:Metadata >
[Event(name = " itemAdded " ,type = " events.ProductEvent " )]
</ mx:Metadata >
< mx:Script >
<! [CDATA[
import events.ProductEvent;
import mx.core.Application;
import valueObjects.Product;
[Bindable]
public var groceryItem:Product;
private function itemAdded(prod:Product): void {
var e:ProductEvent = new ProductEvent(prod, " itemAdded " , true );
this .dispatchEvent(e);
}
private function toggleState(state:String): void {
if (state == " closed " ) {
this .currentState = "" ;
} else {
this .currentState = " expanded " ;
}
}
]] >
</ mx:Script >
< mx:states >
< mx:State name = " expanded " >
< mx:SetProperty target = " {add} " name = " visible " value = " true " />
< mx:AddChild >
< mx:VBox width = " 100% " x = " 200 " >
< mx:Text text = " {groceryItem.description} " width = " 50% " />
< mx:Label text = " Low Fat "
x = " 100 " y = " 60 "
visible = " {groceryItem.isLowFat} " />
</ mx:VBox >
</ mx:AddChild >
</ mx:State >
</ mx:states >
< mx:Canvas mouseOver = " toggleState('open') " mouseOut = " toggleState('closed') " >
< mx:Image id = " pic "
source = " {'../assets/'+groceryItem.imageName} " />
< mx:Label id = " price "
text = " {groceryItem.listPrice} "
x = " 100 " y = " 20 " />
< mx:Button id = " add "
visible = " false "
label = " Add To Cart "
click = " itemAdded(groceryItem) "
x = " 100 " y = " 40 " />
</ mx:Canvas >
</ mx:Canvas >
现在我们看一下上面这个mxml的父组件是如何监听的,当itemAdded事件触发时就会调用logItemAdded()方法.
同时这个mxml自己也定义了itemAdded事件,可以将这个事件作为自己的事件继续广播.
< mx:VBox xmlns:mx = " http://www.adobe.com/2006/mxml " xmlns:v = " views.ecomm.* " >
< mx:Metadata >
[Event(name = " itemAdded " ,type = " events.ProductEvent " )]
</ mx:Metadata >
< mx:Script >
<! [CDATA[
import events.ProductEvent;
import mx.collections.ArrayCollection;
[Bindable]
public var prodByCategory:ArrayCollection;
private function logItemAdded(event:ProductEvent): void {
trace(event.product);
this .dispatchEvent(event);
}
]] >
</ mx:Script >
< mx:Repeater id = " foodRepeater "
width = " 100% " height = " 100% "
dataProvider = " {prodByCategory} " >
< v:GroceryDetail id = " prod "
width = " 80% "
groceryItem = " {foodRepeater.currentItem} " itemAdded = " logItemAdded(event) " />
</ mx:Repeater >
</ mx:VBox >
但 是如果一个application中有非常深的组件层次如果最底层的event事件被最上层的组件所调用,按照这种方法,这个两个组件中间的组件 中每次都写这样的方法来传递event是非常麻烦,并且恶心的,还好flex对event提供了一个bubbles属性(冒泡),这个属性默认为 false,当显示的设置为true我们就可以在中间的那些组件中不用编写itemAdded="logItemAdded(event)类似的代码,这 样可以节省很多的编码工作,也减少的出错概率,但是中间的那些组件必须在<Metadata>节点中声明需要传递的这个event.例如上面 的示例可以简单的写为
<?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
<
mx:VBox xmlns:mx
=
"
http://www.adobe.com/2006/mxml
"
xmlns:v
=
"
views.ecomm.*
"
>
<
mx:Metadata
>
[Event(name
=
"
itemAdded
"
,type
=
"
events.ProductEvent
"
)]
</
mx:Metadata
>
<
mx:Script
>
<!
[CDATA[
import
events.ProductEvent;
import
mx.collections.ArrayCollection;
[Bindable]
public
var prodByCategory:ArrayCollection;
]]
>
</
mx:Script
>
<
mx:Repeater id
=
"
foodRepeater
"
width
=
"
100%
"
height
=
"
100%
"
dataProvider
=
"
{prodByCategory}
"
>
<
v:GroceryDetail id
=
"
prod
"
width
=
"
80%
"
groceryItem
=
"
{foodRepeater.currentItem}
"
/>
</
mx:Repeater
>
</
mx:VBox
>
发表评论
-
Flex小记录
2011-02-24 10:18 1287Flex读取XML: <mx:HTTPServic ... -
flex实现滑动显示隐藏效果
2010-12-30 15:30 1591鼠标划过的时候显示菜单栏 ,鼠标移开后隐藏菜单栏。比较常用 ... -
flex DataTimePicker时间控件
2010-12-27 11:54 1311两种DatatimePicker: 1.Datatim ... -
ActionScript 生成伪Guid
2010-12-24 09:52 1201在一个Flash制作的图片上传程序中(使用了FileRefer ... -
Flex中Image组件怎么才能非等比例拉伸图片
2010-12-23 15:49 1504Image组件怎么才能非等比例拉伸图片 设 ... -
Flex中Accordion用法
2010-12-23 11:45 3076<? xml version = & ... -
Flex(替代session过期)实现用户长时间不操作要求重新登录的处理
2010-12-23 11:08 1499flex(替代session过期)用户长时间不操作要求重新登录 ... -
ActionScript 3.0 Socket编程
2010-12-23 09:56 1167在使用ActionScript3.0进行编程 ... -
12个简单易用的flex函数
2010-12-21 10:10 11311.拷贝内容到剪贴板: ... -
Flex自定义控件——Pagebar分页控件
2010-12-20 09:41 5255开发时经常遇到用一个DataGrid分页显示 ... -
Flex资源,很全,很牛!
2010-12-20 09:30 14571、as3ebaylib http://code ... -
Flex 窗体 最大化、最小化实例
2010-12-20 09:28 2709---导入flexMdi.swc (http ... -
在Flex中复制文字到操作系统的剪贴板
2010-12-15 11:18 1232这个实例演示了怎么样使用System. ... -
Flex让Slider控件拖动时显示Tooltip
2010-12-14 16:10 1903格式化与自定义Slider中显示的Tooltip ... -
Flex给Alert加个Icon
2010-12-14 16:05 1278给Alert加个Icon 很简单只要先 Embed 一 ... -
在Flex中用Validator验证数字、字符串、Email、电话号码等
2010-12-14 09:54 4310mx.validators ... -
Flex中使用FileReference类下载文件
2010-12-14 09:47 1789下面的实例演示了Flex中的 File ... -
Flex使用ArrayCollection的filterFunction属性过滤DataGrid
2010-12-14 09:42 1793下面的实例演示了在Flex中怎样使用 ... -
Flex 树形控件(Tree )的使用
2010-12-13 16:24 3470一、树形控件的常用属性 1、dragMoveE ... -
FLEX3中应用CSS完全详解手册(下)
2010-12-13 11:40 877myTabs中的设置 cornerRadiusTab ...
相关推荐
在Flex中,拖拽编程是一种常见的交互设计方式,允许用户通过鼠标或其他输入设备将元素从一个位置拖动到另一个位置,常用于数据迁移、组件布局调整或游戏设计等场景。下面我们将详细探讨Flex中的拖拽编程。 1. **...
文件"Flex与Java通过实体传递数据"可能包含了示例代码和详细步骤,帮助开发者理解并实现上述过程。在实际项目中,还需要考虑安全性,如加密传输,以及错误处理和异常捕获,确保数据的完整性和应用的稳定性。此外,...
除了使用已有的事件(如MouseEvent或Event),开发者还可以定义自己的事件类,以便在组件间传递特定信息。创建自定义事件通常包括以下步骤: - 创建事件类:继承自mx.events.Event类或与其相关的子类,如FlexEvent...
在Flex编程中,`Flex DataGrid` 是一个用于展示数据集的组件,它允许用户以表格形式查看和操作数据。本示例展示了如何从XML文件加载数据并将其显示在Flex DataGrid中。以下是对该话题的详细解释: 1. **XML数据源**...
在Flex编程中,有时我们需要从外部HTML容器向SWF文件传递参数,这在构建富互联网应用程序(RIA)时尤其常见。这些参数通常是以URL查询字符串的形式出现,例如`test.html?name=jex&address=chengdu`。在本文中,我们...
在Flex中,事件是传递信息和协调组件间交互的主要方式。虽然Flex提供了一系列内置事件,但有时我们需要自定义事件来满足特定需求。创建自定义事件通常包括定义一个继承自`flash.events.Event`的类,并重写其构造函数...
- 实现页面间的参数传递和状态保持。 #### 14. manager - **Manager 类**: Flex 中用于管理和协调不同部分的类。 - **示例**: 如 LayoutManager 用于控制布局,EventManager 用于处理事件等。 #### 15. Demo8:...
Flex中的Socket组件允许开发者创建TCP套接字连接,以发送和接收二进制或文本数据。在Java中,我们可以使用java.net.Socket类来建立客户端连接,或者使用ServerSocket类来创建服务器端监听套接字,等待来自Flex客户端...
Flex是Adobe公司开发的一种用于构建富互联网应用(RIA)的开放源代码框架,它主要使用ActionScript编程语言,与XML、AMF等数据格式进行交互。在本篇中,我们将探讨Flex与Java之间的低数据量通信,特别是通过...
本文将围绕“flex3自定义DownloadProgressBar”这一主题展开,讲解如何在Flex3中创建一个定制化的下载进度条组件,并探讨相关的编程技术和实践。 一、自定义组件基础 在Flex中,自定义组件是通过继承已有的...
本实例程序展示了如何在Flex前端和Java后端之间通过XML进行数据交换,从而实现两个不同工程之间的协作。 Flex是一种基于ActionScript的开源框架,主要用于创建具有丰富用户界面的Web应用程序。它使用MXML和...
5. **Event**:定义了应用程序中的自定义事件,用于在组件之间传递消息。 6. **Proxy**:作为客户端和服务器之间的中间层,处理远程调用和数据转换。 在这个Flex Cairngorm Java实例中,Java技术如J2EE(Java 2 ...
通过`HTTPService`,Flex可以与各种服务器端技术,如Java、PHP、ASP.NET等进行交互,实现数据的获取和提交。 2. **Java后台支持** 在Java环境下,通常使用Servlet、Spring MVC或者RESTful API来处理来自Flex的HTTP...
4. **事件驱动编程**:查看源码中EventDispatcher的使用,理解如何通过事件驱动来协调组件间的交互。 5. **模块化设计**:如果Demo包含多个模块,可以学习如何使用Parsley的模块功能来组织和管理不同部分的代码。 ...
- **BlazeDS介绍**:BlazeDS是一种用于实现Flex和Java服务器之间通信的服务端组件。 - **通信机制**:探讨BlazeDS与Flex客户端之间的数据交换方式。 #### 21. Flex和Java通信之开发方式和工具准备 - **开发环境...
描述中提到提供了Flex中图片组件的拖放实现实例源码,并暗示后续会有更多关于表格数据等其他组件的拖放示例。 Flex是Adobe开发的一个用于构建富互联网应用程序(RIA)的框架,它基于ActionScript和MXML,支持创建...
1. **定义事件类**:创建一个新类,继承自Event或FlexEvent类,定义事件类型常量和数据属性。 2. **构造函数**:重写构造函数,传递事件类型和是否冒泡等参数。 3. **派发事件**:在需要触发事件的地方,使用`...
BlazeDS允许Flex应用与Java后台服务进行交互,实现数据的传输。 在Flex与Spring、Hibernate整合的场景下,通常会用到Cairngorm框架。Cairngorm是一种基于MVC(Model-View-Controller)架构的轻量级框架,它有助于...
在Flex编程中,下拉框(ComboBox)是用户界面中常用的一种组件,它允许用户从预定义的选项中选择一个值。然而,有时我们需要在下拉框中不仅提供文本选项,还需要提供复选框(Checkbox)来让用户进行多选操作。这种...
本Demo主要展示了如何在Flex中进行函数之间的参数传递,以便实现不同功能模块之间的数据交互。下面将详细解释相关知识点。 1. **ActionScript基础**: Flex主要使用ActionScript作为其编程语言,它是一种基于...