2011-08-11 17 views
1

當我開始拖動操作時,我希望能夠突出顯示可能的有效拖放對象。爲此,我需要知道拖動操作何時開始以及哪些項目正在被拖動。我正在嘗試使用dragStart執行此操作,但event.dragSource在此事件中爲null。拖放 - 如何在DragStart事件上獲取DragSource

我有這樣的名單:

<s:List 
    width="100%" 
    height="100%" 
    id="productsListing" 
    dragEnabled="true" 
    dataProvider="{products}" 
    dragStart="dragStartHandler(event);" 
    dragComplete="dragCompleteHandler(event);" 
    itemRenderer="views.productListed" /> 

和我有監聽器:

public function dragStartHandler(event:DragEvent):void { 
    var itemsVector:Vector.<Object> = event.dragSource.dataForFormat('itemsByIndex') as Vector.<Object>; 
    //Verify Items 
    //Highlight appropriated dropZones 
} 

任何人有一個很好的sugestion如何克服呢?

回答

3

這裏的問題是,你的dragStartHandler比List組件內部的dragStartHandler具有更高的優先級 - 這是拖動操作開始的位置和dragSource屬性的創建位置。

建議您手動添加dragStartHandler,其優先級低於List組件的dragStartHandler方法 - 查看代碼時需要小於-50。

MXML代碼:

<s:List width="100%" height="100%" 
     id="productsListing" 
     dragEnabled="true" 
     dataProvider="{products}" 
     initialize="productsListing_initializeHandler(event)" 
     dragComplete="productsListing_dragCompleteHandler(event)" 
     itemRenderer="views.productListed" 
     /> 

AS代碼:

protected function productsListing_initializeHandler(event:FlexEvent):void 
{ 
    // Needs to be handled AFTER the List component has handled the event and attached the dragSource data, hence priority is -51 
    this.productsListing.addEventListener(DragEvent.DRAG_START, productsListing_dragStartHandler, false, -51, true); 
} 

protected function productsListing_dragStartHandler(event:DragEvent):void 
{ 
    // Your code here... 
} 

我希望你覺得有用。

0

這是在柔性

的拖放構建的解決方案,我們可以實現對象處理所有組件 很容易拖動,刪除和調整大小。

請參閱本http://code.google.com/p/flex-object-handles/

+0

嗯...我不認爲你真的得到了我的問題....這不是我所想要的目的。不過謝謝你。 – Uoli