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

jQuery Discussion :

Animation déplacement d'éléments


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut Animation déplacement d'éléments
    Bonjour, je débute en jQuery et pour m'exercer, j'ai décidé de coder un petit casse-briques, après être parvenu (Non sans mal) à animer un rectangle représentant la raquette en même temps que la souris, je ne parviens pas à faire se déplacer la balle, je souhaite que celle-ci se déplace vers le haut après que l'utilisateur ait cliqué, j'utilise pour cela une variable initialisée à false que je mets à true lors du clic avec la méthode click() ; puis, lorsque la variable est à true, la variable représentant la hauteur de la balle est décrémentée mais pourtant, la balle ne bouge pas d'une once.

    Voici mon code HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html>
        <head>
            <script src="../jquery-3.3.1.min.js"></script>
            <script src="js/app.js"></script>
            <link rel="stylesheet" type="text/css" href="css/style.css">
        </head>
     
        <body>
          <div class="Raquette"></div>
          <img class="Balle" src="img/Balle.jpg">
        </body>
    </html>

    Mon code JavaScript :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    $(document).ready(function()
    {
      var xRaquette;
      var largMax = $(window).width() - 200;
      var continuer = true;
      var balleLancee = false;
      var xBalle;
      var yBalle;
     
      $(document).click(function()		//Lancer de la balle
      {
        balleLancee = true;
      });
     
      $(document).mousemove(function(e)		//Déplacement raquette
      {
     
        if(e.pageX < largMax)
          xRaquette = e.pageX;
        else
          xRaquette = largMax;
     
        $('.Raquette').offset(
          {
            left : xRaquette,
            top : $(window).height() - 20
          }
        );
     
      });
     
      if(!balleLancee)		//Position initiale balle
      {
        xBalle = $(window).width()/2 - 15;
        yBalle = $(window).height() - 20 - 30;
      }
     
      if(balleLancee)		//Déplacement balle
      {
        yBalle-=10;
      }
     
      $('.Balle').offset(		//Position balle
        {
          left : xBalle,
          top : yBalle
        }
      );
    });
    Mon code CSS :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .Raquette
    {
      width : 200px;
      height : 20px;
      background-color: red;
    }
     
    .Balle
    {
      width : 30px;
      height : auto;
    }

    Il y a quelque chose que je ne comprends pas : Moi qui ai l'habitude de coder en C, il faut une boucle pour avoir un programme qui s'exécute en continu. Ici j'ai du mal à comprendre comment ça fonctionne, étant donné qu'on peut à tout moment détecter des événements tels que clics ou déplacements de curseur, j'en déduis que cette boucle existe déjà "en arrière-plan", je me trompe ?
    Merci par avance, et bravo aux Bleus !

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Re, j'ai essayé avec la méthode animate(), toujours sans succès :

    Code JavaScript : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    $(document).ready(function()
    {
      var xRaquette;
      var largMax = $(window).width() - 200;
      var balleLancee = false;
      var xBalle;
      var yBalle;
     
      $(document).click(function()
      {
        balleLancee = true;
      });
     
      $(document).mousemove(function(e)
      {
     
        if(e.pageX < largMax)
          xRaquette = e.pageX;
        else
          xRaquette = largMax;
     
        $('.Raquette').offset(
          {
            left : xRaquette,
            top : $(window).height() - 20
          }
        );
     
      });
     
      /*if(!balleLancee)
      {
        xBalle = $(window).width()/2 - 15;
        yBalle = $(window).height() - 20 - 30;
      }*/
     
      if(balleLancee)
      {
        //yBalle-=50;
        $('.Balle').animate({
          top: '+=50'
        },
        1000,
        'linear'
        );
      }
     
      /*$('.Balle').offset(
        {
          left : xBalle,
          top : yBalle
        }
      );*/
    });

    Je me dis que l'on devrait voir la balle bouger au moins une fois, mais ce n'est pas le cas.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Je ne comprends pas, la méthode animate() fonctionne pour des propriétés comme "width" mais pas pour "left", dites moi si vous voyez une erreur de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.Balle').animate({left: '500px'}, 500);
    Par contre ça marche parfaitement si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.Balle').animate({width: '+=500'}, 500)
    Là ça défie toute logique ...

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Bon je laisse tomber.

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    $.animate fonctionne avec toutes les propriétés.
    Tu as juste oublié de mettre plus égale +=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.Balle').animate({left: '+=500px'}, 500);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2004, 11h25
  2. [Débutant] Problème de déconnexion d'une page JSP
    Par amal9 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 22/01/2004, 13h40
  3. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28
  4. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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