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.

Reply via email to