Nozioni fondamentali sul trascinamento in AIR

Adobe AIR 1.0 e versioni successive

Per una spiegazione rapida ed esempi di codice sull'utilizzo del trascinamento in un'applicazione AIR, vedete i seguenti articoli delle Guide rapide in Centro per sviluppatori Adobe:

L'API di trascinamento contiene le seguenti classi.

Pacchetto

Classi

flash.desktop

Le costanti utilizzate con l'API di trascinamento sono definite nelle classi seguenti:

flash.events

NativeDragEvent

Fasi del movimento di trascinamento

Il movimento di trascinamento presenta tre fasi:

Avvio
Un utente avvia un'operazione di trascinamento partendo da un componente, oppure un elemento in un componente, tenendo premuto il pulsante del mouse. Il componente che è l'origine dell'elemento trascinato è di solito definito quale promotore (initiator) del trascinamento e invia eventi nativeDragStart e nativeDragComplete . Un'applicazione Adobe AIR avvia un'operazione di trascinamento chiamando il metodo NativeDragManager.doDrag() in risposta a un evento mouseDown o mouseMove .

Se l'operazione di trascinamento inizia dall'esterno di un'applicazione AIR, non è presente alcun oggetto promotore che possa inviare gli eventi nativeDragStart o nativeDragComplete .

Trascinamento
Tenendo premuto il pulsante del mouse, l'utente sposta il cursore del mouse su un altro componente, applicazione o sul desktop. Durante lo svolgimento del trascinamento, l'oggetto promotore invia eventi nativeDragUpdate . (Tale evento non è tuttavia inviato in AIR per Linux.) Quando l'utente sposta il mouse su una possibile destinazione di trascinamento in un'applicazione AIR, tale destinazione invia un evento nativeDragEnter . Il gestore eventi può ispezionare l'oggetto evento al fine di determinare se sono disponibili i dati trascinati in un formato che la destinazione accetta e, in tal caso, consente all'utente di rilasciare i dati su di esso chiamando il metodo NativeDragManager.acceptDragDrop() .

Mentre il movimento di trascinamento resta su un oggetto interattivo, questo invia eventi nativeDragOver . Quando il movimento di trascinamento lascia l'oggetto interattivo, invia un evento nativeDragExit .

Rilascio
L'utente rilascia il mouse su un'idonea destinazione di rilascio. Se la destinazione è un'applicazione o un componente AIR, l'oggetto di destinazione invia un evento nativeDragDrop . Il gestore eventi può accedere ai dati trasferiti dall'oggetto evento. Se la destinazione è esterna ad AIR, il sistema operativo o un'altra applicazione gestisce il rilascio. In entrambi i casi, l'oggetto promotore invia un evento nativeDragComplete (qualora il trascinamento sia iniziato dall'interno dell'AIR).

La classe NativeDragManager controlla i movimenti di trascinamento verso interno ed esterno. Tutti i membri della classe NativeDragManager sono statici; non creano un'istanza di questa classe.

Oggetto Clipboard

I dati trascinanti all'interno o all'esterno di un'applicazione o un componente sono contenuti in un oggetto Clipboard. Un singolo oggetto Clipboard consente di rendere disponibili diverse rappresentazioni delle stesse informazioni per aumentare la probabilità che un'altra applicazione sia in grado di comprendere e utilizzare i dati. Ad esempio, è possibile includere un'immagine come dati di immagine, un oggetto Bitmap serializzato, e come file. Il rendering dei dati in un formato può essere rimandato a una funzione di rendering che non viene chiamata fino alla lettura dei dati.

Una volta iniziato un movimento di trascinamento, è possibile accedere all'oggetto Clipboard solo dall'interno di un gestore eventi per eventi nativeDragEnter , nativeDragOver e nativeDragDrop . Al termine del movimento di trascinamento, non è possibile leggere o riutilizzare l'oggetto Clipboard.

È possibile trasferire un oggetto applicazione come riferimento e come oggetto serializzato. I riferimenti sono validi solo all'interno dell'applicazione di origine. I trasferimenti di oggetti serializzati sono validi tra applicazioni AIR, ma possono essere utili solo con oggetti che restano validi se serializzati e deserializzati. Gli oggetti serializzati sono convertiti nell'Action Message Format per ActionScript 3 (AMF3), un formato di trasferimento dati basato su stringa.

Operazioni con il framework Flex

Nella maggioranza dei casi, è meglio utilizzare l'API di trascinamento Adobe® Flex™ quando si creano applicazioni Flex. Il framework Flex offre una funzione equivalente impostata quando un'applicazione Flex viene eseguita in AIR (utilizza AIR NativeDragManager internamente). Flex mantiene inoltre una funzione più limitata impostata quando si esegue un'applicazione o un componente all'interno dell'ambiente browser più restrittivo. Le classi AIR non possono essere utilizzate in componenti o applicazioni eseguiti esternamente all'ambiente di run-time AIR.