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 :

Aide pour création dynamique d'éléments


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut Aide pour création dynamique d'éléments
    Salut à tous,

    J'ai un souci dans mon AS.
    En effet, je dois générer un affichage de news automatique. J'ai un dataGrid contenant l'id, le titre et le texte de mes news. Jusqu'ici tout va bien, le dataGrid est correctement rempli.

    Mais c'est lors de la génération automatique de mes composants visuels qui constitueront la new que j'ai un souci. Pourtant j'ai suivi la doc Adobe et ca ne marche pas....

    Voici mon code:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    import mx.controls.Text;
    import mx.controls.Label;
    import mx.states.AddChild;
    // Chargement de la news selectionnée
    private function chargerNews() :void
    {
    	var titre1: Label ;
    	var contenu1: Text;
    	var titre2: Label;
    	var contenu2: Text;
    	var i : int = 0;
    	var hauteur: int;
    	var nbNews: int = lalistenews.dataProvider.lenght;
     
    	// création de la premiere news
    	titre1= new Label;
    	contenu1=new Text;
    	titre1.x=10;
    	titre1.y=10;
    	contenu1.x=10;
    	contenu1.y=20;
     
    	// positionnement sur le datagrid et assignation des valeurs
    	lalistenews.selectedIndex=i;
    	titre1.text=lalistenews.selectedItem.titre;
    	contenu1.text=lalistenews.selectedItem.contenu;
     
    	// ajout des elements
    	this.addChild(titre1);
    	this.addChild(contenu1);
     
    	//initialisation des variables avant la boucle
    	i=i+1;
    	hauteur= contenu1.width;	
     
    	//Création des autres news
    	while (i<nbNews)
    	{
     
    		titre2 = new Label;
    		contenu2 = new Text;
    		titre2.x=10;
    		titre2.y=hauteur + 20;
    		contenu2.x=10;
    		contenu2.y=hauteur + 30;
     
    		lalistenews.selectedIndex=i;
    		titre2.text=lalistenews.selectedItem.titre;
    		contenu2.text=lalistenews.selectedItem.contenu;
     
    		this.addChild(titre2);
    		this.addChild(contenu2);
     
    		i=i+1;
    		hauteur= contenu2.width;
    	}
    }

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Il faudrait être plus précis !!
    "ça ne marche pas" c'est vague !!

    Commence par exécuter ton code en mode debug pour vérifier si chaque variable a bien les valeurs attendues.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut
    Et bien ca ne marche vraiment pas
    Aucun de mes composant n'est crée, mais je n'ai aucun message d'erreur...

    Pour quand on regarde la doc ici j'utilise la meme méthode...

    Je pense qu'il y a un problème dans mon code quelque par qui le fait s'arreter et en empeche l'execution.

    PS: mon débuger plante depuis le début et impossible de le faire fonctionner...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut
    Bon j'ai avancé un peu dans mon problème.

    J'ai simplifié mon code pour me limiter à la création d'une seule news pour le moment:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    import mx.controls.Text;
    import mx.controls.Label;
    import mx.states.AddChild;
    // Chargement de la news selectionnée
    private function chargerNews() :void
    {
    	var titre1: Label ;
    	var contenu1: Text;
    	var titre2: Label;
    	var contenu2: Text;
    	var i : int = 1;
    	var hauteur: int;
    	var nbNews: int;
     
     
     
    	// création de la premiere news
    	titre1= new Label;
    	contenu1=new Text;
    	titre1.x=10;
    	titre1.y=10;
    	contenu1.x=10;
    	contenu1.y=20;
    	contenu1.width=500;
     
     
     
    	// positionnement sur le datagrid et assignation des valeurs
    	lalistenews.selectedIndex=i;
    	titre1.text=lalistenews.selectedItem.titre;
    	contenu1.text=lalistenews.selectedItem.texte;
     
     
    	// ajout des elements
    	this.addChild(titre1);
    	this.addChild(contenu1);
     
    	hauteur = contenu1.height;
     
     
    }

    Mon label et mon text apparaissent, déjà une bonne chose.
    J'ai donc encore 2 problèmes à résoudre:
    1- Comment récuperer la hauteur de ma news? Car chacune étant differente, il me faudra les placer les une en dessous des autre en tenant compte de leur hauteur.

    2- Comment ajouter un élement à un Etat. Je n'arrive pas à faire : this.currentState.addChild(titre1) par exemple. Car dans mon application chacun de mes états affichent differents elements dans un canvas.

    Merci

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    1- Le plus simple est d'utiliser un container avec un layout de type vertical et non absolu (VBox)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut
    Ah oui, je viens de tester une textarea transparente une petite bordure pour definir le contour de la news, et si la news est plus grande que la hauteur définie, une scrollbar apparait

    Maintenant il ne me reste plus qu'a gerer la solution des états...

    J'ai essayé:

    nomdemonEtat.addChild ca ne marche pas
    this.currentState.addChild idem...

    Je ne trouve pas la bonne syntaxe à adopter

Discussions similaires

  1. aide pour création de tables
    Par arti2004 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2007, 12h08
  2. Recherche aide pour création de site
    Par herve.delisle dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/06/2007, 14h03
  3. Réponses: 11
    Dernier message: 23/05/2007, 10h53
  4. Aide pour création requête
    Par in dans le forum Oracle
    Réponses: 7
    Dernier message: 19/06/2006, 13h55
  5. developpeur c++ demande aide pour création d'un pieton 3D
    Par fumidu dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 29/05/2006, 17h51

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