IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

roue qui saute


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut [Résolu]roue qui saute
    Bonjour,

    cela fait quelques jours que j'essaie de faire tourner une roue en fonction de la position de la souris lorsque celle-ci est enfoncée.

    J'ai trouvé un code qui marche, mais j'ai un problème de saut. Je m'explique : lorsque je relache la souris puis que je veux à nouveau faire tourner ma roue, celle-ci retourne à sa position initiale avant d'entamer sa rotation. Or je voudrait qu'elle débute sa rotation a partir de sa position actuelle.

    Pourtant j'ai créé une variable angleini, qui est calculée dès que l'on appuis sur la roue, pour éviter cet effet de saut.


    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    # var angleini:Number; 
    #  
    # Roue.addEventListener(MouseEvent.MOUSE_DOWN, debutTourner);  
    #  
    #  
    # function debutTourner(e:MouseEvent):void 
    # {  
    #     angleini  =  Math.atan2(mouseY - Roue.y, mouseX - Roue.x) * 180 / Math.PI; 
    #     Roue.removeEventListener(MouseEvent.MOUSE_DOWN, debutTourner);  
    #     stage.addEventListener(MouseEvent.MOUSE_UP, finTourner);  
    #     Roue.addEventListener(MouseEvent.MOUSE_MOVE, tourner);  
    # }  
    #   
    #   
    # function finTourner(e:MouseEvent):void  
    # {  
    #    Roue.addEventListener(MouseEvent.MOUSE_DOWN, debutTourner);  
    #    stage.removeEventListener(MouseEvent.MOUSE_UP, finTourner);  
    #  Roue.removeEventListener(MouseEvent.MOUSE_MOVE, tourner);  
    # }  
    #   
    # function tourner(e:Event):void  
    # {  
    #    
    #     var angle:Number = Math.atan2(mouseY - Roue.y, mouseX - Roue.x) * 180 / Math.PI;  
    #     Roue.rotation = angle-angleini;  
    # }

    Merci beaucoup

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 37
    Par défaut
    La piste que je t'ai proposé corrige le pb que j'avais constaté et que tu expliques bien ici.

    Citation Envoyé par Heaven_06 Voir le message
    Je m'explique : lorsque je relache la souris puis que je veux à nouveau faire tourner ma roue, celle-ci retourne à sa position initiale avant d'entamer sa rotation. Or je voudrait qu'elle débute sa rotation a partir de sa position actuelle.
    et en effet il en ressort que la variable angleini, de mon point de vue ne sert à rien..... En la plaçant à 0 je changeais peu le code mais on peut et donc on devrait la supprimer et modifier le code ou on la retranche d'angle.

    Et ça marche (je l'ai testé) c'est à dire que la roue ne retourne pas à son positionnement initial à partir du deuxième click et démarre sa rotation à partir de sa dernière position immobile...

    Mais je me demande aussi maintenant si on parle de la même chose ...
    aussi je consulterai ton fichier Rar dans la journée de demain si tu n'as pas d'autres pistes d'ici là...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Ah merci, c'est sympa de se pencher sur mon problème

    Parce que j'ai enlever angleini pour voir, et ca ne marche pas chez moi...

    Peut etre ai je mis les instructions dans un mauvais ordre...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 37
    Par défaut
    Il y a plusieurs sources de problèmes, ceci posé je confirme la première piste.

    1° dans le fichier RAR le code n'est pas à l'identique du code fourni au début du post (positionnement des écouteurs d'événements sur Stage ou bien sur le clip).
    Dans le code que je te propose je repars sur celui du début du post que j'avais déjà modifié et testé.

    2° ton clip roue est tout sauf une roue, je veux dire qu'il n'est pas centré, ton essieu n'étant pas au milieu, un tour n'est jamais "rond" et ton mouvement devient elliptique.

    En plaçant un clip "roue" (mais bien centrée via ctrl K) et en utilisant ce code ça le fait.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    //
    // Mettre le pointeur en forme de main au survol du clip Roue et positionnement d'un ecouteur
    //
    Roue.buttonMode=true;
    Roue.addEventListener(MouseEvent.MOUSE_DOWN, debutTourner); 
     
    //
    // functions de mouvement
    //
    function debutTourner(e:MouseEvent):void
    { 
     	Roue.removeEventListener(MouseEvent.MOUSE_DOWN, debutTourner); 
        	//angleini  =  Math.atan2(mouseY - Roue.y, mouseX - Roue.x) * 180 / Math.PI;
    	stage.addEventListener(MouseEvent.MOUSE_UP, finTourner); 
        	Roue.addEventListener(MouseEvent.MOUSE_MOVE, tourner); 
    } 
     
    function finTourner(e:MouseEvent):void 
    { 
      	Roue.addEventListener(MouseEvent.MOUSE_DOWN, debutTourner); 
       	stage.removeEventListener(MouseEvent.MOUSE_UP, finTourner); 
     	Roue.removeEventListener(MouseEvent.MOUSE_MOVE, tourner);
    } 
     
    function tourner(e:Event):void 
    { 
    	var angle:Number = Math.atan2(mouseY - Roue.y, mouseX - Roue.x) * 180 / Math.PI; 
    	Roue.rotation = angle;
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Oh merci!!

    Je pensais pas que bien centrer la roue pouvait autant changer l'effet!! (vu qu'il y a des pics qui dépassent, c'est pas très rond)





    Bon bah je m'attaque à la suite ^^

Discussions similaires

  1. Connection a base distante MySQL qui saute
    Par Harry dans le forum WinDev
    Réponses: 3
    Dernier message: 10/08/2007, 01h43
  2. CSocket qui saute au bout de quelques réceptions
    Par Deckard666 dans le forum MFC
    Réponses: 2
    Dernier message: 04/04/2007, 11h38
  3. valeur de session qui saute
    Par nashouille dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/04/2007, 01h23
  4. Intégrité référentielle qui saute
    Par jfc dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2007, 11h29
  5. Musique qui saute.
    Par Satch dans le forum Périphériques
    Réponses: 2
    Dernier message: 30/03/2006, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo