- 浏览: 420716 次
- 性别:
- 来自: 济南
-
最新评论
-
nianshi:
slideDown就是show的滑动效果版本, slideUp ...
Jquery零碎代码收藏 -
nianshi:
以后编写JS代码,少写<div onclick=&quo ...
Jquery零碎代码收藏 -
nianshi:
获取匹配元素相对父元素的偏移var p = $("p ...
Jquery零碎代码收藏 -
nianshi:
获取匹配元素在当前窗口的相对偏移var p = $(" ...
Jquery零碎代码收藏 -
wuchu:
谢谢
Flex 读取XML配置文件总结
在典型的可视化开发环境中,你能够在应用程序中选中并且拖动一个对象在屏幕中来回移动。 Flex Drag and Drop管理器能够让用户选中一个对象,比如List控件的一个元素,或者一个控件比如Image控件,并且拖动他们跨过一个元素,放到另一个元素中。所 有的Flex组件支持拖放操作。Flex在拖放方面对一些控件,比如List,Tree和DataGrid,都有额外的功能支持。
拖放操作主要有3个阶段:开始,拖动中,放下中。
开始阶段
用户通过使用鼠标选中一个组件,或组件中的元素,然后按住鼠标移动组件或元素移动,来发起一个拖放操作。例如,用户用鼠标选择一个List控件的元素,然后按住鼠标左键移动几个像素。这个被选择的组件就叫做“拖动开始点”(drag initiator)。
拖动阶段
当按住鼠标按键,用户在Flex应用程序中移动鼠标。Flex显示一个表示正在拖放的图片,这个图片代表拖放对象,就叫做“拖动代理”。DragSource对象包含被拖动的对象。
放下阶段
当一个用户移动“拖动代理”划过一个Flex组件的时候,这个组件就有可能变成“放下目标”。“放下目标”可以检查“拖动源”,然后决定这个数据是 否是一个“放下目标”(drop target)可以接受的格式,如果是,则允许用户把数据放到它的上边。如果不是,那么就不允许放到它上边。
在一个成功的放下操作中,Flex轻易的就可以增加数据到目标中,并且把原数据删除。
在本快速入门中,介绍了在Flex中几种实现拖放操作的方式
使用列表控件拖放
手工增加拖放功能
使用列表控件拖放
几个Flex组件具有支持内置拖放操作功能。他们是DataGrid, HorizontalList, List, Menu, PrintDataGrid, TileList, and Tree 控件.
通过设置dragEnabled属性为true,可以使这些控件作为“拖动开始点”。类似地,通过设置dropEnabled属性为true,可以使这些
控件作为“放下目标”。Flex允许通过拖动来移动元素,从dragEnabled控件到一个dropEnabled控件,或者在拖动中按住
Control键可以赋值他们。
通过拖放操作复制元素
下边的例子允许你通过拖放,从一个List控件中复制元素到另一个List控件中。你可以多次赋值同一个元素,从“拖动开始点”到“放下目标”。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml "
width="365" height="225"
creationComplete="creationCompleteHandler();"
><mx:Script>
<![CDATA[
private function creationCompleteHandler():void
{srclist.dataProvider = ['Reading', 'Skating', 'Movies'];
destlist.dataProvider = [];
}]]>
</mx:Script><mx:Panel title="Select activities" layout="horizontal">
<mx:VBox width="50%"><mx:Label text="Available activities"/>
<!-- Drag initiator -->
<mx:List
id="srclist" width="100%" height="100"
allowMultipleSelection="true"
dragEnabled="true"/>
</mx:VBox>
<mx:VBox width="50%">
<mx:Label text="Activities I enjoy"/><!-- Drop target -->
<mx:List
id="destlist" width="100%" height="100"
dropEnabled="true"/>
</mx:VBox>
</mx:Panel>
</mx:Application>
结果
通过拖放操作移动元素
默认的时候dragMoveEnable等于false,那么只允许你从过一个List控件复制元素到另一个List控件中。如果你修改该上边的例 子,在源List控件中,增加dragMoveEnabled属性,并且设置为true。那么就向下边的例子那样,可以移动和复制元素了。
默认的动作是移动元素,在拖动的过程中按住Control键,可以复制元素。
例子
<!-- Drag initiator -->
<mx:List
id="srclist" width="100%" height="100"
allowMultipleSelection="true"
dragEnabled="true"dragMoveEnabled="true"
/>
双向拖放功能
你可以允许双向拖放,通过把两个列表的dragEnabled和dropEnabled属性都设置为true。就像下边:
<!-- Both drag initiator and drop target -->
<mx:List
id="srclist" width="100%" height="100"
allowMultipleSelection="true"
dragEnabled="true"dropEnabled="true"
dragMoveEnabled="true"
/><!-- . . . -->
<!-- Both drag initiator and drop target -->
<mx:List
id="destlist" width="100%" height="100"
allowMultipleSelection="true"
dragEnabled="true"dropEnabled="true"
dragMoveEnabled="true"
/>
结果
手工添加拖放功能
想要让非基于list的控件或容器支持拖放操作,必须明确的添加一系列指定的类和方法。使用DragManager,DragSource和DragEvent类来实现拖放操作。
Flex应用程序使用时间来控制拖放操作。
拖动开始事件
当你把一个控制设置为“拖动开始点”,你可以使用mouseDown,mouseMove和dragComplete事件来管理拖放操作。
关于mouseDown和mouseMove事件
mouseDown事件在用户用鼠标选中并且按下鼠标键开始分发。mouseMove时间在鼠标移动的时候开始分发。
下边的例子嵌入了4个欧元硬币(1分,2分,5分,10分)图片,兵器使用Image控件显示他们。在每一个Image控件中,监听mouseMove事
件并且定义事件处理器方法,这个方法被命名为dragIt()。在dragIt()方法中,使用事件的currentTarget属性,获得事件源硬币图
片的引用,然后吧这个引用放入到drageInitiator这个本地变量中。
下一步,创建一个DragSource实例,并且调用她的addData()方法来保存dragIt方法的value参数。使用字符串"value"来描
述value参数的格式。一会,当你创建“放下目标”时,你将使用这个字符串,来检查是否允许一个元素,放到某个组件上。
想要显示一个硬币图片作为用户拖动它的标志,需要创建一个图片实例,这个图片与“拖动开始点”的图片是一样的。把这个图片保存在dragProxy这个本地变量中。
最后,调用DragManager的静态方法doDrag(),并且把图片发生点,拖动源,事件对象,和拖动代理类传送给它,开始拖动操作。
你可以随意拖动硬币,但是在任何地方都放不下它。因为你还没有定义“放下目标”。下一节,将讲述如何定义“放下目标”。
例子
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml "
viewSourceURL="src/DragAndDropDragInitiatorEvents/index.html"width="500" height="160"
>
<mx:Script>
<![CDATA[import mx.managers.DragManager;
import mx.core.DragSource;
// Embed the various Euro coin images. Images originally
// from Wikipedia (http://en.wikipedia.org/wiki/Euro_coins )
[Embed("assets/1c.png")][Bindable]
public var OneCent:Class;
[Embed("assets/2c.png")][Bindable]
public var TwoCents:Class;
[Embed("assets/5c.png")][Bindable]
public var FiveCents:Class;
[Embed("assets/10c.png")][Bindable]
public var TenCents:Class;private function dragIt(event:MouseEvent, value:uint):void
{// Get the drag initiator component from the event object.
var dragInitiator:Image = event.currentTarget as Image;
// Create a DragSource object.
var dragSource:DragSource = new DragSource();
// Add the data to the object.dragSource.addData(value, 'value');
// Create a copy of the coin image to use as a drag proxy.
var dragProxy:Image = new Image();
dragProxy.source = event.currentTarget.source;
// Call the DragManager doDrag() method to start the drag.DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
}]]>
</mx:Script>
<mx:HBox><mx:Image
id="oneCent" source="{OneCent}"
mouseMove="dragIt(event, 1);"/>
<mx:Image
id="twoCents" source="{TwoCents}"
mouseMove="dragIt(event, 2);"/>
<mx:Image
id="fiveCents" source="{FiveCents}"
mouseMove="dragIt(event, 5);"/>
<mx:Image
id="tenCents" source="{TenCents}"
mouseMove="dragIt(event, 10);"/>
</mx:HBox>
</mx:Application>
“放下目标”
一个放下目标可以使用多种事件,最重要的事件是dragEnter,dragDrop和dragExit时间。
dragEnter事件
dragEnter事件在带有“拖动代理(drag proxy)”鼠标从外部进入“放下目标”的时候分发。一个组件要作为“放下目标”必须定义这个事件监听器。在这个监听器中,你可以改变“放下目标”的外 观,从而向用户提供一个反馈,表明这个组件可以接受拖动操作。例如你可以在“放下目标”周围画一个框,或者给“放下目标”一个焦点。
dragExit事件
dragExit事件在用户鼠标没有在“放下目标”上放下,而是移除鼠标的时候分发。如果在dragEnter或其他事件中修改了“放下目标”的外观,你可以在这个事件中恢复到正常的外观。
dragDrop事件
dragDrop事件在用户在“放下目标”上放开鼠标的时候分发。你可以使用这个事件监听器向“放下目标”中增加drag的数据。
在下边的例子中,创建一个Box容器担当“放下目标”,并且定义dragEnter,dragExit和dragDrop事件监听器。Box容器包含一个Label控件,用来显示放到Box上的硬币的总和
在dragEnter事件监听器中,检查拖动源对象中是否包含value格式。只有对象包含这个格式才可以被放到这个“放下目标”上。如果包含,给用户一
个可视化的反馈,通过变粗Box容器的。通过调用DragManager的acceptDrapDrop方法,告诉DragManager,Box容器要
接受这个“拖动开始点”。
在dragExit的事件监听器中,恢复Box的外观以表明“拖动代理”已经不在它上边了。
最后,在drapDrop的事件监听器中,当用户把硬币放到“放下目标”上时获得调用,用硬币的值增加totalValue的值,并且回复Box的外观,以表明放下操作完成。
例子
<?xml version="1.0" encoding="utf-8"?><mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml "
width="525" height="270"
viewSourceURL="src/DragAndDropDragDropTargetEvents/index.html"
><mx:Script>
<![CDATA[
import mx.events.DragEvent;
import mx.containers.Box;
import mx.managers.DragManager;
import mx.core.DragSource;
// Embed the various Euro coin images. Images originally// from Wikipedia (http://en.wikipedia.org/wiki/Euro_coins )
[Embed("assets/1c.png")]
[Bindable]
public var OneCent:Class;
[Embed("assets/2c.png")][Bindable]
public var TwoCents:Class;
[Embed("assets/5c.png")][Bindable]
public var FiveCents:Class;
[Embed("assets/10c.png")][Bindable]
public var TenCents:Class;
[Bindable]private var totalValue:uint;
private function dragIt(event:MouseEvent, value:uint):void
{// Get the drag initiator component from the event object.
var dragInitiator:Image = event.currentTarget as Image;
// Create a DragSource object.
var dragSource:DragSource = new DragSource();
// Add the data to the object.dragSource.addData(value, 'value');
// Create a copy of the coin image to use as a drag proxy.
var dragProxy:Image = new Image();
dragProxy.source = event.currentTarget.source;
// Call the DragManager doDrag() method to start the drag.DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
}// Called if the user drags a drag proxy onto the drop target.
private function dragEnterHandler(event:DragEvent):void
{// Get the drop target component from the event object.
var dropTarget:Box=event.currentTarget as Box;
// Accept the drag only if the user is dragging data
// identified by the 'value' format value.if (event.dragSource.hasFormat('value'))
{
// Make the border of the Box thicker to
// visually signal to the user that they can
// drop the coin there.dropTarget.setStyle("borderThickness", 5);
// Accept the drop.
DragManager.acceptDragDrop(dropTarget);
}
}
// Called if the user drags the drag proxy away from the drop target.
private function dragExitHandler(event:DragEvent):void
{// Get the drop target component from the event object.
var dropTarget:Box=event.currentTarget as Box;
// Set the border of the Box to its default value
// to visually indicate that the user is no longer
// over the drop target.revertBoxBorder();
}
// Called if the target accepts the dragged object and the user
// releases the mouse button while over the drop target.
private function dragDropHandler(event:DragEvent):void
{// Get the data identified by the color format from the drag source.
var value:uint = event.dragSource.dataForFormat('value') as uint;// Add the value to the total
totalValue += value;
// Set the border of the Box to its default value
revertBoxBorder();
}
// Helper method to revert the Box's border to a 1 pixel outline.
private function revertBoxBorder():void{
amountDisplay.setStyle("borderThickness", 1);
}
]]>
</mx:Script>
<mx:HBox>
<mx:Image
id="oneCent" source="{OneCent}"
mouseMove="dragIt(event, 1);"/>
<mx:Image
id="twoCents" source="{TwoCents}"
mouseMove="dragIt(event, 2);"/>
<mx:Image
id="fiveCents" source="{FiveCents}"
mouseMove="dragIt(event, 5);"/>
<mx:Image
id="tenCents" source="{TenCents}"
mouseMove="dragIt(event, 10);"/>
</mx:HBox>
<mx:Box
id="amountDisplay"
borderStyle="solid" borderColor="#000000" backgroundColor="#FFFFFF"width="100%" height="100" horizontalAlign="center" verticalAlign="middle"
dragEnter="dragEnterHandler(event);"
dragExit="dragExitHandler(event);"
dragDrop="dragDropHandler(event);">
<mx:Label text="{totalValue + ' pence'}" fontSize="48"/>
</mx:Box>
</mx:Application>
结果
发表评论
-
Flex小记录
2011-02-24 10:18 1307Flex读取XML: <mx:HTTPServic ... -
flex实现滑动显示隐藏效果
2010-12-30 15:30 1617鼠标划过的时候显示菜单栏 ,鼠标移开后隐藏菜单栏。比较常用 ... -
flex DataTimePicker时间控件
2010-12-27 11:54 1327两种DatatimePicker: 1.Datatim ... -
ActionScript 生成伪Guid
2010-12-24 09:52 1222在一个Flash制作的图片上传程序中(使用了FileRefer ... -
Flex中Image组件怎么才能非等比例拉伸图片
2010-12-23 15:49 1521Image组件怎么才能非等比例拉伸图片 设 ... -
Flex中Accordion用法
2010-12-23 11:45 3092<? xml version = & ... -
Flex(替代session过期)实现用户长时间不操作要求重新登录的处理
2010-12-23 11:08 1515flex(替代session过期)用户长时间不操作要求重新登录 ... -
ActionScript 3.0 Socket编程
2010-12-23 09:56 1188在使用ActionScript3.0进行编程 ... -
12个简单易用的flex函数
2010-12-21 10:10 11541.拷贝内容到剪贴板: ... -
Flex自定义控件——Pagebar分页控件
2010-12-20 09:41 5280开发时经常遇到用一个DataGrid分页显示 ... -
Flex资源,很全,很牛!
2010-12-20 09:30 14731、as3ebaylib http://code ... -
Flex 窗体 最大化、最小化实例
2010-12-20 09:28 2728---导入flexMdi.swc (http ... -
在Flex中复制文字到操作系统的剪贴板
2010-12-15 11:18 1254这个实例演示了怎么样使用System. ... -
Flex让Slider控件拖动时显示Tooltip
2010-12-14 16:10 1925格式化与自定义Slider中显示的Tooltip ... -
Flex给Alert加个Icon
2010-12-14 16:05 1292给Alert加个Icon 很简单只要先 Embed 一 ... -
在Flex中用Validator验证数字、字符串、Email、电话号码等
2010-12-14 09:54 4334mx.validators ... -
Flex中使用FileReference类下载文件
2010-12-14 09:47 1805下面的实例演示了Flex中的 File ... -
Flex使用ArrayCollection的filterFunction属性过滤DataGrid
2010-12-14 09:42 1818下面的实例演示了在Flex中怎样使用 ... -
Flex 树形控件(Tree )的使用
2010-12-13 16:24 3484一、树形控件的常用属性 1、dragMoveE ... -
FLEX3中应用CSS完全详解手册(下)
2010-12-13 11:40 892myTabs中的设置 cornerRadiusTab ...
相关推荐
本文旨在为初学者提供一个全面的Flex3快速入门指南,涵盖从基础编码到高级用户界面构建的关键知识点。 ### 一、使用MXML和ActionScript进行编码 #### MXML:用户界面布局的XML语言 MXML(Flex Markup Language)...
它基于ActionScript 3.0编程语言,利用MXML(标记语言)和ActionScript来构建用户界面和业务逻辑,非常适合创建动态且交互性强的应用程序。 #### 二、Flex3编程入门 Flex3提供了丰富的工具和资源,帮助开发者快速...
它基于MXML和ActionScript 3,允许开发者用XML语法来构建用户界面,而ActionScript 3则负责处理程序逻辑。 2. **ActionScript 3详解**:ActionScript 3是Flash Player和Adobe AIR中的主要编程语言,相比之前的版本...
MXML是Flex+的主要标记语言,用于描述用户界面的布局以及应用程序的非可视化方面,如数据绑定和服务器端数据源的访问。MXML是基于XML的,易于阅读和编写,使得开发者能够清晰地定义UI组件及其属性。 #### 2.2 MXML...
### Flex的Adobe AIR快速入门知识点解析 #### 一、处理文件和数据 1. **构建目录搜索应用程序** - **异步读取文件**: 在构建目录搜索应用程序时,使用`getDirectoryListingAsync()`方法来异步获取目录列表,这样...
- 学习MXML和CSS,用于声明式构建用户界面和样式控制。 - 研究Flex SDK和Flex组件,了解如何自定义和扩展组件库。 总的来说,Flex作为一个成熟的RIA开发框架,为企业级Web应用提供了强大的功能和丰富的用户体验。...
《Flash Builder 4中文快速入门》这本书将引导初学者了解如何安装和配置Flash Builder 4,然后逐步学习创建第一个Flex项目,理解MXML和ActionScript的基本语法,以及如何使用组件库构建用户界面。书中还会介绍如何...
Flash Builder 4是Adobe推出的IDE,支持MXML和ActionScript的编写,拥有图形化的组件拖放功能,能帮助开发者快速构建用户界面。 以下是关于Flex开发的一些核心知识点: 1. **ActionScript 3.0**: Flex的主要编程...
1. **Flex3简介**:Flex3是基于ActionScript3的编程环境,提供了一个强大的MXML标记语言,用于构建用户界面。它支持组件化开发,能够快速创建具有专业外观的图形用户界面。 2. **开发环境**:讲解了如何设置和使用...
综上所述,"flex中文帮助(flex入门书籍)"这个压缩包可能包含了关于Flex 3.0的详细教程和参考资料,对于初学者来说,是学习Flex开发的好资源。通过深入学习和实践,开发者可以掌握Flex的基本概念、组件使用、数据绑定...
1. **Flex概述**:Flex是一种基于XML的标记语言MXML,用于构建用户界面,并结合ActionScript(一种基于ECMAScript的脚本语言)实现交互逻辑。Flex SDK包含了编译器、运行时库和各种工具,可以免费下载使用。Flex应用...
3. **MXML与ActionScript 3.0**:MXML是一种声明式语言,用于构建Flex界面组件。ActionScript 3.0则是运行在Flash Player或Adobe AIR上的面向对象的编程语言。理解两者之间的关系,以及如何在MXML和ActionScript之间...
- **设计用户界面**:通过拖放组件并调整其位置和大小来创建用户界面。 - **应用样式和主题**:为了增强用户体验,可以使用 CSS 或内置的主题来美化界面。 - **编写动态行为**:使用 ActionScript 3.0 添加交互逻辑...
本资料“Flex从入门到精通”将全面引导你了解并掌握Flex的相关知识,包括基础概念、开发环境搭建、组件使用、数据绑定、动画效果以及高级应用。 一、Flex简介 Flex是一种开发工具,它允许开发者创建具有丰富用户...
6. **Flex组件**:Flex提供了一系列预构建的UI组件,如按钮、列表、表格、面板等,可以快速构建复杂的用户界面。这些组件具有高度可定制性,可以通过样式和皮肤进行个性化。 7. **数据绑定**:Flex支持数据绑定,...
Flex组件库包含了各种预定义的UI组件,如按钮、文本输入框、列表等,方便开发者快速构建用户界面。此外,还可以自定义组件来满足特定需求。 四、数据绑定 Flex中的数据绑定机制允许UI组件与应用程序数据自动同步,...
构建用户界面 - **视觉组件**:介绍了 Flex 中可用的各种视觉组件及其用途。 - **数据绑定**:解释了数据绑定的概念,并展示了如何在 Flex 中实现数据绑定。 - **容器简介**:概述了容器的作用及不同类型的容器...
3. **Flex组件库**: Flex提供了一套丰富的预定义组件,如Button、Label、ComboBox、List等,这些组件可以方便地进行拖放式设计,大大简化了UI的开发。 4. **数据绑定**: Flex的数据绑定功能允许开发者将UI元素的...
1. **表现力丰富**:RIA应用提供了更丰富的用户界面和交互体验,如动画、拖放操作等。 2. **网络效率高**:通过AJAX和异步数据传输,RIA应用能实现实时更新,减少页面刷新,提升网络效率。 3. **交互能力强**:RIA...