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
