收藏
回答

小程序实现购物车飞入动画效果遇到问题?

我的wxml 代码如下

<view hidden="{{hideGoodBox}}" style="position: absolute; top: {{top}}px; left: {{left}}px;class="good_boxanimation="{{animationData}}"></view>


js 代码如下:

   animationData: {},

    hideGoodBox: true,

    dianjix: 0,

    dianjiy: 0,

    zhongdianx: 40,

    zhongdiany: 625


    shangpinshow: function (e) {

    let that = this

    //动画完最终位置

    that.setData({

      dianjix: e.touches[0].clientX,

      dianjiy: e.touches[0].clientY,

      top: e.touches[0].clientY,

      left: e.touches[0].clientX,

      zhongdianx: 40,

      zhongdiany: 625,

      hideGoodBox: false,

      animationData: {},

    })

    console.log(that.data.dianjix)

    console.log(that.data.dianjiy)

    console.log(that.data.left)

    console.log(that.data.top)

    console.log(that.data.zhongdianx)

    console.log(that.data.zhongdiany)

    console.log(that.data.animationData)

    that.startAnimation();

  },

  // 开始动画

  startAnimation: function () {

    let that = this

    const animation = wx.createAnimation({

      duration: 2000, // 动画持续时间

      timingFunction: 'cubic-bezier(.13,.9,.59,2.04)'

    });


    // this.setData({

    //   animationData: animation.translate(this.busPos.x - this.data.left, this.busPos.y - this.data.top).step()

    // });

    animation.translate(that.data.zhongdianx - that.data.dianjix, that.data.zhongdiany - that.data.dianjiy).step()

    that.setData({

      animationData: animation.export()

    });

    console.log(that.data.animationData)

    setTimeout(() => {

      that.setData({

        animationData: {},

        hideGoodBox: true,

      });

    }, 2000); // 动画持续时间加上延迟时间

  },


css 代码

.good_box {

  width: 35rpx;

  height: 35rpx;

  position: absolute;

  border-radius: 50%;

  z-index: 99;

  background-color: #FF6565;

  /* 初始位置,可以通过 JavaScript 动态设置 */

}

我的问题是,第一次点击的时候根据timingFunction: 'cubic-bezier(.13,.9,.59,2.04)'贝塞尔曲线参数来出现动画效果,但是第二次点击时动画就乱了,我在哪儿没写好,各位大佬指点指点,谢谢

最后一次编辑于  10-16
回答关注问题邀请回答
收藏

2 个回答

  • YoKo
    YoKo
    10-16

    https://developers.weixin.qq.com/s/Kh7tgfmo7guu

    10-16
    有用
    回复 5
    • Cherish every day
      Cherish every day
      10-16
      谢谢,这个方法不是很好,我尝试过了手机上出现卡顿,效果不好,所以我用了 wx.createAnimation,但是第二次点击的时候看不到动画效果了
      10-16
      回复
    • YoKo
      YoKo
      10-16回复Cherish every day
      你看一下   top 跟left    生效嘛
      10-16
      回复
    • Cherish every day
      Cherish every day
      10-16回复YoKo
      生效呢,第一次点击页面的时候动画效果正常,但是第二次开始就乱了
      10-16
      回复
    • YoKo
      YoKo
      10-16回复Cherish every day
      你别隐藏你看你在点击时候 top  left  的值根本没赋值上去 ,所以他效果只会在第一次点击过后动效的原地执行
      10-16
      回复
    • Cherish every day
      Cherish every day
      10-16回复YoKo
      好像是top 跟left 生效的问题,我再排查一下
      10-16
      回复
  • Cherish every day
    Cherish every day
    10-16

    文心一言,kimi,chatgpt3.5 都没解决问题

    10-16
    有用
    回复
登录 后发表内容