Бодимовин зависает, играя анимацию только один раз

Получил мою анимацию, чтобы вызвать игру при наведении. У меня все работает, но когда я снова пытаюсь играть, ничего не получается.

Есть идеи, что я написал не так?

var squares = document.getElementById("test");
var animation = bodymovin.loadAnimation({
    container: test,
    renderer: "svg",
    loop: false,
    autoplay: false,
    path: "https://dl.dropboxusercontent.com/BodyMovin/squares.json"
});

squares.addEventListener("mouseenter", function () {
    animation.play();
});

function playAnim(anim, loop) {
    if(anim.isPaused) {
        anim.loop = loop;
        anim.goToAndPlay(0);
    }
}

function pauseAnim(anim) {
    if (!anim.isPaused) {
        anim.loop = false;
    }
}

2 ответа

Когда анимация достигает своего последнего кадра, она не возвращается к первому. Вот почему, если вы вызываете игру, ничего не происходит, поскольку она уже закончилась, и играть больше некуда.
Ты должен сделать:

squares.addEventListener("mouseenter", function () {
  animation.goToAndPlay(0);
});

И если вы хотите, чтобы он воспроизводился только по достижении своего последнего кадра, это должно сработать:

var isComplete = true;
svgContainer.addEventListener('mouseenter', function(){
  if(isComplete){
    squares.goToAndPlay(0);
    isComplete = false;
  }
})

squares.addEventListener('complete', function(){
  isComplete = true;
})

Я даю шанс на это, хотя мой опыт с Бодемовиным (и Лотти) только из React Native world.

Это должно быть довольно просто, чтобы остановить анимацию и перезапустить ее, когда курсор покинет элемент:

squares.addEventListener("mouseenter", function () {
  animation.play();
});

squares.addEventListener("mouseleave", function () {
  animation.gotoAndStop(0);
});
Другие вопросы по тегам