#javascript #anime.js
Вопрос:
Я пытаюсь заставить вращаться барабан, и в центре мыши я хочу, чтобы круг перестал вращаться и повернулся на «x» градусов, в режиме мыши круг должен вернуться к своему началу и продолжить анимацию вращения.
function rotatingCircle(degree) {
var test =
anime({
targets: [document.getElementsByTagName("svg")[0]],
rotate: degree,
duration: 800,
loop: true,
elasticity: 0,
easing: "linear"
});
};
rotatingCircle(360);
var buttonEl = document.querySelector('.trigger');
var circleOne = document.getElementsByTagName("svg");
buttonEl.addEventListener('mouseenter', rotatingCircle(20));
buttonEl.addEventListener('mouseleave', rotatingCircle(0));
Добавьте момент, когда мой svg вообще не вращается. Когда я удаляю событие «mouseenter» и «mouseleave», мой svg вращается по желанию. Как сохранить анимацию вращающегося цикла И добавить событие «mouseenter» / «mouseleave», которое запускает поворот SVG на определенный угол?
Комментарии:
1. Не могли бы вы перефразировать это в вопрос и объяснить, где вы застряли?
2. Добавьте момент, когда мой svg вообще не вращается. Когда я удаляю событие «mouseenter» и «mouseleave», мой svg вращается по желанию. Как сохранить анимацию вращающегося цикла И добавить событие «mouseenter» / «mouseleave», которое запускает поворот SVG на определенный угол?
Ответ №1:
Одна из проблем, которую я вижу в вашем коде, заключается в том, что
buttonEl.addEventListener('mouseenter', rotatingCircle(20));
buttonEl.addEventListener('mouseleave', rotatingCircle(0));
на самом деле вы вызываете функцию rotatingCircle
, в которой вместо этого хотите отправить имя функции или анонимную функцию.
Пример имени функции, если это были функции без параметров
buttonEl.addEventListener('mouseenter', rotatingCircle);
buttonEl.addEventListener('mouseleave', rotatingCircle);
Пример анонимной функции, когда вам нужно отправить параметры (используйте этот)
buttonEl.addEventListener('mouseenter', () => rotatingCircle(20));
buttonEl.addEventListener('mouseleave', () => rotatingCircle(20));
Как думать об этом на примере:
слушателям просто нужна ссылка на то, что вызывать при запуске, им не нужно, что функция возвращает при вызове
Я сделал песочницу кода из того, о чем, по-моему, вы говорите. Проверьте это здесь: https://codesandbox.io/s/aninejs-different-animations-for-different-hover-states-ld76r