我如何用for循环来改变这段代码,这样我就可以用同样的函数创建更多更大的矩形?当我使用for循环时,当我指向较小的矩形时,较大的矩形也会改变颜色。我不能使它独占我所指的矩形。别这样
let rectX = 200;
let rectY = 200;
let rect1Width = 80;
let rect1Height = 80;
let rect2Width = 40;
let rect2Height = 40;
let isMouseOverRect1 = false;
let isMouseOverRect2 = false;
let rect1 = false;
let rect2 = false;
function setup() {
createCanvas(400, 400);
rectMode(CENTER);
}
function draw() {
background(200);
if (
mouseX > rectX - rect1Width / 2 &&
mouseX < rectX + rect1Width / 2 &&
mouseY > rectY - rect1Height / 2 &&
mouseY < rectY + rect1Height / 2
) {
isMouseOverRect1 = true;
rect1 = true;
} else {
isMouseOverRect1 = false;
rect1 = false;
}
if (
mouseX > rectX - rect2Width / 2 &&
mouseX < rectX + rect2Width / 2 &&
mouseY > rectY - rect2Height / 2 &&
mouseY < rectY + rect2Height / 2
) {
isMouseOverRect2 = true;
rect2 = true;
} else {
isMouseOverRect2 = false;
rect2 = false;
}
if (isMouseOverRect1 && !rect2) {
fill(0);
} else {
fill(255);
}
rect(rectX, rectY, rect1Width, rect1Height);
if (isMouseOverRect2 && rect1) {
fill(0);
} else {
fill(255);
}
rect(rectX, rectY, rect2Width, rect2Height);
}
使用for循环进行绘图,功能相同。
1条答案
按热度按时间fumotvh31#
您可以封装可重用的功能,例如:
根据您的舒适程度,有多种方法可以实现这一点。例如,你可以这样做:
[x,y,w,h]
)(或Object({x:200, y: 200, w:80, y:80}
))中你也可以选择define a class:
对于两个矩形,你可能不需要一个for循环,但是如果你选择了封装,现在会让这变得更容易。这对你自己来说将是一个有趣的挑战,特别是制定出逻辑来检查哪些框可以忽略,并考虑更改填充颜色。玩得开心点!