Suporte ao gesto de arrastar para foraAdobe AIR 1.0 e posterior Para suportar o gesto de arrastar para fora, você deve criar um objeto Clipboard em resposta a um evento mouseDown e enviá-lo ao método NativeDragManager.doDrag(). Seu aplicativo pode então ouvir o evento nativeDragComplete sobre o objeto iniciador para determinar que ação tomar quando o usuário conclui ou abandona o gesto. Preparação de dados para transferênciaPara preparar dados ou um objeto para arrastar, crie um objeto Clipboard e adicione as informações a serem transferidas em um ou mais formatos. Você pode usar os formatos de dados padrão para passar dados, que podem ser convertidos automaticamente em formatos nativos da área de transferência e em formatos definidos pelo aplicativo para passar objetos. Se, do ponto de vista computacional, for caro converter as informações a serem transferidas para um formato específico, você pode fornecer o nome de uma função de manipulador para realizar a conversão. A função é chamada se, e apenas se, o componente ou aplicativo receptor ler o formato associado. Para mais informações sobre formatos de área de transferência, veja Formatos de dados da área de transferência. O exemplo a seguir ilustra como criar um objeto Clipboard contendo um bitmap em vários formatos: um objeto Bitmap, um formato de bitmap nativo e um formato da lista de arquivo contendo o arquivo do qual o bitmap foi originalmente carregado: 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;
}
Início de uma operação de arrastar e soltarPara iniciar uma operação de arrastar, chame o método NativeDragManager.doDrag() em resposta a um evento de mouse para baixo. O método doDrag() é um método estático que adota os seguintes parâmetros:
O exemplo a seguir ilustra como iniciar uma operação de arrastar para um objeto de bitmap carregado de um arquivo. O exemplo carrega uma imagem e, em um evento mouseDown, inicia a operação de arrastar. 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);
}
}
}
Conclusão de uma transferência de arrastar para foraQuando um usuário solta o item arrastado liberando o mouse, o objeto iniciador despacha um evento nativeDragComplete. Você pode verificar a propriedade dropAction do objeto de evento e executar a ação apropriada. Por exemplo, se a ação for NativeDragAction.MOVE, você poderia remover o item de origem de seu local original. O usuário pode abandonar um gesto de arrastar liberando o botão do mouse enquanto o cursor está fora de um destino de arrastar aceitável. O gerente de arrastar define a propriedade dropAction para um gesto abandonado a NativeDragAction.NONE. |
|