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

JavaScript Discussion :

Impossible d'arrêter une animation


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 29
    Par défaut Impossible d'arrêter une animation
    Je programme un jeu pour enfants où des crocodiles se baladent en bas de l'écran: ils rentrent et ressortent par les bords droit et gauche.

    pour avoir le contrôle et mettre en pause ou reprendre l'animation à volonté, il y aurait 2 moyens==>
    Ajouter un CSS par
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          .paused-animation {
      animation-play-state: paused !important;
    }
    et dans le script
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function pauseAnimation() {
      animationPaused = true;
      crocodile2.classList.add("paused-animation");
     
      setTimeout(function() {
        animationPaused = false;
        crocodile2.classList.remove("paused-animation");
        currentPosition += 1;
      }, 2000);
    }
    Normalement la fonction setTimeout attend 2000 msec avant de reprendre l'animation
    Pour reprendre et updater avec currentPosition mesurant la position du crocodile et targetPosition l'endroit où il doit s'arrêter==>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function updateAnimation() {
      if (!animationPaused) {
        // Mettre à jour la position de l'animation
        // ...
            if (Math.abs(currentPosition) >= Math.abs(targetPosition) - 10) {
          pauseAnimation();
        } else {
    // Vérifier si l'animation doit être mise en pause
    currentPosition+=3;
      }
      }
    requestAnimationFrame(updateAnimation);
    }

    Ça ne marche pas!! L'autre méthode consisterait à jouer sur les instances==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    crocodile2.style.animationPlayState = "paused";
    //...
    crocodile2.style.animationPlayState = "running";
    Ça ne marche pas non plus: jusqu'ici j'ai été incapable de trouver le moyen optimum d'arrêter puis reprendre une animation là où elle était.
    Si vous avez des idées....

  2. #2
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut axolotl_1,

    Et comme ça ?

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    crocodile2.style.cssText  = "animation-play-state: paused;"
    crocodile2.style.cssText  = "animation-play-state: running;"

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 29
    Par défaut
    J'ai essayé ces 4 instructions censées plus ou moins arrêter l'animation==>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (currentPosition >= targetPosition) {
      isMovingLeft = false;
      cancelAnimationFrame(crocodile1AnimationId); // Utilisez l'identifiant de l'animation pour l'annuler
      crocodile1.style.transitionDuration = "2s"; // Ajoutez une transition de 2 secondes pour la fluidité
      crocodile1.style.animationPlayState = 'paused';
      crocodile1.style.animation = "none";
      crocodile1.style.animation_play_state = 'paused';
      crocodile1.style.right = currentPosition + "px";
     
     
        setTimeout(function() {
        console.log("Je passe dans setTimeout après 2 secondes");
        crocodile1.style.transitionDuration = ""; // Réinitialisez la durée de transition à sa valeur par défaut
    }, 2000);
    Ceci devrait immobiliser l'animation pendant 2 secondes mais aucune ne marche visiblement.
    À moins qu'ailleurs dans mon programme il y ait une interférence mais la console marque bien "Je passe dans setTimeout après 2 secondes".
    Ou alors comme je suis sur un MacBook 2014 avec Mojave, la version de Javascript date un peu trop, la version de Safari étant trop ancienne ?
    Normalement il devrait exécuter ces instructions séquentiellement donc arrêter le croco pendant 2 secondes ce qu'il ne fait pas.
    aucune de toutes ces instructions n'arrive à le stopper.

  4. #4
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Dans l'inspecteur de code, il y a un changement de style pour les éléments "crocodile" ?

    ...la version de Safari étant trop ancienne ?
    Une mise à jour Safari ou alors avec le navigateur TenFourFox (si compatible) ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2023
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2023
    Messages : 29
    Par défaut
    Comment est-ce qu'on manie l'inspecteur de code ?
    Comment voir s'il y a un changement de style pour le crocodile ?
    Merci

  6. #6
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Comment est-ce qu'on manie l'inspecteur de code ?
    https://support.monday.com/hc/fr/art...C3%A9veloppeur

    Ou en vidéo à ~6,40mn pour la console dans Safari

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/07/2014, 19h57
  2. Réponses: 3
    Dernier message: 29/06/2012, 09h24
  3. Arrêter une animation
    Par Interface dans le forum Flash
    Réponses: 4
    Dernier message: 08/06/2010, 17h59
  4. Impossible de lire une anim avec FF
    Par goute dans le forum Intégration
    Réponses: 1
    Dernier message: 30/03/2010, 17h00
  5. Boutons pour lancer/arrêter une animation Flash ?
    Par -=ET=- dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 01/05/2006, 02h54

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