Pacchetto | flash.desktop |
Classe | public class NativeDragManager |
Ereditarietà | NativeDragManager Object |
Versioni runtime: | AIR 1.0 |
Potete trasferire i seguenti tipi di dati:
- Bitmap
- File
- Testo
- Stringhe URL
- Oggetti serializzati
- I riferimenti agli oggetti (validi solo all'interno dell'applicazione di origine)
Nota: tutti i membri di NativeDragManager sono statici. Non è necessario creare un'istanza di questa classe.
Un'operazione di trascinamento e rilascio è una manovra eseguibile dall'interfaccia utente in cui l'utente fa clic su un oggetto visibile e lo trascina in un'altra posizione. Durante il trascinamento, gli oggetti interattivi nell'elenco di visualizzazione inviano eventi di trascinamento nativi a mano a mano che la manovra viene eseguita nella finestra dell'applicazione AIR. I gestori di questi eventi possono chiamare i metodi della classe NativeDragManager per indicare se un elemento trascinato può essere rilasciato su un oggetto. In risposta, NativeDragManager modifica il puntatore del mouse per fornire un feedback all'utente.
Supporto profili AIR: questa funzione non è supportata nei dispositivi AIR per TV. Inoltre, non è supportata in tutti i dispositivi mobili. È possibile verificare se la funzionalità è supportata in fase runtime utilizzando la proprietà NativeDragManager.isSupported
. Per ulteriori informazioni sul supporto delle API tra più profili, vedete Supporto dei profili AIR.
Azioni di trascinamento
Le manovre di trascinamento e rilascio vengono generalmente utilizzate per eseguire tre diversi tipi di operazioni, chiamate azioni. Poiché il significato di queste azioni dipende dal contesto dell'applicazione, durante l'esecuzione del runtime non viene applicato alcun comportamento specifico in relazione a tali azioni. Tuttavia, un'implementazione accurata di queste azioni migliora l'esperienza dell'utente con l'applicazione.
Le azioni possibili sono:
- Copy: viene eseguita una copia dei dati lasciando l'originale invariato. Se si trascinano oggetti all'interno di una stessa applicazione, è necessario fare attenzione a copiare l'oggetto originale e non un suo riferimento.
- Move: i dati vengono spostati dal contesto originale al contesto definito dal target di rilascio, come, ad esempio, quando si sposta un oggetto da un elenco a un altro.
- Link: viene creato un riferimento o un collegamento rapido ai dati originali, senza spostare l'oggetto dal contesto originale.
Per impostare le azioni consentite per una manovra di trascinamento, indicate un parametro allowedActions
nella chiamata NativeDragManager.doDrag()
che dà inizio all'operazione di trascinamento. Se non viene fornito alcun parametro allowedActions
, tutte le azioni saranno consentite. I potenziali target di trascinamento possono verificare quali azioni sono consentite utilizzando la proprietà allowedActions
di un oggetto NativeDragEvent, in modo da non accettare rilasci che permettano solo azioni incompatibili (che non vengono tuttavia applicate all'esecuzione del runtime).
Se un target di rilascio implementa solo una singola azione, l'oggetto può impostare la proprietà dropAction
di NativeDragManager nei gestori di entrambi gli eventi nativeDragEnter
e nativeDragOver
. L'impostazione della proprietà prima del rilascio consente al gestore di trascinamento di aggiornare il puntatore del mouse per indicare l'azione supportata e impedire all'utente di scegliere un'azione non compatibile utilizzando i tasti di modifica. Se l'azione specificata non è una delle azioni consentite, il rilascio non è permesso anche se il target chiama il metodo acceptDrop()
.
In fase di accettazione di un rilascio, il potenziale target di rilascio deve specificare l'azione scelta impostando la proprietà NativeDragManager.dropAction
in risposta all'evento nativeDragDrop
. Tale azione viene risegnalata all'oggetto di visualizzazione da cui è partita l'operazione, nell'evento nativeDragComplete
. Se un target di rilascio non definisce alcuna azione, viene scelta un'azione predefinita tra le azioni consentite, nel seguente ordine di precedenza: copy, move, link. L'oggetto da cui è partita l'operazione è responsabile dell'aggiornamento del suo stato interno in risposta all'azione selezionata.
Le costanti di stringa relative ai nomi delle azioni sono definite nella classe NativeDragActions.
Sequenza di eventi
Una manovra di trascinamento viene avviata mediante una chiamata al metodo NativeDragManager.doDrag()
nell'ambito di un gestore di eventi mouseDown
o mouseMove
e procede attraverso la sequenza di eventi seguente, in risposta alle azioni dell'utente:
- Evento
nativeDragStart
: quando viene chiamatoNativeDragManager.doDrag()
, l'oggetto interattivo passato al metodo come parametro diventa l'oggetto iniziatore e invia un eventonativeDragStart
. - Evento
nativeDragUpdate
: durante il trascinamento, l'oggetto iniziatore continua a inviare eventinativeDragUpdate
. - Eventi
nativeDragEnter
,nativeDragOver
: quando una manovra di trascinamento passa sopra un oggetto interattivo, tale oggetto invia un eventonativeDragEnter
. Quando la manovra di trascinamento si trova sopra l'oggetto interattivo, esso continua a inviare eventinativeDragOver
. In risposta a uno di questi eventi, un oggetto che funge da potenziale target di rilascio deve verificare le proprietà dell'oggetto evento e decidere se può accettare il rilascio. Se il formato dei dati e le azioni consentite sono appropriati, il gestore di questi eventi deve chiamareNativeDragManager.acceptDrop()
, passando un riferimento all'oggetto di visualizzazione che funge da target di trascinamento (in genere, l'oggetto che ha inviato l'eventonativeDragEnter
onativeDragOver
). A questo punto, l'utente può rilasciare l'oggetto trascinato sul target. - Evento
nativeDragExit
: quando una manovra di trascinamento passa al di fuori di un oggetto interattivo, l'oggetto invia un eventonativeDragExit
. Se l'oggetto è stato designato come target di trascinamento da una precedente chiamata al metodoNativeDragManager.acceptDrop()
, tale chiamata non è più considerata valida eacceptDrop()
deve essere richiamato se la manovra immette di nuovo l'oggetto interattivo. - Evento
nativeDragDrop
: l'oggetto di visualizzazione target invia un eventonativeDragDrop
quando l'utente rilascia il pulsante del mouse sopra l'oggetto. Il gestore di questo evento può accedere ai dati contenuti nella proprietàtransferable
dell'oggetto evento e deve impostare la proprietàNativeDragManager.dropAction
in modo che segnali quale azione deve essere intrapresa dall'oggetto iniziatore. - Evento
nativeDragComplete
: quando l'utente rilascia il pulsante del mouse al termine dell'operazione di trascinamento, l'oggetto iniziatore invia un eventonativeDragComplete
(a prescindere dall'esito del rilascio). Il gestore di questo evento può verificare la proprietàdropAction
dell'oggetto evento per determinare quali modifiche, se necessarie, devono essere apportate allo stato interno dei suoi dati, ad esempio, rimuovere da un elenco un oggetto che è stato spostato. SedropAction
èNativeDragActions.NONE
, significa che l'oggetto trascinato non è stato rilasciato su un target idoneo.
Operazioni tra applicazioni
Se durante una manovra di trascinamento accedete alla finestra di un'applicazione AIR da un'applicazione non AIR, non vi sarà alcun oggetto iniziatore che invia l'evento nativeDragStart
o l'evento nativeDragComplete
. Gli eventi inviati durante la manovra seguiranno per il resto lo stesso schema di quelli di una manovra avviata e terminata all'interno della stessa applicazione AIR.
Quando una manovra di trascinamento esce dalla finestra di un'applicazione AIR, nessun oggetto target invia gli eventi nativeDragEnter
, nativeDragOver
o nativeDragDrop
. L'oggetto iniziatore invia comunque un evento nativeDragComplete
, che segnala l'azione di trascinamento impostata dal sistema operativo nativo (oppure none
, se il rilascio non viene accettato).
Quando una manovra di trascinamento passa da un'applicazione AIR a un'altra, gli oggetti di visualizzazione iniziatore e target inviano eventi all'interno delle relative applicazioni come di consueto.
Trasferimento di informazioni
I dati trasferiti durante un'operazione di trascinamento e rilascio sono contenuti in un oggetto Clipboard. Tale oggetto di dati viene inserito nell'operazione di trascinamento con il metodo NativeDragManager.doDrag()
, che dà inizio alla manovra di trascinamento. I potenziali target di rilascio possono accedere all'oggetto Clipboard dalla proprietà clipboard
dell'oggetto evento di trascinamento nativo. Dopo l'avvio di un'operazione di trascinamento, l'accesso all'oggetto Clipboard può avvenire unicamente nel gestore di un evento NativeDragEvent. Qualsiasi altro tentativo di accedere a tale oggetto genera un errore di runtime.
Considerazioni relative alla sicurezza
Le sandbox di sicurezza degli oggetti iniziatore e potenziale target determinano la modalità di accesso ai dati che vengono trascinati. Se entrambi gli oggetti si trovano nella stessa sandbox, i dati sono accessibili da un qualsiasi oggetto NativeDragEvent. Tuttavia, se gli oggetti iniziatore e target si trovano in sandbox differenti, i dati saranno accessibili unicamente nella sandbox target, all'interno del gestore di eventi dell'evento nativeDragDrop
. Gli altri gestori di eventi di trascinamento nativi possono comunque accedere all'oggetto Clipboard al quale si fa riferimento nella proprietà clipboard
dell'evento per determinare quali formati di dati sono disponibili; tuttavia, una chiamata al metodo clipboard.getData()
genera un errore di sicurezza.
Altri esempi
Elementi API correlati
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard
Proprietà | Definito da | ||
---|---|---|---|
constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | ||
dragInitiator : InteractiveObject [statico] [sola lettura]
L'oggetto interattivo passato alla chiamata NativeDragManager.doDrag() che ha avviato l'operazione di trascinamento. | NativeDragManager | ||
dropAction : String [statico]
L'azione di trascinamento specificata dal target di rilascio. | NativeDragManager | ||
isDragging : Boolean [statico] [sola lettura]
Segnala se un'operazione di trascinamento è in corso. | NativeDragManager | ||
isSupported : Boolean [statico] [sola lettura]
La proprietà isSupported è impostata su true se la classe NativeDragManager è supportata nella piattaforma corrente, altrimenti è impostata su false. | NativeDragManager |
Metodo | Definito da | ||
---|---|---|---|
[statico]
Informa l'oggetto NativeDragManager che l'oggetto interattivo target specificato può accettare un rilascio corrispondente all'evento di trascinamento corrente. | NativeDragManager | ||
doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void [statico]
Avvia un'operazione di trascinamento e rilascio. | NativeDragManager | ||
Indica se per un oggetto è definita una proprietà specifica. | Object | ||
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object |
dragInitiator | proprietà |
dragInitiator:InteractiveObject
[sola lettura] Versioni runtime: | AIR 1.0 |
L'oggetto interattivo passato alla chiamata NativeDragManager.doDrag()
che ha avviato l'operazione di trascinamento.
Implementazione
public static function get dragInitiator():InteractiveObject
dropAction | proprietà |
dropAction:String
Versioni runtime: | AIR 1.0 |
L'azione di trascinamento specificata dal target di rilascio.
La proprietà dropAction
deve essere impostata nel gestore dell'evento nativeDragDrop
. Se dropAction
non viene impostato prima di nativeDragComplete
, NativeDragManager imposta la prima azione consentita dell'elenco: copy, move o link (in questo ordine).
Implementazione
public static function get dropAction():String
public static function set dropAction(value:String):void
Elementi API correlati
isDragging | proprietà |
isSupported | proprietà |
isSupported:Boolean
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 2 |
La proprietà isSupported
è impostata su true
se la classe NativeDragManager è supportata nella piattaforma corrente, altrimenti è impostata su false
.
Implementazione
public static function get isSupported():Boolean
acceptDragDrop | () | metodo |
public static function acceptDragDrop(target:InteractiveObject):void
Versioni runtime: | AIR 1.0 |
Informa l'oggetto NativeDragManager che l'oggetto interattivo target specificato può accettare un rilascio corrispondente all'evento di trascinamento corrente.
Questo metodo deve essere chiamato unicamente se sull'oggetto target specificato è presente un gestore nativeDragDrop
in grado di gestire almeno uno dei formati di dati presenti nell'oggetto trascinato e almeno una delle azioni consentite.
Questa funzione può essere chiamata esclusivamente all'interno di un gestore di eventi nativeDragEnter
o nativeDragOver
.
Parametri
target:InteractiveObject |
doDrag | () | metodo |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
Versioni runtime: | AIR 1.0 |
Avvia un'operazione di trascinamento e rilascio.
Per avviare un'operazione di trascinamento:
- Create un nuovo oggetto Clipboard.
- Inserite i dati da trasferire in uno o più formati.
- Facoltativamente, create un oggetto BitmapData che funga da immagine proxy durante il trascinamento.
- Facoltativamente, create un oggetto NativeDragOptions per limitare le azioni consentite per l'operazione. (Se il parametro
allowedActions
non viene specificato, ovvero ènull
, tutte le azioni sono consentite.) - Chiamate
NativeDragManager.doDrag()
.
L'oggetto iniziatore invia un evento nativeDragStart
dopo la chiamata a questo metodo, una serie di eventi nativeDragStart
durante la manovra di trascinamento e un evento nativeDragComplete
quando l'utente rilascia il pulsante mouse per terminare l'operazione. Il gestore dell'evento nativeDragComplete
può verificare la proprietà dropAction
dell'evento per determinare se l'operazione di trascinamento e rilascio è stata portata a termine correttamente. Se dropAction
è NativeDragActions.NONE
, significa che l'oggetto trascinato non è stato rilasciato su un target idoneo.
Questo metodo può essere chiamato esclusivamente da un gestore di eventi mouseDown
o mouseMove
. Se chiamato in risposta a un evento mouseMove
, il pulsante del mouse deve essere premuto.
Parametri
dragInitiator:InteractiveObject — In genere, l'oggetto da cui ha avuto inizio l'operazione di trascinamento. Riceve gli eventi nativeDragStart e nativeDragComplete .
| |
clipboard:Clipboard — L'oggetto contenitore dei dati trascinati.
| |
dragImage:BitmapData (default = null ) — Un'immagine proxy opzionale visualizzata sotto il puntatore del mouse durante la manovra di trascinamento. Se il valore è null , non viene visualizzata alcuna immagine
| |
offset:Point (default = null ) — Valore di offset tra il punto attivo del mouse e l'angolo superiore sinistro dell'immagine trascinata. Coordinate negative consentono di spostare l'immagine verso l'alto e verso sinistra rispetto al punto attivo. Se il valore è null , l'angolo superiore sinistro dell'immagine trascinata viene posizionato in corrispondenza del punto attivo del mouse.
| |
allowedActions:NativeDragOptions (default = null ) — Limita le azioni di trascinamento e rilascio consentite per questa operazione. Se il valore è null , sono consentite tutte le azioni.
|
Elementi API correlati
Tue Jun 12 2018, 02:44 PM Z