Здравствуйте, подскажите пожалуйста.
Есть анимация
EaseOut, которая прокручивает бэкграунд на определенное расстояние.
Если расстояние не большое, то эффект срабатывает отлично, но если я задаю прокрутку анимации примерно на >= 300px, то анимация получается, какая-то «рваная»… И еще вопрос, когда расстояние не большое то эффект выполняется медленно, но если >=300px то анимация старается пройти за это же время расстояние, но естественно с большей скоростью.
Помогите пожалуйста сделать так, чтоб вне зависимости от расстояния, скорость анимации была неизменна.
Вот код:
function set_animate(opts) {
var start = new Date,
timer = setInterval(function () {
var progress = (new Date - start) / opts.duration;
if (progress > 1) {
progress = 1;
}
opts.step(opts.delta(progress));
if (progress == 1) {
clearInterval(timer);
}
}, 34);
}
function get_animate(elem, delta, duration) {
var to = 58;
set_animate({
delay: 10,
duration: duration || 1000,
delta: delta,
step: function (delta) {
$(elem).css('backgroundPosition', '0 -' + to * delta + 'px');
}
});
}
function bounce(progress) {
for (var a = 0, b = 1, result; 1; a += b, b /= 2) {
if (progress >= (7 - 4 * a) / 11) {
return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
}
}
}
function makeEaseOut(delta) {
return function (progress) {
return 1 - delta(1 - progress);
}
}
get_animate(slide.number_1, makeEaseOut(bounce));
Спасибо огромное за вашу помощь и потраченное время.