Se eu precisasse fazer algo do gênero, o faria assim:

1) Criaria um componente custom que herda Canvas.
2) Criaria um segundo componente custom que herda Canvas e possui dentro dele um componente Image (para o ícone) e um Text (para o Label) 3) Faria um método AddIcon(iconSource:String, x:int, y:in, label:String) no componente 1 que, ao ser chamado, instanciaria um componente 2. Coloco este componente 2 dentro do meu componente 1(this.addChild). 4) Seto o source da imagem para o iconSource, o text do Text para label e seto o x e y do componente 2 dentro do canvas para x * componente2.width. O mesmo para y. 5) Usando os macanismos de drag & drop do Flex, seto os componentes 2 presente no meu componente 1 como draggable e o meu componente 1 como drop. O evento de drop no componente 1 me dá as coordenadas de drop e então eu movo o componente 2 sendo arrastado para as coordenadas do mouse do evento drop.

Mais ou menos isso... não é trivial mas também não é lá tão complicado.

Com um pouquinho de cálculo e um pouco de criatividade, dá pra deixar exatamente igual ao Windows 7 (incluindo o drop shadow no label e até o efeito meio transparente ao arrastar o ícone).

--------------------------------------------------
From: "Hugo Rabelo" <hugo.fac...@gmail.com>
Sent: Tuesday, November 17, 2009 5:48 PM
To: "flexdev" <flexdev@googlegroups.com>
Subject: [flexdev] Re: Componente de icones como se fosse um desktop


Ivan, eu já desenvolvi algo similiar ao que você está querendo.
No meu sistema, eu posso puxar um item de menu, de um menubar e colocá-
lo em um Canvas, como um botão clicável.
Para isto, eu mexi com DragManager, DragSource, DragEvent..
Dá uma googlada e olha o último link que a Gabriela passou, pra ver se
dá uma iluminada no seu pensamento. Qquer coisa, pode perguntar ae...
Mas, na teoria, todos os componentes podem ser arrastáveis..
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Responder a