How can i use timelines in version svg.js 3.x

浪子不回头ぞ 提交于 2019-12-24 01:28:26

问题


There seems to be a new timeline-feature in svg.js Version 3.x. I'd like to try this feature but I don't understand the api. As far as I see, the documentation has not been updated yet. Could you please give me an example that shows me how to get started with timelines?

Thanks Michael


回答1:


A new timeline is created for every element automatically when you animate it or request it:

const animationRunner = el.animate(duration).move(100, 100) // cretates a timeline
const timeline = el.timeline() // also creates a timeline if not present

However, often you want to schedule animation of different elements on the same timeline. Therefore you can also create a timeline first and then set it on the element:

const timeline = new SVG.Timeline() // create a timeline
el.timeline(timeline) // set the timeline for the element

Animations are scheduled on the timeline automatically when you animate an element. As a default behavior, they are scheduled to run after the last animation which was scheduled on the timeline. If no animation was scheduled, then it will run right away:

el.animate(1000).move(100, 100) // moves now
  .animate(1000).move(200, 200) // moves after first animation

To have more control over the scheduling you can pass additional parameters to animate:

el.animate(duration, delay, when)
  • duration: duration of the animation. Can be a number or a controller in which case it is not a duration and the whole animation is controlled by the controller
  • delay: time before the animaton starts
  • when: can be 'now', 'relative', 'after' or 'absolut'

    • now: run right away
    • relative: start after delay ms relative to the start of the animation before
    • after: start delay ms after the last animation was finished
    • absolute: place the animation delay ms of the zero of the timeline

To conrol the timeline, you can use play(), pause(), stop(), finish(), seek(), speed(), reverse() and so on.

If you want to play around with this, you shall also use persist(true) on the timeline. Otherwise animations which are finished are garbage collected and unscheduled from the timeline automatically.

As spoiled in the first code example, animate() returns an animationRunner (short Runner) which holds all infos about the animation. You can schedule those Runners directly on the timeline by using schedule or unschedule. However, I think this will burst the frame of this answer.

A good example for the end: https://codepen.io/fuzzyma/pen/wQbVed
And many other examples with animations: https://codepen.io/collection/XpwMLO/#



来源:https://stackoverflow.com/questions/54762861/how-can-i-use-timelines-in-version-svg-js-3-x

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!