收藏
回答

微信8.0.16版本拖动时图片会闪烁,怎么解决?

微信8.0.16拖动时图片会闪烁

回答关注问题邀请回答
收藏

3 个回答

  • brave
    brave
    2022-01-06

    楼主是说 图片拖拽 ?

    因为你拖拽时需要频繁setData,性能本身就不是很好。因此官方出了一个 wxs响应事件 弥补这类情况下无法预估的效果。

    2022-01-06
    有用 1
    回复
  • 卢霄霄
    卢霄霄
    2022-01-06

    图片本身尺寸很大吗

    2022-01-06
    有用
    回复 13
    • Rick
      Rick
      2022-01-06
      不大 都很小的
      2022-01-06
      回复
    • Rick
      Rick
      2022-01-06
      300*500
      2022-01-06
      回复
    • 卢霄霄
      卢霄霄
      2022-01-06回复Rick
      我也是8.0.16 方便做个代码片段吗
      2022-01-06
      回复
    • Rick
      Rick
      2022-01-06回复卢霄霄
      buttonMove: function (e) {
          let pen = e.currentTarget.dataset.pen;
          //console.log('move '+pen)
          var endPoint = e.touches[e.touches.length - 1]//获取拖动结束点
          //计算在X轴上拖动的距离和在Y轴上拖动的距离
          var translateX = endPoint.clientX - this.data.startPoint.clientX
          var translateY = endPoint.clientY - this.data.startPoint.clientY
          this.data.startPoint = endPoint//重置开始位置
          var buttonTop = this.data.top1 + translateY
          var buttonLeft = this.data.left1 + translateX
          if(pen==2){
            buttonTop = this.data.top2 + translateY
            buttonLeft = this.data.left2 + translateX
          }
          else if(pen==3){
            buttonTop = this.data.top3 + translateY
            buttonLeft = this.data.left3 + translateX
          }
          else if(pen==4){
            buttonTop = this.data.top4 + translateY
            buttonLeft = this.data.left4 + translateX
          }
          //判断是移动否超出屏幕
          if (buttonLeft+50 >= this.data.windowWidth){
            buttonLeft = this.data.windowWidth-50;
          }
          if (buttonLeft<=0){
            buttonLeft=0;
          }
          if (buttonTop<=0){
            buttonTop=0
          }
          if (buttonTop + 50 >= this.data.windowHeight){
            buttonTop = this.data.windowHeight-50;
          }
          let top = 'top'+pen;
          let left = 'left'+pen;
          console.log('move '+pen+' top='+buttonTop+' left='+buttonLeft)
          this.setData({
            [top]: buttonTop,
            [left]: buttonLeft
          })
        },
        buttonEnd: function (e) {
          let pen = e.currentTarget.dataset.pen;
          let top = 'top'+pen;
          let left = 'left'+pen;
          let topok = 'top'+pen+'ok';
          let leftok = 'left'+pen+'ok';
          let redirectTo = 'redirectTo'+pen;
          let buttonTop = 0;
          let buttonLeft = 0;
          let buttonTopOK = 0;
          let buttonLeftOK = 0;
          let offset = 40;
            buttonTop = this.data[top];
            buttonLeft = this.data[left];
            buttonTopOK = this.data[topok];
            buttonLeftOK = this.data[leftok];
          console.log('end '+pen+' top='+buttonTop+' left='+buttonLeft)
      2022-01-06
      回复
    • 卢霄霄
      卢霄霄
      发表于小程序端
      2022-01-06回复Rick

      原来是拖动图片本身啊……建议要么用movable-view做,要么用wxs处理事件

      2022-01-06
      回复
    查看更多(8)
  • 微喵网络
    微喵网络
    2022-01-06

    微信里什么地方要用到拖动图片?

    2022-01-06
    有用
    回复 6
    • Rick
      Rick
      2022-01-06
      小程序
      2022-01-06
      回复
    • 微喵网络
      微喵网络
      2022-01-07回复Rick
      那是代码的问题
      2022-01-07
      回复
    • Rick
      Rick
      2022-01-07回复微喵网络
      不是吧 有的手机就正常啊
      2022-01-07
      回复
    • Rick
      Rick
      2022-01-07回复Rick
      而且以前一直都正常的 最近才出现问题
      2022-01-07
      回复
    • Rick
      Rick
      2022-01-07回复微喵网络
      而且模拟器也正常啊
      2022-01-07
      回复
    查看更多(1)
登录 后发表内容