Вам нужно запретить действие по умолчанию как для события dragDrop (чтобы остановить его добавление в новый список), так и для события dragComplete (чтобы предотвратить его удаление из старого списка). Вот пример, позволяющий перемещать элементы внутри списка, но не между списками:
private var preventMove:Boolean = false;
private function onDragDrop(event: DragEvent): void {
preventMove = (event.dragInitiator != event.target);
if (preventMove)
event.preventDefault();
}
private function onDragComplete(event: DragEvent): void {
if (preventMove) {
event.preventDefault();
}
}
Вы можете использовать любые критерии вместо проверки dragInitiator для цели dragDrop. Наряду с вызовом warnDefault для dragComplete, вы можете вызвать ваше сообщение об ошибке.
Где у вас есть два списка (или TileLists или что-то еще):
<s:List dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)"
dragEnabled="true" dropEnabled="true" dragMoveEnabled="true">
</s:List>
<s:List dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)"
dragEnabled="true" dropEnabled="true" dragMoveEnabled="true">
</s:List>
Если вам не нужно перетаскивать объекты в одном и том же списке или вы перетаскиваете только одно направление, это может быть проще, если не включить все в обоих списках.
Статья, на которую ссылается Chetan Sastry, устарела и содержит неработающие ссылки.