首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bodymovin按需循环一段

Bodymovin按需循环一段
EN

Stack Overflow用户
提问于 2017-08-14 14:01:18
回答 2查看 1.6K关注 0票数 3

我有几个图标,有一个介绍动画0,20,他们在其中画和循环动画21,100当你悬停在图标上。将循环设置为true将使我的所有段循环,这不是我想要的,我只需要其中一个段循环。不管怎么说?

下面是我如何设置代码的一个示例:

代码语言:javascript
复制
var data = {
          container: el,
          renderer: 'svg',
          loop: false,
          autoplay: false,
          path: 'data.json'
        };

var anim = bodymovin.loadAnimation(data);

anim.addEventListener('DOMLoaded', function(e) {
        anim.playSegments([0,20], true); // run intro animation
});

el.addEventListener('mouseover', function(e) {
        anim.playSegments([21,100], true); // run loop animation
});

最终答案编辑:

我的实现受到了一些启发,但与正确的答案有点不同,所以我认为这是值得一提的。基本上,我把相同的动画加载到两个元素中,它们互相放在一起。这两个DOM元素通过CSS切换为默认模式和悬停模式。唯一的区别是,我操作数据对象,并将循环更改为true,以实现悬停效果!所以我发现没有必要回到我的动画师那里,让他们把动画分割成不同的文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 14:16:31

你需要把你的动画分割成2个文件,比如说介绍和悬停。这使您能够控制要循环的部分。

因此,介绍文件可以是:

代码语言:javascript
复制
var dataIntro = {
      container: el,
      renderer: 'svg',
      loop: false,
      autoplay: false,
      path: 'dataintro.json'
    };

var animIntro = bodymovin.loadAnimation(dataIntro);

animIntro.addEventListener('DOMLoaded', function(e) {
    animIntro.playSegments([0,20], true); // run intro animation
});

并对dataHover文件重复如下:

代码语言:javascript
复制
var dataHover = {
      container: el,
      renderer: 'svg',
      loop: true,
      autoplay: false,
      path: 'datahover.json'
    };

var animHover = bodymovin.loadAnimation(dataHover);

el.addEventListener('mouseover', function(e) {
    animHover.playSegments([0,79], true); // run loop animation
});
票数 3
EN

Stack Overflow用户

发布于 2018-07-04 01:59:01

我认为这是允许您分割动画的设置:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45676314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档