Ослабление / анимация - это функция времени. Вы сообщаете своей функции, сколько времени прошло, и она говорит вам, сколько пройдено расстояния.
Я использую следующее уравнение для 99% анимации JS, которую я делаю:
function simple_easing(how_much_time_has_passed) {
return (1 - Math.cos(how_much_time_has_passed * Math.PI)) / 2;
}
Я не знаю, почему это работает. Я не пытался понять математику, стоящую за этим.
Но вышеприведенное уравнение делает много предположений о том, как вы анимируете. Аргумент how_much_time_has_passed
должен быть десятичным числом от 0 до 1; он также возвращает десятичное число от 0 до 1, что само по себе бесполезно (если только вы не анимируете прозрачность).
Когда эта функция возвращает значение how_much
, вам необходимо сделать следующее:
current_value = start_value + total_distance * how_much;
... Это означает, что вам придется начинать отслеживать другие вещи, которых не было в вашем первоначальном примере.
Дальнейшее чтение
Удивительная глава Роберта Пеннера о анимации уравнений из его удивительной книги.
РЕДАКТИРОВАТЬ: Или, вы можете просто использовать плагин jQuery.