IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Ajouter un composant à une vbox en AS3


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut Ajouter un composant à une vbox en AS3
    Bonjour,
    Dans mon application Air, j'ai créé un fichier XML qui contient une liste de configuration.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <MysqlAir>
    	<Mysql>
    		<configuration title="Configuration">
    			<url>http://127.0.0.1/[...]/Admin/scripts/php/test.php</url>
    			<access>
    				<login>root</login>
    				<password>...</password>				
    			</access>
    		</configuration>
    		<configuration title="Configuration 2">
    			<url>http://127.0.0.1/[...]/Admin/scripts/php/test.php</url>
    			<access>
    				<login>root</login>
    				<password>...</password>				
    			</access>
    		</configuration>
    	</Mysql>
    </MysqlAir>
    Chaque élément <configuration> doit être affiché dans un élément d'un accordéon, dans une vbox.
    Jusqu'à présent j'ai réussie à créer une vbox par élément de configuration mais en faite dans chaque vbox il y a normalement un composant de type tree.
    J'ai fais mes tests du début en MXML pour tester mon composant. Pas de problème, il récupère bien le XML et affiche l'arbre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <mx:Accordion id="AccMain" height="100%">			
     <mx:VBox width="30%" height="100%" label="Accordion Button for Panel 1">									
        <Tree1:Explorer id="exp"/>
      </mx:VBox>
      <mx:VBox label="Accordion Button for Panel 1">
      </mx:VBox>
    </mx:Accordion>
    Mon problème, je voudrais ajouter en AS3 le composant Explorer dans la vbox en AS3.

    J'ai un script qui rajoute une vbox dans l'accordéon. Je montre pas tout mais elle est appelé dans une boucle for qui correspond à chaque élément du <configuration>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function accordion_addChild(ConfigLabel:String):void {
                    //Appel de mon composant
    	        import Components.Tree.*;
    	        var vbox:VBox = new VBox();
    	        vbox.label = ConfigLabel;
    	        vbox.percentWidth = 100;
    	        vbox.percentHeight = 100;
    	        var randColor:uint = Math.random() * 0xFFFFFF;
    	        vbox.setStyle("backgroundColor", randColor);
    	        // Il aime pas ça.
                    vbox.addChildAt(Explorer.TreeExplorer);
    	        AccMain.addChild(vbox);
    	    }
    Comment faire pour ajouter un composant dans mon accordéon de manière dynamique en AS3.
    Merci.

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut

    import Components.Tree.*; dans le corp de ta fonction ?
    non, plutot en début de page, la ou on place tous les imports !

    tu dis "Il aime pas ça." mais tu n'as meme pas mis l'erreur

    addChildAt prend un 2eme parametre qui est l'index, verifie si ca fonctionne avec juste un addChild et si c'est oui, alors tu utilises addChildAt mais ce coup ci avec l'index

  3. #3
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    Bonjour en plus des remarque precedente, à ta place je creerai des instances de Explorer.Tree car javoue j'ai pas trop compris ta syntaxe
    sinon la fonction semble correcte dans la raisonnement, il te faut juste de savoir combien d'element tu dispose pour créer tes VBox et ceci peut se faire à travers ton fichier de conf

    Bon courage

  4. #4
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    En faite, l'import c'est pour montrer que j'importais. Juste avec addChild ça ne passe pas mais j'ai pas pensé retourner le message d'erreur. Des ce soir je regarde cela. Merci

  5. #5
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    alors samy a raison, ton Explorer.TreeExplorer ne doit pas être une instance de Tree !
    les méthodes addChild et addChildAt attendent une occurrence enfant de DisplayObject et non une classe

  6. #6
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    Bonjour et merci de vos intervention.
    En faite, chacun de vous m'a mis un peut sur la piste. Comme je suis débutant je ne saisie pas tout le concept mais j'ai finie par trouver avec un peut de sueur au front.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    	import Components.Tree.Explorer;
    		public function accordion_addChild(ConfigLabel:String):void {
     
    	        var vbox:VBox = new VBox();
    	        vbox.label = ConfigLabel;
    	        vbox.percentWidth = 100;
    	        vbox.percentHeight = 100;
    	        var randColor:uint = Math.random() * 0xFFFFFF;
    	        vbox.setStyle("backgroundColor", randColor);
     
    	    	var TrExp:Explorer = new Explorer();	        
    			vbox.addChild(TrExp);	        
     
    	        AccMain.addChild(vbox);
    	    }
    Pour répondre à samy2525. Cette fonction est appelé dans une boucle ce qui à pour effet d'afficher chaque configuration dans un volet d'un accordéon. Voici un bout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
          private function xmlLoaded(e:Event):void{
              // parser le XML
              var xml:XML = XML(loader.data);
              var Nb:int;
              Nb = xml.Mysql.configuration.length();
             for(var i:int=0;i<Nb;i++){
              	trace(xml.Mysql.configuration[i].@title);
              	accordion_addChild(xml.Mysql.configuration[i].@title);
              } 
              trace(xml.Mysql.configuration.length());
              //trace ("xmlLoaded: "+xml.Mysql.configuration[0]);  
          }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajouter un élément à une vBox par une fonction callback
    Par thhomas dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 18/01/2010, 09h55
  2. accéder à un composant dans une state via AS3
    Par rootdaoud dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 23/03/2009, 16h32
  3. [débutante] Ajout de composant dans une TDBGrid
    Par lilo415 dans le forum Delphi
    Réponses: 9
    Dernier message: 28/02/2007, 10h13
  4. Réponses: 5
    Dernier message: 20/05/2006, 09h15
  5. Réponses: 3
    Dernier message: 27/03/2006, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo