Stöd för utdragningsgestenAdobe AIR 1.0 och senare Om du vill ha stöd för utdragningsgesten måste du skapa ett Clipboard-objekt som svar på en mouseDown-händelse och skicka det till metoden NativeDragManager.doDrag(). Programmet kan sedan avlyssna händelsen nativeDragComplete för initieringsobjektet för att ta reda på vilken åtgärd som ska utföras när användaren slutför eller avbryter gesten. Förbereda data för överföringDu förbereder data eller ett objekt för dragning genom att skapa ett Clipboard-objekt och lägga till den information som ska överföras i ett eller flera format. Du kan använda standarddataformaten för att skicka data, som kan översättas automatiskt till inbyggda urklippsformat, och programdefinierade format för att skicka objekt. Om det är resurskrävande att konvertera den information som ska överföras till ett visst format kan du ange namnet på en hanterarfunktion som utför konverteringen. Funktionen anropas bara om mottagande komponent eller program läser det tillhörande formatet. Mer information om urklippsformat finns i Format för Clipboard-data. I följande exempel visas hur du skapar ett Clipboard-objekt som innehåller en bitmapp i flera format: ett Bitmap-objekt, ett inbyggt bitmappsformat och ett fillisteformat som innehåller filen som bitmappen ursprungligen lästes in från: 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; } Starta en utdragningsåtgärdDu startar en dragningsåtgärd genom att anropa metoden NativeDragManager.doDrag() som svar på en mouseDown-händelse. Metoden doDrag() är en statisk metod som använder följande parametrar:
I följande exempel visas hur du startar en dragningsåtgärd för ett bitmappsobjekt som har lästs in från en fil. Exemplet läser in en bild och, vid en mouseDown-händelse, startar en dragningsåtgärd. 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); } } } Slutföra utdragningsöverföringenNär en användare släpper det dragna objektet genom att släppa upp musknappen skickar initieringsobjektet en nativeDragComplete-händelse. Du kan kontrollera egenskapen dropAction för händelseobjektet och sedan vidta rätt åtgärd. Om åtgärden till exempel är NativeDragAction.MOVE kan du ta bort källobjektet från dess ursprungliga plats. Användaren kan avbryta en dragningsgest genom att släppa upp musknappen medan markören finns utanför ett möjligt släppmål. Draghanteraren ställer in egenskapen dropAction för en avbruten gest på NativeDragAction.NONE. |
|