|
|
朋友说他要做的程序上有两组可以互相拖拽的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>
 |
|