Bonjour,
J'ai un tableau qui contient une liste crée par la methode attachmovie avec un scroll bar.
J'aimerai savoir comment faire pour qu'a chaque entree de la liste corresponde un lien ( je suppose avec un tableau) et cela de façon dynamique.![]()
Bonjour,
J'ai un tableau qui contient une liste crée par la methode attachmovie avec un scroll bar.
J'aimerai savoir comment faire pour qu'a chaque entree de la liste corresponde un lien ( je suppose avec un tableau) et cela de façon dynamique.![]()
Je n'ai pas compris ton problème, pourrais tu le reformuler.
bon alors je reformule ! Je cree un tableau dynamiquement (code ci dessous) et je voudrai en fait associer a chauqe element de la liste (tableau) un lien http. Là j'ai que les menus, je voudrai savoir comment generer les liens pour chaque menus crées par la boucle.
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 list = ["Adrastea", "Amalthea", "Ananke", "Callisto", "Carme", "Elara", "Europa", "Ganymede", "Himalia", "Io", "Leda", "Lysithea", "Metis", "Pasiphae", "Sinope", "Thebe"]; // tableau des noms startingY=display.list._y; // occurence "list" ne pourra defiler si sa position y excède sa postion y de depart bottom=120; // limite de position inférieure function buildList(){ spacing=30; //alignement vertical var i=-1; while(++i<list.length){ name="infoBar"+i; // valeur de name ajusté selon valeur de i y=i*spacing; // variable de position de clip display.list.attachMovie("infoBar",name,i); //creation d'occurence display.list[name]._y=y; //position ajustee en fonction de la valeur de y display.list[name].moonName.text=list[i]; display.list[name].moonNum.text=i+1; }// remplissage des champs text avec les donnees } buildlist(); function scroll(direction){ speed=10; // vitesse de defilement if (direction=="up"){ // determine si defilement du clip vers le haut peut avoir lieu if (display.list._y-speed+display.list._height>(startingY+bottom)){ display.list._y-=speed; // position de depart si occurence deplacée de 10 vers le haut // position ensuite comparée a la limite de defilement }else{ display.list._y=(startingY+bottom)-display.list._height; // si deplacement depasse limite, occurence ajustee a sa limite autorisee } }else if (direction=="down"){ if(display.list._y+speed<startingy){ display.list._y+=speed; }else{ display.list._y=startingY; }// idem que plus haut } }
A tester.
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 var tabURL = ["http://...", "http://...", "http://...", ...]; ... while(++i<list.length){ name="infoBar"+i; // valeur de name ajusté selon valeur de i y=i*spacing; // variable de position de clip display.list.attachMovie("infoBar",name,i); //creation d'occurence display.list[name]._y=y; //position ajustee en fonction de la valeur de y display.list[name].moonName.text=list[i]; display.list[name].moonNum.text=i+1; display.list[name].onRelease= function() { getUrl(tabURL[i]); } }// remplissage des champs text avec les donnees ...
quand je mets ce code et que je clique sur les boutons générés cela m'ouvre l'explorateur de fichiers du bureau !![]()
Je testeen local mais je suis connecté en permanence, donc si cela marchait cela m'ouvrirai une nouvelle page.
Pour te donner une idee de mon fichier, le code ci dessus sse trouve sur l'image 1 du calque "action".
"Display" correspond à l'occurence qui est sur la scene ( aucun code n'y est attaché directement dessus) de "list display" a l'interieur duquel se trouve un _mc vide du nom de "list" qui charge les clips avec "attachmovie".
Donc tout le code est sur l'image 1 du calque actions de la scene.
Je ne suis mal exprimé. Tu es dans une page web (ONLINE) ou dans une projection (OFFLINE)
ben je suis en offline alors puisque le fichier swf n'est pas mis sur mon serveur encore.
Personne n'a jamais fais de liste de liens avec un menu dynamique ?
Freegreg ton code me paraissait correct, je vois pas pourquoi cela ne génère pas des liens du tableau en fonction de i ?!
Ben si justement avec des getURLEnvoyé par guy2004
![]()
Tu l'as testé dans une page web? Ou seulement dans le prévisualisateur de Flash?
Modifie-le et donnes-nous les résultats
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 display.list[name].onRelease= function() { trace(i + " -> " + this._target); getUrl(tabURL[i]); }
je l'ai testé en offline seulement.
Là cela me donne cela :et cela m'ouvre toujours la meme fenetre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 16 -> /display/list/infoBar0
Si je mets en ligne avec ce code ci :cela ne me donne rien lorsque je clique sur les liens générés.
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 list = ["Adrastea", "Amalthea", "Ananke", "Callisto", "Carme", "Elara", "Europa", "Ganymede", "Himalia", "Io", "Leda", "Lysithea", "Metis", "Pasiphae", "Sinope", "Thebe"]; // tableau des noms var tabURL = ["http://www.voila.fr", "http://www.wanadoo.fr", "http://www.yahoo.fr", "http://www.yahoo.fr","http://www.voila.fr", "http://www.wanadoo.fr", "http://www.yahoo.fr", "http://www.yahoo.fr","http://www.voila.fr", "http://www.wanadoo.fr", "http://www.yahoo.fr", "http://www.yahoo.fr","http://www.voila.fr", "http://www.wanadoo.fr", "http://www.yahoo.fr", "http://www.yahoo.fr"]; startingY=display.list._y; // occurence "list" ne pourra defiler si sa position y excède sa postion y de depart bottom=120; // limite de position inférieure function buildList(){ spacing=30; //alignement vertical var i=-1; while(++i<list.length){ name="infoBar"+i; // valeur de name ajusté selon valeur de i y=i*spacing; // variable de position de clip display.list.attachMovie("infoBar",name,i); //creation d'occurence display.list[name]._y=y; //position ajustee en fonction de la valeur de y display.list[name].moonName.text=list[i]; display.list[name].moonNum.text=i+1; display.list[name].onRelease= function() { getUrl(tabURL[i]); } }// remplissage des champs text avec les donnees }
Si je fais une action "trace()" à chque clic cela me met "undefined".
Je comprends pas car pour moi le code :appele bien le bouton généré dynamiquement avec la variable "name" et lui affecte une fonction de lien an fonction da la valeur de "i" du tableau tabURL ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 isplay.list[name].onRelease= function() { getUrl(tabURL[i]);![]()
C'est le i qu'il ne connait pas!
Tu peux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var prefix = "infobar"; // Hors de la boucle ... var name = prefix + i; ... getUrl(tabURL[this._name.substr(prefix.length)]);
Ca marche !! Merci Freegreg, t'as toujours de bons tuyaux...mais il faut que tu m'expliques :
Pourquoi tu as changéen
Code : Sélectionner tout - Visualiser dans une fenêtre à part name="infoBar"+i;et
Code : Sélectionner tout - Visualiser dans une fenêtre à part var prefix = "infobar";? Tu as fait d'une variable 2 variables si j'ai bien suivi ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part var name = prefix + i;
Pourrais tu m'expliquer un peu ton appel de "i" du tableau "tabURL", surtout la propriété "length" de la chaine ?
Merci bcp
Ben je suis parti du principe que la syntaxe était bonne, donc ce ne pouvait être que le i qui n'avait pas de valeur. Cela peut se comprendre, au moment du clic, le i n'existe plus depuis longtemps.
Il fallait donc pouvoir le retrouver.
Qu'est ce qui différencie chacun des boutons, leur nom. Or cela tombe bien ils ont le i en suffixe.
Il suffisait donc de virer le prefixe "infoBar" pour l'obtenir.
Deux solutions :
Soit j'enleve les 7 premiers caractères de infoBar1, infoBar2 ... et je recupère le nombre.
Soit j'essaye d'etre plus générique et anticipe d'eventuels changements de noms.
Je crée donc la variable prefixe qui servira de base au nom du bouton.
Ensuite, j'ai toujours le pb du i mais maintenant il n'est plus question d'enlever les 7 premiers caractères, j'enlève le nombre de caractères de ce prefixe. Cela revient au même, sauf que si tu decides d'appeler tes boutons toto1, toto2 ... cela marchera encore
J'espère que tu as compris mon raisonnement et si c'est le cas penses à cliquer sur le bouton résolu![]()
Ok merci beaucoup Freegreg j'aurai pas pensé à faire ce cheminement car je comprenais pas pourquoi cela ne marchait pas.
8)![]()
Partager