Drag and Drop AIR la nouvelle donne

Publié le 05 octobre 2007 par Stef1

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 :)