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

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

    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     }

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

  • 相关阅读:
    数据库中的索引结构是什么?
    什么情况下适合建立索引?
    python requests https 访问出错
    Centos下 自动化配置SSH免密码登陆
    expect 批量增加用户及配置密码
    Shell 处理文件名中包含空格的文件
    Linux sort 命令
    ictclas bug修复
    [转]hadoop2.x常用端口
    在服务器上运行Jar包
  • 原文地址:https://www.cnblogs.com/tongkaiqiang/p/9083571.html
Copyright © 2011-2022 走看看