are you using flex 2.0 or 2.0.1? I have an application using drag and drop and need to move the items within the TileList, it was working just fine in version 2.0, now since I updated to 2.0.1 it doesn't move the items anymore but instead makes a copy. Basically I want to order the Items of the TileList by dragging them, but I also want to drag items from a different component. As I said it worked with flex 2.0. Here is the code:
<?xml version="1.0" encoding="utf-8"?> <mx:TileList xmlns:mx="http://www.adobe.com/2006/mxml" backgroundAlpha="0" backgroundColor="#FFFFFF" itemRenderer="renderer.ProjectThumbnail" dragEnabled="true" dragEnter="doDragEnter(event)" dragExit="doDragExit(event)" dragDrop="doDragDrop(event)" dragOver="doDragOver(event)" mouseDown="dropInitiator = DragManager.MOVE;" dragMoveEnabled="true"> <mx:Script> <![CDATA[ *import* mx.collections.IList; *import* mx.collections.ArrayCollection; *import* events.CompareImageChangeEvent; *import* mx.events.DragEvent; *import* mx.managers.DragManager; *import* mx.core.DragSource; *import* com.cnh.imageBank.model.ModelLocator; [*Bindable*] *public* *var* model:ModelLocator = ModelLocator.getInstance(); *private* *var* dropInitiator:String = DragManager.NONE; *// Drag and drop events **public* *function* doDragEnter(event:DragEvent): *void* { *// Get the drop target component from the event object. **var* dropTarget:TileList = event.currentTarget *as* TileList; *var* dataInfo:ArrayCollection = dropTarget.dataProvider *as*ArrayCollection; *var* item:Object = event.dragSource.dataForFormat(*"item"*); *if*(dropInitiator == DragManager.MOVE){ DragManager.showFeedback(DragManager.MOVE); DragManager.acceptDragDrop(dropTarget); } *else* { *if*(item != *null*){ *for*(*var* i:int = 0; i < dataInfo.length; i++){ *if*(dataInfo[i].id == item.id) *return*; } DragManager.showFeedback(DragManager.COPY); DragManager.acceptDragDrop(dropTarget); } } }* **public* *function* doDragExit(event: DragEvent): *void* { *var* dropTarget:TileList = event.currentTarget *as* TileList; dropTarget.hideDropFeedback(event); dropInitiator = DragManager.NONE; *this*.dropEnabled = *false*; } *public* *function* doDragOver(event: DragEvent): *void* { *var* dropTarget:TileList = event.currentTarget *as* TileList; dropTarget.showDropFeedback(event); } * **public* *function* doDragDrop(event: DragEvent): *void* { *var* dropTarget:TileList = event.currentTarget *as* TileList; *var* item:Object = event.dragSource.dataForFormat(*"item"*); *if* (item == *null*) { *// Item was dragged from the thumbnail view **var* items:Object = event.dragSource.dataForFormat(*"items"*); item = items[0]; } *var* dropLoc:int = dropTarget.calculateDropIndex(event); IList(dropTarget.dataProvider).addItemAt(item, dropLoc );* * doDragExit(event); } ]]> </mx:Script> </mx:TileList>

