Animation de bouton, Cassure de l'animation lors de déplacements rapide sur le

pouetprout Messages postés 2 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 18 mars 2008 - 17 mars 2008 à 13:02
pouetprout Messages postés 2 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 18 mars 2008 - 18 mars 2008 à 11:54
Bonjour à tous !

Voila je suis nouveau dans la création Flash et je ne parviens pas a faire un truc en apparence tout simple

j'ai un bouton fluide classique avec le code AS3 suivant :

bouton_logiciel.addEventListener(MouseEvent.MOUSE_OVER,fonctionOver);
bouton_logiciel.addEventListener(MouseEvent.MOUSE_OUT,fonctionOut);
bouton_logiciel.addEventListener(MouseEvent.CLICK,fonctionClick);

function fonctionOver(evt):void{
anim_bouton_logiciel.gotoAndPlay(2);
}
function fonctionOut(evt):void{
anim_bouton_logiciel.gotoAndPlay(anim_bouton_logiciel.currentFrame+15);
}

function fonctionClick (evt):void{
anim_bouton_logiciel.gotoAndPlay(46);
}

function fonctionRelease(evt):void {
// Ici les actions du bouton.
// par exemple un getURL();
}

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

Trois fonction de la souris sont utilisé : Over, Out et Click

mon probleme est que lorsque je clic sur mon bouton et que je sors de ses limites l'animation de fontcionOut se produit.

Ma première question est donc :

Comment interdire l'animation lancée par la fonctionOut lorsque j'ai effectué un clic sur le bouton ?

------------------------------------------------------
Mon deuxième problème est une question de "fluidité" et ne concerne pas le clic.
Lorsque je passe mon curseur rapidement sur mon bouton de la manière suivante :

Curseur sur bouton <= animation fcontionOver, ca c'est ok !
Curseur en dehors du bouton <= animation fonctionOut,
Curseur sur bouton alors que l'animation de la fonctionOut n'est pas encore terminé <= Reset de l'animation qui repart sur la fonctionOver.

Donc sur la fonctionOut mon animation ne prend pas le temps de se terminer et se relance depuis le départ.

Ma deuxième question est donc :

Peut on mettre une sorte de timer qui interdit de faire quoique ce soit sauf l'animation de fonctionClick tant que l'animation de la fonctionOut ne s'est pas terminé ?

J'espère avoir été clair et vous remercie par avance.

A vot' bon cœur M'sieur, Dam' !

;)

Renaud

2 réponses

cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
18 mars 2008 à 11:30
Salut,
je dis peut-être une grosse ânerie, aussi pardon par avance si mon commentaire est inutile.
Si tu déclares directement ta fonction out, elle s'effectura de fait, si tu veux qu'elle ne se déclare qu'après le Over, pourquoi ne l'appelles-tu pas à ce moment.
Soit :
bouton_logiciel.addEventListener(MouseEvent.MOUSE_OVER,fonctionOver);
bouton_logiciel.addEventListener(MouseEvent.CLICK,fonctionClick);

function fonctionOver(evt):void{
anim_bouton_logiciel.gotoAndPlay(2);
bouton_logiciel.addEventListener(MouseEvent.MOUSE_OUT,fonctionOut);
}

Pour ta seconde question, peut-être qu'avec une variable qui serait false au départ, et true quand ta fonction out est fini, et avec une condition pour la vérifier, cela pourrait-il marcher.
Ce qi donnerait un truc comme :
sur ta time line principale verfi=false;
en fin de ton anim de out _root.verif=true;
et dans ta fonction de clic
this.onEnterFrame=function(){
if(_root.verif){
 //lance ta fonction
delete this.onEnterFrame;
_root.verif=false;
}
else{
//rien ne se passe
}
}
Ou un truc comme ça...
Bonne chance et tiens nous au courant

Tout vient à qui sait attendre
0
pouetprout Messages postés 2 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 18 mars 2008
18 mars 2008 à 11:54
Coucou Merci pour ta réponses.

J'ai mon super ami Dev qui m'a fait un super script pour gérer ces supers types de bouton pile poil comme je voulais :)

Perso j'ai pas tout  super compris  :D mais  j'ai cerné certaines choses

Je vous ferais un super tuto un peu plus tard avec de supers exemples.

Mais pour te donner une super idée on est super passé par un super Boolean comme tu le présentais.

Allez Super Salut

A bientôt :)
0
Rejoignez-nous