2015-10-28 1 views
0

Je regardais le codepen suivant et je me demandais comment vous pouvez arrêter le clic de spam, par exemple, si vous cliquez plusieurs fois à la fois, l'animation commence à gâcher.Comment empêcher le spam de déclencher des événements?

Comment puis-je empêcher cela? Aurait-il simplement un travail conditionnel? J'ai essayé, mais je ne pouvais pas le faire fonctionner. Comment puis-je obtenir l'animation pour continuer à jouer et empêcher l'interaction de l'utilisateur, jusqu'à ce qu'il soit terminé.

http://codepen.io/Filippo/pen/WvGbJB/?editors=011

+0

Cela ne dépendrait-il pas de si vous faites l'animation en javascript ou css aussi? – Dane

+0

Je suppose, mais plus ou moins intéressé par la solution javascript. – user3555373

+0

Jetez un coup d'œil sur 'debouncing' ou 'throttling'. Exemple ici: http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/ – SlashmanX

Répondre

4

Si vous voulez être agnostique du fait que l'animation est jouée par CSS ou JS, il n'y a qu'une seule solution. Vous devez savoir combien de temps dure votre animation et utiliser un setTimeout. Par exemple:

var isAnimating = false; 
$('#button').click(function() { 
    if (isAnimating) { 
     return; 
    } 

    isAnimating = true; 

    // Start animation. Add a css class or do this by javascript or whatever 

    // Assuming the animation duration is 2 seconds 
    setTimeout(function() { 
     isAnimating = false; 
    }, 2000); 
}); 
+0

J'aime ça, c'est ce que je visais. Aussi réalisé cette animation utilise la vélocité et a l'air d'avoir un rappel pour 'complete' quand l'animation se termine. Je peux l'utiliser pour définir l'état isAnimating. Impressionnant. – user3555373

+0

Pour votre exemple de codepen, l'animation est de 1000 ms, voici donc la mise à jour [codepen] (http://codepen.io/anon/pen/wKjyaV?editors=011#0). –

+0

Cela peut sembler stupide, mais si quelque chose faisait chuter la performance, cela ne fonctionnerait-il pas en raison de la temporisation? – Dane