本文爲學習:http://book.51cto.com/art/200906/130727.htm 時的筆記。
ADOBE的解釋頁面爲:http://www.adobe.us/livedocs/flex/3_cn/langref/mx/managers/DragManager.html
另外,下面這個文章也很經典:http://www.7yue.com/post/64.html
1、首先要爲要拖拽的對象設置 mouseDown 事件。如:
private static const FORMAT:String = "box2";
private function mouseDownHandler( evt:MouseEvent ):void{
//var initiator:IUIComponent =evt.currentTarget as IUIComponent;
var initiator:Box = evt.currentTarget as Box;
var boxData:Object = new Object();
boxData.width = initiator.width;boxData.height= initiator.height;boxData.backgroundColor = initiator.getStyle( "backgroundColor" );
var dragSource:DragSource =new DragSource();
dragSource.addData( boxData, FORMAT );
DragManager.doDrag( initiator, dragSource, evt );
}
其中,FORMAT是爲了以後在實現時找到這個dragSource 的途徑。
2、爲目標寫:
private function dragEnterHandler(evt:DragEvent):void{
if( evt.dragSource.hasFormat( FORMAT ) ){
DragManager.acceptDragDrop( Canvas( evt.currentTarget ) );}
}
private function dragEnterHandler2(evt:DragEvent):void{
DragManager.acceptDragDrop( Canvas( evt.currentTarget ) );
}
private function dropHandler( evt:DragEvent ):void{
//這裏用到了 evt.dragSource.dataForFormat
var boxData:Object = evt.dragSource.dataForFormat( FORMAT );
var box:Box = new Box();
box.width = boxData.width;box.height = boxData.height;box.setStyle( "backgroundColor", boxData.backgroundColor );
box.x = evt.localX;box.y = evt.localY;canvas.addChild( box );
//下面是引用原控件的例子,用此方法是拖動,而不是提取原控件的一些信息
var box3:Box = Box( evt.dragInitiator );
box3.x = evt.localX+100;box3.y = evt.localY+100;
}
二、LIST控件的拖拽
如用FLASH 4,則需要選用list (paged),這個就是原來FLEX的list。
dragMoveEnabled="true",是指選項從某個位置移動到另一個位置,如去掉此選項,則此項位置不動,另外又增加了一個選項。
dragEnabled="true" 允許拖 dropEnabled="true" 允許放