juliangarnier / anime

JavaScript animation engine
https://animejs.com
MIT License
50.22k stars 3.68k forks source link

feature: kill animation instance #562

Open NickRimer03 opened 5 years ago

NickRimer03 commented 5 years ago

First of all it is really the great animation library! Many thanks!

Is your feature request related to a problem? Please describe. I was surprised when kill animation instance possibility was not found. anime.remove(targets) is not the way I'm looking for because of this method doesn't kill the animation at all, it just clears its target objects (rather it clears this target from all possible animations if I understand). So it seems that animation still stays in memory. And if I'll call animation creation for 10 times will there be 10 instances of the animation?

Describe the solution you'd like A some solution to clear created animation from memory. Like this:

function animate({ view, easing = "linear", duration = 1000, start = 0 }) {
  const animeObj = {
    targets: view,
    easing,
    duration,
    complete: (animation) => {
      animation.kill();
    },
    autoplay: false
  };

  const animation = anime(animeObj);
  if (start === 0) {
    animation.play();
  } else {
    animation.seek(start);
    animation.play();
  }
}

If I want to play new animation on object I'll create it again. I don't want to save it in memory with a phantom possibility of reusing it again. No any thoughts about the combination of animation.pause() and anime.remove(targets) will help clear memory and unsubscribe the animation event.

namkazt commented 5 years ago

I'm stuck in the same case. I can't remove timeline that makes complete event call multi time. even on removed timeline

fengxianhua commented 5 years ago

same case, has anyone found a way to destroy an instance?

namkazt commented 5 years ago

i guess not. I switch to use greensock https://greensock.com/docs/TweenLite

thibautflottat commented 5 years ago

Same case, and I would like to keep using this library, i dont wanna switch to greensock. Has anybody else found a solution ?

AlexVipond commented 4 years ago

+1 for this, super high on my list of what I'm looking for in animation libraries. @juliangarnier any thoughts?

mracette commented 4 years ago

this is really dampening the performance of https://soundscape.world, and I'm looking into alternatives now as a result :(

kn0wn commented 4 years ago

Thanks for all the great thoughts on this feature - we will look into including it on the next major version (or maybe minor depending on scope)

fvpDev commented 2 years ago

Any update on this?

juliangarnier commented 2 years ago

It’s planned for the next release. Currently refactoring how the animations work internally and waiting for this part to be fully working and tested before introducing new methods to the API, like kill() or toggle(). Making good progress so far, but I stopped giving dates for release date since it always takes more time than expected.

Meanwhile, doing:

let animation = anime({…});
…
animation.pause();
animation = null;

Might be enough in some cases.