Vous devez empêcher l'action par défaut à la fois l'événement dragDrop (pour l'empêcher d'être ajouté à la nouvelle liste) et l'événement dragComplete (pour l'empêcher d'être retiré de l'ancienne liste) . Voici un exemple pour permettre éléments à déplacer dans une liste, mais pas entre les listes:
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();
}
}
Vous pouvez utiliser tous les critères que vous voulez en place de vérifier la dragInitiator contre la cible dragDrop. En plus d'appeler preventDefault sur dragComplete, vous pouvez afficher votre message d'erreur.
Si vous avez deux listes (ou TileLists ou autre):
<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>
Si vous n'avez pas besoin d'être en mesure de faire glisser les choses au sein de la même liste ou que vous ne glisser une direction qu'il peut être plus simple simplement en ne permettant pas tout sur les deux listes.
L'article lié par Chetan Sastry est maintenant vieux et a des liens brisés.