返回

关于实现一个炫酷的鼠标移动特效在 p5.js中实现的方法分享

前端

大家好,这里是 CSS 兼 WebGL 魔法使——alphardex。最近开始玩起了 p5.js,发现这是一个很有意思的库。今天我们就一起来用它来实现一个炫酷的鼠标移动特效。

1. 原理介绍

这个特效的原理很简单,就是不断地创建一个新的圆形,并将它的位置和颜色设置为与鼠标的当前位置和颜色一致。当鼠标移动时,这些圆形就会在屏幕上留下一个五彩缤纷的轨迹,看起来就像一条拖尾的彗星。

2. 代码实现

2.1 创建画布

首先,我们需要创建一个 p5.js 画布。这可以通过在 HTML 文件中添加一个 <canvas> 标签来实现。然后,我们在 JavaScript 代码中使用 createCanvas() 函数来创建画布。

function setup() {
  createCanvas(windowWidth, windowHeight);
}

2.2 创建圆形

接下来,我们需要创建一个圆形。这可以通过使用 ellipse() 函数来实现。ellipse() 函数接受四个参数:圆形的 x 坐标、圆形的 y 坐标、圆形的宽度和圆形的高度。

function draw() {
  ellipse(mouseX, mouseY, 20, 20);
}

2.3 设置颜色

我们还需要设置圆形の色。这可以通过使用 fill() 函数来实现。fill() 函数接受一个颜色参数,可以是任何有效的 CSS 颜色值。

function draw() {
  fill(random(255), random(255), random(255));
  ellipse(mouseX, mouseY, 20, 20);
}

2.4 将圆形添加到数组中

为了在屏幕上留下一个轨迹,我们需要将每个圆形都添加到一个数组中。这可以通过使用 push() 函数来实现。push() 函数将一个元素添加到数组的末尾。

function draw() {
  fill(random(255), random(255), random(255));
  ellipse(mouseX, mouseY, 20, 20);
  circles.push({
    x: mouseX,
    y: mouseY,
    color: color(random(255), random(255), random(255))
  });
}

2.5 绘制圆形

最后,我们需要在屏幕上绘制这些圆形。这可以通过使用 forEach() 函数来实现。forEach() 函数遍历数组中的每个元素,并执行一个回调函数。

function draw() {
  fill(random(255), random(255), random(255));
  ellipse(mouseX, mouseY, 20, 20);
  circles.push({
    x: mouseX,
    y: mouseY,
    color: color(random(255), random(255), random(255))
  });

  circles.forEach(function(circle) {
    fill(circle.color);
    ellipse(circle.x, circle.y, 20, 20);
  });
}

3. 结语

这个特效非常适合用来制作交互式艺术作品或游戏。通过改变圆形的颜色、大小和透明度,我们可以创建出各种各样的不同的效果。大家不妨自己动手尝试一下吧!