[Débutant] Condition pour menu

statflash Messages postés 2 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 1 mars 2006 - 28 janv. 2006 à 14:04
cs_DrShiva Messages postés 41 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 16 février 2006 - 29 janv. 2006 à 00:08
Bonjour,


J'ai créé un menu où sur chaque entrée du menu, on a un zone cliquable
(bouton) avec un script (voir plus bas). Voici à quoi peut ressembler
le menu :





[rubrique1]


[rubrique2]


[rubrique3]





Quand on passe dessus le fond d'une rubrique qui est un clip de ce type


0--------0---------0


open close hover





- on lit "open" ;


- quand on sort d'une rubrique, on lit "close" ;


- et quand on clique dessus on va sur hover.





Mon problème, c'est que comme mon script est actuellement, quand je
clique sur une rubrique, l'utilisateur doit bien sortir de la zone et
du coup, le rollOut se déclenche.

Pour résumé, j'aimerais que quand l'utilisateur clique sur une
rubrique, il reste sur hover, même s'il sors de la zone (rollOut) ou
dit differemment : quand je press une rubrique, le rollOut ne se
déclenche pas.




Je suppose que je dois poser un if, mais je vois pas quoi et comment.


Merci de votre aide


Vincent





-----------------------------LE SCRIPT-----------------------------


on(rollOver) {


this.mcformation.gotoAndPlay("open");


}


on(rollOut) {


this.mcformation.gotoAndPlay("close");


}


on(press, release) {


this._parent.gotoAndStop(5);


this.mcformation.gotoAndStop("hover");


}


---------------------------------------------------------------------

1 réponse

cs_DrShiva Messages postés 41 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 16 février 2006
29 janv. 2006 à 00:08
Salut,

Pour résoudre ton problème, il te suffit de créer une variable qui t'indiquera si l'utilisateur est déjà sorti ou non.

Par exemple ( ceci n'est qu'un exemple, on peut surement optimiser ce petit truc )

1. Tu dois créer une variable, que tu nomes par exemple my_flag et tu l'initialise à zéro tout au début de ton programme :

my_flag = 0;

2. Après, dans ton (press,release) tu ajoute l'affectation suivante :

my_flag = 1;

3. Ensuite tu conditionnes le code de ton (rollOut) :

on(rollOut) { if (my_flag==0) this.mcformation.gotoAndPlay("close"); }

4. Enfin tu re-initialises ta variable dans ton (rollOver ) en ajoutant l'instruction :

my_flag = 0;

Ainsi, pour résumer tu auras le code suivant :

my_flag = 0;

on(rollOver) {
my_flag = 0;
this.mcformation.gotoAndPlay("open");
}

on(rollOut) {
if (my_flag==0) this.mcformation.gotoAndPlay("close");
}
on(press, release) {
my_flag = 1;
this._parent.gotoAndStop(5);
this.mcformation.gotoAndStop("hover");
}

************** Les instructions du rollOut ne s'éxecuteront QUE SI my_flag vaut 0 ...

Je crois que cela répond à ton problème.
Il ne faut pas hésiter à utiliser des variables de test ( dites encores variables d'état ).
Le mieux étant de les TYPER de type boulléen :

var my_flag:boolean;

Une telle variable prend alors soit la valeur : true soit false.

my_flag = true;
ou
my_flag=false;

Bon courage !
0
Rejoignez-nous