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 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 --- 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 flexdev+unsubscr...@googlegroups.com. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.