animation - svg.js 中同一元素上的多个重叠动画

标签 animation svg svg.js

我想在一个元素上开始一个动画,而之前的动画仍然处于事件状态。但是,在元素上调用 animate() 会将新动画排在当前动画的末尾。

例如,考虑一个元素被移动到新位置的动画。现在,我还想让它在到达某个位置时淡出。以下是在移动结束时排队“一次”动画,而不是在 80%。

rect.animate(1000).move(100, 100)
    .once(0.8, function(pos, eased) {
                 rect.animate(200).opacity(0);
               });

如何让元素在移动到 80% 时开始淡出?该 API 似乎是为链接动画而不是同时重叠动画而设计的。

最佳答案

您尝试做的事情有点复杂。不幸的是,不可能“侵入”当前动画并即时添加新动画。 然而,您可以做的是添加一个应该动画化的新属性:

var fx = rect.animate(1000).move(100, 100)
    .once(0.8, function(pos, eased) {
             fx.opacity(0);
           });

您会注意到它有其自身的问题,因为不透明度立即跃升至 80%。所以这不是适合您的方法。

下一步尝试:使用during方法:

  var morh = SVG.morph(

  var fx = rect.animate(1000).move(100, 100)
    .once(0.8, function(pos, eased) {
             fx.during(function(pos, morphFn, easedPos) {
                 pos = (pos - 0.8) / 0.2
                 this.target().opacity(pos)
             }
           });

我们自己计算不透明度

关于animation - svg.js 中同一元素上的多个重叠动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46515375/

相关文章:

Javascript滚动到带有动画onclick的元素

SwiftUI View 在意想不到的路径上动画

visual-c++ - Windows XP 的 Direct2D 等效 2D 图形 API

css - SVG 动画没有按预期工作

html - 在 CSS 伪元素中居中自定义字形

javascript - 将外部 SVG 文件加载到 SVGJS(重复的 SVG 标签)

javascript - 将 svg 缩放到父容器

javascript - 通过指定 css 规则应用的时间点来加速 javascript 动画

javascript - 使用 Javascript 膨胀和腐 eclipse SVG 形状

javascript - 使用 svg.js 库包装现有的 SVG 元素