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