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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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 éclairé
    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
    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 éclairé
    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
    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 éclairé
    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
    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 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    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