Aide - Recherche - Membres - Calendrier
Version complète : Composants dynamiques
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
Tom79
Bonjour,

Je voulais savoir comment vous faisiez pour insérer des composants dynamiquement avec Flex ?

Je cherche, selon qu'un ou plusieurs objets sont sélectionnés ou non, mettre leur(s) caractéristiques techniques dans un Panel.

Le système par "états" ne me convient pas car il m'en faudrait une multitude, et si dans le futur il y a une nouvelle caractéristique....

Si quelqun'un a une idée Flex ou AS3 j'en serais très heureux smile.gif

Merci,

Tom
Tonic
Salut,

soit tu créé des nouveaux composant mxml, soit tu les créé directement dans une classe (qui étendrait Panel par exemple).

Ensuite, il te suffit de faire du addChild, d'utiliser le popupManager, de gérer tes vues avec un viewStack, etc...

blaz
salut,

Je ne vois pas ce que tu entend par object dynamique mais pour moi c'est instanciation lors de l'execution. Perso j'utilise ClassFactory qui te permet de faire ca et il faut que tu mette en lib les classes que tu veux utiliser car sinon tu va avoir des galeres, moi j'etait obligé sans les lib d'initialisé un objet avant de pouvoir l'utilisé sinon il ne m'ajoutait pas la declaration de la classe dans la création du swf. Je sais pas si c'est clair mais si il y a souci dit le.

petite exemple:
CODE
private function init():void{
   // si tu n'utilise pas les lib. à mettre a l'initialisation de ton application.
   var pouet_factice:Pouet = new Pouet();
}
//[...]
var oClass:Class = getDefinitionByName("Pouet") as class;
if ( oClass != null){
    var cf:ClassFactory = new ClassFactory(oClass);
    var oPouet:* = cf.newInstance();
    // [...]
}

Apres je pensse qu'il y a plus simple, mais j'ai toujours fais comme ca.
Tom79
Merci !!

Je vais réflechir à tous cela !!!
Fusion
CITATION(blaz @ Jul 9 2007, 03:30 PM) *
salut,

Je ne vois pas ce que tu entend par object dynamique mais pour moi c'est instanciation lors de l'execution. Perso j'utilise ClassFactory qui te permet de faire ca et il faut que tu mette en lib les classes que tu veux utiliser car sinon tu va avoir des galeres, moi j'etait obligé sans les lib d'initialisé un objet avant de pouvoir l'utilisé sinon il ne m'ajoutait pas la declaration de la classe dans la création du swf. Je sais pas si c'est clair mais si il y a souci dit le.

petite exemple:
CODE
private function init():void{
   // si tu n'utilise pas les lib. à mettre a l'initialisation de ton application.
   var pouet_factice:Pouet = new Pouet();
}
//[...]
var oClass:Class = getDefinitionByName("Pouet") as class;
if ( oClass != null){
    var cf:ClassFactory = new ClassFactory(oClass);
    var oPouet:* = cf.newInstance();
    // [...]
}

Apres je pensse qu'il y a plus simple, mais j'ai toujours fais comme ca.


@ blaz

Avec la commande mxmlc -include-libraries, tu peux forcer le chargement de toutes les classes d'une librairie, notamment d'un SWC. J'ai eu le même problème avec getDefinitionByName wink.gif

Pas indispensable, sauf qu'en utilisant la commande, tu n'as jamais à nommer tes classes explicitement comme tu dois le faire ...
Tom79
Merci !!!!

Bon en fait je pense que c'est le système d'ajout (avec addChild) que je ne maîtrise pas bien. Pour faire simple, peut-on créer un objet du style :
CODE
var montexte:Label = new Label();montexte.text="Test";
et l'ajouter à une balise mxml :
CODE
Canvas1.addChild(montexte);
??????
Fusion
CITATION(Tom79 @ Jul 9 2007, 05:16 PM) *
Merci !!!!

Bon en fait je pense que c'est le système d'ajout (avec addChild) que je ne maîtrise pas bien. Pour faire simple, peut-on créer un objet du style :
CODE
var montexte:Label = new Label();montexte.text="Test";
et l'ajouter à une balise mxml :
CODE
Canvas1.addChild(montexte);
??????


Si on considère que le Canvas en question a comme id Canvas1, alors, oui c'est possible. C'est même comme ça que ça marche, il paraîtrait icon_razz.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.