收藏
回答

小程序中使用lottie动画为什么会失真?

https://cdn.kaishuhezi.com/kstory/activity_flow/video/70fde28f-8433-449c-bce5-ecc9a5d328b9.mov

<Canvas id='c1' type='2d' style={{width: '1112px', height: '1112px'}} />


Taro.createSelectorQuery().selectAll('#c1').node((res) => {
    const canvas = res[0].node;
    const context = canvas.getContext('2d');

    lottie.setup(canvas);
    this.ani = lottie.loadAnimation({
        loop: true,
        autoplay: true,
        animationData: data,
        rendererSettings: {
            context,
        },
    })
}).exec()
回答关注问题邀请回答
收藏

4 个回答

  • Seven
    Seven
    2021-08-06

    我做一个好人,解决方案:

    const width = res[0].width

        const height = res[0].height

        const canvas = res[0].node

        const ctx = canvas.getContext('2d')

        const dpr = wx.getSystemInfoSync().pixelRatio

        canvas.width = width * dpr

        canvas.height = height * dpr

        ctx.scale(dpr, dpr)

    需要把像素比率计算进去,完美解决

    2021-08-06
    有用
    回复 2
    • 没有没,有
      没有没,有
      2021-12-20
      大神牛皮
      2021-12-20
      回复
    • 随意
      随意
      2022-11-15
      好人一生平安
      2022-11-15
      回复
  • 李隆熙
    李隆熙
    2021-03-24

    @ 社区技术运营专员-娇华 可以回复一下一楼的问题吗,在我的这也存在失真,width改成600 height300 就好了

    2021-03-24
    有用
    回复
  • 鲁鲁
    鲁鲁
    2020-05-20

    官方文档用真机调试失败。模拟器是好的 。https://developers.weixin.qq.com/s/2TYvm9mJ75bF

    2020-05-20
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-03-19

    请提供能复现问题的简单代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2020-03-19
    有用
    回复 5
    • MrDing
      MrDing
      2020-03-20
      https://developers.weixin.qq.com/s/2TYvm9mJ75bF 官方提供的代码片段就失真啊
      2020-03-20
      回复
    • MrDing
      MrDing
      2020-03-20
      图片中的代码就是官方的代码片段 js获取到节点后的widht、height由300改到了600
      js中获取节点后设置宽高是标签样式的2倍左右 看起来才不失真 
      是因为绘制的尺寸大,显示的小,被缩放了才清晰的吗?具体什么原理,应该怎样设置?盼复
      2020-03-20
      回复
    • 疯狂的小辣椒
      疯狂的小辣椒
      2020-03-20回复MrDing
      测试没有看到明显失真表现,预期表现,当前问题表现都提供下截图看看,另外,出现问题的手机扫下面的小程序码,提供下扫码结果截图
      2020-03-20
      回复
    • MrDing
      MrDing
      2020-03-20回复疯狂的小辣椒
      图1是官方的代码片段
      图2是把官方的代码片段中js获取到的节点width、height由300改成了600
      图3是官方使用的动画json在web的展示
      图4是图3demo的代码
      图5是前面测试使用的手机信息
      不过我觉得跟手机没关系哈,在开发者工具和其他测试机上也都能复现这个问题
      2020-03-20
      回复
    • MrDing
      MrDing
      2020-03-21回复疯狂的小辣椒
      还有个问题 lottie动画怎么销毁呢?是不是canvas标签移除了 实例出的动画也就跟着销毁了
      2020-03-21
      回复
登录 后发表内容
问题标签