Princípios básicos de arrastar e soltar no AIR

Adobe AIR 1.0 e posterior

Para ver uma rápida explicação e exemplos de código do uso do arrastar e soltar em um aplicativo do AIR, consulte os seguintes artigos de início rápido no Adobe Developer Connection:

A API de arrastar e soltar contém as seguintes classes:

Pacote

Classes

flash.desktop

Constantes usadas com a API de arrastar e soltar são definidas nas seguintes classes:

flash.events

NativeDragEvent

Estágios do gesto de arrastar e soltar

O gesto de arrastar e soltar possui três estágios:

Iniciação
Um usuário inicia uma operação de arrastar e soltar arrastando de um componente, ou um item em um componente, enquanto mantém pressionado o botão do mouse. O componente que é a origem do item arrastado é normalmente designado como o iniciador do ação de arrastar e despacha eventos nativeDragStart e nativeDragComplete . Um aplicativo do Adobe AIR inicia uma operação de arrastar chamando o método NativeDragManager.doDrag() em resposta a um evento mouseDown ou mouseMove .

Se a operação de arrastar for iniciada de fora do aplicativo do AIR, não haverá nenhum objeto iniciador para despachar os eventos nativeDragStart ou nativeDragComplete .

Arrastar
Ao segurar o botão do mouse, o usuário move o cursor do mouse para outro componente, aplicativo ou a área de trabalho. Uma vez que a ação de arrastar esteja em andamento, o objeto iniciador despacha eventos nativeDragUpdate . (No entanto, este evento não é despachado no AIR for Linux.) Quando o usuário move o mouse sobre um possível destino no qual soltar em um aplicativo do AIR, o destino despacha um evento nativeDragEnter . O manipulador de eventos pode inspecionar o objeto de evento para determinar se os dados arrastados estão disponíveis em um formato que o destino aceite e, se sim, permitir ao usuário soltar os dados nele chamando o método NativeDragManager.acceptDragDrop() .

Enquanto o gesto de arrastar permanece sobre um objeto interativo, esse objeto despacha eventos nativeDragOver . Quando o gesto de arrastar deixa o objeto interativo, ele despacha um evento nativeDragExit .

Soltar
O usuário libera o mouse sobre um destino de soltar aceitável. Se o destino for um componente ou aplicativo do AIR, o objeto de destino despacha um evento nativeDragDrop . O manipulador de eventos pode acessar os dados transferidos do objeto de evento. Se o destino estiver fora do AIR, o sistema operacional ou outro aplicativo manipulará a ação de soltar. Nos dois casos, o objeto iniciador despacha um evento nativeDragComplete (se a ação de arrastar tiver iniciado de dentro do AIR).

A classe NativeDragManager controla os gestos de arrastar para dentro e para fora. Todos os membros da classe NativeDragManager são estáticos, não crie uma instância dessa classe.

O objeto Clipboard

Os dados arrastados para dentro ou para fora de um aplicativo ou componente são contidos em um objeto Clipboard. Um único objeto Clipboard pode disponibilizar representações diferentes das mesmas informações para aumentar a probabilidade de que outro aplicativo possa entender e usar os dados. Por exemplo, uma imagem poderia ser incluída como dados de imagem, como um objeto Bitmap serializado e como um arquivo. O processamento dos dados em um formato pode ser adiado para uma função de processamento não chamada até que os dados sejam lidos.

Após um gesto de arrastar ter sido iniciado, o objeto Clipboard pode apenas ser acessado de dentro de um manipulador de eventos para os eventos nativeDragEnter , nativeDragOver e nativeDragDrop . Após o gesto de arrastar ter sido finalizado, o objeto Clipboard não poderá ser lido ou reutilizado.

Um objeto de aplicativo pode ser transferido como uma referência e um objeto serializado. As referências são válidas apenas dentro do aplicativo originador. Transferências de objetos serializados são válidas entre aplicativos AIR, mas podem apenas ser usadas com objetos que permanecem válidos quando serializados e desserializados. Objetos serializados são convertidos no Action Message Format para ActionScript 3 (AMF3), um formato de transferência de dados baseado em sequência de caracteres.

Trabalho com a estrutura do Flex

Na maioria dos casos, é melhor usar a API de arrastar e soltar do Adobe® Flex™ ao criar aplicativos do Flex. A estrutura do Flex fornece um conjunto de recursos equivalente quando um aplicativo do Flex é executado no AIR (ela usa o NativeDragManager do AIR internamente). O Flex também mantém um conjunto de recursos mais limitado quando um aplicativo ou componente está em execução dentro do ambiente do navegador mais restritivo. As classes do AIR não podem ser usadas em componentes ou aplicativos executados fora do ambiente de tempo de execução do AIR.