FLEX拖拽效果中的DragManager等關鍵詞學習筆記

本文爲學習: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" 允許放

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章