[zt]Flex 3: 构建高级用户界面 添加拖放支持4
来源:互联网 发布:linux 搭建go编译环境 编辑:程序博客网 时间:2024/05/16 15:45
手工添加拖放功能
想要让非基于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>
- [zt]Flex 3: 构建高级用户界面 添加拖放支持4
- [zt]Flex 3: 构建高级用户界面 添加拖放支持3
- [zt]Flex 3: 构建高级用户界面 添加拖放支持1
- [zt]Flex 3: 构建高级用户界面 添加拖放支持2
- [zt]Flex 3: 构建高级用户界面 添加拖放支持5
- Flex 3快速入门: 构建高级用户界面 添加拖放支持
- Flex 3快速入门: 构建高级用户界面 添加拖放支持
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件4
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件3
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件1
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件2
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件5
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件6
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件7
- [zt]Flex 3: 构建高级用户界面 使用 Tree 控件8
- Flex 3: 构建高级用户界面 使用数据提供程序4
- Flex 3:构建高级用户界面 使用数据提供程序3
- Flex 3 构建高级用户界面 创建项目编辑器1
- [zt]Flex 3: 构建高级用户界面 添加拖放支持3
- PostgreSQL数据库忘记密码的解决方案
- 从源码看spring applicationContext在web容器中加载过程
- EJB的学习
- Direct3D 9.0 SDK 文档 (中文版)
- [zt]Flex 3: 构建高级用户界面 添加拖放支持4
- uclinux内核的container_of
- cookie与session知识点总结
- AOL邮箱的客户端设置
- 使用P4D 编写Python Extension
- System corrupt again (running in linux cd)
- 拉格朗日插值算法Lagrange-Interpolynomials
- 环形队列的一些看法
- [zt]Flex 3: 构建高级用户界面 添加拖放支持5