ScrollPane créés dans une boucle ?

Résolu
trash_loulou Messages postés 5 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 18 janvier 2006 - 12 oct. 2005 à 01:53
trash_loulou Messages postés 5 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 18 janvier 2006 - 12 oct. 2005 à 17:00
Bonjour, je suis débutant en AS et voici un code que j'ai écrit :


xmlPartenaires = new XML();
xmlPartenaires.ignoreWhite = true;
xmlPartenaires.onLoad = function(ok)
{
if (ok)
{
for (i = 0; i < xmlPartenaires.firstChild.childNodes.length; i++)
{
attachMovie("ScrollPane", "logo" + i, 0);
eval("logo" + i)._x = 0;
eval("logo" + i)._y = i * 10;
eval("logo" + i).setSize(150, 100);
eval("logo" + i).hScrollPolicy = off;
eval("logo" + i).vScrollPolicy = off;
eval("logo" + i).setStyle("borderStyle", "none");
eval("logo" + i).contentPath = "../partenaires/" + xmlPartenaires.firstChild.childNodes[i].attributes.logo;
eval("logo" + i).onPress = function()
{
getURL("http://" + xmlPartenaires.firstChild.childNodes[i].attributes.url, "_blank");
}
}
}
}
xmlPartenaires.load("partenaires.php");

Normalement, cela devrait créer autant de ScrollPane qu'il y a de lignes dans mon fichier XML, mais ça ne me crée qu'un seul ScrollPane dont l'URL mise dans l'évènement onPress est "undefined"... Je sèche...

Quelqu'un aurait-il une idée ?

2 réponses

slagt Messages postés 232 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 29 mars 2011
12 oct. 2005 à 14:49
Il faut entrer une profondeur différente pour chacun de tes scrollpan.
Si tu les mets tous au niveau 0, il vont s'effacer au fur et à mesure
qu'ils apparaissent.



Ensuite, tu réutilises le "i" dans les onPress. Mais si tu réfléchis
quelques secondes à ce qui se passe, tu verras que ça sortira forcément
undefined !



Quand tu cliques, l'AS va essayer d'afficher l'adresse : xmlPartenaires.firstChild.childNodes[i].attributes.url.

Mais à ce moment, le "i" ne veut plus rien dire puisqu'on est plus dans la boucle !



Donc ce que tu dois faire, c'est d'enregistrer la valeur de "i" dans chacun des logo.



Après il existe des astuces pour éviter d'avoir à créer une variable.
Par exemple, si tu mets chacun de tes logos sur une profondeur "i". Il
te suffira pour retrouver la valeur de "i", de faire un this.getDepth()
dans le onPress.

^^
3
trash_loulou Messages postés 5 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 18 janvier 2006
12 oct. 2005 à 17:00
Je n'avais pas bien compris le concept des "niveaux"... Merci beaucoup pour ton aide ! Ca marche impec maintenant.
0
Rejoignez-nous