Vous créez une boucle infinie. Vous l'avez fait intentionnellement, mais il fonctionne beaucoup plus vite que vous ne le pensez. complete
prend une référence de fonction. En ajoutant les parens au nom de la fonction de rappel, vous appelez immédiatement aniPointer
et transmettez la valeur de retour à complete
au lieu de transmettre une référence à aniPointer
lui-même pour être déclenché ultérieurement.
Même ainsi, cette séquence est-elle vraiment ce que vous voulez faire?
que vous faites:
go to 1.0 over 300ms
go to 0.2 over 700ms
go to 0.2 over 300ms
go to 1.0 over 300ms
repeat
En supposant que vous commencez à 1.0 est en fait:
wait 300ms
go to 0.2 over 700ms
wait 300ms
go to 1.0 over 300ms
repeat
Si vous cherchez une impulsion constante que vous pourriez faire quelque chose comme ceci:
function pulse($elem) {
return window.setInterval(function() {
$elem.animate({opacity: 0.2}, 700)
.animate({opacity: 1.0}, 300);
}, 1000);
}
Ou si vous étiez mise en pause, vous pouvez le faire intentionnellement:
function pulse($elem) {
return window.setInterval(function() {
$elem.animate({opacity: 0.2}, 700);
window.setTimeout(function() {
$elem.animate({opacity: 1.0}, 300);
}, 1000);
}, 1600);
}
La valeur de retour vous permettra d'arrêter l'animation si vous voulez comme ceci:
var pulseIntervalId = pulse($('#arrow_id'));
//some time later...
window.clearInterval(pulseIntervalId);
la version ou l'autre contournera le problème de boucle infinie, ce qui permet le rappel d'avoir la référence à l'élément pulsant sans être invoqué prématurément.
wow, je ne pouvais vraiment pas demander pour une réponse plus détaillée! – Jigs
Hah, j'espère que ça marche! GL. – jasongetsdown