Dışarı sürükleme hareketini destekleme

Adobe 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ı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.