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ırlama
Verileri 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şlatma
Bir 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:
Parametre
|
Açıklama
|
initiator
|
Sürükleme işleminin kaynaklandığı ve
dragStart
ve
dragComplete
olaylarını gönderen nesne. Başlatıcı etkileşimli bir nesne olmalıdır.
|
clipboard
|
Aktarılacak verileri içeren Clipboard nesnesi. Clipboard nesnesine, sürükleme ve bırakma sırası boyunca gönderilen NativeDragEvent nesnelerinde başvurulur.
|
dragImage
|
(İsteğe bağlı) Sürükleme sırasında görüntülenecek bir BitmapData nesnesi. Görüntü bir
alpha
değeri belirtebilir. (Not: Microsoft Windows görüntüleri sürüklemek için her zaman sabit alfa soldurma uygular.)
|
offset
|
(İsteğe bağlı) Sürükleme görüntüsünün fare etkin noktasından uzaklığını belirten Point nesnesi. Sürükleme görüntüsünü fare imlecine göre yukarı ve sola taşımak için negatif koordinatlar kullanın. Uzaklık sağlanmamışsa, sürükleme görüntüsünün sol üst köşesi farenin etkin noktasında konumlandırılmıştır.
|
actionsAllowed
|
(İsteğe bağlı) Sürükleme işlemi için hangi eylemlerin (kopyala, taşı veya bağla) geçerli olduğunu belirten bir NativeDragOptions nesnesi. Hiç argüman sağlanmamışsa, tüm eylemlere izin verilir. Olası bir sürükleme hedefinin izin verilen eylemlerin hedef bileşenin amacına uygun olup olmadığını kontrol etmesini sağlamak için NativeDragEvent nesnelerinde DragOptions nesnesine başvurulur. Örneğin “trash” bileşeni yalnızca taşıma eylemine izin veren sürükleme hareketlerini kabul edebilir.
|
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ı tamamlama
Kullanı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.
|
|
|