Menu xml : creation d'un état cliqué

Résolu
tiago206 Messages postés 11 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 14 septembre 2005 - 31 août 2005 à 21:52
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010 - 3 sept. 2005 à 03:25
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

crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
1 sept. 2005 à 00:13
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.
3
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
1 sept. 2005 à 10:32
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
3
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
1 sept. 2005 à 20:23
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
3
tiago206 Messages postés 11 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 14 septembre 2005
1 sept. 2005 à 14:18
merci les gars!
0

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

Posez votre question
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
1 sept. 2005 à 17:53
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 :).
0
tiago206 Messages postés 11 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 14 septembre 2005
1 sept. 2005 à 19:16
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é.
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
2 sept. 2005 à 02:27
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à.
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
2 sept. 2005 à 02:32
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
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
2 sept. 2005 à 07:51
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 çà ^^.
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
2 sept. 2005 à 15:19
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
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
3 sept. 2005 à 03:25
oui c'est pas grâve...
0
Rejoignez-nous