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

Flash Discussion :

[FLASH MX2004] occurences et textes dynamiques


Sujet :

Flash

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut [FLASH MX2004] occurences et textes dynamiques
    Bonsoir ,

    Nouveau en programmation et Flash
    Je trouve Flash très chouette mais je me suis rendu compte qu'il faut un minimum d'AS pour faire des choses un peu plus élaborées. Donc j'essaie de m'y mettre Mais...

    Je dois être très fatigué à mon avis. J'ai donc une question, probablement élémentaire, que je ne parviens pas à résoudre. Je viens de passer en revue beaucoup de post et les tuto plus d'autres sites mais je ne aprviens pas à voir ou est mon problème...

    J'ai 12 champs textes dynamiques (nommés item_txt1, item_txt2, item_txt3,...) disposés sur la scène dès le départ.

    Je souhaiterai les remplir avec une chaîne en provenance d'un fichier extérieur (ItemM.txt en format UTF-8) du type
    &item1=Amphibiens&
    &item2=Pilote&
    &item3=Etoile&
    etc...

    Chacun des champs serait rempli par l'item qui à le même numéros d'ordre (1, 2, 3,...). Puis je leur applique un formatage élémentaire.

    J'ai pensé faire comme ci-dessous pour être plus élégant:

    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
     
    var chargeItem_lv:LoadVars = new LoadVars(); 
    chargeItem_lv.load("ItemM.txt");
     
    var format:TextFormat = new TextFormat () ;
    with (format){ font = "maPolice" ;
    size = 18 ; color = 0xFF0000;}
     
     
    chargeItem_lv.onLoad = function (success:Boolean):Void 
    {
    for (i:Number=1;i<=12;i++)
    {	
            item_txt=["item_txt"+i]; 
    	this.createTextField(item_txt, this.getNextHighestDepth());
    	item_txt.text= chargeItem_lv["item"+i];
    	item_txt.wordWrap = true;
    	item_txt.embedFonts = true;
    	item_txt.setTextFormat(format);
     
    trace (i); trace(item_txt);
    };	
    };

    Mais je n'ai aucun affichage dans les champs textes dynamiques

    Pourtant, ca boucle bien. Et quand je remplace directementitem_txt par item_txt4 (par exemple) il m'affiche la chaine adéquate.

    Pouvez-vous me dire ou je coince?

    Merci beaucoup

  2. #2
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    pense à typer tes variables, tu te serais vite rendu compte du problème

    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
    var chargeItem_lv:LoadVars = new LoadVars(); 
    chargeItem_lv.load("ItemM.txt");
     
    var format:TextFormat = new TextFormat () ;
    with (format){ font = "maPolice" ;
    size = 18 ; color = 0xFF0000;}
     
     
    chargeItem_lv.onLoad = function (success:Boolean):Void 
    {
    for (i:Number=1;i<=12;i++)
    {	
            var item_txt:String = "item_txt"+i; 
    	this.createTextField(item_txt, this.getNextHighestDepth());
            var cible:TextField = this[item_txt];
    	cible.text= chargeItem_lv["item"+i];
    	cible.wordWrap = true;
    	cible.embedFonts = true;
    	cible.setTextFormat(format);
     
    trace (i); trace(item_txt);
    };	
    };
    @++
    Libzippp (C++)
    Lost in AStorm

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut Hello
    Merci thecaptain pour ta réponse rapide

    Effectivement, c'est plus clair et je comprends le pourquoi du typage
    ... Mais ...
    Ca ne marche toujours pas?!?!?

    Et je comprends vraiment pas pourquoi

    Un trace (cible.text) me renvoie undefined
    mais un trace(chargeItem_lv["item"+i]) me renvoie la bonne chaine!!!

    Pourtant celle-ci devrait être affectée à cible.text, non?

    Je ne comprends pas très bien.....


    Je vais de voir sortir et reviens début PM
    Merci

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut personne pour m'indiquer la voie?
    Hello,

    Me revoici au poste.

    Ca ne marche toujours pas
    pourtant je pense la solus se trouve sous mes yeux.

    A+

  5. #5
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    re,

    mea culpa, je suis passé trop vite sur le code Normal que ca ne marche pas Tu fais un this.getNextHighestDepth alors que tu es dans le scope dans LoadVars.onLoad ==> le this se rapport au LoadVars et non pas à un MovieClip Dans ton cas :
    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
    chargeItem_lv.onLoad = function (success:Boolean):Void 
    {
    for (i:Number=1;i<=12;i++)
    {	
            var item_txt:String = "item_txt"+i; 
    	this.createTextField(item_txt, i);
            var cible:TextField = this[item_txt];
    	cible.text= chargeItem_lv["item"+i];
    	cible.wordWrap = true;
    	cible.embedFonts = true;
    	cible.setTextFormat(format);
     
    trace (i); trace(item_txt);
    };	
    };
    et ca devrait marcher ^^

    @++
    Libzippp (C++)
    Lost in AStorm

  6. #6
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    on peux voir le fla et le fichier txt en pice jointe ?

  7. #7
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    oups , tu m'as pris de vitesse Capi

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut c'est toujours pas ca
    Re,

    Merci mais....

    Effectivement ce n'est pas un MovieClip, -1 pour moi

    J'ai coller ton code mais point de résultat ...

    je joins le fla et le fichier txt

  9. #9
    Membre émérite
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Points : 2 313
    Points
    2 313
    Par défaut
    repars de la base,
    ceci fonctionne >
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var chargeItem_lv:LoadVars = new LoadVars();
    chargeItem_lv.load("ItemMenu.txt");
    chargeItem_lv.onLoad = function(success:Boolean):Void  {
    	for (i=1; i<=12; i++) {
    		trace(this["item"+i]);
    	}
    };
    stop();

  10. #10
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut Ok je teste et te/vous tiens au courant
    Meci Jean-Philippe

    A tout de suite

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut
    Bon me revoici ...
    J'ai suivi le conseil de Jean Philippe
    Après réécriture j'arrive à ce code qui il me semble devrait fonctionner


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var chargeItem_lv:LoadVars = new LoadVars();
    chargeItem_lv.load("ItemMenu.txt");
    chargeItem_lv.onLoad = function(success:Boolean):Void  {
    	for (i=1; i<=12; i++) {
    	var t:String = "item_txt"+i;	
    	this.createTextField (t, i);    
    	t.text = chargeItem_lv["item"+i];
     
    trace(this["item"+i]);  trace(i); trace(this); trace(t);
    }
    };
    stop();
    Mon raisonnement: au chargement
    je crèe une chaine+i , je crèe le TextField au nom de t (enfait, item_txt+i), j'affecte au TextField créé le contenu item+i
    et je boucle jusqu'à avoir mes 12 TextField (qui sont sur la scène) remplis

    C'est pas faux quand même?

    quand je lance ça, il me dit que la propriété text n'existe pas pour t!!!
    J'en déduit qu'il considère toujour t comme un String et pas comme un TextField

    Je ne vois vraiment pas

    Pouvez-vous m'expliquer, me proposer une alternative de codage?

    Vu ce genre de problème de codage/d'affectation/programmation que j'ai et qui me semble pourtant basique, pouvez-vous me conseiller l'un ou l'autre livre qui pourrait m'aider (je travaille en MX2004)?


    Merci encore
    Je vais continuer à m'arracher les cheveux en attendant vos avis

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut solution trouvée, mais y a t'il mieux?
    Re hello,

    Je viens de trouver une solution (cf code ci-dessous)
    Apparemment le problème se situait dans l'absence de localisation des TextField
    un _root a suffit

    Mais pourquoi un _parent (à la place du _root) ne fonctionne pas?

    Si vous avez une suggestion plus élégante je suis ouvert à toutes propositions

    Merci à vous pour votre aide

    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
     
    var format:TextFormat = new TextFormat ()
    with (format){ 
    font = "maPolice" ; size = 18 ; color = 0xFF0000;}
     
     
    var chargeItem_lv:LoadVars = new LoadVars();
    chargeItem_lv.load("ItemMenu.txt");
    chargeItem_lv.onLoad = function(success:Boolean):Void  {
    	for (i=1; i<=12; i++) {
    	this.createTextField ("item_txt"+i, i);
     
    	_root["item_txt"+i].text = chargeItem_lv["item"+i]; 
    	_root["item_txt"+i].setTextFormat(format);
     
    trace(this["item"+i]);  trace(i); trace(this);
    }
    };

  13. #13
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    re,

    mmmh bon mettons un peu d'ordre : faut virer les _root

    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
    var me:MovieClip = this;
    var format:TextFormat = new TextFormat ()
    with (format){ 
    font = "maPolice" ; size = 18 ; color = 0xFF0000;}
     
     
    var chargeItem_lv:LoadVars = new LoadVars();
    chargeItem_lv.load("ItemMenu.txt");
    chargeItem_lv.onLoad = function(success:Boolean):Void  {
    	for (i=1; i<=12; i++) {
    	me.createTextField ("item_txt"+i, i);
            var field:TextField = me["item_txt"+i];
    	field.text = chargeItem_lv["item"+i]; 
    	field.setTextFormat(format);
     
    trace(field);  trace(i); trace(this);
    }
    };
    @++
    Libzippp (C++)
    Lost in AStorm

  14. #14
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut
    Hello TheCaptain,

    Yapas à dire c'est quand même plus clair et efficace.

    Bon je ne désespère pas d'arriver un jour à faire aussi bien

    Bonne continuation à toi
    Et encore ... MERCI !!!

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

Discussions similaires

  1. [FLASH MX2004] Profondeur et texte dynamique
    Par nicolb dans le forum Flash
    Réponses: 7
    Dernier message: 16/11/2005, 09h27
  2. [FLASH MX2004] Création d'objet dynamiquement
    Par noarno dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2004, 11h00
  3. Réponses: 2
    Dernier message: 27/08/2004, 11h57
  4. [FLASH MX] Bouton et texte dynamique
    Par noarno dans le forum Flash
    Réponses: 11
    Dernier message: 21/07/2004, 09h43
  5. [FLASH MX 2004] Affichage texte dynamique
    Par Sun3clipse dans le forum Flash
    Réponses: 8
    Dernier message: 25/06/2004, 16h24

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