vue-let-it-snow icon indicating copy to clipboard operation
vue-let-it-snow copied to clipboard

源码种snow方法里的部分代码求大神解释

Open xyyVee opened this issue 6 years ago • 1 comments

预设了一个minDist 100是做什么用的? flake.velX 和 flake.velY 还有flake.x 和 flake.y各是什么意思呢?偏移量么? 主要就是下面这段实在是不理解,恳请大神讲一下思路指点指点就行

if (dist < minDist) {
          var force = minDist / (dist * dist)

          var xcomp = (x - x2) / dist

          var ycomp = (y - y2) / dist

          var deltaV = force / 2
          flake.velX -= deltaV * xcomp
          flake.velY -= deltaV * ycomp
        } else {
          flake.velX *= 0.98
          if (flake.velY <= flake.speed) {
            flake.velY = flake.speed
          }
          switch (this.windPower) {
            case false:
              flake.velX += Math.cos(flake.step += 0.05) * flake.stepSize
              break
            case 0:
              flake.velX += Math.cos(flake.step += 0.05) * flake.stepSize
              break
            default:
              flake.velX += 0.01 + (this.windPower / 100)
          }
        }
        var s = this.color
        var patt = /^#([\da-fA-F]{2})([\da-fA-F]{2})([\da-fA-F]{2})$/
        var matches = patt.exec(s)
        var rgb = parseInt(matches[1], 16) + ',' + parseInt(matches[2], 16) + ',' + parseInt(matches[3], 16)
        flake.y += flake.velY
        flake.x += flake.velX

xyyVee avatar Feb 11 '19 08:02 xyyVee

flake.velX 和 flake.velY 是下一个位置的偏移量, flake.x 和 flake.y 是具体的坐标, minDist 相当于一个最短要走的距离,主要是有交互的时候会用到

bob-chen avatar Feb 12 '19 07:02 bob-chen