hehe.. boa. e esse é justamente o meu caso. resolvi assim:

private function handlerClickLink(v_interface:String):Function{
        return function(event:MouseEvent):void
        {
                /*
                * Instancia a interface
                */
                var ClassReference:Class = getDefinitionByName(v_interface) as
Class;
                var instanciaInterface:Object = new ClassReference();

                /*
                * Verifica quem é o avô (ex: 
FrmCadUsuarios->ClasseFrmCadUsuarios-
>ClasseMDIBasico)
                */
                var SuperClassName:String =
getQualifiedSuperclassName(instanciaInterface);
                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(instanciaInterface).resizable = true;
                                
_cnvAreaTrabalho.windowManager.add(MDIWindow(instanciaInterface));
                                break;
                        case "mx.containers::TitleWindow":
                                //inclui o popup
                                PopUpManager.addPopUp(instanciaInterface, 
parent, true);
                                PopUpManager.centerPopUp(instanciaInterface);
                                break;
                }
        }
}




On Aug 9, 1:41 pm, Fredy Gadotti <[email protected]> wrote:
> Acredito que a maneira mais correta ainda seja utilizando o operador "is".
>
> Leonardo e Rogério, de ambas as maneiras que vocês propuseram, não
> funcionaria para todos os casos.
>
> MinhaClasse1 herda MinhaClasse2 que herda MinhaClasse3 que herda Group que
> herda GroupBase que herda UIComponent.
>
> Tanto  getQualifiedSuperclassName   quanto  *
> Class(getDefinitionByName(getQualifiedClassName(obj)));*
> retornaria false se eu quisesse saber se a classe é um UIComponent ou
> MinhaClasse3 por exemplo.
>
> Abraço,
>
> Fredy.
>
> 2012/8/9 Rogerio Gonzalez <[email protected]>
>
>
>
>
>
>
>
> > Falae Pessoal!
>
> > Se por qualquer motivo você não souber a classe no momento do teste, outra
> > opção, é vc pegar pelo class name:
>
> > *var className:String = getQualifiedClassName(obj);*
>
> > ai vc pode até retornar a propria classe assim:
>
> > *return Class(getDefinitionByName(getQualifiedClassName(obj)));*
>
> > Abraços
>
> > Rogério Gonzalez
>
> > 2012/8/9 Fredy Gadotti <[email protected]>
>
> >> Você pode testar com o operador "is".
>
> >> if(instancia is TitleWindow){  // Isso retorna true se na herança de
> >> classes, uma delas for TitleWindow :)
>
> >> Abraço,
>
> >> Fredy,
>
> >> 2012/8/9 Leonardo Oliveira <[email protected]>
>
> >>> Boa tarde a todos. Estou com uma questão interessante e gostaria de
> >>> uma ajuda. Simplificando ao máximo, tenho duas classes filhas que
> >>> extendem de componentes. Instanciando dinamicamente as filhas, como
> >>> saber de qual pai é? Exemplo:
>
> >>> public class ClasseUm extends MDIWindow
> >>> {
> >>>    (...)
> >>> }
>
> >>> public class ClasseDois extends TitleWindow
> >>> {
> >>>    (...)
> >>> }
>
> >>> este é o handler do botão que abre a interface:
> >>> (v_interface recebe como string "ClasseUm" ou "ClasseDois")
>
> >>> private function handlerClickLink(v_interface:String):Function{
> >>>         return function(event:MouseEvent):void
> >>>         {
> >>>                 var ClassReference:Class =
> >>> getDefinitionByName(v_interface) as
> >>> Class;
> >>>                 var instancia:Object = new ClassReference();
>
> >>>                 if(instancia é filha de TitleWindow){//aquí é onde
> >>> preciso testar de
> >>> que pai é o filho
> >>>                         PopUpManager.addPopUp(instancia, parent, true);
> >>>                         PopUpManager.centerPopUp(instancia);
> >>>                 }
> >>>                 else{
> >>>                         MDIWindow(instancia).resizable = true;
>
> >>> cnvAreaTrabalho.windowManager.add(MDIWindow(instancia));
> >>>                 }
> >>>         }
> >>> }
>
> >>> Aguardo a ajuda de vocês. Obrigado.
>
> >>> --
> >>> 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 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 [email protected]
> >> Para sair da lista, envie um email em branco para
> >> [email protected]
> >> 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 [email protected]
> > Para sair da lista, envie um email em branco para
> > [email protected]
> > 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 [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

Responder a