Rotation d'un clip lors du passage de la souris

remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009 - 6 oct. 2009 à 20:55
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010 - 9 oct. 2009 à 21:09
Bonjour à tous !
Voilà la situation, j'utilise Flash CS4 (AS3) et je souhaiterais réaliser une animation lorsque la souris passe sur la zone en flash dans ma page internet.
L'idée serait que lorsque l'utilisateur passe la souris le cadre effectue une rotation a 180 degrés et lorsque l'utilisateur quitte la sourie de la zone le cadre retourne dans sa position initiale? j'espère que j'ai été le plus clair possible.
Je suis débutant en flash j'ai réalisé quelques animes sympas mais je n'ai pas encore touché au code? d'où cette demande d'assistance !
D'avance merci !!!!

13 réponses

crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
8 oct. 2009 à 00:04
salut,

tonObjet.rotation = tonAngle;

permet de gérer l'angle de l'objet.

Regarde l'aide sur les tween, cela te permettra de gérer plus facilement cette animation.

Sinon :

monObjet.addEventListener(MouseEvent.ROLLOVER,onRollOver);
monObjet.addEventListener(MouseEvent.ROLLOUT,onRollOut);

function onRollOver(evt:MouseEvent):void {
  monObjet.addEventListener(Event.ENTERFRAME,onEnterFrame);
}
function onRollOut(evt:MouseEvent):void {
  monObjet.rotation = 0;
  monObjet.removeListener(Event.ENTERFRAME,onEnterFrame);
}
function onEnterFrame(evt:Event):void {
  monObjet.rotation += (90-monObjet.rotation)*.1;
}


Tu as une première piste avec ce code.
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
8 oct. 2009 à 00:06
Attention je viens de remarquer qu'il met tout en minuscule, hors on écrit par exemple :

MouseEvent.ROLLOVER ou Event.ENTERFRAME

donc fais bien attention à ne pas faire un simple copier coller. Regarde bien l'aide.
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
8 oct. 2009 à 00:09
Toujours moi j'en rajoute, il est minuit, mef c'est ROLL_OVER, ROLL_OUT...
0
remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
8 oct. 2009 à 02:23
Ok, merci beaucoup crackter!

Juste une petite précision, dans j'ai corrigé les erreurs de mise en forme du code, pas de souci la dessus ensuite pour le mettre ne place dans flash, je crée un premier calque vide contenant le code et un deuxième calque contenant mon image (« monobjet »). Quel doit être le format de « monobjet » en bitmap, en symbole clip ou graphique ?

D'avance merci !
0

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

Posez votre question
remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
8 oct. 2009 à 02:41
En faite voici les erreurs ?

J'ai essaye de plusieurs manière mais rien à faire

1120: Accès à la propriété non définie monobjet.
1120: Accès à la propriété non définie event.
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
8 oct. 2009 à 18:51
le bitmap doit être transformé en clip si tu veux qu'il soit utilisé comme tel.

Accès à la propriété non définie "mavar" signifie que le compilateur ne sait pas ce qu'est monobjet et event dans ton cas.

Il ne faut pas oublier de déclarer tout ce que tu fais, comme un movieclip :

var monobjet:MovieClip = new MovieClip();

etc etc...
0
remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
8 oct. 2009 à 19:46
Donc j'ai déclaré la variable monobjet comme tu m?as indiqué

l'erreur suivante est apparue :

Warning: 1090: Problème de migration : En ActionScript 3.0, le gestionnaire d'événement onRollOver n'est pas déclenché automatiquement par Flash Player lors de l'exécution. Vous devez d'abord enregistrer ce gestionnaire d'événement à l'aide de addEventListener

J'ai donc modifié mon document an AS2

L'erreur actuelle est :

Impossible de charger la classe ou l'interface 'MouseEvent'

Je cherche la solution !!

Je commence doucement à comprendre la logique de programmation en flash !

Merci beaucoup de ton aide!!!!
0
remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
8 oct. 2009 à 19:55
Voici ou j'en suis avec le code

import flash.events.MouseEvent;
import flash.events.Event;

var monobjet:MovieClip = new MovieClip();

monobjet.addEventListener(MouseEvent.ROLL_OVER,onRollOver);
monobjet.addEventListener(MouseEvent.ROLL_OUT,onRollOut);

function onRollOver(evt:MouseEvent):void {
monobjet.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
function onRollOut(evt:MouseEvent):void {
monobjet.rotation=0;
monobjet.removeListener(Event.ENTER_FRAME,onEnterFrame);
}
function onEnterFrame(evt:Event):void {
monobjet.rotation += (90-monobjet.rotation)*.1;
}

Erreur :
Warning: 1090: Problème de migration : En ActionScript 3.0, le gestionnaire d'événement onRollOver n'est pas déclenché automatiquement par Flash Player lors de l'exécution. Vous devez d'abord enregistrer ce gestionnaire d'événement à l'aide de addEventListener

Le souci est que si je passe en AS2 il m?indique que les lignes import flash sont incorrect et en AS3 l'erreur 1090?.

Que puis-je faire ?
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
8 oct. 2009 à 21:16
alors il faut savoir si tu veux faire en as2 ou en as3, ce sont 2 façon de penser légèrement différente. en as tu va associer un évènement à une fonction, en as3 tu va utiliser des écouteur pour lancer ces fonctions (à la java). Vue que tu peux utiliser l'as3, essaye de rester en as3 afin de rester le plus à jour possible ;).

sinon pour ton erreur, c'est tout simplement ma faute, onrollover est spécifique as2, donc il te prévient que tu utilises sans aucun doute du code as2 dans de l'as3. Je t'ai mal dirigé avec ce nom de fonction, renomme la tout simplement.
0
remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
8 oct. 2009 à 22:34
Bon bon bon?. Donc je n'ai plus aucune erreur de code par contre l'animation ne se lance pas lors du passage de la souris

Donc j'ai le code ci-dessus copié dans un claque 1 et l'image (Symbole/clip) présente dans la bibliothèque et copié dans un autre claque : calque 2?

Je suis débutant en flash? merci pour ta patience !
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
9 oct. 2009 à 01:13
si tu as pensé à bien renommer (dans les paramètres) ton objet sur ta scène "monobjet", cela ne devrait pas poser de soucis particulier.

si tu le désires je peux t'envoyer un fichier avec l'exemple du code que tu demandes. Mais seulement demain car je vais me coucher pour l'heure ;).
0
remix62 Messages postés 7 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 07:23
Salut, sa serait vraiment bien sympas de ta part de m?envoyer le code !!!
Histoire que je puisse réviser ce que j'ai fais et corriger l'erreur !
Franchement merci beaucoup pour ton aide, c bien cool !!!
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
9 oct. 2009 à 21:09
Avec une seule image sur ma scène, un seul calque, dessus un objet clip renommé "monobjet" et le code sur la première image :

monobjet.addEventListener(MouseEvent.ROLL_OVER,onRollOverObjet);
monobjet.addEventListener(MouseEvent.ROLL_OUT,onRollOutObjet);
function onRollOverObjet(evt:MouseEvent):void {
evt.target.removeEventListener(Event.ENTER_FRAME,tourneDroite);
evt.target.addEventListener(Event.ENTER_FRAME,tourneGauche);
}
function onRollOutObjet(evt:MouseEvent):void {
evt.target.removeEventListener(Event.ENTER_FRAME,tourneGauche);
evt.target.addEventListener(Event.ENTER_FRAME,tourneDroite);
}
function tourneGauche(evt:Event):void {
evt.target.rotation += (90-evt.target.rotation)*.1;
}
function tourneDroite(evt:Event):void {
evt.target.rotation += (0-evt.target.rotation)*.1;
}

si tu le fais depuis une classe, n'oublies pas les import (là ils ne sont pas obligatoire directement sur la scène)
0
Rejoignez-nous