Unterstützung des HerausziehensAdobe AIR 1.0 und höher Damit das „Herausziehen“ unterstützt wird, müssen Sie als Reaktion auf ein mouseDown-Ereignis ein Clipboard-Objekt erstellen und es an die Methode NativeDragManager.doDrag() senden. Die Anwendung kann dann auf das nativeDragComplete-Ereignis des initialisierenden Objekts warten, um zu bestimmen, welche Aktion auszuführen ist, wenn der Benutzer die Bewegung abschließt oder auch abbricht. Vorbereiten der Daten für die ÜbertragungUm Daten oder ein Objekt für eine Ziehoperation vorzubereiten, erstellen Sie ein Clipboard-Objekt und fügen die zu übertragenden Informationen in einem oder mehreren Formaten hinzu. Sie können die Standarddatenformate verwenden, um Daten weiterzuleiten, die dann automatisch in native Clipboard-Formate oder von der Anwendung definierte Formate übersetzt werden können. Wenn die Konvertierung der zu übertragenden Informationen in ein bestimmtes Format zu rechenintensiv ist, können Sie den Namen einer Prozedurfunktion angeben, die die Konvertierung ausführt. Die Funktion wird nur dann aufgerufen, wenn das verbundene Format von der empfangenden Komponente oder Anwendung gelesen wird. Weitere Informationen zu Formaten, die in der Zwischenablage verwendet werden können, finden Sie unter Datenformate in der Zwischenablage. Das folgende Beispiel illustriert die Erstellung eines Clipboard-Objekts, das eine Bitmap in mehreren Formaten enthält: ein Bitmap-Objekt, ein natives Bitmap-Format und ein Dateilistenformat mit der Datei, aus der die Bitmap ursprünglich geladen wurde: 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;
}
Starten einer HerausziehoperationUm eine Ziehoperation zu starten, rufen Sie als Reaktion auf ein mouseDown-Ereignis die Methode NativeDragManager.doDrag() auf. Die doDrag()-Methode ist eine statische Methode, die die folgenden Parameter akzeptiert:
Das folgende Beispiel zeigt, wie Sie eine Ziehoperation für ein aus einer Datei geladenes Bitmap-Objekt starten: Das Beispiel lädt ein Bild und startet die Ziehoperation aufgrund eines mouseDown-Ereignisses. 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);
}
}
}
Abschließen einer HerausziehübertragungWenn ein Benutzer das gezogene Element ablegt, indem er die Maustaste loslässt, löst das Initiatorobjekt ein nativeDragComplete-Ereignis aus. Sie können die dropAction-Eigenschaft des Ereignisobjekts überprüfen und dann die entsprechende Aktion durchführen. Wenn die Aktion zum Beispiel NativeDragAction.MOVE ist, könnten Sie die Quelle von ihrer ursprünglichen Position entfernen. Der Benutzer kann eine Ziehbewegung abbrechen, indem er die Maustaste loslässt, solange sich der Cursor außerhalb eines zulässigen Ablageziels befindet. Der Ziehmanager setzt die dropAction-Eigenschaft einer abgebrochenen Bewegung auf NativeDragAction.NONE. |
|