Normalmente não faço isso, mas dá uma estudada aí:

 private function inicializar(evt:FlexEvent):void{
/*
* Registros de classes
*/
registerClassAlias("Interfaces.Ajuda.FrmAjuda",FrmAjuda);
registerClassAlias("Interfaces.Faturamento.TabelasDePreco.RegraDescontoEscalonada.FrmRegraDescEsc",FrmRegraDescEsc);
registerClassAlias("Interfaces.Parametrizacao.Genericas.FrmCadGener",FrmCadGener);
registerClassAlias("Interfaces.Parametrizacao.Menus.FrmCadMenusSFA",FrmCadMenusSFA);
registerClassAlias("Interfaces.Parametrizacao.ParamEmailSmtp.FrmParamEmailSmtp",FrmParamEmailSmtp);
registerClassAlias("Interfaces.Faturamento.TabelasDePreco.ParametrizacaoRotaTabela.FrmParamRotaTabela",FrmParamRotaTabela);
 _menuTree.addEventListener(ListEvent.ITEM_CLICK, handlerSelectTree);
IntMenusSFA.getMenusSFA(parentApplication.idModulo, 0
,rstSucGetMenus
,function(evt:FaultEvent):void{
Funcoes.faultEvent("Falha ao requisitar menus sistema.", evt);
}
);
}
 private function rstSucGetMenus(evt:ResultEvent):void{
if (evt.result != null){
/*
* RECEBE OS MENUS 
*/
menus = new ArrayCollection();
menus = ArrayCollection(evt.result);
 /*
* MONTA MENU TREE
*/ 
for(var j:uint=0; j<evt.result.length;j++){
if(evt.result[j].children != null){
montarMenuTree(j);
return;
}
}
} 
}
 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 = 263;//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 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, POPUP OU LINK CORRESPONDENTE
*/ 
if(evt.itemRenderer.data.popup == "link"){
var request:URLRequest = new URLRequest();
request.url = evt.itemRenderer.data.interfaces.toString();  
navigateToURL(request,evt.itemRenderer.data.target.toString());
return;
}
 if(evt.itemRenderer.data.interfaces == "" || 
evt.itemRenderer.data.interfaces == null){
Funcoes.mensagem("Interface não registrada ou não contida no renderer. 
Aguarde atualizações.", "I", null);
return;
}
var ClassReference:Class = 
getDefinitionByName(evt.itemRenderer.data.interfaces) as Class;
if(evt.itemRenderer.data.popup == "popup"){
var painel:UIComponent = new ClassReference();
PopUpManager.addPopUp(painel, parent, true);
PopUpManager.centerPopUp(painel); 
}
else{
var janela:Object = new ClassReference();
MDIWindow(janela).left = 0;
MDIWindow(janela).top = 0;
MDIWindow(janela).resizable = true; 
_cnvAreaTrabalho.windowManager.add(MDIWindow(janela));  
}
}
}
 private function expandFirstNode():void{
/*
* EXPANDE O PRIMEIRO NÓ (PASTA PAI: NOME DO MÓDULO) 
*/
_menuTree.expandItem(_menuTree.dataProvider[0], true, true);
}



Em domingo, 16 de março de 2014 22h43min57s UTC-3, Robinho de Morais 
escreveu:
>
> Pessoal me dá uma ajuda para eu popular um tree de acordo com os acessos 
> do usuário logado...
>
> eu populei um tree manualmente assim :
>
> var obj1:Object = {name:'Administração',children:[{name:'Cadastro de 
> Usuários', data:'telas.adm.cadUsuarios', icon:icCad}, 
> {name:'Cadastro de Empresas', data:'telas.inn.cadEmpresas', icon:icCad} ]}; 
> var obj2:Object = {name:'Sistema', children:[{name:'Cadastro de Telas'}]};
> var tree:ArrayCollection = new ArrayCollection([obj1, obj2]);
>
>
> treeMenu.dataprovider = tree;
>
> dessa maneira o meu tree ficou assim :
>
>
> <https://lh4.googleusercontent.com/-Am-JFChYd8k/UyZSpX_ISfI/AAAAAAAAE90/5nS4wp3bkPg/s1600/Sem+t%C3%ADtulo.png>
>
>
> Show de bola....agora criei os acessos dos usuários....e retornou ele em 
> um result....
>
>
> mas não estou conseguindo criar o objeto do menu Administração e adicionar 
> os filhos Cadastro de Usuários e empresas...aparece só [Object],[Object]
>
> Criei até um view para retornar os dados do banco somente com o campo name 
> e data...mas não sei como incluir o filho...
>
>
> Um help por favor.....
>
>

-- 
-- 
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/d/optout.

Responder a