Ralentir et arreter une animation-boutton

Résolu
Signaler
Messages postés
25
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
27 septembre 2007
-
Messages postés
25
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
27 septembre 2007
-
Bonjour à tous.
Voilà mon problème du jour :
J'ai une serie de boutons animé qui passent dans la largeur de l'ecran(en fait ce sont des nuages) en boucle et j'aimerais que leur mouvement s'arrete au passage de la souris (afin de pouvoir cliquer dessus). Dans l'idéal j aimerai qu'il ne s'arretent pas tout net mais qu'ils ralentissent progressivement.
Voila, si quelqu'un a une piste, ou encore l'adresse d'un post du forum pour me mettre sur la voie...
Merci d'avance.

6 réponses

Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
1
Pour l'arreter tu fais ca si c'est des clips : il faut ramplacer monnuage par le nom de l'occurence du nuage

monnuage.onRollover= function(){
    this.stop();
}
monnuage .onRollOut =function(){
    this.play();
}

Pour l'effet de ralentissement le plus simple c'est d'utiliser les Tween (voir l'aide de flash)
Messages postés
1732
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 mars 2015
2
Bonjour,

Allez je suis dans mon bon jour je vais t'aider un peu.
Si tu souhaite réalisé cela en AS voici une idée pour réalisé ton projet :
1 - L'utilisateur passe le curseur sur un des clips en question
2 - On réduit la vitesse de défilement du clip jusqu'a ce qu'il atteigne 0
3 - On ajoute un interval à ces coordonées (à choisir) qui sera les coordonées d'arrivée du clip
4 - On avance le clip doucement (voir le code ci dessous)

Note cependant qu'avec cette méthode ton "nuage" ne devra pas se déplacer dans son clip avec une interpolation de mouvement, tu devra déplacer le clip en modifiant ces coordonées. Je ne sais cependant pas si dans ton animation tu garantit un déroulement continu de ton "nuage" (comme s'il ne finissait jamais), je ferai donc un exemple pour le défilement d'un clip normal allant de gauche à droite et revenant à ces coordonées d'origine une fois le bout de la scène dépasser.

Code : (Je commente les lignes de codes afin que tu comprenne mon raisonement)
//Tout d'abord nous allons établir une boucle continu permettant de déplacer le clip
//Le clip s'appellera MovieClip et aura les dimension suivante : width:100px ; height:100px;
//Ici notre clip se déplacera de gauche à droite mais pas en hauteur.
//Ce code est à placer sur _root, sur la frame principale
Vitesse =5;//Vitesse de défilement du clip (note : pour défiler de droite à gauche il suffit de donner une valeur négative)
VitesseMax = Vitesse;//Vitesse maximum de défilement
Int =50;//Interval pour le rallentissement/accélération (plus il est petit plus le clip s'aretera vite)
onEnterFrame = function() { //boucle éxécuter une fois par frame (selon la vitesse de lecture de ton animation)
   MonClip._x += Vitesse;//mouvement du clip
   if (MonClip._x - MonClip._width / 2 > Stage.width) //si le clip sort du champ de vision de l'animation
      MonClip._x = -MonClip._width; //on le replace en début de course
}
Mouvement = function(Sens:Number) { //fonction permettant de ralentir jusqu'a arret du clip ou de le faire repartir
   Vitesse += Sens / VitesseMax; //action sur la vitesse (augmentation ou réduction)
   if (Sens < 0 && Vitesse < 1) Vitesse = 0; //on assure que la vitesse sera de 0
   else if (Sens > 0 && Vitesse > VitesseMax - 1) Vitesse = VitesseMax; //on assure une vitesse maximum   if (Vitesse 0 || Vitesse VitesseMax) clearInterval(Interval); //on efface l'interval si le clip est bien relancé et arreter
}
MonClip.onRollOver = function() { //au passage du curseur sur le clip
   clearInterval(Interval); //on efface l'interval par mesure de sécurité
   Interval = setInterval(Mouvement,Int,-1); //on demande le ralentissement (d'où le -1)
}
MonClip.onRollOut = function() { //lorsque le curseur sort du clip
   clearInterval(Interval); //on efface l'interval par mesure de sécurité
   Interval = setInterval(Mouvement,Int,1); //on demande l'accélération (d'où le 1)
}

Voila, ce n'est certe pas la meilleur façon de le faire (on me le reprochera peut être) mais c'est la plus facile à mettre en oeuvre (je crois)

Bonne continuation

Blacknight
http://www.flash-nouvelle.com/ Give Life To Your Imagination !
Messages postés
25
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
27 septembre 2007

Effectivement je viens de jeter un oeil sur la classe tween. Ca m'a l'air tout-à-fait indiqué pour mon problème. Seulement étant quand même un gros noob en AS, je ne sais pas très bien comment placer/écrire le code. Aurais-tu un exemple sous la main? Sinon je vais essayer de me debrouiller mais j'aimerai avancer vite.
Merci beaucoup pour ta réponse.
@+
PS:Bien-sûr que c'est des clips, je me suis fait tellement savonné sur mediabox pour avoir utilisé des bouttons...avec des comportements dedans en plus, non mais y'a des  types, j'vous jure... ;-)
Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
1
J'ai pas vraiment d'exemple sous la main surtout que l'aide est vraiment bien foutu pour cette partie la (regarde dans les fichiers d'exemple de flash, il sont dans le repertoire d'installation planqué je ne sais plus ou)
et puis sinon un lien et apers c'est google

http://www.adddvance.net/2006/didacticiels-flash/linterpolation-avancee-tween.html
Messages postés
25
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
27 septembre 2007

merci bcp
@+
Messages postés
25
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
27 septembre 2007

yayaaa! C du lourd!! (Enfin pour moi ki ne suis q'un debutant...)

C bon  ce genre de truc ça me fait apprendre un max, merci bcp!
Vivement que tu ais beaucoup d'autres bons jours comme ça!!
Je vais me tester ça trankille today.
Merci encore.
@+