Paquete | flash.desktop |
Clase | public class NativeDragManager |
Herencia | NativeDragManager Object |
Versiones de motor de ejecución: | AIR 1.0 |
Se pueden transferir los siguientes tipo de datos:
- Mapas de bits
- Archivos
- Texto
- Cadenas URL
- Objetos serializados
- Referencias a objetos (sólo son válidas en la aplicación original)
Nota: todos los miembros de NativeDragManager son estáticos. No es necesario crear ninguna instancia de esta clase.
Una operación de arrastrar y colocar es una acción de interfaz de usuario que inicia con el usuario haciendo clic en un elemento visible y arrastrándolo hasta cualquier punto. Durante la acción de arrastre, los objetos interactivos de la lista de visualización distribuyen eventos NativeDragEvents a medida que la acción se desplaza por la ventana de la aplicación de AIR. Los controladores de estos eventos pueden llamar a métodos de la clase NativeDragManager para indicar si el elemento arrastrado se puede soltar en un objeto. Como respuesta, NativeDragManager cambia la posición del puntero para informar al usuario.
Compatibilidad con perfil de AIR: esta característica no se admite en dispositivos de AIR para TV. Asimismo, no se admite en todos los dispositivos móviles. Puede probar la compatibilidad en tiempo de ejecución con la propiedad NativeDragManager.isSupported
. Consulte Compatibilidad con perfil de AIR para obtener información sobre la compatibilidad de la API con varios perfiles.
Acciones de arrastrar
El gesto de arrastrar y colocar suele utilizarse en tres tipos de operaciones llamadas acciones. Dado que el significado de estas opciones depende del contexto de la aplicación, el motor de ejecución no fuerza ningún comportamiento particular en lo que respecta a las acciones. Sin embargo, si se implementan las acciones, la experiencia del usuario mejora en la aplicación.
Las acciones posibles son:
- Copy: se debe realizar una copia de los datos, sin tocar los originales. (Cuando arrastre objetos en una aplicación, debe tener cuidado para copiar el propio objeto original, no solo una referencia a él.)
- Move: los datos deben moverse desde su contexto original al contexto definido por el destino, por ejemplo, cuando se mueve un elemento de una lista a otra.
- Link: se debe crear una referencia o acceso directo a los datos originales sin modificar el elemento en su contexto original.
Las acciones permitidas se pueden definir en un gesto de arrastre si se proporciona un parámetro allowedActions
en la llamada NativeDragManager.doDrag()
que inicia la operación de arrastre. Si se proporciona el parámetro allowedActions
, se permiten todas las acciones. Los posible destinos de arrastre pueden comprobar qué acciones están permitidas mediante la propiedad allowedActions
de un objeto NativeDragEvent, y no debe aceptar operaciones de arrastre que acepten únicamente acciones incompatibles (aunque el motor de ejecución no fuerza esta situación).
Si un destino de una acción de soltar implementa única acción, el objeto puede establecer la propiedad dropAction
de NativeDragManager en los controladores de los eventos nativeDragEnter
y nativeDragOver
. Si establece la propiedad antes de soltar, el gestor de la acción podrá actualizar el puntero del ratón para indicar que se admite la acción y evitar que el usuario utilice una incompatible con las teclas de modificación. Si la acción especificada no está permitida, no podrá soltar, incluso si el destino llama al método acceptDrop()
.
Cuando se acepta una acción de colocación, el posible destino debe indicar la acción elegida por el ajuste de la propiedad NativeDragManager.dropAction
en respuesta al evento nativeDragDrop
. Esta acción se registra de nuevo en el objeto de visualización inicializado del evento nativeDragComplete
. Si no se define ninguna acción por el destino de colocación, se elige una acción predeterminada entre las acciones permitidas según el orden de precedencia: copy, move, link. El objeto que se inicializa es el responsable de actualizar su estado interno como respuesta a la acción elegida.
Las constantes de cadena de los nombres de acción se definen en la clase NativeDragActions.
Secuencia de eventos
El gesto de arrastre se inicia mediante una llamada al método NativeDragManager.doDrag()
en un controlador de eventos mouseDown
o mouseMove
y continúa con al siguiente secuencia de eventos como respuesta a las acciones del usuario:
- Evento
nativeDragStart
: cuando se llama aNativeDragManager.doDrag()
, el objeto interactivo transferido al método como parámetro se convierte en objeto iniciador y distribuye un eventonativeDragStart
. - Evento
nativeDragUpdate
: mientras el arrastre está en curso, el objeto iniciador distribuye constantemente eventosnativeDragUpdate
. - Eventos
nativeDragEnter
,nativeDragOver
: cuando una acción de arrastre se transfiere a un objeto InteractiveObject, dicho objeto distribuye un eventonativeDragEnter
. Mientras el gesto de arrastre siga sobre el objeto interactivo, se distribuyen eventosnativeDragOver
continuamente. Como respuesta a cualquiera de estos eventos, un objeto que actúe como destino potencial debe comprobar las propiedades del objeto del evento para decidir si acepta o no el arrastre. Si el formato de datos y las acciones permitidas son adecuados, el controlador de eventos de estos eventos debe llamar aNativeDragManager.acceptDrop()
y transferir un objeto de visualización que sirva de destino de arrastre (normalmente, el objeto que distribuyó el eventonativeDragEnter
onativeDragOver
). El usuario ahora puede arrastrar el elemento al destino. - Evento
nativeDragExit
: si un gesto de arrastre transfiere un objeto interactivo, el objeto distribuye un eventonativeDragExit
. Si el objeto se ha diseñado previamente como destino de arrastre por una llamada al métodoNativeDragManager.acceptDrop()
, la llamada deja de ser válida y es preciso llamar aacceptDrop()
de nuevo si el gesto vuelve a acceder al objeto interactivo. - Evento
nativeDragDrop
: el objeto de visualización de destino distribuye un eventonativeDragDrop
cuando el usuario suelta el el botón del ratón sobre el objeto. El controlador de este evento puede acceder a los datos de la propiedadtransferable
del objeto de evento y debe definir la propiedadNativeDragManager.dropAction
para que detecte la acción que debe tomar el objeto inicializador. - Evento
nativeDragComplete
: cuando el usuario suelta el ratón al finalizar un gesto de arrastre, el objeto inicializador distribuye un eventonativeDragComplete
(haya finalizado o no la operación de colocación). El controlador de este evento puede comprobar la propiedaddropAction
del objeto de evento para determinar qué modificaciones se deben realizar en los datos internos (si procede), por ejemplo, eliminar un elemento arrastrado de una lista. SidropAction
esNativeDragActions.NONE
, el elemento arrastrado no se ha colocado en un destino elegido.
Gestos entre aplicaciones
Cuando un gesto de arrastre entra en una ventana de la aplicación de AIR desde una ventana de aplicación distinta de AIR, no hay ningún objeto inicializador que distribuya los eventos nativeDragStart
o nativeDragComplete
. Los eventos distribuidos durante este gesto siguen el mismo patrón que el de los gestos que se inician y finalizan en la misma aplicación de AIR.
Cuando un gesto de arrastre abandona la ventana de la aplicación de AIR, no hay ningún objeto de destino que distribuya eventos nativeDragEnter
, nativeDragOver
o nativeDragDrop
. El objeto inicializador sigue distribuyendo un evento nativeDragComplete
que registra la acción de arrastre definida por el sistema operativo nativo (o el valor none
, si no se acepta la acción de soltar).
Cuando un gesto de arrastre se desplaza entre aplicaciones de AIR, los objetos iniciador y de destino distribuyen eventos en las aplicaciones por separado, como ocurre habitualmente.
Información de transferencia
Los datos transferidos durante un gesto de arrastrar y colocar se almacenan en un objeto Clipboard. Este objeto de datos se añade a la operación de arrastre con el método NativeDragManager.doDrag()
que inicia el gesto de arrastre. Los destinos potenciales de colocación pueden acceder al objeto Clipboard mediante la propiedad clipboard
del objeto NativeDragEvent. Una vez iniciada una operación de arrastre, sólo se puede acceder al objeto Clipboard en el controlador de eventos de un evento NativeDragEvent. Cualquier otro intento de acceso al objeto genera un error de tiempo de ejecución.
Consideraciones de seguridad
Los entornos limitados de seguridad de los objetos iniciador y de destino potenciales determinan el modo en que se accede a los datos arrastrados. Si los dos objetos se encuentran en el mismo entorno limitado, se puede acceder a ellos desde cualquier objeto NativeDragEvent. Ahora bien, si los objetos iniciador y de destino se encuentran en entornos limitados diferentes, sólo se puede acceder a los datos en el entorno limitado de target dentro del controlador de eventos del evento nativeDragDrop
. El resto de controladores de eventos de arrastre nativos pueden seguir accediendo al objeto Clipboard al que se hace referencia en la propiedad eventclipboard
para determinar qué formatos de datos hay disponibles, pero al llamar al método clipboard.getData()
se genera un error de seguridad.
Elementos de API relacionados
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
dragInitiator : InteractiveObject [estática] [solo lectura]
El objeto interactivo transferido a la llamada NativeDragManager.doDrag() que inició la operación de arrastre. | NativeDragManager | ||
dropAction : String [estática]
Acción de arrastre especificada por el destino de colocación. | NativeDragManager | ||
isDragging : Boolean [estática] [solo lectura]
Indica si hay una operación de arrastre en curso. | NativeDragManager | ||
isSupported : Boolean [estática] [solo lectura]
La propiedad isSupported se establece en true si la clase NativeDragManager se admite en la plataforma actual; en caso contrario, se establece en false. | NativeDragManager |
Método | Definido por | ||
---|---|---|---|
[estática]
Informa al objeto NativeDragManager de que el objeto interactivo de destino especificado puede aceptar la colocación correspondiente al evento de arrastre actual. | NativeDragManager | ||
doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void [estática]
Inicia una operación de arrastrar y colocar. | NativeDragManager | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object |
dragInitiator | propiedad |
dragInitiator:InteractiveObject
[solo lectura] Versiones de motor de ejecución: | AIR 1.0 |
El objeto interactivo transferido a la llamada NativeDragManager.doDrag()
que inició la operación de arrastre.
Implementación
public static function get dragInitiator():InteractiveObject
dropAction | propiedad |
dropAction:String
Versiones de motor de ejecución: | AIR 1.0 |
Acción de arrastre especificada por el destino de colocación.
Se debe establecer la propiedad dropAction
en el controlador del evento nativeDragDrop
. Si la propiedad dropAction
no se establece antes que nativeDragComplete
, NativeDragManager establecerá el valor de la primera acción permitida de la lista: copy, move o link (en este orden).
Implementación
public static function get dropAction():String
public static function set dropAction(value:String):void
Elementos de API relacionados
isDragging | propiedad |
isSupported | propiedad |
isSupported:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
La propiedad isSupported
se establece en true
si la clase NativeDragManager se admite en la plataforma actual; en caso contrario, se establece en false
.
Implementación
public static function get isSupported():Boolean
acceptDragDrop | () | método |
public static function acceptDragDrop(target:InteractiveObject):void
Versiones de motor de ejecución: | AIR 1.0 |
Informa al objeto NativeDragManager de que el objeto interactivo de destino especificado puede aceptar la colocación correspondiente al evento de arrastre actual.
Sólo se debe llamar a este método si hay un controlador nativeDragDrop
en el objeto de destino especificado que pueda, al menos, controlar uno de los formatos de datos incluidos en el elemento arrastrado y una de las acciones permitidas.
Sólo es posible llamar a esta función desde un controlador de eventos nativeDragEnter
o nativeDragOver
.
Parámetros
target:InteractiveObject |
doDrag | () | método |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
Versiones de motor de ejecución: | AIR 1.0 |
Inicia una operación de arrastrar y colocar.
Para iniciar una operación de arrastre:
- Cree un nuevo objeto Clipboard.
- Añada los datos que quiera transferir en uno o varios formatos.
- Si lo desea, puede crear un objeto BitmapData como imagen proxy durante el arrastre.
- Si lo desea, puede crear un objeto NativeDragOptions para limitar las acciones permitidas en esta operación. (Si el parámetro
allowedActions
esnull
, se permiten todas las acciones.) - Llame a
NativeDragManager.doDrag()
.
El objeto iniciador distribuye el evento nativeDragStart
cuando se llama a este método, eventos nativeDragStart
durante el proceso de arrastre y un evento nativeDragComplete
cuando el usuario suelta el ratón del botón para poner fin al gesto de arrastre. El controlador del evento nativeDragComplete
puede verificar la propiedad dropAction
del evento para determinar si se ha realizado correctamente la operación de arrastrar y colocar. Si dropAction
es NativeDragActions.NONE
, el elemento arrastrado no se ha colocado en un destino elegido.
Se puede llamar a este método únicamente desde un controlador de eventos mouseDown
o mouseMove
. (Si se llama como respuesta a un evento mouseMove
, el botón del ratón también debe estar presionado.)
Parámetros
dragInitiator:InteractiveObject — Normalmente, el objeto desde el que se inicia el gesto de arrastre. Recibe los eventos nativeDragStart y nativeDragComplete .
| |
clipboard:Clipboard — El objeto contenedor de los datos que se están arrastrando.
| |
dragImage:BitmapData (default = null ) — Imagen proxy opcional que aparece debajo del puntero del ratón durante el gesto de arrastre. Si el valor es null , no se muestra ninguna imagne
| |
offset:Point (default = null ) — Desfase entre la zona interactiva del ratón y la esquina superior izquierda de la imagen de arrastre. Las coordenadas negativas desplazan la imagen hacia arriba y hacia la izquierda en relación a la zona interactiva. Si el valor es null , la esquina superior izquierda la imagen arrastrada se coloca en la zona interactiva del ratón.
| |
allowedActions:NativeDragOptions (default = null ) — Limita las acciones de arrastrar y colocar permitidas en esta operación. Si el valor es null , se pueden realizar todas las acciones.
|
Elementos de API relacionados
Tue Jun 12 2018, 02:12 PM Z