Sens animation en fonction sens souris au survol

Résolu
keyser94 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 6 novembre 2008 - 3 oct. 2008 à 22:24
keyser94 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 6 novembre 2008 - 6 oct. 2008 à 11:59
Bonsoir,

Je me décide à poser ma question après plusieurs recherches sur le net et sur le site sans succès.
Je suis débutant en flash et surtout en action script.
Je suis sur CS3 en action script v2

Mon problème est le suivant
J'ai un clip contenant un objet qui bascule (comme si il était accoché par en haut) au survol de la souris
Et je souhaiterais qu'en fonction du sens de la souris au moment du survol du clip
Le clip bascule dans le meme sens (par exple vers la gauche) pour qu'ensuite il se remette en position.
Ce clip sera ensuite répété plusieurs fois pour créer un menu.

Je sais comment basculé le clip d'un coté ou d'un autre.
Mais je pense qu'il me manque un bout de code qui serait du style
on(mouseover){
   if (sens=gauche) gotoAndPlay(1); //animatin vers la gauche
   if (sens=droit) gotoAndPlay(10); //animation vers la droite
}

Voilà, J'espère avoir été clair.
Merci pour votre aide ou toutes infos qui pourra m'aider
car pour l'instant mon anim va toujours dans le meme sens et c'est pas très joli

Keyser

5 réponses

on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
3 oct. 2008 à 23:12
Salut,
Il faut utiliser un objet écouteur.
Pour t'expliquer le principe (après tu adaptes selon tes besoins):
Admettons que tu as un clip au milieu de la scène nommé: clip
La scène dans cet exemple fait 500px de largeur.

var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
   if (_xmouse<250) {
       clip._x++;
   }
   else {
       clip._x--;
   }
};
Mouse.addListener(mouseListener);

@+.
telov.ch
3
on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
4 oct. 2008 à 18:57
clip._x++;
// Signifie simplement que je donne l'instruction au clip de bouger sur x (->) à chaque fois que l'écouteur de la fonction onMouseMove est activé
clip._x--;
// C'est l'inverse (<-)

Mais toi tu n'en as pas besoin vu que ton instruction à toi c'est de dire au clip gotoAndPlay(2).
C'était juste pour l'exemple ;)
D'ailleurs vu que ton interpolation ne sert qu'à une rotation du clip, à la place moi je ferais
clip._rotation += 10; // Par exemple...

Et pour continuer mon exemple en rapport avec ta question n°2, si tu lui mets une instruction sur le rollOver, il faut également lui dire ce qu'il doit faire sur le rollOut !! Logique.

Je précise que dans mon exemple les objets sont dirigés depuis la scène principale et non dans le clip, il faut donc mettre ton code dans Action-Image et non Action-Clip.

Pour continuer mon exemple en rapprt avec ce que tu veux faire, on imagine toujours qu'on a un clip sur la scène que l'on nomme : clip (Fenêtre->Propriétés_>Occurrence de:) :

var pos = clip._width/2;
// On donne une variable position qui est égale au clip divisé par 2

var mouseListener:Object = new Object();
// On crée un objet écouteur qui écoutera les évènements de la souris

mouseListener.onMouseMove = function() {
// On donne une fonction que l'on activera lors d'un évènement de la souris

    clip.onRollOver = function () {
// Lors d'un évènement de la souris on donne une fonction à activé lorsqu'on pointe sur le clip
       
   if (clip._xmouse@+.
telov.ch
3
keyser94 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 6 novembre 2008
4 oct. 2008 à 12:21
Merci beaucoup
tu m'a mis qur la voie
Voilà ce que j'ai fait :
on(rollOver){
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
   if (_xmouse>90 && _xmouse<137) {
       clip._x++;
    gotoAndPlay(2);
   }
   else if (_xmouse>137 && _xmouse<185) {
       clip._x--;
    gotoAndPlay(22);
   }
};
Mouse.addListener(mouseListener);
}

J'ai uploader mon fichier pour mieux comprendre
http://www.mediafire.com/?sharekey=53c6efcf60d3d5b1ac21b5e1a073f2a3


1ère question :
à quoi sert clip._x--; & clip._x++; ?

2eme question :
Cela semble plus ou moins fonctionner mais le plus génant est que ça fonctionne meme quand la souris est en dehors du clip
Il faut certainement que je fix y ?

Merci en tout cas pour ton code
0
on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
4 oct. 2008 à 19:01
Edit:

var pos = clip._width/2;
// On donne une variable position qui est égale à la largeur clip divisé par 2

@+.
telov.ch
0

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

Posez votre question
keyser94 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 6 novembre 2008
6 oct. 2008 à 11:59
Merci beaucoup pour ton aide et tes conseils
Cela semble bien fonctionné
0
Rejoignez-nous