Cuidado com akele lance de necessitar um import da classe atraves de uma
variavel "dummy" para q o compilador possa fazer o link entre as classes
corretamente. Lembram?



*import com.whatever.MinhaClasse*


public class GodFactory {

*public var dummy:MinhaClasse;*

public static function instantiateUsingClassName(className:String):* {

>     var classToInstantiate : Class = getDefinitionByName(className) as
> Class;
>     var myClassFactory : ClassFactory = new
> ClassFactory(classToInstantiate);
>     var myObjectInstance : * = myClassFactory.newInstance();
>     return myObjectInstance;
> }




e no uso:

var mc:MinhaClasse = GodFactory.instantiateUsingClassName("*
com.whatever.MinhaClasse*");
mc.doAnyThing(); //ok!


Sacaram o problema?
O ClassFactory só vai criar o objeto se a classe GodFactory tiver vinculo
com a classe a ser instanciada.
E tb, se fizer só o "import" nao vai resolver, vc precisa obrigatorimanete
declarar uma variavel besta (dummy) para isso.

Daí vc deve estar se perguntando:  "caramba... mas se eu quero criar todos
os meus objetos, precisarei criar variaveis bestas para cada um?" YES!! Q
tosco né =D

Pra isso, vc pode tentar usar um Dictionary, para entao guardar suas
variaveis bestas uma unica referencia, ou tentar o uso de registerClass do
flash.utils . Esse ultimo nunca tentei, mas me parece q funciona sim.. dá
uma pesquisada no historico q já foi discutido muito sobre isso por aqui.







2009/11/25 Pergentino Araújo <[email protected]>

> import flash.utils.getDefinitionByName;
> import mx.core.ClassFactory;
>
> public static function instantiateUsingClassName(className:String):* {
>     var classToInstantiate : Class = getDefinitionByName(className) as
> Class;
>     var myClassFactory : ClassFactory = new
> ClassFactory(classToInstantiate);
>     var myObjectInstance : * = myClassFactory.newInstance();
>     return myObjectInstance;
> }
>
>
>
> Ref: http://flexiblegorilla.com/wordpress/?p=140
> --
> Atenciosamente, Pergentino Araújo.
> Arquiteto Java/Flex
> MSc. Profissional - Engenharia de Software
> Adobe Certified Expert - Flex 3 with AIR
>
> 2009/11/25 Mateus <[email protected]>
>
> Olá pessoal
>>
>> estou com um problema para criar objetos dinamicamente,
>> a situação e´aseguinte, preciso criar os objetos dinamicamente, apenas
>> sabendo o nome do objeto atraves de uma string
>>
>> por exemplo
>>
>> var obj:string = new string('Tcomponente');
>>
>> var tela:TCompDados = new TCompDados ;//nesse caso eu sei que o objeto é o
>> TCompDados,
>>
>> quero criar o objeto atrves da string, alguém pode me ajudar?
>>
>> --
>> __________________________________
>> Att.
>> Mateus André Chies
>> Analista e Desenvolvedor de Sistemas
>> Bacharelando em SI - SETREM
>> http://mateuschies.blogspot.com
>>
>>
>> "Viver é desenhar sem borracha." (Millôr Fernandes)
>>
>>
>>
>
>
>
>
> >
>


-- 
Mario Junior
Enterprise Java / Flex Architectures
Adobe Certified Expert Flex 3 with AIR

Sofshore Informática
http://www.sofshore.com.br
+55 (48) 3337 2003
Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
Florianopolis SC Brasil

--~--~---------~--~----~------------~-------~--~----~
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