Prise en charge du mouvement de glissement vers l’extérieurAdobe AIR 1.0 et ultérieur 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érerPour 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érieurPour 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 :
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érieurLorsqu’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. |
|