mo.js поддерживает построение анимаций через декларативные объекты, где ключевую роль играют временные шкалы, направления воспроизведения и управление стартовыми состояниями. Концепция BackwardStart относится к стратегии запуска анимации с конечного состояния, при которой визуальный элемент изначально воспринимается как уже завершивший своё движение и затем «разворачивает» анимацию к начальному состоянию.
BackwardStart описывает подход, при котором:
В отличие от классического сценария, где объект появляется в исходной позиции и движется к финальной, BackwardStart меняет причинно-следственную последовательность: система интерпретирует результат как уже достигнутый и анимирует возврат.
Такой подход часто используется в интерфейсных эффектах, где требуется:
В анимационной модели mo.js ключевым элементом является timeline. BackwardStart концептуально связан с:
Эквивалентное поведение можно описать через обратное проигрывание:
const timeline = new mojs.Timeline();
timeline.add([
new mojs.Html({
el: '.box',
x: { 300: 0 },
opacity: { 0: 1 },
duration: 600,
easing: 'ease.out'
})
]);
timeline.playBackward(); // концептуальный BackwardStart
В реальной архитектуре библиотек подобного типа BackwardStart может реализовываться через:
При использовании обратного старта изменяется интерпретация ключевых параметров:
Обычная логика:
BackwardStart:
new mojs.Shape({
shape: 'circle',
radius: { 0: 50 },
x: { 0: 200 },
duration: 800
});
При BackwardStart интерпретация становится обратной: круг появляется уже с радиусом 50 и координатой 200, после чего «схлопывается» к исходной точке.
Особенно выразительно BackwardStart работает с opacity:
new mojs.Html({
el: '.panel',
opacity: { 0: 1 },
duration: 500
});
При обратном старте пользователь воспринимает эффект как постепенное проявление уже существующего интерфейса.
BackwardStart становится особенно важным при работе со сложными сценами, где несколько анимаций синхронизированы.
const timeline = new mojs.Timeline({ backwardStart: true });
timeline.add([
new mojs.Shape({
shape: 'rect',
x: { 400: 0 },
duration: 700
}),
new mojs.Html({
el: '.title',
y: { -50: 0 },
delay: 100,
duration: 500
})
]);
timeline.play();
В таком сценарии:
BackwardStart часто используется как мост между состояниями UI:
Особенность подхода заключается в том, что система не строит анимацию от нуля, а работает от уже готового результата.
При обратном старте easing-функции меняют восприятие движения:
new mojs.Shape({
shape: 'circle',
scale: { 1: 0 },
easing: 'ease.out',
duration: 900
});
При BackwardStart визуально это воспринимается как медленное появление уже существующего объекта с последующим «закреплением» в исходной форме.
BackwardStart особенно эффективен в сценариях:
BackwardStart изменяет когнитивную модель анимации:
Такой эффект особенно полезен при создании интерфейсов, где важна иллюзия контроля времени и состояния сцены.