begin process at 2012 05 27 15:20:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

onRelease dans boucle for ou le casse tete chinois puissance 10 !!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

onRelease dans boucle for ou le casse tete chinois puissance 10 !!

mardi 12 avril 2005 à 17:26:25 | onRelease dans boucle for ou le casse tete chinois puissance 10 !!

pinkWisky

Salut les flashouilleurs,

Je veux creer un menu dynamique via XML. La duplication de mes boutons ainsi que le l'assignement du texte marchent. Le casse tete reside dans le onRelease a la fin qui ne fonctionne pas (je veux une seule fonction pour designer chaque action de chaque bouton):
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");
};


}
}
Comment recuperer ma variable i dans le onRelease ?? Est ce un Pb de level ?? Merci de prendre le temps de me relire et de me repondre. Je suis vraiment en galere...

PW
mardi 12 avril 2005 à 17:50:01 | Re : onRelease dans boucle for ou le casse tete chinois puissance 10 !!

durand2504

salut,

le i n'a de valeur que dans ta  boucle (variable locale) donc quand tu crée la fonction du onRelease, il n'existe plus, essais cela:
_root.temp=i

_root.main_container["main_menu_button"+i].onRelease = function() {
gotoAndStop(tab_links[_root.temp].goto);
trace("lapin");
};
A+
mardi 12 avril 2005 à 18:26:48 | Re : onRelease dans boucle for ou le casse tete chinois puissance 10 !!

pinkWisky

Salut,

Je viens d'essayer ta solution mais elle ne fonctionne pas. La var _root.temp se fige a la valeur "tab_links.length".

Un trace (_root.temp) dans le onRelease renvoie "5" systematiquement ( qq soit le bouton actionne'). En fin de compte, cette variable se comporte exactement comme ma var i (elle ne depend plus de la boucle for des que la fonction sur onRelease est actionnee)

Je ne crois pas avoir omis un detail. Merci tout de meme pour la rapidite de ta reponse...

@+
PW
mardi 12 avril 2005 à 22:04:32 | Re : onRelease dans boucle for ou le casse tete chinois puissance 10 !!

goldenboy68

Réponse acceptée !
J'ai déjà rencontré ce problème...et en y réfléchissant, tu verras que c'est logique! Ta variable i est locale dans la boucle for, donc quand tu fais ton onRelease, elle conserve la dernière valeur qu'on lui a attribué (5 à priori chez toi!).

Solution:
Dans ta boucle "for", crées une propriété varI pour chaque bouton créé. Ton code ressemblera à cela après:
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].varI=i;


_root.main_container["main_menu_button"+i].onRelease = function() {
gotoAndStop(tab_links[this.varI].goto);
trace("lapin");
};


}
}






C


C
C
Ca devrait fonctionner comme ça!

@+! Samy
mercredi 13 avril 2005 à 11:36:59 | Re : onRelease dans boucle for ou le casse tete chinois puissance 10 !!

pinkWisky

yapaaaaaaaaaaaahhh !!

Merci Samy, tout s'eclaire a present dans ma tete et dans mon code... En fait la varI est assignee directement dans les MC dupliques et grace au this.varI, elle peut etre recuperee meme si  elle est appellee dans ma fonaction onRelease...
Franchement, un grand merci a tous les deux...

Question n°2 : j'ai fait un trace(tab_links[this.varI].goto) dans mon onRelease et cela renvoie effectivement "rub_01", "rub_02", etc. pour chaque bouton. Par contre, lorsque je clique deux fois de suite sur le meme bouton, je ne me retrouve pas sur la meme frame.
ex : un clic sur le bouton "main_menu_button2" conduit a la frame appelle "rub_02". Un 2eme clic sur le meme bouton va me conduire a la frame nommee "rub_03". Pourtant, le trace(tab_links[this.varI].goto) me renvoie rub_02 et rub_02
??!!{}{}{}?? etrange, non ?

ä+
PW
mercredi 13 avril 2005 à 11:59:45 | Re : onRelease dans boucle for ou le casse tete chinois puissance 10 !!

pinkWisky

en fait, je retire ma question n°2 qui fait preuve de debilite' profonde. J'ai simplement remplace le gotoAndPlay par un gotoAndStop.

a plouch
PW


Cette discussion est classée dans : button, menu, main, trace, rubs


Répondre à ce message

Sujets en rapport avec ce message

interaction menu [ par Orange73 ] Hello,Voila j'ai un menu de 11 items. Sur la 1ere frame j'ai ce code :nbItems = 11;CAPTION1 = "MENU01";CAPTION2 = "MENU02";CAPTION3 = "MENU03";CAPTION Propagation d'un evenement personnalisé [ par riyuhou ] Bonjour à tous. bon après avoir passer la journée d'hier, et la mâtiné à lire de la doc, je dois me rendre à l'évidence, je comprend rien à la façon d Afficher un éléments de la bibliothèque depuis une classe externe [ par chiktika ] Bonjour, je débute avec l'as3 et j'aurais aimé trouver un peu d'aide pour le problème suivant : Depuis ma classe Main, je cherche à afficher sur la s Créer un bouton dans un clip. [ par Gantilool ] Salut, J'aimerai créer dans un clip un bouton, mais un symbole bouton, juste une action qui me permettrai par exemple de "trace()". Voici mon code menu enroulant et deroulant [ par Benevol30 ] Bonjour, voilà j'ai un menu déroulant, qui prend effet quand par exemple on clike le bouton de ce meme menu. mon code simpliste : Bt_Galerie.onPr Charger l'url d'une image contenue dans un XML [ par noelement ] Bonjour, je n'arrive pas à trouver comment récupérer le lien URl de mon XML pour récupérer l'image du lien? Mon XML [code=xml] menu flash [ par emysarah ] bonjour, j'ia besoin d'un pêtite aide.. en faite j'ai créée un menu en flash avec des bouttons... le site et en html normal .. losque je clik sur un Lecteur MP3 dans un menu déroulant [ par vic1f ] Bonjour à tous, Voila ça fait beaucoup de temps que je cherche un lecteur mp3 a insérer dans ma page en swf elle aussi. Mais par soucis d'esthétique, What's your "fla-fla" name ? [ par hval ] Bonjour à tous les flashonautes !!! Une question me taraude, elle me parait simple... et je ne trouve pas ! Comment récupérer le nom de mon document menu deroulant [ par ChristianRegis ] Salut à tous! Je suis nouveau sur le blog,mais aussi désèpéré,j'aimerais ajouter un menu déroulant à mon futur site en flash cs3.sur le net je trouve


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales