Метод stop() используется для немедленной остановки
анимации, созданной с помощью объектов библиотеки
mo.js. В отличие от методов, управляющих паузой или
повтором, stop() полностью прерывает текущий процесс
анимации и фиксирует её состояние на момент вызова.
Основная задача метода — прекращение выполнения анимации без возможности продолжения с текущего места. После вызова:
play() запускает анимацию
заново, а не продолжает еёЭто принципиально отличает stop() от метода
pause().
animation.stop();
Где animation — экземпляр одного из классов mo.js:
mojs.Shapemojs.Tweenmojs.Timelinemojs.Burst и другиеconst circle = new mojs.Shape({
shape: 'circle',
radius: { 0: 50 },
duration: 2000
});
circle.play();
// остановка через 1 секунду
setTimeout(() => {
circle.stop();
}, 1000);
В этом примере:
stop()pause()| Метод | Поведение |
|---|---|
pause() |
Временно останавливает анимацию с возможностью продолжения |
stop() |
Полностью прекращает анимацию без сохранения прогресса |
Пример различия:
circle.pause(); // можно продолжить с того же места
circle.play(); // продолжит
circle.stop(); // сбрасывает выполнение
circle.play(); // начнётся заново
Если анимация является частью mojs.Timeline, вызов
stop():
Пример:
const tween1 = new mojs.Tween({ duration: 1000 });
const tween2 = new mojs.Tween({ duration: 2000 });
const timeline = new mojs.Timeline()
.add(tween1, tween2);
timeline.play();
// остановка всего таймлайна
timeline.stop();
Важно понимать:
stop() не возвращает объект в начальное
состояниеДля полного сброса используется:
animation.stop();
animation.replay(); // или animation.play() с reset-параметрами
Повторный вызов stop():
Метод часто применяется при:
button.addEventListener('click', () => {
animation.stop();
});
При смене экранов или компонентов:
function hideAnimation() {
animation.stop();
}
animation.stop();
animation.play();
Гарантирует, что новая анимация начнётся без наложения предыдущей.
Burst и ShapeДля сложных объектов:
const burst = new mojs.Burst({
count: 10,
radius: { 0: 100 }
});
burst.play();
burst.stop();
children) также прекращают
анимациюЧасто используется в связке:
stop() + play()animation.stop();
animation.play();
Перезапуск анимации
stop() +
setProgress()animation.stop();
animation.setProgress(0.5);
Фиксация анимации на определённой стадии
stop() + replay()animation.stop();
animation.replay();
Полный перезапуск с начального состояния
Метод stop():
Особенно важно при большом количестве анимаций.
stop()animation.stop();
animation.play(); // начнётся сначала, а не продолжится
animation.stop();
// элемент остаётся в промежуточном состоянии
Решение:
animation.stop();
animation.setProgress(0);
pause()Если требуется временная остановка — stop() не
подходит.
element.addEventListener('mouseenter', () => {
animation.stop();
});
Используется для:
function safePlay(anim) {
anim.stop();
anim.play();
}
Позволяет избежать конфликтов при частых вызовах.
Для анимаций с repeat: Infinity:
const anim = new mojs.Tween({
duration: 1000,
repeat: Infinity
});
anim.play();
// остановка бесконечного цикла
anim.stop();
stop() полностью завершает цикл независимо от текущей
итерации.
Метод:
requestAnimationFramestop()pause())| Действие | Результат |
|---|---|
stop() |
мгновенная остановка |
play() после |
запуск с начала |
| состояние | сохраняется визуально |
| прогресс | не продолжается |
Метод stop() является ключевым инструментом контроля
жизненного цикла анимации в mo.js, позволяя точно управлять её
завершением и предотвращать нежелательное поведение в динамических
интерфейсах.