- 浏览: 262072 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
smartzjp:
可以理解为如果每行数据的所有列都有值,而且列名都是相等的,这个 ...
hbase关于bloom filter使用 -
xiao_feng68:
flash.system.Security.loadPolic ...
关于flex跨域加载MODULE的问题 -
sulanyan29:
挺详细的.
linux之iptables -
liuzhiqiangruc:
这个只要dos2unix 就可以了吧
linux日常工作技巧 -
四个石头:
...
简化的Flex4结构图
为了改善客户体验,系统引入的相关的拖拽功能,所以就进行了一番简单的学习,希望对其他朋友也有用处,内容来自:
http://luohonghong.blog.163.com/blog/static/7831205820099425641884/
下面主要是相关使用的例子,入门简单,希望以此能做出更的新奇效果。
Flex组件内置了处理拖拽事件的接口,有些控件已经实现了拖拽功能,比如List、DataGrid、Menu、
HorizontalList、 PrintDataGrid、TileList、Tree,在设置相关的拖拽属性后,它们都可以在相同类型的组
件之间利用鼠标来实现数据的转移。
allowDragSelection 是否可以拖选
allowMultipleSelection 是否可以多选
dragEnabled 是否可以拖动子元素
dragMoveEnabled 是否移动元素位置,而不是复制元素
dropEnabled 是否可以将物体放置进来
在Flex中,有几个专门的对象供开发者处理拖拽事件:
DragManager:位于mx.managers包中,管理拖拽事件
DragSource:位于mx.core包中,是Flex框架中的核心成员,处理拖拽中的数据传递
DragEvent:位于mx.events包中,拖拽操作中的事件对象。
按照逻辑,拖拽中至少有两个对象:一方提供数据,一方接收数据。在这个过程中,提供数据的一方按照前后
顺序,可以把整个过程划分为下面几个事件:
mouseDown:鼠标按下。
mouseMove:鼠标移动。
dragComplate:鼠标释放。判断目标是否接受数据,如果可以,拖放成功。
接收方也将经历几个阶段
dragEnter:被拖动对象移动到目标范围中。
dragDrop:鼠标在目标上松开。
dragOver:鼠标移动到目标上。
dragExit:独享被拖离目标范围。
1. Tree与Tree之间的拖动:
2. <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
verticalAlign="middle">
<mx:XML id="myData">
<data>
<item label="ActionScript">
<item label="Flash" />
<item label="Flex" />
</item>
<item label="Mirage">
</item>
<item label="JavaScript"/>
</data>
</mx:XML>
<mx:XML id="copyData">
<data>
<item label="JavaScript"/>
</data>
</mx:XML>
<mx:Tree dropEnabled="true" dragEnabled="true" dragMoveEnabled="true"
allowMultipleSelection="true"
dataProvider="{myData.item}" labelField="@label" />
<mx:Tree dropEnabled="true" dataProvider="{copyData.item}" labelField="@label"/>
</mx:Application>
上面代码中只需设置
dropEnabled="true" //是否可以将被拖动的物体放置进来
dragEnabled="true" //是否可以拖动子元素
dragMoveEnabled="true" //是否只是移动元素,而不是复制元素
allowMultipleSelection="true" //是否可以多项拖动元素,为true时可以用ctrl选多个一起拖动
List与List之间的拖动,只要设置上面的就可以了。
DataGrid 拖动到DataGrid和List
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
verticalAlign="middle" fontSize="12">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.DragEvent;
[Bindable]
private var mylist:ArrayCollection;
//当拖完成时
private function onDrop(e:DragEvent) : void
{
var myData:Object = new Object();
myData = e.dragSource.dataForFormat('items');//从dragSource中拿到条目
var name:String = myData[0].name;//注意这个地方必需要用变量进行替换
list1.dataProvider.addItem(name);
e.preventDefault();//可以去掉默认的数据转移
}
]]>
</mx:Script>
<mx:XMLList id="employees">
<employee>
<name>刘海</name>
<phone>13042334532</phone>
<email>liuhai@163.com</email>
</employee>
<employee>
<name>张春</name>
<phone>13642987532</phone>
<email>zhang@sina.com</email>
</employee>
<employee>
<name>小李</name>
<phone>13923485844</phone>
<email>xiaoli@qq.com</email>
</employee>
</mx:XMLList>
<mx:DataGrid x="10" y="15" width="277" id="dg" rowCount="5"
dataProvider="{employees}" dragEnabled="true">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Email" dataField="email"/>
<mx:DataGridColumn headerText="Phone" dataField="phone"/>
</mx:columns>
</mx:DataGrid>
<mx:DataGrid dropEnabled="true">
<mx:columns>
<mx:DataGridColumn headerText="Name"
dataField="name"/>
<mx:DataGridColumn headerText="Email"
dataField="email"/>
<mx:DataGridColumn headerText="Phone"
dataField="phone"/>
</mx:columns>
</mx:DataGrid>
<mx:List height="210" width="206" id="list1" dropEnabled="true" dataProvider="{mylist}"
dragDrop="onDrop(event)"></mx:List>
<!--文档注释-->
<mx:TextInput width="500" height="146" horizontalCenter="0" verticalCenter="-204"
fontWeight="normal" textAlign="center">
<mx:htmlText>
<![CDATA[
Date: 2009.05.05
Email:woai_php@sina.com
QQ:1019822077
Blog:<font color="#FF0000"><a
href="http://hi.baidu.com/woaidelphi/blog/category/Flex">http://hi.baidu.com/woaidelphi/blog/cat
egory/Flex</a></font>
华夏之星希望和你成为朋友。一起学习,共同奋斗!!!。。。
]]>
</mx:htmlText>
</mx:TextInput>
</mx:Application>
2.非加强拖动技术
Label的拖动,可以扩展到其他组件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.core.IUIComponent;
import mx.events.DragEvent;
import mx.core.DragSource;
import mx.managers.DragManager;
[Bindable]
private var listData:ArrayCollection = new ArrayCollection();
//拖动初始器
private function dragSource(myData:String,e:MouseEvent,format:String):void
{
var iu:IUIComponent = e.currentTarget as IUIComponent;
var ds : DragSource = new DragSource();
ds.addData(myData,format);//设置一个标号format
DragManager.doDrag(iu,ds,e); // 开始拖动这个物体
}
//当拖进去时
private function onEnter( e:DragEvent,format:String ) : void
{
if(e.dragSource.hasFormat(format))//如果标号为format则接受拖来的物体
{
DragManager.acceptDragDrop(IUIComponent(e.target) );// 接受被拖进来的物体
}
}
//当拖完成时
private function onDrop(e:DragEvent,format:String) : void
{
var myData:Object = new Object();
myData = e.dragSource.dataForFormat(format);
list1.dataProvider.addItem(myData);//list1是List的id,要是扩展到其他组件,改这里就可
以了。
}
]]>
</mx:Script>
<mx:Label text="拖动我到List" width="86" height="27" id="lbl" mouseDown="dragSource('这个是
一个label',event,'stringFormat')"/>
<mx:List dataProvider="{listData}" id="list1" dragEnter="onEnter(event,'stringFormat')"
dragDrop="onDrop(event,'stringFormat')" width="206"></mx:List>
<!--文档注释-->
<mx:TextInput width="500" height="146" horizontalCenter="0" verticalCenter="-204"
fontWeight="normal" textAlign="center">
<mx:htmlText>
<![CDATA[
Date: 2009.05.05
Email:woai_php@sina.com
QQ:1019822077
Blog:<font color="#FF0000"><a
href="http://hi.baidu.com/woaidelphi/blog/category/Flex">http://hi.baidu.com/woaidelphi/blog/cat
egory/Flex</a></font>
华夏之星希望和你成为朋友。一起学习,共同奋斗!!!。。。
]]>
</mx:htmlText>
</mx:TextInput>
</mx:Application>
Button的拖动,可以扩展到其他组件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
verticalAlign="middle" fontSize="12">
<mx:Script>
<![CDATA[
import mx.core.IUIComponent;
import mx.events.DragEvent;
import mx.core.DragSource;
import mx.managers.DragManager;
//拖动初始器
private function dragSource(e:MouseEvent,format:String):void
{
var iu:IUIComponent = e.currentTarget as IUIComponent;
var ds : DragSource = new DragSource();
ds.addData( {"x" : e.localX, "y" : e.localY},format);//设置一个标号format
DragManager.doDrag(iu,ds,e);
}
//当拖进去时
private function onEnter( e:DragEvent,format:String ) : void
{
if(e.dragSource.hasFormat(format))//如果标号为format则接受拖来的物体
{
DragManager.acceptDragDrop(IUIComponent(e.target) );
}
}
//当拖完成时
private function onDrop(e:DragEvent,format:String) : void
{
var myData:Object = new Object();
myData = e.dragSource.dataForFormat(format);
btn.x = this.mouseX - myData.x;//btn为按钮的id,要是扩展到其他组件,改这里就可以了。
btn.y = this.mouseY - myData.y;
}
]]>
</mx:Script>
<mx:Canvas y="40" id="cansAccess" backgroundColor="#000000" width="300" height="200"
dragEnter="onEnter(event,'formatString')" dragDrop="onDrop(event,'formatString')"/>
<mx:Button id="btn" label="拖动我到面板" mouseDown="dragSource(event,'formatString')" />
<!--文档注释-->
<mx:TextInput width="500" height="146" horizontalCenter="0" verticalCenter="-204"
fontWeight="normal" textAlign="center">
<mx:htmlText>
<![CDATA[
Date: 2009.05.05
Email:woai_php@sina.com
QQ:1019822077
Blog:<font color="#FF0000"><a
href="http://hi.baidu.com/woaidelphi/blog/category/Flex">http://hi.baidu.com/woaidelphi/blog/cat
egory/Flex</a></font>
华夏之星希望和你成为朋友。一起学习,共同奋斗!!!。。。
]]>
</mx:htmlText>
</mx:TextInput>
</mx:Application>
一定要注意,标签的先后位置,Button 要在Canvas 之后.
3.Canvas容器中拖动Box,你还可以在Box中添加图片等。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">
<mx:Script>
<![CDATA[
import mx.containers.Box;
import mx.containers.Canvas;
import mx.core.IUIComponent;
import mx.events.DragEvent;
import mx.managers.DragManager;
import mx.core.DragSource;
//拖动初始器
private function dragSource(e:MouseEvent,format:String):void
{
var iu:IUIComponent = e.currentTarget as IUIComponent;
var ds : DragSource = new DragSource();
ds.addData(iu,format);//设置一个标号format
DragManager.doDrag(iu,ds,e); // 开始拖动这个物体
}
//当拖进去时
private function onEnter( e:DragEvent,format:String ) : void
{
if(e.dragSource.hasFormat(format))//如果标号为format则接受拖来的物体
{
DragManager.acceptDragDrop(IUIComponent(e.target) );// 接受被拖进来的物体
}
}
//当拖完成时
private function onDrop(e:DragEvent,format:String) : void
{
var box:Box = Box(e.dragInitiator);//如果扩展到其他组件,改这里Box就可以了。
box.x = e.localX;
box.y = e.localY;
}
]]>
</mx:Script>
<mx:Canvas backgroundColor="0xEEEEEE" width="500" height="246" horizontalCenter="0"
verticalCenter="0"
dragEnter="onEnter(event,'boxFormat')"
dragDrop="onDrop(event,'boxFormat')" >
<mx:Box id="boxDrag" width="20" height="20" backgroundColor="0x00FFCC" x="97" y="47"
mouseDown="dragSource(event,'boxFormat');"></mx:Box>
</mx:Canvas>
<!--文档注释-->
<mx:TextInput width="500" height="146" horizontalCenter="0" verticalCenter="-204"
fontWeight="normal" textAlign="center">
<mx:htmlText>
<![CDATA[
Date: 2009.05.05
Email:woai_php@sina.com
QQ:1019822077
Blog:<font color="#FF0000"><a
href="http://hi.baidu.com/woaidelphi/blog/category/Flex">http://hi.baidu.com/woaidelphi/blog/cat
egory/Flex</a></font>
华夏之星希望和你成为朋友。一起学习,共同奋斗!!!。。。
]]>
</mx:htmlText>
</mx:TextInput>
</mx:Application>
4.图片的拖动
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%"
height="100%" fontSize="12">
<mx:Script>
<![CDATA[
private var oldX:Number;//拖动开始是的坐标
private var oldY:Number;
//拖动开始
private function dragStart(event:MouseEvent):void{
oldX = event.stageX;//相对Application的坐标
oldY = event.stageY;
}
//拖动结束
private function dragEnd(event:MouseEvent):void{
lbl.text = "Local (x,y):" + event.localX.toString() + ","+event.localX.toString();//
相对图片的坐标
lbl2.text = "Stage (x,y):" + event.stageX.toString() + ","+event.stageY.toString
();//相对Application的坐标
if(event.buttonDown){//如果鼠标在移动过程中并且按下,也就是说鼠标的拖动事件。
var x:Number = event.stageX - oldX;//相对Application的坐标的移动量
var y:Number = event.stageY - oldY;
oldX = event.stageX;//更新拖动开始是的坐标
oldY = event.stageY;
img.move(img.x + x,img.y + y); //img是 Image的id,如果扩展到其他组件,改这里就可
以了。
}
}
]]>
</mx:Script>
<mx:Label x="10" y="10" text="" id="lbl"/>
<mx:Label x="10" y="27" text="" id="lbl2"/>
<mx:Panel x="257" y="71" width="700" height="80%" layout="absolute"
horizontalScrollPolicy="off" verticalScrollPolicy="off" title="图片在面板中的拖动例子"
fontSize="12">
<mx:Image id="img" x="0" y="0" source="test.JPG"
mouseMove="dragEnd(event)"
mouseDown="dragStart(event)"/>
</mx:Panel>
<!--文档注释-->
<mx:TextInput width="500" height="146" fontWeight="normal" textAlign="center">
<mx:htmlText>
<![CDATA[
Date: 2009.05.05
Email:woai_php@sina.com
QQ:1019822077
Blog:<font color="#FF0000"><a
href="http://hi.baidu.com/woaidelphi/blog/category/Flex">http://hi.baidu.com/woaidelphi/blog/cat
egory/Flex</a></font>
华夏之星希望和你成为朋友。一起学习,共同奋斗!!!。。。
]]>
</mx:htmlText>
</mx:TextInput>
</mx:Application>
发表评论
-
Flashbuilder4.5中文版破解方法
2013-07-17 11:38 13http://my.oschina.net/liweigov ... -
flex的ant编译脚本
2012-10-08 14:57 2610来自:https://gist.github.com/9442 ... -
flex 使用https
2012-06-15 10:06 1574来自网络: 1、https是安全认证协议,所以要采用S ... -
Flex性能优化
2011-07-24 09:22 1316ActionScript 3 和 Flex框架的性能优化 ... -
flex编译参数
2011-05-04 15:24 1765来自:http://www.blogjava.net/bjwu ... -
flex常用小技巧
2011-03-16 17:09 10651)label显示多行字符(在text的字符中添加String ... -
关于flex截图
2011-03-16 16:37 2394参考: http://xltank.iteye.com/bl ... -
元数据解释
2011-03-16 15:30 1195来自: http://xltank.iteye.com/bl ... -
flex通过JS播放wma语音的问题
2011-03-16 11:57 1962flex通过ExternalInterface.call(&q ... -
关于跨域访问后部分本地channel连接失败解决方法
2011-03-02 15:10 1116由于项目需要使用到跨域访问的方式来加载另外一个应用的一个处理模 ... -
简化的Flex4结构图
2011-02-27 15:17 1805来自:http://blog.csdn.net/wkyb608 ... -
关于flex跨域加载MODULE的问题
2011-02-12 17:52 1952近来项目有需要使用跨域访问MODULE的需求,故此做了一些学习 ... -
flex背景平铺
2011-01-23 10:46 1411定义样式: Application{ backgr ... -
关于角度与弧度关系以及转换
2010-12-12 14:02 21301弧度约等于57.2958度。 一个圆,360度,计算出的弧 ... -
关于复杂表格(行或列合并)的实现
2010-12-12 11:12 2430一个关于列合并与行合并的例子,来自: http://www. ... -
关于Sound的ID3Info相关乱码问题
2010-11-27 14:03 1400来自: http://hereson.iteye.com/b ... -
关于事件冒泡
2010-10-27 00:40 1024今天在写程序的时候,发现在有一个程序的事件就是抛出不出来,父控 ...
相关推荐
flex真是个很强大的工具,当然demo也是我们学习的主要方法,flex拖拽画矩形,很流畅的,一点不卡
`.flexProperties`, `.project`, `.settings`, `libs`, `html-template`, `src` 可能包含了实现拖放功能的源代码、项目配置和资源文件,通过查看这些文件,可以更深入地学习和实践Flex拖放功能的实现。
在这个场景中,我们关注的是Flex实现的拖拽控件,这是一种交互式UI元素,允许用户通过鼠标操作移动元素,提供了丰富的用户体验。 拖拽功能在Flex中可以通过使用内置的DragManager类和Event类来实现。DragManager类...
这个主题聚焦于“Flex拖拽控件效果”,这是一项常见的用户交互功能,允许用户通过鼠标操作移动UI元素,提升应用的易用性和互动性。 在Flex中,实现拖放(Drag and Drop)功能主要涉及两个核心类:`DragManager`和`...
在学习和实现flex拖拽效果时,不仅要掌握Flex布局的基本概念,如`flex-direction`、`justify-content`、`align-items`等属性,还要熟悉DOM操作和事件处理,以及可能涉及到的CSS定位知识。这将有助于创建更富交互性的...
Flex是一种由Adobe公司...总之,Flex拖拽树控件提供了丰富的交互体验,允许用户直观地管理和组织树形数据。通过理解并应用上述步骤和概念,开发者可以创建出高效且用户友好的界面,提高应用程序的可用性和用户体验。
这些项目可能包含了ActionScript代码文件和Flex布局文件,通过编译和运行,开发者可以直观地看到拖放效果,并学习到如何将这些功能应用到自己的Flex4项目中。 总之,Flex4的拖放功能提供了一种直观且灵活的方式来...
标题"flex 拖拽效果程序"表明我们将关注的是如何在Flex中创建一个具有拖放功能的程序。在Flex中,这种功能主要通过DragManager和UIComponent类的拖放API来实现。让我们详细了解一下实现拖放效果的过程。 1. **启用...
5. **dragData**: 拖动过程中携带的数据,可以包含关于被拖动节点的信息,如节点 ID、名称等。在 `drop` 事件中,通过 dragData 可以确定拖放的目标和源。 6. **allowMultipleParents**: 这个属性决定了一个节点...
在给定的标题“支持手动拖拽缩放flex组件的组件”中,我们可以推断出这是一个专门针对Flex环境设计的组件,它允许用户通过手动拖拽和缩放操作来调整Flex应用中的组件大小。 描述中提到的“com.janisRadins.zip”很...
以上就是关于Flex中拖放功能的基本介绍和实现方法,通过自定义视图和数据交换,我们可以创建出符合用户需求的高效交互体验。在提供的压缩包文件"DragAndDrop"中,可能包含了具体的示例代码或者教程,可以帮助进一步...
这个“flex特效”生成器很可能提供了对以上属性的图形化配置,用户可以通过拖动滑块或选择预设值来生成对应的CSS代码。这对于初学者来说是一个很好的学习工具,对于经验丰富的开发者来说,也是一个提高效率的实用...
本教程将详细介绍如何在Flex 4.5中实现Tree组件与任意组件之间的拖放操作,特别是将树形结构的数据拖拽到DataGrid中,并获取目标位置的全部数据进行添加。 1. **Flex 4.5的DragManager和DropTarget** Flex 4.5中的...
在Flex3中,你可以创建具有丰富用户界面和交互功能的应用程序,而“flex3一个简单购物车拖拽的例子”是一个演示如何在Flex环境中实现拖放功能的实例。这个例子展示了如何将商品图标或项拖入数据网格(DataGrid)中,...
虽然与拖动购物车的主题略有不同,但这个例子可以用来学习Flex中的组件设计、事件处理和用户交互设计。 综上所述,Flex中的拖放功能是通过`DragManager`和`DropTarget`进行实现的,这种功能增强了用户与应用的互动...
Flex Air 拖拽排版 类似 ps...以上就是关于"Flex Air 拖拽排版 类似 ps 图层"这个主题涉及的一些主要技术点。通过学习和实践这些知识点,开发者可以创建出功能强大的桌面应用,为用户提供类似Photoshop的图层编辑体验。
在Flex编程领域,ObjectHandles是一个非常实用的组件,尤其对于新手开发者来说,它提供了一种简单易用的方式来实现拖拽和伸缩功能。这个组件能够帮助用户交互地调整对象的位置和大小,使得UI设计变得更加灵活和动态...
### Flex学习心得与关键知识点详解 #### 一、Flex组件模型 Flex采用了基于组件的开发模型,这使得开发者可以通过继承现有组件并扩展其功能来快速构建应用程序。这意味着开发者不需要从头开始编写所有代码,而是可以...