本文为学习: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" 允许放