Robinho, a rstSucessoGetMenus recebe um ArrayCollection com os menus que 
estão cadastrados no banco, um dos parâmetros retornados é um bytearray que 
é o retorno do blob, ou seja, o ícone cadastrado. O primeiro laço monta as 
abas (navigatorContent). O loaderCustomizado teve que ser feito para 
adicionar um parâmetro customizado (paramCustom) que recebe o 
navigatorContent. Depois é adicionado um listener para o contentLoaderInfo, 
quando o loaderCustomizado estireceber o listener (Event.COMPLETE), ele 
dispara o getBitmapDataAbas que faz justamente o que o nome sugere, ele 
recupera a imagem e seta no menu no item, no caso na aba (var icone:Class = 
RuntimeBitmapAsset.getClass(bitmapDataAbas);evt.target.loader.paramCustom.icon 
= icone;). O segundo laço monta o tree executanto a mesma lógica das abas, 
porém com a necessidade de usar uma recursividade pois o tree pode ter 
filhos, netos, bisnetos, etc.

Minha sugestão pra você é ler linha por linha tentando entender cada uma. 
Veja as classes que são usadas, entenda cada uma. Postei o código foi pra 
você estudar mesmo. Estude-o e fará um menu com ícones dinâmicos. O código 
seta ícone em navigatorContent e tree, mas pode ser usado pra setar ícones 
em qualquer coisa que os receba.

Mas se não quiser ou não tiver tempo de estudar, a solução do Bruno atende, 
basta colocar as imagens no servidor.


Em quinta-feira, 24 de outubro de 2013 23h02min17s UTC-2, Robinho de Morais 
escreveu:
>
> Leonardo, obrigado pelo ajuda, mas entendi muito não....
>
> Qualquer dúvida estou a disposição.
>
> *Robinho*
> *Analista/Programador de Sistemas*
> *Skype: robinhocne*
> *"A fé em Deus nos faz crer no incrível, ver o invisível e realizar o 
> impossível."*
>  
>
> Em 24 de outubro de 2013 16:50, Leonardo Oliveira 
> <[email protected]<javascript:>
> > escreveu:
>
>> Ha! O loader customizado é só uma extensão de loader:
>>
>> package Modulos.Financeiro.Componentes.CmpLoaderCustomizado
>> {
>> import flash.display.Loader;
>>  public class LoaderCustomizado extends Loader
>>  {
>> public var paramCustom:Object = new Object();
>>  public function LoaderCustomizado()
>>  {
>> super();
>> }
>> }
>> }
>>
>> e as principais variáveis são essas:
>> private var loaderCustomizado:LoaderCustomizado;
>> private var bitmapData:BitmapData; 
>> private var loaderCustomizadoAbas:LoaderCustomizado;
>> private var bitmapDataAbas:BitmapData; 
>>
>> Em quinta-feira, 24 de outubro de 2013 16h46min43s UTC-2, Leonardo 
>> Oliveira escreveu:
>>
>>> Robinho, como eu não tenho problema nenhum em ajudar quem quer aprender, 
>>> dá uma olhada nesse código, é o que eu uso. Ele traz os ícones do banco em 
>>> um campo blob e monta em abas e em tree. Cada aba, que também têm seus 
>>> ícones, possui um tree. Já vou avisando aos corneteiros de plantão que fiz 
>>> o código quando estava aprendendo, há anos, nunca mais voltei nele pra 
>>> melhorar.
>>>
>>> private function rstSucessoGetMenus(evt:**ResultEvent):void{
>>> if (evt.result != null){
>>>  /*
>>> * RECEBE OS MENUS 
>>> */
>>> menus = new ArrayCollection(Array(evt.**result));
>>>  /*
>>> * MONTA ABAS (MENU PRINCIPAL) 
>>> */
>>>  for(var i:uint; i<evt.result.length; i++){
>>> if(evt.result[i].children != null){
>>> var navigatorContent:**NavigatorContent = new NavigatorContent();
>>>  navigatorContent.label = evt.result[i].label;
>>> //navigatorContent.icon
>>> navigatorContent.percentWidth = 100;
>>>  navigatorContent.percentHeight = 100;
>>> navigatorContent.id = "_tab"+navigatorContent.label.**replace(" ", "_");
>>>  navigatorContent.**addEventListener(MouseEvent.**CLICK, 
>>> handlerSelectAba);
>>> _abas.addChild(**navigatorContent);
>>>  if(evt.result[i].icone != null){
>>> loaderCustomizadoAbas = new LoaderCustomizado();
>>>  loaderCustomizadoAbas.**paramCustom = navigatorContent;
>>> loaderCustomizadoAbas.**contentLoaderInfo.**addEventListener(Event.**COMPLETE,
>>>  
>>> getBitmapDataAbas);
>>>  loaderCustomizadoAbas.**loadBytes(evt.result[i].icone)**;
>>> }
>>> }
>>>  }
>>>  /*
>>> * MONTA MENU TREE
>>>  */ 
>>> for(var j:uint=0; j<evt.result.length;j++){
>>> if(evt.result[j].children != null){
>>>  montarMenuTree(j);
>>> return;
>>> }
>>> }
>>>  } 
>>> }    
>>>  private function rstFalhaGetMenus(evt:**FaultEvent):void{
>>> Funcoes.mensagem("Falha ao retornar lista de menus autorizados:\n" + 
>>> evt.message,"E",null);
>>>  }
>>>  private function montarMenuTree(index:uint):**void{
>>>  /*
>>> * MONTA O TREE CONFORME ÍNDICE
>>> */
>>> acChildrens = new ArrayCollection();
>>>  acChildrens = ArrayCollection(menus[index].**children);
>>> var obj: Object = new Object();
>>> obj.label = menus[index].label;
>>>  obj.type = "Normal";
>>> obj.id = 466;
>>> obj.children = acChildrens;
>>>  acMenusPai = new ArrayCollection();
>>> acMenusPai.addItem(obj);
>>> _menuTree.dataProvider = acMenusPai;
>>>  callLater(expandFirstNode);
>>> _menuTree.width = 240;//reseta o tamanho do menu tree
>>>  /*
>>> * FUNÇÃO RECURSIVA PARA SETAR OS ÍCONES NO TREE: VER COMO CONVERTER 
>>> BYTEARRAY PARA BITMAPDATA EM TEMPO DE EXECUÇÃO
>>>  */ 
>>> setarIconesRecursivo(**ArrayCollection(_menuTree.**dataProvider));
>>>  }
>>>  private function setarIconesRecursivo(**dataProvider:ArrayCollection):*
>>> *void{
>>>  for(var i:uint=0; i<dataProvider.length;i++){
>>> if(dataProvider[i].icone != null){
>>> loaderCustomizado = new LoaderCustomizado();
>>>  //passo o parâmetro para o loader
>>> loaderCustomizado.paramCustom = dataProvider[i];
>>> loaderCustomizado.**contentLoaderInfo.**addEventListener(Event.**COMPLETE, 
>>> getBitmapData);
>>>  loaderCustomizado.loadBytes(**dataProvider[i].icone);
>>> }
>>> if(dataProvider[i].children != null){
>>>  setarIconesRecursivo(**ArrayCollection(dataProvider[**i].children));
>>> //return;
>>> }
>>>  }
>>> }
>>>  private function getBitmapData(evt:Event):void{
>>>  //recupero a imagem e o parâmetro no evento
>>> var conteudo:* = evt.target.content;
>>> bitmapData = new BitmapData(conteudo.width,**conteudo.height,true,**
>>> 0x00000000); 
>>>  var matrix:Matrix = new Matrix();
>>> bitmapData.draw(conteudo, matrix,null,null,null,true);
>>> var icone:Class = RuntimeBitmapAsset.getClass(**bitmapData);
>>>  _menuTree.setItemIcon(evt.**target.loader.paramCustom, icone, null);
>>> }
>>>  private function getBitmapDataAbas(evt:Event):**void{
>>> //recupero a imagem e o parâmetro no evento
>>> var conteudo:* = evt.target.content;
>>>  bitmapDataAbas = new BitmapData(conteudo.width,**conteudo.height,true,*
>>> *0x00000000); 
>>> var matrix:Matrix = new Matrix();
>>>  bitmapDataAbas.draw(conteudo, matrix,null,null,null,true);
>>> var icone:Class = RuntimeBitmapAsset.getClass(**bitmapDataAbas);
>>>  evt.target.loader.paramCustom.**icon = icone;
>>> }
>>>   private function expandFirstNode():void{
>>> /*
>>> * EXPANDE O PRIMEIRO NÓ (PASTA PAI: NOME DO MÓDULO) 
>>>  */
>>> _menuTree.expandItem(**acMenusPai[0], true, true);
>>> }
>>>  private function handlerSelectAba(evt:**IndexChangedEvent):void{
>>> /*
>>>  * REMONTA MENU TREE CONFORME ÍNDICE DA ABA 
>>> */
>>> montarMenuTree(evt.newIndex);
>>>  }
>>>  private function handlerSelectTree(evt:**ListEvent):void{
>>>  /*
>>> * VERIFICA SE É PASTA OU JANELA (PAI OU FILHO) 
>>> */ 
>>>  var item:Object = Tree(evt.currentTarget).**selectedItem;
>>> if(_menuTree.dataDescriptor.**isBranch(item)){
>>>  /*
>>> * EXPANDE PASTA
>>> */
>>> _menuTree.expandItem(item, !_menuTree.isItemOpen(item), true);
>>>  }
>>> else{ 
>>> /*
>>>  * ABRE JANELA CORRESPONDENTE
>>> */
>>>  //é link: abre _blank
>>>  /* if(evt.itemRenderer.data.**interfaces.substr(0,4) == "http"){
>>> var request:URLRequest = new URLRequest();
>>>  request.url = evt.itemRenderer.data.**interfaces.toString();
>>>  //nota fiscal eletrônica: enviar usuário e senha
>>>  if(evt.itemRenderer.data.**interfaces == "http://200.150.159.134:8080/";
>>> **){
>>> var params:URLVariables = new URLVariables();                
>>>  params.login = parentApplication.**nomeLoginPVDA;
>>> params.senha = parentApplication.senha;
>>> request.method = URLRequestMethod.POST;
>>>  request.data = params; 
>>> } 
>>>  navigateToURL(request,"_blank"**);
>>> return;
>>>  } */ 
>>>  var ClassReference:Class = 
>>> getDefinitionByName(evt.**itemRenderer.data.interfaces) 
>>> as Class;     
>>>  var instance:Object = new ClassReference();
>>>  /*
>>>  * Verifica quem é o avô (ex: FrmCadUsuarios->**ClasseFrmCadUsuarios->**
>>> ClasseMDIBasico) 
>>> */
>>>  var SuperClassName:String = getQualifiedSuperclassName(**instance);
>>> ClassReference = getDefinitionByName(**SuperClassName) as Class;
>>>  var classeSuperPai:String = getQualifiedSuperclassName(**
>>> ClassReference);
>>>  /*
>>>  * Outros tipos de avôs devem ser tratados com antecedência no switch 
>>> */
>>> switch(classeSuperPai){
>>>  case "Interfaces.Global.Basico::**ClasseMDIBasico":
>>> //inclui a janela
>>> MDIWindow(instance).left = 0;
>>>  MDIWindow(instance).top = 0;
>>> MDIWindow(instance).resizable = true;
>>> _cnvAreaTrabalho.**windowManager.add(MDIWindow(**instance)); 
>>>  break;
>>> case "MDIWindow::**ClasseCmpMDIWindow":
>>> //inclui a janela
>>>  MDIWindow(instance).left = 0;
>>> MDIWindow(instance).top = 0;
>>> MDIWindow(instance).resizable = true;
>>>  _cnvAreaTrabalho.**windowManager.add(MDIWindow(**instance)); 
>>> break;
>>> case "mx.containers::TitleWindow":
>>>  //inclui o popup
>>> //Observação importante: ao incluir spark em módulos é obrigatório 
>>> passar o parâmetro moduleFactory.
>>>  //neste exemplo, existe um s:RadioButton no popup para envio de aviso 
>>> de vencimento de duplicatas
>>> PopUpManager.addPopUp(**TitleWindow(instance), parent, true, null, 
>>> moduleFactory);
>>>  PopUpManager.centerPopUp(**TitleWindow(instance));
>>> break;
>>> default:
>>>  MDIWindow(instance).left = 0;
>>> MDIWindow(instance).top = 0;
>>> MDIWindow(instance).resizable = true;
>>>  _cnvAreaTrabalho.**windowManager.add(MDIWindow(**instance)); 
>>> }
>>> }
>>>  }
>>>
>>> Em sábado, 19 de outubro de 2013 21h53min47s UTC-3, Robinho de Morais 
>>> escreveu:
>>>>
>>>> Tenho esse tree e queria no Cadastro colocar um icone, no do Processos 
>>>> outro icone e do Relatório outro icone...
>>>>
>>>> como eu mudo..
>>>>
>>>>
>>>> <https://lh3.googleusercontent.com/-kIUtUaXKGqQ/UmMpalw1UQI/AAAAAAAAC6A/HJxbcrS20ho/s1600/tree.png>
>>>>
>>>>
>>>>
>>>>  -- 
>> -- 
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para 
>> [email protected]<javascript:>
>> Para sair da lista, envie um email em branco para 
>> [email protected] <javascript:>
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>> --- 
>> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" 
>> dos Grupos do Google.
>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, 
>> envie um e-mail para [email protected] <javascript:>.
>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>
>
>

-- 
-- 
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
--- 
Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos 
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um 
e-mail para [email protected].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Responder a