Gestion du onRelease avec Array et For(): j'y arrive pas... svp...

pako56 Messages postés 116 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 18 août 2006 - 29 mars 2005 à 12:34
pinkWisky Messages postés 77 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 17 décembre 2010 - 12 avril 2005 à 17:12
Bonjour,
Alors déjà la source est là: http://sacrebirman.free.fr/array.fla

Le but de la manoeuvre est de gérer l'évènement onRelease, sauf.... que les données à gérer viennent d'un tableau et que l'évenement est dans une boucle For()

Oui, comme ca on comprend pas...lol ! Télécharger la source et vous comprendrez mieux.

J'attend avec impatience vos conseils car là j'y passe des nuits blanches avec ce truc.

L'exemple est ultra simplifée car en réalité les données du tableau viennent directement d'un .xml ;-), dont je n'ai pas mis ici la gestion pour ne pas embrouiller les pistes.

//-----------Sinon voici la source ci-dessous:

stop();
/* monBouton0 et monBouton1 sont des occurences de bouton
mais redéfinis en clip sur la scène sinon ca marche pas... */
//-
//-- Définition du tableau
mon_array = new Array();
//-
//-- Données dans le tableau sous forme d'objets.
mon_array.push({nom:"monbouton0", menu:"Fichier", goto:"Etiq0"});
mon_array.push({nom:"monbouton1", menu:"Edition", goto:"Etiq1"});
//--
//-- Affichage des objets du tableau dans les zones textes de tests
occ0.text = mon_array[0].nom+" - "+mon_array[0].menu+" - "+mon_array[0].goto;
occ1.text = mon_array[1].nom+" - "+mon_array[1].menu+" - "+mon_array[1].goto;
//-
//-- Mise en place des nom des boutons
for (var i = 0; i<mon_array.length; i++) {
this[mon_array[i].nom].label_txt.text = mon_array[i].menu;
}
//-
//-- Gestion des onRelease des boutons
//-- et c'est LA que ca marche pas.... :-(
for (var i = 0; i<mon_array.length; i++) {
this[mon_array[i].nom].onRelease = function() {
// Ici... je ne sais pas quoi mettre pour aller à la bonne étiquette
// en fonction du nom du bouton cliqué...
gotoAndStop(this[mon_array[0].goto]); // => marche pas...
};
}

9 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
29 mars 2005 à 13:47
Salut,

Ca marche nickel ta gestion des boutons...ajoute-voir un trace("coucou"); dans ton machin onRelease=function(){
trace("on est dans la fonction du bouton #"+this[mon_array[0].goto]+"#");
gotoAndStop(mon_array[0].goto);
}

et ben tu verras que c'est le goto qui ne renvoit rien! J'ai changé la ligne gotoAndStop...mais j'ai pas réussi à ajouter la variable "i" à la place du "0"...je bloque aussi!
Mais bon, déjà t'as avancé un peu plus avec ça!

@+! Samy
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
29 mars 2005 à 14:08
Ca y est, j'ai bidouillé un truc:
gotoAndStop("Etiq"+this._name.substr(9,this._name.length));

Mais c'est pas très académique tout ça! Rien que le fait d'avoir un bouton dans la bibliothèque et de le transformer en clip sur la scène...car là, niveau dynamicité...c'est pas top top...

Bon, ben t'es arrivé à ce que tu voulais je pense...alors @+! Samy
0
pako56 Messages postés 116 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 18 août 2006
29 mars 2005 à 14:19
alors là... bravo... merci.
En revanche le bouton était juste un test, en fait ce sera un vrai clip dans la bibliothèque qui fera office de bouton à terme.
Je me suis inpiré d'une source de macromédia pour me fabriquer mon propre menu issu d'un fichier xml alors si tu te sens vraiment inspiré:
http://www.macromedia.com/devnet/mx/flash/articles/vidgal_structure.html

Mais cet source est vraiment d'une autre dimension pour moi....
0
pako56 Messages postés 116 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 18 août 2006
1 avril 2005 à 11:20
Oufff !!!! J'ai enfin fini par trouvé la façon de gérer de façon dynamique l'instruction GotoAnd Stop(NomDeMonObjet);
Ce n'est plus non plus un bouton transformé en clip sur la scène mais un vrai clip.
Il me reste juste un truc où je sèche c'est l'utilisation de this[] ! :-(

Si qlq1 peut jetter un coup d'oeuil sur cette source et m'aider ca serait vraiment très sympa..
(voir les commentaires dans la source là où je sèche)
=> http://zikexit.free.fr/array.fla
.

merrrrrci !
0

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

Posez votre question
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
1 avril 2005 à 19:25
Tiens...après 2 minutes de modification! lol:

j'te mets juste la boucle "for" qui te posait problème:

//-- Mise en place des nom des boutons dans une boucle
for (var i = 0; i<mon_array.length; i++) {
this[mon_array[i].nom].label_txt.text = mon_array[i].menu;
//-- Là, j'aimerais bien remplacer tous les linkMC0/1 par un linkMC+[i] avec l'aide de this[]
//-- mais je n'y arrive pas... grrrrr !
this["linkMC"+i].data = mon_array[i];
this["linkMC"+i].label_txt.text = this["linkMC"+i].data.menu;
//-- Gestion des onRelease des boutons
this["linkMC"+i].onRelease = function() {
gotoAndStop(this.data.goto);
};
}

...ça viendra! @+! Samy
0
pako56 Messages postés 116 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 18 août 2006
3 avril 2005 à 12:51
okey ! sympa :-)
C'est vrai que tu utilises "linkMC" alors que moi je tenais absolument à utiliser mon_array[i] pour que ce soit plus dynamique et moins lié à des noms qui pourraient changer. mas le principale c'est que ca fonctionne.

je pense que cette mini-source est assez sympa d'ailleurs, je vais la reposter avec les gestion du XML avant...

@+
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
3 avril 2005 à 18:50
Tout est possible (enfin presque!)...mais personnellement, pour ce
genre de code (qui apparemment est destiné à être le plus dynamique
possible), j'utiliserais un fichier XML externe. T'aurais pas à
modifier ton .fla à chaque fois pour changer les variables de ton
array...enfin, c'est mon opinion à moi...à toi de voir si ça peut pas
te rendre service...meme si ça fonctionne comme ça! lol



@+! Samy
0
pako56 Messages postés 116 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 18 août 2006
3 avril 2005 à 18:58
vi vi vi, justement ma source fait appel à un XML externe et c bien pour ca que je voulais que le code du fla soit complètement dynamique...
0
pinkWisky Messages postés 77 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 17 décembre 2010
12 avril 2005 à 17:12
Salut,



j'ai exactement le meme pb que pako sauf que mon code ne se trouve pas
sur un clip mais sur une frame action. J'ai beau avoir lu et relu votre
petite conversation et avoir tester le code de paco, je reste bloque'...



Voila mon code (un objet XML appelle cette fonction sence'e afficher un menu). Le onRelease a la fin ne fonctionne pas :

function main_menu(){

rubs_info = XMLmenu.childNodes[0].childNodes[1].childNodes;
//trace(rubs_info.length);

rubs_title = new Array();
rubs_id = new Array();
tab_links = new Array();

//-- Mise en place des nom des boutons dans une boucle

for(i=0; i<rubs_info.length; i++){

rubs_title[i] = rubs_info[i].attributes.rubric_name;
rubs_id[i] = rubs_info[i].attributes.id;

tab_links.push({rub_name:rubs_info[i].attributes.rubric_name, goto:"rub_0"+rubs_info[i].attributes.id});
tab_links.

trace(i);
trace(rubs_title);
trace(rubs_id);
trace(tab_links[0].rub_name);
trace(tab_links[0].goto);

// on duplique le MC "main_menu_button"
_root.main_container.main_menu_button.duplicateMovieClip("main_menu_button"+i,i*1);

// on masque le MC de base
_root.main_container.main_menu_button._visible = 0;
//_root.main_container.main_menu_button0._visible = 0;

// on place les clips dupliques sur l'axe des x
_root.main_container["main_menu_button"+i]._x = 144*i-606;

// on attribue les valeur des chps texte
_root.main_container["main_menu_button"+i].main_menu_button_text = "";
_root.main_container["main_menu_button"+i].main_menu_button_text = rubs_title[i];

// Jusque la tout va bien
// on assigne une action pour chaque bouton
// bien entendu, c'est la que ca coince
_root.main_container["main_menu_button"+i].onRelease = function() {
gotoAndStop(tab_links[i].goto);
trace("lapin");
};

}
}


Merci de prendre le temps de me relire et de me repondre. Je suis vraiment en galere...



PW
0
Rejoignez-nous