Opa, o problema é adicionar uma dependencia na minha lib =/
Mas eu fiz algo que funcionou muito bem: var description:XML = describeType(this); var list:XMLList = description.child("accessor"); for (var i:int;i<list.length();i++) { var s:String = list[i].@name; try { var btn:Button = this[s] as Button; Alert.show("aha! um botão encontrado:"+btn.id); }catch(e){} } Valeu, galera! On Jan 27, 11:33 am, Daniel Rodrigues da Cunha Frank <fr...@projetusinformatica.com.br> wrote: > Herberth, > > Para reflexão em AS3 eu tenho utilizado a* Reflection API* do Spicelib > (http://www.spicefactory.org/). > Inclusive essa foi uma dica que encontrei no finado blog do Mário Junior. > Att., > > *Daniel R. C. Frank, **Analista de Sistemas, Projetus Informática* > > Tel: (32) 2101-6400 * > fr...@projetusinformatica.com.br *|www.projetusinformatica.com.br [image: > Twitter] <http://www.twitter.com/projetus> <http://www.twitter.com/projetus> > > <http://www.twitter.com/projetus> > <http://www.twitter.com/projetus> > > <http://www.projetusinformatica.com.br/> > > Em 27 de janeiro de 2011 09:59, Mário Júnior <juninho...@gmail.com>escreveu: > > > > > > > > > O famoso "for in" para descobrir atributos de objetos só funciona com > > Object criados dinamicamente, em tempo de execução, e sem tipagem forte. > > > Por exemplo: > > > var p : Object = new Object(); //ou var p : Object = {nome: 'Mario', idade: > > 27}; > > p.nome = "Mario" > > p.idade = 27 > > > for (var atributo:String in p) { > > trace (atributo + ": " + p[atributo]); > > } > > > Isso funciona!! Agora, se eu tiver uma classe Pessoa, e eu instanciar um > > objeto dessa classe (fortemente tipado), não funciona: > > > var p : Pessoa = new Pessoa(); > > p.nome = "Mario" > > p.idade = 27 > > > for (var atributo:String in p) { > > //nesse caso, nem entra no for :( > > trace (atributo + ": " + p[atributo]); > > } > > > Sendo assim, a UNICA maneira é usando describeType() > > > var described:XML = describeType(p); > > > //described.variable retorna um XMLList > > for each (var variable:XML in *described.variable*) { > > var attr:String = variable.@name; > > trace(attr + ": " + p[attr]); > > } > > > Se sua classe tiver atributos PUBLICIOS, entao vc usa o "*variable*" no > > describeType para acessar as variaveis. > > Agora, se sua classe for de atributos PRIVADOS com getter e setter, então > > vc usa *described.accessor* > > > *Agora: Cuidado com a pegadinha do Sérgio Malandro!!!* > > * > > * > > *Se sua classe só tiver atributos PUBLICOS, mas conter a metadata > > [BINDABLE] encima dela, *o mxmlc (Compilador do Flex) irá 'transcrever' > > sua classe para atributos privados com getters e setters ANTES DE GERAR o > > swf (em processo de compilação - compile time) ... portanto, vc só poderá > > usar o *described.accessor *para acessar os atributos em runtime, enquanto > > o described.variables nao retorna nada (no caso, nem entra no for acima). > > > Links importantes: > >http://bit.ly/ffGT8h > >http://bit.ly/fr5Ln5 > > > YEAH - YEAH!! > > > []'s > > > Em 27 de janeiro de 2011 09:27, Herberth Amaral > > <herberthama...@gmail.com>escreveu: > > > Olá pessoal, > > >> Estou desenvolvendo uma lib e preciso utilizar os recursos de > >> reflection do ActionScript3 para pegar todos os objetos (especialmente > >> widgets) de uma aplicação/módulo/componente. Tentei utilizar o for .. > >> in, for each .. in e o describeType para me retornar ao menos o ID, > >> mas ele nem ao menos entra no loop. > > >> Alguem tem alguma sugestão? > > >> P.S: tou usando o flex 3 pra testar. > > >> -- > >> 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 emhttp://groups.google.com/group/flexdev > > > -- > > Mario Junior > >http://blog.mariojunior.com/ > > @mariojunior > > > -- > > 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 emhttp://groups.google.com/group/flexdev -- 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