Pour prendre en charge le mouvement de glissement vers l’extérieur, vous devez créer un objet Clipboard en réponse à un événement
mouseDown
et l’envoyer à la méthode
NativeDragManager.doDrag()
. Votre application peut alors écouter l’événement
nativeDragComplete
sur l’objet initiateur pour déterminer la marche à suivre lorsque l’utilisateur termine ou abandonne le mouvement.
Préparation des données à transférer
Pour préparer les données ou un objet à faire glisser, créez un objet Clipboard et ajoutez les informations à transférer dans un ou plusieurs formats. Vous disposez des formats de données standard pour transmettre des données susceptibles d’être converties automatiquement en formats Presse-papiers natifs, ainsi que des formats définis par l’application pour transmettre des objets.
Si la conversion d’informations à transférer dans un format déterminé mobilise un volume élevé de ressources de calcul, vous pouvez indiquer le nom d’une fonction de gestionnaire qui exécutera la conversion. La fonction est appelée sous réserve que le composant ou l’application qui reçoit les données lise le format correspondant.
Pour plus d’informations sur les formats du Presse-papiers, voir
Formats de données Clipboard
.
L’exemple suivant illustre la création d’un objet Clipboard qui comporte une image bitmap en plusieurs formats : un objet Bitmap, un format d’image bitmap natif et un format de liste de fichiers contenant le fichier source de l’image bitmap :
import flash.desktop.Clipboard;
import flash.display.Bitmap;
import flash.filesystem.File;
public function createClipboard(image:Bitmap, sourceFile:File):Clipboard{
var transfer:Clipboard = new Clipboard();
transfer.setData("CUSTOM_BITMAP", image, true); //Flash object by value and by reference
transfer.setData(ClipboardFormats.BITMAP_FORMAT, image.bitmapData, false);
transfer.setData(ClipboardFormats.FILE_LIST_FORMAT, new Array(sourceFile), false);
return transfer;
}
Démarrage d’une opération de glissement vers l’extérieur
Pour démarrer une opération de glissement, appelez la méthode
NativeDragManager.doDrag()
en réponse à un événement mouse down. La méthode
doDrag()
est statique et gère les paramètres suivants :
Paramètre
|
Description
|
initiator
|
Objet où débute le glissement, qui distribue les événements
dragStart
et
dragComplete
. Il doit impérativement être interactif.
|
clipboard
|
Objet Clipboard contenant les données à transférer. L’objet Clipboard est référencé dans l’objet NativeDragEvent distribué lors de la séquence glisser-déposer.
|
dragImage
|
(Facultatif) Objet BitmapData à afficher lors du glissement. L’image peut stipuler une valeur
alpha
. (Remarque : Microsoft Windows applique systématiquement un fondu alpha fixe aux images glissées.)
|
offset
|
(Facultatif) Objet Point qui stipule le décalage de l’image glissée par rapport à la zone sensible de la souris. Utilisez des coordonnées négatives pour déplacer l’image vers le haut et la gauche par rapport au curseur de la souris. Si vous ne définissez pas de décalage, l’angle gauche de l’image glissée est placé sur la zone sensible de la souris.
|
actionsAllowed
|
(Facultatif) Objet NativeDragOptions qui indique les actions (copie, déplacement ou liaison) gérées par l’opération de glissement. Si vous n’indiquez aucun argument, toutes les actions sont autorisées. L’objet DragOptions est référencé dans les objets NativeDragEvent pour permettre à la cible potentielle d’un glissement de vérifier si les actions autorisées sont compatibles avec l’objectif du composant cible. Par exemple, un composant « trash » est susceptible de n’accepter que les mouvements de glissement qui autorisent l’action de déplacement.
|
L’exemple suivant illustre le démarrage d’une opération de glissement d’un objet bitmap chargé à partir d’un fichier. L’exemple charge une image et, lors d’un événement
mouseDown
, démarre l’opération de glissement.
package
{
import flash.desktop.NativeDragManager;
import mx.core.UIComponent;
import flash.display.Sprite;
import flash.display.Loader;
import flash.system.LoaderContext;
import flash.net.URLRequest;
import flash.geom.Point;
import flash.desktop.Clipboard;
import flash.display.Bitmap;
import flash.filesystem.File;
import flash.events.Event;
import flash.events.MouseEvent;
public class DragOutExample extends UIComponent Sprite {
protected var fileURL:String = "app:/image.jpg";
protected var display:Bitmap;
private function init():void {
loadImage();
}
private function onMouseDown(event:MouseEvent):void {
var bitmapFile:File = new File(fileURL);
var transferObject:Clipboard = createClipboard(display, bitmapFile);
NativeDragManager.doDrag(this,
transferObject,
display.bitmapData,
new Point(-mouseX,-mouseY));
}
public function createClipboard(image:Bitmap, sourceFile:File):Clipboard {
var transfer:Clipboard = new Clipboard();
transfer.setData("bitmap",
image,
true);
// ActionScript 3 Bitmap object by value and by reference
transfer.setData(ClipboardFormats.BITMAP_FORMAT,
image.bitmapData,
false);
// Standard BitmapData format
transfer.setData(ClipboardFormats.FILE_LIST_FORMAT,
new Array(sourceFile),
false);
// Standard file list format
return transfer;
}
private function loadImage():void {
var url:URLRequest = new URLRequest(fileURL);
var loader:Loader = new Loader();
loader.load(url,new LoaderContext());
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
}
private function onLoadComplete(event:Event):void {
display = event.target.loader.content;
var flexWrapper:UIComponent = new UIComponent();
flexWrapper.addChild(event.target.loader.content);
addChild(flexWrapper);
flexWrapper.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
}
}
Achèvement d’un transfert par glissement vers l’extérieur
Lorsqu’un utilisateur dépose l’élément glissé en relâchant la souris, l’objet initiateur distribue un événement
nativeDragComplete
. Vous pouvez vérifier la propriété
dropAction
de l’objet événement, puis exécuter l’action appropriée. Par exemple, si l’action correspond à
NativeDragAction.MOVE,
, vous pourriez supprimer l’élément source de son emplacement d’origine. L’utilisateur peut abandonner un mouvement de glissement en relâchant le bouton de la souris lorsque le curseur figure en dehors d’une cible de dépôt appropriée. Le gestionnaire de glissement définit la propriété
dropAction
d’un mouvement abandonné sur
NativeDragAction.NONE
.
|
|
|