【问题标题】:Show a specific frame on initial load in lottie animation在 lottie 动画中显示初始加载的特定帧
【发布时间】:2020-05-08 19:26:25
【问题描述】:

我有一个乐天动画,我已将它集成到我的代码中。我想在初始加载时显示一个特定的帧,当用户悬停它时,动画应该从头开始并完成。

这就是我想在第一次加载时显示的内容 -

这是完整的动画 -

这是我的代码

let iconMenu = document.querySelector('.bodymovinanim1');
let animationMenu = bodymovin.loadAnimation({
    container: iconMenu,
    renderer: 'svg',
    loop: false,
    autoplay: false,
    path: "https://assets2.lottiefiles.com/packages/lf20_txJcSM.json",
});
animationMenu.addEventListener('DOMReady',function(){
    animationMenu.playSegments([1,200],true);
});
iconMenu.addEventListener('mouseover', (e) => {
    animationMenu.play();
});

This is my fiddle

谁能帮帮我?

【问题讨论】:

    标签: html json animation lottie bodymovin


    【解决方案1】:

    看起来你在这个小提琴中使用了一个过时的 Lottie 版本。更新后,您可能希望通过 initialSgments 选项而不是使用 playSegments。在这种情况下,您可以完全删除 DOMReady 代码块,它会按预期工作。您的动画的一个问题是圆圈本身实际上并不存在。在其余部分开始动画之前,该圆圈已完成的唯一半帧上有一个小绿点。 51.5 是你能得到的最接近的,这里是fiddle showing it

    let iconMenu = document.querySelector('.bodymovinanim1');
    let animationMenu = bodymovin.loadAnimation({
            container: iconMenu,
            renderer: 'svg',
            loop: false,
            autoplay: false,
            path: "https://assets2.lottiefiles.com/packages/lf20_txJcSM.json",
            initialSegment: [51.5, 200],
    });
    
    iconMenu.addEventListener('mouseover', (e) => {
    animationMenu.play();
    });
    

    【讨论】:

    • 谢谢兄弟..它完美无缺...但是当我悬停它时,动画从已经设置的 initalSegment 值开始。无论如何,我可以在悬停动画时从头开始播放动画......以及在动画完成后如何让它回到已经给定的 initialSegment?
    • 不确定我是否理解这里的用例。您想在页面加载时显示环,但是在悬停时,您希望环消失并从绘制环的开始播放动画,然后在动画完成后返回环,无论悬停状态如何?我的意思是有可能,但为什么呢?
    • 没错。当我悬停它时,我需要从头开始重新绘制它。我的动画就是这样。我试图让它与 goToAndPlay() 方法一起工作。但它没有用。
    猜你喜欢
    • 2022-09-24
    • 2013-12-02
    • 2020-01-25
    • 2017-12-18
    • 1970-01-01
    • 2020-07-04
    • 2012-04-12
    • 2019-01-06
    • 2020-01-10
    相关资源
    最近更新 更多