当我开始拖动操作时,我希望能够突出显示可能的有效Drop对象。为此,我需要知道拖动操作何时开始以及拖动哪些项目。我试图使用dragStart执行此操作,但event.dragSource在此事件上为null。
我有这个清单:
<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
}
任何人都有一个很好的消化方法如何克服这个问题?
答案 0 :(得分: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...
}
我希望你发现它很有用。
答案 1 :(得分:0)