Свойство currentTime представляет собой одну из ключевых
точек управления анимацией в библиотеке anime.js. Оно
используется для получения или установки текущей позиции анимации в
миллисекундах. Понимание работы с currentTime позволяет
точно синхронизировать анимации, реализовывать сложные
последовательности и создавать интерактивные эффекты, где анимация
реагирует на действия пользователя или внешние события.
currentTimecurrentTime позволяет мгновенно переместить
анимацию в указанную точку.currentTime
работает не только с отдельными анимациями, но и с объектами
anime.timeline, что позволяет управлять общей
последовательностью.Пример чтения текущего времени анимации:
let animation = anime({
targets: '.box',
translateX: 300,
duration: 2000,
easing: 'linear'
});
console.log(animation.currentTime); // Вернет 0 в момент старта
Пример установки текущего времени:
animation.currentTime = 1000; // Переносит анимацию на 1 секунду
Использование currentTime позволяет создавать точную
синхронизацию между несколькими анимациями. Например, можно запустить
несколько анимаций одновременно и контролировать их прогресс в одном
месте, устанавливая одинаковое currentTime.
let anim1 = anime({ targets: '.circle', translateX: 200, duration: 3000 });
let anim2 = anime({ targets: '.square', translateY: 200, duration: 3000 });
anim2.currentTime = anim1.currentTime; // синхронизируем прогресс анимаций
В сочетании с методами pause() и play(),
свойство currentTime позволяет реализовать ручное
управление анимацией, включая прокрутку, перемотку и интерактивные
эффекты на основе ввода пользователя.
Пример интерактивной прокрутки анимации:
let animation = anime({
targets: '.line',
width: '100%',
duration: 5000,
easing: 'linear',
autoplay: false
});
// Перемотка слайдером
document.querySelector('#slider').addEventListener('input', e => {
animation.currentTime = e.target.value;
});
В этом примере слайдер управляет текущей позицией анимации в реальном времени.
anime.timelineКогда currentTime применяется к
timeline, оно возвращает или устанавливает глобальное
время всей последовательности анимаций:
let timeline = anime.timeline({
autoplay: false
});
timeline
.add({ targets: '.box', translateX: 250, duration: 1000 })
.add({ targets: '.box', rotate: 180, duration: 1000 });
timeline.currentTime = 500; // Перемещает timeline на полпути первой анимации
Таким образом, можно создавать сложные анимационные сцены с точной привязкой времени, включая возможность синхронизации с внешними событиями.
currentTime при
автозапуске анимации мгновенно перемещает текущий кадр, даже если
анимация ещё не стартовала.loop – если анимация
зациклена, значение currentTime учитывает полный прогресс,
включая циклы. Например, при loop: 2 и
duration: 1000, currentTime = 1500
соответствует середине второго цикла.currentTime влияет на все
дочерние анимации в зависимости от их временного смещения
(offset).Плавная перемотка анимации по скроллу страницы:
let animation = anime({
targets: '.scroll-box',
translateX: 500,
duration: 3000,
easing: 'linear',
autoplay: false
});
window.addEventListener('scroll', () => {
let scrollFraction = window.scrollY / (document.body.scrollHeight - window.innerHeight);
animation.currentTime = scrollFraction * animation.duration;
});
Реализация перемотки с кнопками «Вперед» и «Назад»:
let animation = anime({
targets: '.btn-box',
translateY: 400,
duration: 2000,
easing: 'easeInOutSine',
autoplay: false
});
document.querySelector('#forward').addEventListener('click', () => {
animation.currentTime += 200; // Перемотка вперед на 200 мс
});
document.querySelector('#backward').addEventListener('click', () => {
animation.currentTime -= 200; // Перемотка назад на 200 мс
});
Эти подходы делают currentTime универсальным
инструментом для интерактивного управления анимациями и синхронизации
сложных последовательностей.
Свойство currentTime обеспечивает полный контроль над
временной шкалой анимации, позволяя реализовать как базовую перемотку,
так и сложные интерактивные сценарии с несколькими синхронизированными
объектами.