非默认拖动组件如何实现拖动?

来源:互联网 发布:朗朗平板钢琴软件 编辑:程序博客网 时间:2024/06/10 07:38

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
 
 <mx:Script>
  <![CDATA[
   import mx.events.DragEvent;
   import mx.managers.DragManager;
   import mx.core.DragSource;
   import mx.collections.ArrayCollection;
   import mx.core.IUIComponent;
   [Bindable]
   private var myListDP:ArrayCollection=new ArrayCollection();
   
   //启动拖动事件
   private function dragIt(initiator:Label,dsData:String,event:MouseEvent,format:String):void
   {
    //拖动的数据源
     var ds:DragSource = new DragSource();
     //添加拖动过程中的数据,以及确定格式
     ds.addData(dsData,format);
     //启动拖动事件
     DragManager.doDrag(initiator,ds,event); 
   }
   
   //拖动发生时候
   private function doDragEnter(event:DragEvent,format:String):void
   {
    //判断格式是否一致
    if(event.dragSource.hasFormat(format)){
     //接受该拖动组件
     DragManager.acceptDragDrop(IUIComponent(event.target));
    }
   }
   
   //拖动事件结束
   private function doDragDrop(event:DragEvent,format:String):void
   {
    //
    var myLabelData:Object = new Object();
    //接受指定格式的数据
    myLabelData = event.dragSource.dataForFormat(format);
    myList.dataProvider.addItem(myLabelData);
   }
  ]]>
 </mx:Script>
 
 <mx:Label id="myLabel"
  text="Drag me"
  mouseDown="dragIt(myLabel,'My data here',event,'myFormat')"/>
 
 <mx:Spacer width="20"/>
 
 <mx:List id="myList"
  width="200"
  dataProvider="{myListDP}"
  dragEnter="doDragEnter(event,'myFormat')"
  dragDrop="doDragDrop(event,'myFormat')"/>
  
</mx:Application>

原创粉丝点击