“完美”解决微信小程序购物车抛物动画,在连续点击时出现计算错误问题,定时器停不下来。...

最近做,微信点餐小程序,遇到添加商品时出现抛物动画,参考借鉴了这位大神的方法

https://www.cnblogs.com/greengage/p/7815842.html

但出现了一个问题,连续点击加入购物车时,抛物动画报错。如图:

我的解决方法是:

//购物车抛物动画 (时间间隔)(解决点击过于频繁时,抛物动画报错问题)
     var nowTime = new Date().getTime();
      var clickTime = e.currentTarget.dataset["ctime"];      
      if (clickTime != 'undefined' && (nowTime - clickTime < 1500)) {        
        wx.showToast({
          title: '操作过于频繁',
          icon: 'loading',
          duration: 1000
        })
      } else {
        _that.setData({
          ctime: nowTime
        })       
        _that.touchOnGoods(e);        
      }                 

 以上方法是临时上线想到的,但并不是最好的解决方法,还影响用户体验。假如用户就是要连续点击,那么能不能连续创建多个抛物小球呢?答案是可以的,其实连续创建小球,上面那位大神【链接】的代码中已经写好了。

问题分析:看上一次浏览器抛出的错误,如下

这个错误什么意思呢?根据查找,最终定位 【startAnimation】这个方法中的 【setInterval】方法,“x” of undefined  ,x未定义,指的是 bezier_points[index]['x'] 在取值时,因为 index 的值超出了范围导致在获取x的值时显示未定义。

经过改造(代码如下)哈哈,只用修改这里就好了,之前的阻断连续点击的代码可以去掉了:

 1     // this.timer = setInterval(function () {
 2     //   index--;
 3     //   that.setData({
 4     //     bus_x: bezier_points[index]['x'],
 5     //     bus_y: bezier_points[index]['y']
 6     //   })
 7     //   if (index < 1) {
 8     //     clearInterval(that.timer);
 9     //     that.setData({
10     //       hide_good_box: true
11     //     })
12     //   }
13     // }, 25);
14 
15     this.timer = setInterval(bus_set,25);
16     function bus_set(){    
17       for (let i = index-1; i > -1; i--) {      
18         that.setData({
19           bus_x: bezier_points[i]['x'],
20           bus_y: bezier_points[i]['y']
21         })
22         if (i < 1) {
23           clearInterval(that.timer);
24           that.setData({
25             hide_good_box: true
26           })
27         }
28       }
29     }

如果有更好的解决办法请留言,大家一起学习,谢谢!!

转载于:https://www.cnblogs.com/tongkaiqiang/p/9083571.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值