vue-let-it-snow
vue-let-it-snow copied to clipboard
源码种snow方法里的部分代码求大神解释
预设了一个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
flake.velX 和 flake.velY 是下一个位置的偏移量, flake.x 和 flake.y 是具体的坐标, minDist 相当于一个最短要走的距离,主要是有交互的时候会用到