O que é Drag-and-Drop? Drag and Drop é arrastar e soltar. Essa funcionalidade é muito usada em aplicações Windows Forms.  Em jogos, não é diferente, existem muitos jogos que utilizam esse tipo de funcionalidade.  Observe o fluxo dessa funcionalidade aplicada em um jogo:  - Clica, geralmente, com o botão esquerdo do mouse em cima de um item, por exemplo;
- Pressiona o botão;
- Arrasta o item para o local desejado;
- Solta o item em algum local permitido; é muito comum esse local ser um inventário de um personagem.
Implementando Drag-and-Drop com XNA – Demonstração(Parte 1)Em aplicações Windows Forms, essa funcionalidade é implementada principalmente baseada em Eventos. Você pode optar por não implementar essa funcionalidade utilizando Eventos, entretanto, o uso deles, facilita e deixa mais simples o processo de construção e manuseio dessa funcionalidade. DemonstraçãoEssa funcionalidade será aplicada em um ambiente 2D(Sprites).  Será estabelecido um contrato para os Sprites que precisem ser arrastados(dragged) e/ou soltados(dropped).  Observe o contrato(Interface) que será estabelecido:  ///   Â/// Interface utilizada por objetos que tanto podem ser arrastados(dragged)    /// ou soltados(dropped)   Â///   Âpublic interface IDragDrop   Â{       Â///       Â/// Evento levantado no momento em que a operação Drag-and-Drop for iniciada.       Â/// Evento levantado dentro do método DoDragDrop.        ///       Âevent EventHandler DragEnter;              Â///       Â/// Evento levantado quando o sprite, que está sendo arrastado       Â/// pelo sprite condutor, for solto.       Â///       Âevent EventHandler DragDrop;        Â///       Â/// Propriedade utilizada pelos sprites que receberão os sprites arrastados.       Â/// Esta propriedade encapsulará o campo allowDrop;       Â/// Se esse campo for false, indica que o sprite(um inventário,       Â/// por exemplo) que implementa esta interface,       Â/// rejeita a tentativa de atribuição do sprite(Item) ao Inventário.       Â/// Se o campo for true, o processo é permitido.       Â///       Âbool AllowDrop        {           Âget;            set;        }              Âbool IsBeingDragged        {           Âget;           Âset;        }        Â///       Â/// Inicia o processo de Drag-and-Drop.       Â/// Esse metodo será invocado quando o usuario clicar com o botão       Â/// esquerdo do mouse.       Â///       Â///Sprite condutor responsavel por efetuar o processo de Drag-and-Drop       Âvoid DoDragDrop(Sprite _sprite);    } |