Dışarı sürükleme hareketini desteklemeAdobe AIR 1.0 ve üstü Dışarı sürükleme hareketini desteklemek için, mouseDown olayına yanıt olarak bir Clipboard nesnesi oluşturmalı ve NativeDragManager.doDrag() yöntemine göndermelisiniz. Ardından uygulamanız, kullanıcı hareketi tamamladığında veya iptal ettiğinde ne yapacağını belirlemek için başlatan nesnedeki nativeDragComplete olayını dinleyebilir. Verileri aktarım için hazırlamaVerileri veya bir nesneyi sürüklemeye hazırlamak için, bir Clipboard nesnesi oluşturun ve bir veya birden fazla biçimde aktarılacak bilgileri ekleyin. Otomatik olarak yerel pano biçimlerine çevrilebilecek verileri iletmek için standart veri biçimlerini ve nesneleri iletmek için uygulama tanımlı biçimleri kullanabilirsiniz. Belirli bir biçime aktarılacak bilgileri dönüştürmek hesaplama yönünden pahalıysa, dönüştürmeyi gerçekleştirmesi için bir işleyici işlevinin adını verebilirsiniz. Yalnızca alıcı bileşen veya uygulama ilişkilendirilen biçimi okursa işlev çağrılır. Pano biçimleri hakkında daha fazla bilgi edinmek için bkz. Pano veri biçimleri. Aşağıdaki örnek birçok biçimde bitmap içeren bir Clipboard nesnesinin nasıl oluşturulacağını gösterir: bir Bitmap nesnesi, bir yerel bitmap biçimi ve bitmap'in ilk yüklendiği dosyayı içeren bir dosya listesi biçimi: 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ışarı sürükleme işlemi başlatmaBir sürükleme işlemi başlatmak için, mouse down olayına yanıt olarak NativeDragManager.doDrag() yöntemini çağırın. doDrag() yöntemi, aşağıdaki parametreleri alan statik bir yöntemdir:
Aşağıdaki örnek bir dosyadan yüklenen bitmap nesnesi için sürükleme işleminin nasıl başlatılacağını anlatır. Örnek, bir görüntü yükler ve bir mouseDown olayında sürükleme işlemini başlatır. 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); } } } Dışarı sürükleme aktarımını tamamlamaKullanıcı sürüklenen öğeyi fare düğmesini serbest bırakarak bıraktığında, başlatıcı nesne bir nativeDragComplete olayı gönderir. Olay nesnesinin dropAction özelliğini kontrol edip uygun eylemi gerçekleştirebilirsiniz. Örneğin eylem NativeDragAction.MOVE, olduğunda, kaynak öğeyi orijinal konumundan kaldırabilirsiniz. Kullanıcı, imleç uygun bir bırakma hedefinin dışındayken, fare düğmesini serbest bırakarak sürükleme hareketini iptal edebilir. Sürükleme yöneticisi iptal edilmiş bir hareket için dropAction özelliğini NativeDragAction.NONE olarak ayarlar. |
|