Flex的List拖拽事件选择来源控件

朋友说他要做的程序上有两组可以互相拖拽的List,大家都知道Flex实现拖拽操作非常简单,只需要在List组件上设置 dragEnabled="true" dropEnabled="true" 两个属性即可,但他的问题是两组List,只能在一组内拖动,不能拖到另一组,所以帮他写了个小例子,判断拖拽的来源组件,只接受来自一个组件的拖拽。代码如下


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Script>
<![CDATA[
import mx.events.DragEvent;
import mx.collections.ArrayCollection;
private var dataList:ArrayCollection = new ArrayCollection([{name:"a"}]);
private var dataList2:ArrayCollection = new ArrayCollection([{name:"b"}]);
private var dataList3:ArrayCollection = new ArrayCollection([{name:"c"}]);

private function dragEnterHandler(e:DragEvent):void{
if((e.dragInitiator as List).id !="l3")e.preventDefault();
}
private function dragCompleteHandler(e:DragEvent):void{
if((e.dragInitiator as List).id !="l3")e.preventDefault();
}

private function dragOverHandler(e:DragEvent):void{
if((e.dragInitiator as List).id !="l3")e.preventDefault();
}
]]>
</mx:Script>
<mx:List initialize="l1.dataProvider=dataList" id="l1" labelField="name" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" width="100"></mx:List>
<mx:List id="l2" labelField="name" dragEnabled="true" dropEnabled="true" dragOver="dragOverHandler(event)" dragComplete="dragCompleteHandler(event)" dragEnter="dragEnterHandler(event)" dragMoveEnabled="true" width="100"></mx:List>
<mx:List initialize="l3.dataProvider=dataList3" id="l3" labelField="name" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" width="100"></mx:List>

</mx:Application>




[img]http://dl.iteye.com/upload/attachment/488789/59958d76-4476-38a9-92f4-c3079729c383.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值