鼠标移动时粒子跟随光标 (Javascript - Canvas)

Particles follow cursor on mousemove (Javascript - Canvas)

我正在尝试创建一个简单的动画,其中一些粒子动画会跟随光标,但我遇到了问题。

我创建了一个 fiddle 来复制这个问题:Example on JSFiddle

现在我的粒子出现了,但是当你将光标移动到该部分时,它们突然消失了。我知道我的错误来自我的 mousemove() 函数,但我不知道它有什么问题..

这是我的 mousemove 函数:

function mouseMove(e) {
        var posx = posy = 0;
        if (e.pageX || e.pageY) {
            posx = e.pageX;
            posy = e.pageY;
        }
        else if (e.clientX || e.clientY)    {
            posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
            posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
        }
        target.x = posx;
        target.y = posy;
    }

您的鼠标坐标 X, Y 是相对于网页的 top/left 角,可能是 mousemove 事件附加到文档,而不是 canvas。将 mosemove 事件附加到 canvas

document.getElementById('services-canvas').addEventListener('mousemove', mouseMove);

并使用元素偏移量:

target.x = e.offsetX;
target.y = e.offsetY;

如果你想让鼠标在图形的中心,那么使用e.offsetY-一些东西是图形高度的一半

所以从我在 .但是,它们的 y 位置似乎要低得多,您 expect.You 需要这样做才能使其正常工作:

target.y = posy -300;

我试过了,只要稍加改动就可以了。希望这有帮助 :D