Menu xml : creation d'un état cliqué [Résolu]

Signaler
Messages postés
11
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
14 septembre 2005
-
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
31 janvier 2010
-
bonjour, voilà j'ai un menu qui est générer a partir d'un fichier xml
qui contient le nom des différentes parties. pour le flash j'ai un un
clip qui contient un bt transparent et une zone de texte. ce que
j'aimerais c'est créer c'est que mes boutons changent de couleur quand
ils sont cliqués et qu'il redevinnent normal quand on clique sur une
autre partie du menu. en fait j'arrive a faire en sorte que la couleur
change mais pas qu'elle redevienne normal quand on clique sur un autre
bouton. voilà si quelqu'un peut m'aider ca serait sympa.





var spacing = bouton._height+2;

var ystart = 135;

webxml = new XML();

webxml.ignoreWhite = true;

webxml.load("travaux.xml");

webxml.onLoad = function() {

var liste = webxml.firstChild.childNodes;

var nbrsites = liste.length;



for (var i = 0; i<nbrsites; i++) {

var refmc = bouton.duplicateMovieClip("bouton"+i, i);

refmc.site.text = liste[i].attributes.titre;

refmc._y = ystart+i*spacing;

refmc.num = i;



refmc.onRelease = function() {

this.site.textColor = 0xFF9900;

};

}

};

stop();

11 réponses

Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
31 janvier 2010

au plus bête tu fais une fonction du genre :

function remise_a_neuf_du_menu() {
for (var i=0;i<xxx;i++) {
eval("bouton"+i).site.textColor = TaCouleurDeBase;
}
}

y'a d'autres manières mais celle là reste la plus simple et comme je pense pas que tu ai un menu avec 1500 éléments ça marche très bien et vite.
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
ok alors d'abord il faut eviter les eval, c'est deprécier depuis Flash 5 ....

pour ton prob, il te suffit d'utiliser un variable (dans le clip
contenant les bouton) dans laquelle tu vas stocker le clip activé :



var opened = null;

function setSelected(mc){

if (opened != null){

opened.site.textColor = 0x000000; // remet l'ancienne selection a initial

}

opened = mc;

opened.site.textColor = 0xFF9900; // change la couleur du clip

}



dans les clips bouton, dans la fonction release tu met a la place de : this.site.textColor = 0xFF9900;

_parent.setSelected(this);

Flash sans Limites
_Benjy

ps : merci de penser a accepter la reponse si elle te convient
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
ben nan

if (opened != null){
opened.site.textColor = 0x000000; // remet l'ancienne selection a initial
}

le fait que, si opened existe (donc si on est deja passé dans la
fonction pour ouvrir un truc (je sais pas ce que tu veux faire de tes
boutons...)

alors le texte est remis en noir dans l'objet opened (qui est un
référence au clip cliké précedement, puis que l'avant derniere ligne de
la fonction fait opened = mc; ou mc et le clip cliqué)

enfin c'est de l'objet je peux pas te fair eun cours objet là ici now

fait don cun nouveau fla avec 2 - 3 clip sui te servent de boutons,
contenue dans un autre, et met en application ce que je t'i dis
précédement, tu verra que ca marche

++


Flash sans Limites
_Benjy

ps : merci de penser a accepter la reponse si elle te convient
Messages postés
11
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
14 septembre 2005

merci les gars!
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
31 janvier 2010

benjy je pense pas avoir compris ta réponse,

je ne pige pas comment l'état des autres boutons est changé au niveau de la couleur ?

si je clique sur le bouton 1, ok le texte s'affiche en rouge/vert mais si je clique sur un nouveau bouton, l'ancien bouton reste de la même couleur non ? Eclaire ma lanterne stp car là j'ai pas suivi :).
Messages postés
11
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
14 septembre 2005

moi non plus j'ai pas compris, pour que ca marche moi j'ai utilisé une boucle qui remet la couleur initiale a tous les boutons avant de changer la couleur de celui qui vient d'être cliqué.
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
31 janvier 2010

Désolé j'avais parsé ton code comme un vilain, j'avais pas vu que tu réaffectai la variable.

Par contre quelque chose me chifonne, pourquoi parles-tu de programmation objet alors que c'est une simple fonction ?

Si c'est le var opened:Object=nil; dont tu voulais parlais je comprendrai ce que tu voulais dire sinon je ne vois pas de classes d'objets là.
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
ah ah ah ah LOL

programation objet != Object (flash)

la prog objet c'est un facon de programmer

dans flash, MovieClip, Color, Object, TextField, .... sont des objets

les imbrications de proprietes et les manieres de les gerer s'appel de la prog obj

donc rien a voir avec l'objet "Object" de flash

++

Flash sans Limites
_Benjy

ps : merci de penser a accepter la reponse si elle te convient
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
31 janvier 2010

heuuuu merci mais là sur le coup tu m'apprends rien :-D. Là je pense que c'est toi qui a mal lu car c'est justement moi qui voulait te faire comprendre çà ^^.
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
hein ? ben voyons ...

tu dis :

"Si c'est le var opened:Object=nil; dont tu voulais parlais je
comprendrai ce que tu voulais dire sinon je ne vois pas de classes
d'objets là"

c'est toi qui me dis que tu vois pas la Classe Object, alors que je te
parle de programation objet, je t'explique donc ce que c'est ...

enfin c'est pas grave ...

++

Flash sans Limites
_Benjy

ps : merci de penser a accepter la reponse si elle te convient
Messages postés
401
Date d'inscription
mercredi 12 novembre 2003
Statut
Membre
Dernière intervention
31 janvier 2010

oui c'est pas grâve...