Package | flash.desktop |
Classe | public class NativeDragManager |
Héritage | NativeDragManager Object |
Versions du moteur d’exécution: | AIR 1.0 |
Les types de données suivants peuvent être transférés :
- Images bitmap
- Fichiers
- Texte
- Chaînes URL
- Objets sérialisés
- Références d’objet (valides uniquement dans l’application d’origine)
Remarque : tous les membres NativeDragManager sont statiques. Il n’est pas nécessaire de créer une occurrence de cette classe.
Une opération de glisser-déposer est un geste de l’interface utilisateur qui commence lorsque l’utilisateur clique sur un élément visible et le fait glisser vers un autre emplacement. Pendant l’action de déplacement, les objets interactifs de la liste d’affichage distribuent des événements de déplacement natifs tout au long du déplacement à travers la fenêtre de l’application AIR. Des gestionnaires de ces événements peuvent appeler les méthodes de la classe NativeDragManager pour indiquer si l’élément déplacé peut être déposé sur un objet. En réponse, la classe NativeDragManager change le pointeur de la souris pour prévenir l’utilisateur.
Prise en charge du profil AIR : cette fonctionnalité n’est pas prise en charge sur les périphériques AIR pour TV. En outre, elle n’est pas prise en charge sur tous les périphériques mobiles. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété NativeDragManager.isSupported
. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.
Actions de déplacement
Les gestes de glisser-déposer sont généralement utilisés pour trois types d’opérations appelées actions. Comme la signification de ces actions dépend du contexte de l’application, le moteur d’exécution n’impose pas un comportement particulier par rapport à ces actions. Toutefois, une implémentation appropriée des actions améliore la convivialité de votre application pour l’utilisateur.
Les actions possibles sont :
- Copie : une copie des données est faite, sans que l’original n’en soit affecté (lors du déplacement d’objets au sein d’une application, faites attention à copier l’objet original lui-même plutôt que sa référence).
- Déplacement : les données sont déplacées du contexte d’origine vers le contexte défini par la cible visée, par exemple lors du déplacement d’un élément d’une liste à une autre.
- Lien : une référence ou un raccourci des données d’origine est créé, l’élément lui-même demeurant dans son contexte original.
Les actions autorisées pour un geste de déplacement peuvent être définies en fournissant un paramètre allowedActions
dans l’appel NativeDragManager.doDrag()
qui lance l’opération de déplacement. Si aucun paramètre allowedActions
n’est fourni, toutes les actions sont autorisées. Les cibles de déplacement potentielles peuvent vérifier les actions autorisées à l’aide de la propriété allowedActions
d’un objet NativeDragEvent, et ne doivent pas accepter de dépôt autorisant uniquement des actions incompatibles (cela n’est toutefois pas imposé par le moteur d’exécution).
Si la cible de dépôt n’implémente qu’une seule action, l’objet peut définir la propriété dropAction
de NativeDragManager dans les gestionnaires des événements nativeDragEnter
et nativeDragOver
. La définition de la propriété avant le dépôt permet au gestionnaire de glissement d’actualiser le pointeur de la souris pour indiquer l’action prise en charge et empêcher l’utilisateur de choisir une action incompatible avec les touches de modification. Si l’action spécifiée ne correspond pas à l’une des actions autorisées, le dépôt n’est pas autorisé, même si la cible appelle la méthode acceptDrop()
.
Lorsqu’un dépôt est accepté, une cible de dépôt potentielle doit spécifier l’action choisie en définissant la propriété NativeDragManager.dropAction
en réponse à l’événement nativeDragDrop
. Cette action est signalée à l’objet d’affichage d’origine dans l’événement nativeDragComplete
. Lorsque aucune action n’est définie par la cible de dépôt, une action par défaut est choisie parmi les actions autorisées dans cet ordre de priorité : copie, déplacement, lien. L’objet d’origine est responsable de la mise à jour de son état interne en réponse à l’action choisie.
Les constantes de chaîne des noms d’action sont définies dans la classe NativeDragActions.
Séquence des événements
Le geste de déplacement commence par un appel à la méthode NativeDragManager.doDrag()
à l’intérieur d’un gestionnaire d’événement mouseDown
ou mouseMove
et suit la séquence d’événements suivante en réponse aux actions de l’utilisateur :
- Evénement
nativeDragStart
: lorsque la méthodeNativeDragManager.doDrag()
est appelée, l’objet interactif transmis sous forme de paramètre à la méthode devient l’objet initiateur et distribue un événementnativeDragStart
. - Evénement
nativeDragUpdate
: pendant que le déplacement se poursuit, l’objet initiateur distribue continuellement des événementsnativeDragUpdate
. - Evénements
nativeDragEnter
,nativeDragOver
: lorsqu’un geste de déplacement survole un objet interactif, ce dernier déclenche un événementnativeDragEnter
. Tant que le geste de déplacement survole l’objet interactif, celui-ci déclenche continuellement des événementsnativeDragOver
. En réponse à l’un de ces événements, l’objet qui sert de cible de dépôt potentielle doit vérifier les propriétés de l’objet d’événement pour savoir s’il peut accepter le dépôt. Si le format des données et les actions autorisées sont appropriés, le gestionnaire de ces événements doit appeler la méthodeNativeDragManager.acceptDrop()
, en transmettant une référence à l’objet d’affichage servant de cible de glissement (généralement l’objet qui a déclenché l’événementnativeDragEnter
ounativeDragOver
). L’utilisateur peut alors déposer l’élément déplacé sur sa cible. - Evénement
nativeDragExit
: lorsque le geste de déplacement quitte un objet interactif, ce dernier déclenche un événementnativeDragExit
. Si l’objet a été désigné comme la cible de dépôt par un appel précédent à la méthodeNativeDragManager.acceptDrop()
, cet appel n’est plus valide et la méthodeacceptDrop()
doit être appelée de nouveau si le geste revient survoler l’objet interactif. - Evénement
nativeDragDrop
: l’objet d’affichage cible déclenche un événementnativeDragDrop
lorsque l’utilisateur relâche le bouton de sa souris sur l’objet. Le gestionnaire de cet événement peut accéder aux données de la propriététransferable
de l’objet d’événement et doit définir la propriétéNativeDragManager.dropAction
pour signaler l’action que doit effectuer l’objet initiateur. - Evénement
nativeDragComplete
: lorsque l’utilisateur relâche le bouton de la souris à la fin du déplacement, l’objet initiateur déclenche un événementnativeDragComplete
(que le dépôt lui-même ait été consommé ou non). Le gestionnaire de cet événement peut vérifier la propriétédropAction
de l’objet d’événement pour savoir quelle modification, le cas échéant, doit être apportée à son état de données interne, telle que la suppression d’un élément sorti d’une liste. SidropAction
estNativeDragActions.NONE
, l’élément déplacé n’a pas été déposé sur une cible qualifiée.
Gestes entre applications
Lorsqu’un geste de déplacement entre dans une fenêtre d’application AIR à partir d’une application non AIR, aucun objet initiateur ne déclenche l’événement nativeDragStart
ou nativeDragComplete
. Autrement, les événements déclenchés au cours du geste suivent le même schéma que dans un geste commençant et se terminant au sein de la même application AIR.
Lorsqu’un geste de déplacement quitte la fenêtre d’une application AIR, aucun objet cible ne déclenche les événements nativeDragEnter
, nativeDragOver
ou nativeDragDrop
. L’objet initiateur déclenche toujours un événement nativeDragComplete
, qui signale l’action de déplacement définie par le système d’exploitation natif (ou aucune
si le dépôt n’a pas été accepté).
Lorsqu’un geste de déplacement passe d’une application AIR à une autre, les objets d’affichage initiateur et cible déclenchent des événements dans leurs applications respectives, comme d’habitude.
Transfert des informations
Les données transférées au cours d’un geste de glisser-déposer sont renfermées dans un objet Clipboard. Cet objet de données est ajouté à l’opération de déplacement avec la méthode NativeDragManager.doDrag()
à l’origine du geste. Les cibles de dépôt potentielles peuvent accéder à l’objet Clipboard par l’intermédiaire de la propriété clipboard
de l’objet d’événement de déplacement natif. Après le démarrage d’une opération de déplacement, l’objet Clipboard ne peut plus être accédé que dans le gestionnaire d’un événement NativeDragEvent. Tout autre tentative d’accès à l’objet génère une erreur à l’exécution.
Considérations de sécurité
Les sandbox de sécurité des objets initiateur et cible potentielle déterminent comment accéder aux données déplacées. Si les deux objets se trouvent dans le même sandbox, tout objet NativeDragEvent peut alors accéder aux données. Toutefois, si les objets initiateur et cible potentielle sont dans des sandbox différents, les données ne sont accessibles que dans le sandbox cible à l’intérieur du gestionnaire de l’événement nativeDragDrop
. D’autres gestionnaires d’événement de déplacement natifs peuvent toujours accéder à l’objet Clipboard référencé dans la propriété clipboard
de l’événement pour identifier les formats de données disponibles, mais un appel à la méthode clipboard.getData()
génère une erreur de sécurité.
Plus d’exemples
Eléments de l’API associés
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard
Propriété | Défini par | ||
---|---|---|---|
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
dragInitiator : InteractiveObject [statique] [lecture seule]
Objet interactif transmis à l’appel NativeDragManager.doDrag() à l’origine de l’opération de déplacement. | NativeDragManager | ||
dropAction : String [statique]
Action de déplacement définie par la cible de dépôt. | NativeDragManager | ||
isDragging : Boolean [statique] [lecture seule]
Indique si une opération de déplacement est actuellement en cours. | NativeDragManager | ||
isSupported : Boolean [statique] [lecture seule]
La propriété isSupported est définie sur true si la classe NativeDragManager est prise en charge sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false. | NativeDragManager |
Méthode | Défini par | ||
---|---|---|---|
[statique]
Indique à l’objet NativeDragManager que l’objet interactif cible spécifié peut accepter un dépôt correspondant à l’événement de déplacement en cours. | NativeDragManager | ||
doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void [statique]
Commence une opération de glisser-déposer. | NativeDragManager | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object |
dragInitiator | propriété |
dragInitiator:InteractiveObject
[lecture seule] Versions du moteur d’exécution: | AIR 1.0 |
Objet interactif transmis à l’appel NativeDragManager.doDrag()
à l’origine de l’opération de déplacement.
Implémentation
public static function get dragInitiator():InteractiveObject
dropAction | propriété |
dropAction:String
Versions du moteur d’exécution: | AIR 1.0 |
Action de déplacement définie par la cible de dépôt.
La propriété dropAction
doit être définie dans le gestionnaire pour l’événement nativeDragDrop
. Si la propriété dropAction
n’est pas définie avant nativeDragComplete
, NativeDragManager définit automatiquement la valeur sur la première action autorisée de la liste : copie, déplacement, lien (dans cette ordre).
Implémentation
public static function get dropAction():String
public static function set dropAction(value:String):void
Eléments de l’API associés
isDragging | propriété |
isSupported | propriété |
isSupported:Boolean
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
La propriété isSupported
est définie sur true
si la classe NativeDragManager est prise en charge sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false
.
Implémentation
public static function get isSupported():Boolean
acceptDragDrop | () | méthode |
public static function acceptDragDrop(target:InteractiveObject):void
Versions du moteur d’exécution: | AIR 1.0 |
Indique à l’objet NativeDragManager que l’objet interactif cible spécifié peut accepter un dépôt correspondant à l’événement de déplacement en cours.
Cette méthode ne peut être appelée que lorsque l’objet cible spécifié contient un gestionnaire nativeDragDrop
capable de gérer au moins l’un des formats de données dans l’élément déplacé et au moins l’une des actions autorisées.
Cette fonction ne peut être appelée qu’à l’intérieur d’un gestionnaire d’événement nativeDragEnter
ou nativeDragOver
.
Paramètres
target:InteractiveObject |
doDrag | () | méthode |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
Versions du moteur d’exécution: | AIR 1.0 |
Commence une opération de glisser-déposer.
Pour commencer une opération de déplacement :
- Créez un nouvel objet Clipboard.
- Ajoutez les données à transférer en un ou plusieurs formats.
- Eventuellement, créez un objet BitmapData devant servir d’image proxy pendant le déplacement.
- Eventuellement, créez un objet NativeDragOptions pour limiter les actions autorisées dans cette opération (si le paramètre
allowedActions
restenull
, toutes les actions sont autorisées). - Appelez
NativeDragManager.doDrag()
.
L’objet initiateur déclenche un événement nativeDragStart
après l’appel à cette méthode, des événements nativeDragStart
pendant que le déplacement est en cours et un événement nativeDragComplete
lorsque l’utilisateur relâche la souris pour mettre fin au déplacement. Le gestionnaire de l’événement nativeDragComplete
peut vérifier la propriété dropAction
de l’événement pour déterminer si l’opération de glisser-déposer s’est terminée avec succès. Si dropAction
est NativeDragActions.NONE
, l’élément déplacé n’a pas été déposé sur une cible qualifiée.
Cette méthode ne peut être appelée qu’à l’intérieur d’un gestionnaire d’événement mouseDown
ou mouseMove
(si elle est appelée en réponse à un événement mouseMove
, le bouton de la souris doit également être maintenu enfoncé).
Paramètres
dragInitiator:InteractiveObject — Généralement l’objet à partir duquel le geste de déplacement commence. Reçoit les événements nativeDragStart et nativeDragComplete .
| |
clipboard:Clipboard — Objet conteneur des données déplacées.
| |
dragImage:BitmapData (default = null ) — Image proxy facultative affichée sous le pointeur de la souris pendant le déplacement. Si null , aucune image n’est affichée.
| |
offset:Point (default = null ) — Décalage entre la zone réactive de la souris et le coin supérieur gauche de l’image déplacée. Des coordonnées négatives déplacent l’image vers le haut et la gauche par rapport à la zone réactive. Si null , le coin supérieur gauche de l’image déplacée est placée sur la zone réactive de la souris.
| |
allowedActions:NativeDragOptions (default = null ) — Limite les actions de glisser-déposer autorisées pour cette opération. Si null , toutes les actions sont autorisées.
|
Eléments de l’API associés
Tue Jun 12 2018, 09:30 AM Z