用processing制作一个鼠标点击爱心,爱心立马粒子消散
时间: 2023-10-04 16:13:46 浏览: 138
好的,以下是用 Processing 制作鼠标点击爱心,爱心立马粒子消散的代码:
```java
int num = 200; // 爱心消散的粒子数量
Particle[] particles = new Particle[num]; // 粒子数组
float heartSize = 50; // 爱心大小
boolean clicked = false; // 是否点击了鼠标
void setup() {
size(500, 500);
background(255);
noStroke();
for (int i = 0; i < num; i++) {
particles[i] = new Particle();
}
}
void draw() {
fill(255, 10); // 填充颜色
rect(0, 0, width, height); // 绘制矩形背景
if (clicked) { // 如果点击了鼠标,爱心消散
for (Particle p : particles) {
p.update(); // 更新粒子状态
p.display(); // 绘制粒子
}
} else { // 否则绘制静态爱心
fill(255, 0, 0);
stroke(255);
strokeWeight(2);
translate(width/2, height/2);
beginShape();
vertex(0, -heartSize*2);
bezierVertex(-heartSize*2, -heartSize, -heartSize, heartSize, 0, 0);
bezierVertex(heartSize, heartSize, heartSize*2, -heartSize, 0, -heartSize*2);
endShape(CLOSE);
}
}
void mouseClicked() {
if (!clicked) { // 如果没有点击过,记录点击状态
clicked = true;
for (Particle p : particles) {
p.start(); // 开始粒子消散
}
}
}
class Particle {
float x, y, rad, alpha;
float xSpeed, ySpeed, radSpeed, alphaSpeed;
int life;
Particle() {
x = random(width); // 随机位置
y = random(height);
rad = random(5, 10); // 随机大小
alpha = 255; // 不透明度
life = int(random(50, 100)); // 寿命
// 随机速度
xSpeed = random(-1, 1);
ySpeed = random(-1, 1);
radSpeed = random(-0.1, 0.1);
alphaSpeed = -5;
}
void start() {
xSpeed = random(-5, 5); // 随机速度
ySpeed = random(-5, 5);
radSpeed = random(-0.5, 0.5);
alphaSpeed = -10;
}
void update() {
x += xSpeed; // 更新位置
y += ySpeed;
rad += radSpeed; // 更新大小
alpha += alphaSpeed; // 更新透明度
life--;
}
void display() {
fill(255, alpha); // 设置颜色和透明度
pushMatrix();
translate(x, y); // 移动坐标系
rotate(radians(rad)); // 旋转坐标系
beginShape();
vertex(0, -rad*2); // 绘制爱心
bezierVertex(-rad*2, -rad, -rad, rad, 0, 0);
bezierVertex(rad, rad, rad*2, -rad, 0, -rad*2);
endShape(CLOSE);
popMatrix();
}
}
```
你可以将上述代码保存为一个名为 `heart.pde` 的文件,然后使用 Processing 软件打开并运行即可看到效果。当你点击鼠标后,爱心会立即消散成粒子。
阅读全文