DragManager类为静态类。无需实例,直接调用。
拖动事件:
DragManager.doDrag()
方法doDrag() :
doDrag (dragInitiator:mx.core:IUIComponent ,
dragSource:mx.core:DragSource ,
mouseEvent:flash.events:MouseEvent ,
dragImage:mx.core:IFlexDisplayObject ,
xOffset:Number , yOffset:Number ,
imageAlpha:Number ,
allowMove:Boolean )
dragInitiator——需要拖拽的控件,必须是建立在App上的原始控件。(即为SystemCompent)否则,会在运行到 IDragManager的方法的时候会Bug。
dragSource——拖动的数据。想传什么数据就写什么数据
dragImage——拖动时显示的在鼠标上的东西,无任何数据在其中
<mx:Image mouseDown="img_msDown_DragEvt(event)" left="10" right="10" y="10" height="39" id="img_DefenserLv1" autoLoad="true" source="Tom_Castle_PIC/ZombieDefense/Level1.jpg"/>
<mx:Panel id="Panel_ID1" dragEnter="panel_dragEnter(event)" dragDrop="panel_dragDrop(event)" borderStyle="solid" borderThickness="1.5"></mx:Panel>
//拖动img时
private function img_msDown_DragEvt(evt:MouseEvent):void{
var ds:DragSource=new DragSource(); //拖动的具体实值
ds.addData(ImageSnapshot.captureBitmapData(evt.currentTarget as Image),"bmd_drag")
var imgTemp:Image=new Image()
var bmpd:BitmapData=ImageSnapshot.captureBitmapData(evt.currentTarget as Image)
var bm:Bitmap=new Bitmap(bmpd)
imgTemp.source=bm;//拖动显示的图像
DragManager.doDrag((evt.currentTarget as UIComponent),ds,evt,imgTemp)
}
//当img释放
private function panel_dragDrop(evt:DragEvent):void{
var img_drag:Image=new Image();
var bmd:BitmapData=evt.dragSource.dataForFormat("bmd_drag") as BitmapData
img_drag.source=new Bitmap(bmd)
UIComponent(evt.target).addChild(img_drag)
}
//当img拖动到Panel上时
private function panel_dragEnter(evt:DragEvent):void{
var ui:UIComponent=UIComponent(evt.currentTarget)
DragManager.acceptDragDrop(ui)
}