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]> 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] > 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. > -- -- 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.
