Mas no caso, pelo requisito q ele disse, o cliente é quem fará o upload da
imagem, logo ela nao estará embedded no swf da app.

A idéia do SpriteAsset é boa, mas acho q vc nao precisa fazer cast para
Class.
Vc pode fazer uma leve imersao no compoente Tree para saber como o icon
funciona, oq de fato é renderizado dentro do componente, extender a Tree e
fazer o mesmo trabalho na mao.

Ou, outra forma - talvez até mais rápida para isso - é trabalhar com
TreeItemRenderer e dentro do renderer vc usa um Image q irá carregar o
byteArray da sua imagem diretamente no source.


Só nao tenho tempo para fazer isso, mas nao acho q seja nada complicado.
(tempo == $)

[]'s





Em 14 de outubro de 2011 13:22, irineu pereira
<[email protected]>escreveu:

> Leonardo manda  so o nome  da  imagem pro  banco  e  quando  vc  reuperar
>  vc  seta  o icone  que  estiver com o mesmo nome
> o  icones  são  bem leve  mesmo.
>
> Em 14 de outubro de 2011 11:37, Leonardo Oliveira <
> [email protected]> escreveu:
>
> infelizmente não deu certo:
>>
>> var spriteAsset:SpriteAsset = new SpriteAsset();
>> //aquí escreveria o bytearray no spriteAsset
>> _menuTree.setItemIcon(objItem, Class(spriteAsset),
>> Class(spriteAsset));
>>
>> Error #1034: Falha de coerção de tipo: não é possível converter
>> mx.core::SpriteAsset@dba6501 em Class.
>>
>> sem o cast o método não aceita o SpriteAsset.
>>
>> tem um componente aquí (http://blog.benstucki.net/?p=42) que retorna a
>> classe, daí seria possível usá-lo. porém o método getClass deste
>> componente espera uma string com o source da imagem. no meu caso eu
>> tenho um bytearray vindo do banco, então se for possível gostaria de
>> ajuda pra quem sabe alterar este componente para aceitar bytearray ao
>> invés da string com o source.
>>
>> outras sugestões são muito bem vindas.
>>
>>
>> On 14 out, 11:26, Leonardo Oliveira <[email protected]>
>> wrote:
>> > cara, valeu demais pela dica. tava dando F5 aquí na tela esperando uma
>> > resposta. vou agora mesmo testar e posto o resultado.
>> > a propósito, não dá pra embedar a imagem porque é um menu
>> > personalizado. o usuário vai escolher a imagem.
>> > valeu Mario. vou testar.
>> >
>> > On 14 out, 11:22, Mário Júnior <[email protected]> wrote:
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > > Bom, como icones sao arquivos pqnos em png (se bem feitos, tem menos
>> de 1kb)
>> > > eu embedaria TODOS os icones numa classe ImageUtils - por exemplo - e
>> iria
>> > > trocando-os dinamicamente de acordo com o data do node da tree. Isso é
>> > > facil, rápido e nao possui muito custo - já q os icones sao pqnos
>> mesmo.
>> >
>> > > Obviamente que vc não irá trabalhara com icones de 180x180 para usar
>> numa
>> > > árvore, certo? Por isso o tamanho dos arquivos seriam pqnos e eu
>> (imho) nao
>> > > vejo problema algum em "embedá-los".
>> >
>> > > Agora, se vc quer realmente fazer isso dinamico, daí o buraco é "mais
>> > > embaixo".
>> >
>> > > Acontece que:
>> > > Ao fazer um [Embed] Class de arquivo de imagem, esse icone nao será um
>> > > "Class" propriamente dito, mas sim uma instancia de SpriteAsset. No
>> momento
>> > > da compilação, o mxmlc - seu compilador - leu o arquivo de imagem,
>> pegou os
>> > > bytes dele e jogou numa classe que extende de SpriteAsset antes de
>> gerar o
>> > > swf, logo sua var 'embedada' é uma instancia de SpriteAsset.
>> >
>> > > Sabendo disso, vc pode - em runtime - tentar criar um SpriteAsset,
>> escrever
>> > > seu byteArray vindo do servidor nela e joga-la como um icon da Tree,
>> já q o
>> > > icon espera um IFlexDisplayObject (E, segundo os docs, SpriteAssets
>> > > implementa IFlexDisplayObject:
>> http://help.adobe.com/pt_BR/FlashPlatform/reference/actionscript/3/mx...
>> > > )
>> >
>> > > Na boa, eu nunca fiz isso na prática - como disse, eu preferiria
>> embedar
>> > > tudo - mas na teoria funcionaria sim.
>> > > (Só resta saber se "na prática, a teoria é diferente" hehehe)
>> >
>> > > Boa sorte.
>> >
>> > > []'s
>> >
>> > > Em 14 de outubro de 2011 10:39, Leonardo Oliveira <
>> > > [email protected]> escreveu:
>> >
>> > > > bom dia pessoal.
>> > > > estou precisando setar ícones dinamicamente em um menu tree e para
>> > > > isto recupero a imagem de cada ítem em forma de bytearray (blob do
>> > > > bd). o problema é que não posso fazer um embed dinâmico
>> (obviamente).
>> > > > explicando melhor:
>> >
>> > > > [Embed("../../Estilos/images/icon_relatorio.png")]
>> > > > private var icone:Class;
>> > > > _menuTree.setItemIcon(node, icone, icone);
>> >
>> > > > isto funciona pois embedei no código a imagem diretamente de um
>> > > > diretório.
>> >
>> > > > agora, a função setItemIcon espera os ícones como classe, mas eu
>> tenho
>> > > > bytearray, que não converte em classe (Class(meuByteArray) - não
>> > > > funfa). então como eu poderia carregar isto dinamicamente?
>> >
>> > > > Obrigado.
>> >
>> > > > --
>> > > > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> > > > Para enviar uma mensagem, envie um e-mail para
>> [email protected]
>> > > > Para sair da lista, envie um email em branco para
>> > > > [email protected]
>> > > > Mais opções estão disponíveis emhttp://
>> groups.google.com/group/flexdev
>> >
>> > > --
>> > > Mario Juniorhttp://blog.mariojunior.com/
>> > > @mariojunior
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>
>
>
> --
> *
> Irineu Pereira
> Analista Desenvolvedor JAVA, Adobe Flex na CINQ Technologies*
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
Mario Junior
http://blog.mariojunior.com/
@mariojunior

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a