Pb de nommage dynamique de variable

Résolu
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008 - 30 mars 2006 à 11:20
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008 - 30 mars 2006 à 16:53
bonjour j'ai un souci de nommage dynamique de variable, je m'explique :
- je fais une boucle while dans laquelle je crée un nom de variable comme ceci
nomLienTrafic = "trafic"+i+"_mc"
- je duplique un clip nommé exemple qui est composé d'une image et d'un champTexte
_parent.exemple_mc.nomLien_txt.text = nomLien;
duplicateMovieClip(_parent.exemple_mc, nomLienTrafic, i+30);
- jusque la tout fonctionne c'est apres que ca se complique, je n'arrive pas a agir sur le nouveau clip via nomLienTrafic, tel que le deplacer ou changer le champs texte
_parent.exemple_mc._x += 100;
_parent.nomLienTrafic._x+=200;
_parent.nomLienTrafic._y+=200;
_parent.nomLienTrafic.nomLien_txt.text="toto";

on m'a dit de mettre nomLienTrafic = eval("trafic"+i+"_mc") ou encore de mettre _parent[nomLienTrafic) mais ca ne marche pas, que dois je faire? ou est mon erreur?

merci par avance

lily

13 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 mars 2006 à 11:44
Ton erreur est de te servir d'une variable contenant un texte pour désigner un nom de clip :nomLienTrafic "trafic"+i+"_mc"; serait la meêm chose que : nomLienTrafic "trafic1_mc";

Or "trafic1_mc" n'est pas un clip, mais un String ! Et un String n'a pas de propriété _x ou _y ...

Ce que tu dois faire c'est utiliser un objet temporaire fesant référence au clip que tu viens de créer de la façon suivante :
var Temp = duplicateMovieClip(_parent.exemple_mc, "trafic"+i+"_mc", i+30);

Et tu obtiendras : Temp = _parent.trafic1_mc; (si i=1);

A partir de maintenant, tu peux utiliser "Temp" comme "raccourcis" pour contrôler ton clip créé :
Temp._x += 100;

Peg'
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 mars 2006 à 15:43
Ah oui, mais place donc ton script dans la boucle for ou alors appelle le clip par son nom entier, comme :

_parent["trafic"+n+"_mc"].MonBouton.onRelease = function ....

avec "n" étant le noméro de ton clip à cibler.

Peg'
3
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 12:36
merci beaucoup pour ces explications. je comprend mon erreur, je teste ca cette après midi et je viendrais en redonner des nouvelles. en esperant que ca marche :-)

merci

lily
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 14:59
merci,

ca marche a par que du coup je ne dois pas mettre
var Temp = duplicateMovieClip(_parent.exemple_mc, "trafic"+i+"_mc", i+30);
mais
var Temp = _parent.exemple_mc.duplicateMovieClip("trafic"+i+"_mc", i+30);

j'ai mis un moment pour comprendre! :)

sinon j'ai un autre souci sur le meme principe qu eje ne sai scomment faire.

ce clip temp ainsi créé contient un bouton et j'aimerai attribuer a chacun des boutons de clipTemp crée une action on Release mais differente a chaque fois.(un lien different) du style:

clipTemp.nomLien_btn.onRelease = function() {
lien=_parent.agglomeration[_parent._parent.ville].theme[0].lien[LIEN_TRAFIC].url;

_parent.myBrowser = new mdm.Browser(0, 85, 1024, 590, lien, true);

};

comment puis je m'y prendre?

merci

lily
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 mars 2006 à 15:24
ben tu viens de le faire ...

Peg'
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 15:36
et ca garde les propriétés? non car LIEN_TRAFIC n'est plus le bon (c'était i dans l'exemple précédent)!
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 15:42
ah moins que ca garde les propriétés attribué au bouton au moment de la création, dans ce cas tant mieux
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 15:47
sinon j'ai une autre question du même type que la première

j'aimerai effacer les clips crées. Sachant que je connais la valeur i

j'aimerai faire qq chose de la forme

for (i=0; i<LIEN_TRAFIC; i++){
clipTemp="trafic"+LIEN_TRAFIC+"_mc"
removeMovieClip (clipTemp);
}

seulement pareil, le nom clipTemp n'est qu'un string. Comment dois je m'y prendre la?

ce devrait être ma dernière question :)

merci

lily
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 mars 2006 à 16:28
Tu n'as apparement pas pris en compte le dernier bout de code que je viens de te donner .. la réponse à ta question y est !

Peg'
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 16:31
ah ok, mais j'ecrit depuis le root. je ne dois pas metre _parent devant.

this["trafic"+n+"_mc"] suffit?

j'ai un peu de mal :)
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 16:43
comme ca?

for (i=0; i<LIEN_TRAFIC; i++) {
removeMovieClip(this["trafic"+i+"_mc"]);
}
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 mars 2006 à 16:50
mais teste ;)
Rien ne sert de me demander avant que tu ne testes en live ... en plus, tu as des "trace" qui peuvent t'aider ! N'hésite pas à t'en servir. Et sinon, l'aide de Flash est ton amie ...:p

Peg'
0
lilyvirus Messages postés 117 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 novembre 2008
30 mars 2006 à 16:53
c'est ce que j'ai fait mais je n'ai rien de convainquant!
Avec un peu de temps, je trouverais bien! :)
0
Rejoignez-nous