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 em http://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 em http://groups.google.com/group/flexdev