Aspectos básicos de la operación de arrastrar y colocar en AIR

Adobe AIR 1.0 y posterior

Para ver una explicación rápida y ejemplos de código del uso de la operación de arrastrar y colocar en una aplicación de AIR, consulte los siguientes artículos de inicio rápido del Centro de desarrollo de Adobe:

La API de arrastrar y colocar contiene las clases siguientes.

Paquete

Clases

flash.desktop

Las constantes que se utilizan con la API de arrastrar y colocar se definen en las clases siguientes:

flash.events

NativeDragEvent

Etapas de gestos de arrastrar y colocar

El gesto de arrastrar y colocar tiene tres etapas:

Inicio
Un usuario inicia una operación de arrastrar y colocar arrastrando desde un componente, o un elemento de un componente, mientras mantiene pulsado el botón del ratón. El componente que es el origen del elemento arrastrado suele designarse como iniciador de la operación de arrastrar y distribuye los eventos nativeDragStart y nativeDragComplete . Una aplicación de Adobe AIR inicia una operación de arrastrar llamando al método NativeDragManager.doDrag() como respuesta a un evento mouseDown o mouseMove .

Si la operación de arrastrar se inicia fuera de una aplicación de AIR, no hay ningún objeto iniciador que distribuya eventos nativeDragStart o nativeDragComplete .

Arrastrar
El usuario mantiene pulsado el botón del ratón al desplazar el cursor a otro componente, a otra aplicación o al escritorio. Siempre y cuando esté en curso la operación de arrastrar, el objeto iniciador distribuye eventos nativeDragUpdate . (Sin embargo, este evento no se distribuye en AIR para Linux.) Cuando el usuario pasa el ratón sobre un posible destino en una aplicación de AIR, el destino distribuye un evento nativeDragEnter . El controlador de eventos puede examinar el objeto de evento para determinar si los datos arrastrados están disponibles en un formato aceptado por el destino y, en caso afirmativo, dejar al usuario colocar los datos en él llamando al método NativeDragManager.acceptDragDrop() .

Siempre y cuando el gesto de arrastrar permanezca sobre un objeto interactivo, dicho objeto distribuye eventos nativeDragOver . Cuando el gesto de arrastrar abandona el objeto interactivo, distribuye un evento nativeDragExit .

Colocar
El usuario suelta el ratón sobre un destino idóneo. Si el destino es una aplicación de AIR o un componente, el objeto de destino distribuye un evento nativeDragDrop . El controlador de eventos tiene acceso a los datos transferidos desde el objeto de evento. Si el destino se encuentra fuera de AIR, el sistema operativo u otra aplicación controla la colocación. En ambos casos, el objeto iniciador distribuye un evento nativeDragComplete (si la operación de arrastrar empezó en AIR).

La clase NativeDragManager controla tanto los gestos de arrastrar hacia dentro como los de arrastrar hacia fuera. Todos los miembros de la clase NativeDragManager son estáticos: no cree una instancia de esta clase.

Objeto Clipboard

Los datos que se arrastran dentro o fuera de una aplicación o un componente se contienen en un objeto Clipboard. Un mismo objeto Clipboard puede poner a disposición distintas representaciones de la misma información para aumentar la probabilidad de que otra aplicación pueda comprender y utilizar los datos. Por ejemplo, una imagen puede incluirse como datos de imagen, objeto Bitmap serializado o archivo. La representación de los datos en un formato determinado puede diferirse a una función de representación a la que no se llama hasta el momento de leerse los datos.

Una vez iniciado un gesto de arrastrar, solo se tiene acceso al objeto Clipboard desde un controlador de eventos para los eventos nativeDragEnter , nativeDragOver , y nativeDragDrop . Después de finalizado el gesto de arrastrar, no se puede volver a leer o utilizar el objeto Clipboard.

Un objeto de aplicación puede transferirse como referencia y como objeto serializado. Las referencias solo son válidas en la aplicación de origen. Las transferencias de objetos serializados son válidos entre aplicaciones de AIR, pero solo pueden utilizarse con objetos que permanecen válidos al serializarse y deserializarse. Los objetos que se serializan se convierten al formato de mensaje de acción para ActionScript 3 (AMF3), un formato de transferencia de datos basado en cadenas.

Trabajo con la arquitectura de Flex

En la mayoría de los casos es mejor utilizar la API de arrastrar y colocar de Adobe® Flex™ al crear aplicaciones de Flex. La arquitectura de Flex proporciona un conjunto de funciones equivalentes cuando se ejecuta una aplicación de Flex en AIR (utiliza el método NativeDragManager de AIR de modo interno). Flex mantiene además un conjunto de funciones más limitado si una aplicación o un componente se ejecutan en el entorno más limitado del navegador. Las clases de AIR no pueden utilizarse en componentes o aplicaciones que se ejecuten fuera del entorno del motor de ejecución de AIR.