Le drag and drop AIR a changé, je ne vais pas rentrer dans le détail.
Juste un petit bout de code pour le moment et ne concernant que les fichiers
Pour commencer on doit importer de nouvelles classes ( en plus de celles que l on avait avant )
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import flash.events.NativeDragEvent;
import flash.desktop.DragActions;
import flash.desktop.DragManager;
Pas de modif au niveau des eventListener
MonComposant.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, onDrag);
MonComposant.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, onDrop);
private function onDrop(event:NativeDragEvent):void{
DragManager.dropAction = DragActions.COPY; // je veux copier l'élément
// Les nouveautés sont la on récupère maintenant les éléments du drag and drop par un getData sur clipBoard
var transferable:Clipboard = event.clipboard;
var dropfiles:Array = transferable.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
for each (var file:File in dropfiles){
var sourceFile:File = new File();
sourceFile = sourceFile.resolvePath(file.nativePath);
var destination:File = new File();
destination.nativePath = MonPathPourLaCopie; // Remplacer par l endroit ou l on veut stocker les fichiers
destination = destination.resolvePath(file.name);
try
{
sourceFile.copyToAsync(destination, true);
}
catch (error:Error)
{
trace("Error:"+error.message);
}
}
}
private function onDrag(event:NativeDragEvent):void{
var transferable:Clipboard = event.clipboard;
if(transferable.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)) {
DragManager.acceptDragDrop(DisplayObject(event.currentTarget));
}
}
Pour plus d'info sur le nouveau drag and drop il faut télécharger l'exemple Scrappy chez adobe
http://download.macromedia.com/pub/labs/air/quickstart_apps/b2/Scrappy.zip
Je reparlerai plus longuement du drag and drop quand j'aurais résolu tout mes problèmes :)