Arrastar e Soltar, do inglês "Drag and Drop", é a ação de clicar em um objeto virtual e "arrastá-lo" a uma posição diferente ou sobre um outro objeto virtual. De maneira geral, ele pode ser usado para invocar diversos tipos de ações, ou criar vários tipos de associações entre dois objetos abstratos.
A sequência básica de ações relacionadas ao drag-and-drop é:
No exemplo a seguir, o usuário iniciou o processo drag-and-drop agarrando o objeto preto (1 na figura), arrastando o mouse até o objeto vermelho (3 na figura) e soltando o botão.
O fluxo segue na seguinte ordem:
Para que uma operação Drag-And-Drop aconteça, é necessário haver ao menos uma informação e ao menos uma ação capaz de lidar com ela.
Informações e ações podem existir tanto no objeto Drag quanto no objeto Drop:
Informações e ações estão atreladas a um DataType, isto é, a uma cadeia de caracteres que define o tipo de dados que é arrastado.
O programador pode inventar qualquer DataType, porém existem os seguintes que são padrões do Firecast:
DataType padrão |
Valor transportado |
text |
Uma cadeia de caracteres, um texto qualquer. |
imageURL |
Uma cadeia de caracteres que contém uma URL de uma imagem. |
player |
|
players |
Array de objeto Jogador |
character |
|
characters |
Array de objeto Personagem |
libraryItem |
|
libraryItens |
Array de objeto BibliotecaItem |
sceneUnitClass |
|
sceneUnitClasses |
Array de objeto SceneUnitClass |
A table containing the following attributes:
|
|
An array of tables with the same structure as the "imageFile". |
Observação: Ao utilizar os dataTypes padrões, o RRPG valida e exige que sejam transportados valores adequados conforme a tabela acima.
Experimente arrastar o label para a caixa de digitação de mensagens e comandos do RRPG.
<label text="Me arraste!" top="150" hitTest="true"> <event name="OnStartDrag"> drag:addData("text", "Texto que será arrastado deste label!"); </event> </label> |
Experimente arrastar o label para o log do chat do RRPG!
<label text="Me arraste!" top="150" hitTest="true"> <event name="OnStartDrag"> drag:addData("text", "Texto que será arrastado deste label!"); drag:addData("imageURL", "http://www.rrpg.com.br/wp-content/uploads/2013/05/cropped-Untitled-2.png"); </event> </label> |
Arraste uma imagem do browser Chrome ou do jogador para este controle.
<rectangle left="150" top="150" width="150" height="150" strokeColor="yellow" strokeSize="1" color="none">
<image name="imgImagem" align="client" hitTest="true"> <event name="OnStartDrop"> drop:addAction("imageURL", function(value) self.imgImagem.src = value; end); </event> </image>
</rectangle> |
Arraste um jogador da mesa para este controle!
<rectangle left="150" top="150" width="150" height="150" strokeColor="yellow" strokeSize="1" color="none" hitTest="true">
<event name="OnStartDrop"> drop:addAction("player", function(value) showMessage("O login deste jogador é: " .. value.login); end); </event> </rectangle> |
Arraste este botão para um jogador da mesa!
<button left="150" top="150" text="meArraste"> <event name="OnStartDrag"> drag:addAction("player", function(destValue) showMessage("Você me arrastou para o jogador: " .. destValue.login); end); </event> </button> |
Created with the Personal Edition of HelpNDoc: Generate EPub eBooks with ease