Вы создаете бесконечный цикл. Вы сделали это намеренно, но он работает намного быстрее, чем вы думаете. complete
выполняет функцию ссылки. Добавив parens к названию функции обратного вызова, вы немедленно вызываете aniPointer
и передаете возвращаемое значение в complete
вместо передачи ссылки на aniPointer
, чтобы его уволили в более позднее время.
Даже так, это последовательность, что вы хотите сделать?
Вы делаете:
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
Предполагая, что вы, начиная с 1,0 это на самом деле:
wait 300ms
go to 0.2 over 700ms
wait 300ms
go to 1.0 over 300ms
repeat
Если вы ищете для стационарного импульса вы могли бы сделать что-то вроде этого:
function pulse($elem) {
return window.setInterval(function() {
$elem.animate({opacity: 0.2}, 700)
.animate({opacity: 1.0}, 300);
}, 1000);
}
Или, если вы намеренно задержавшись вы могли бы сделать:
function pulse($elem) {
return window.setInterval(function() {
$elem.animate({opacity: 0.2}, 700);
window.setTimeout(function() {
$elem.animate({opacity: 1.0}, 300);
}, 1000);
}, 1600);
}
Возвращаемое значение позволит вам остановить анимацию, если вы хотите, чтобы выглядеть примерно так:
var pulseIntervalId = pulse($('#arrow_id'));
//some time later...
window.clearInterval(pulseIntervalId);
Либо вариант будет огибать вопрос бесконечного цикла, что позволяет обратный вызов, чтобы иметь ссылку на элемент пульсирующего не будучи вызванными преждевременно.
вау, я действительно не мог спросить для более детального ответа! – Jigs
Надеюсь, это сработает! GL. – jasongetsdown