Я пытаюсь создать модуль слайдера с JavaScript. Все работает, но анимация линейна и не чувствует себя гладкой или естественной. Я думал о подключении ослабляющего уравнения, но я не уверен, куда оно идет.JavaScript-анимация с ослаблением
Вот функция анимации я позаимствовал from here:
function animate(elem, style, unit, from, to, time) {
if (!elem) return;
var start = new Date().getTime(),
timer = setInterval(function() {
var step = Math.min(1,(new Date().getTime()-start)/time);
elem.style[style] = (from+step*(to-from))+unit;
if (step == 1) clearInterval(timer);
},25);
elem.style[style] = from+unit;
}
И функция ослабления from here:
/**
* @param {Number} t The current time
* @param {Number} b The start value
* @param {Number} c The change in value
* @param {Number} d The duration time
*/
function easeInCubic(t, b, c, d) {
t /= d;
return c*t*t*t + b;
}
Я попытался просто проездом в значениях у меня уже есть, как это:
elem.style[style] = easeInCubic(start, from, to, time) + unit;
Но ясно, что это неправильно (я не amazi ng при математике, и я, по общему признанию, просто догадываюсь).
Как присоединиться к двум вместе?
Возможно, вы можете воспользоваться существующей функцией ослабления [здесь] (http://www.robertpenner.com/easing/). –
У вас есть jsFiddle? – starbeamrainbowlabs