我的代码的基础是,如果我用鼠标点击屏幕,矩形将改变颜色。我把矩形做成了一个叫做d的形状,我希望能够在不重绘形状的情况下改变颜色。 所以:
void setup
{
d = createShape(); // d is a PShape
d.beginShape();
fill(100);
rect(200,200,200,200);
d.endShape(CLOSE);
d.disableStyle()
}
void draw()
{
shape(d, 300, 250);
if ( mouseX >= 0 && mouseX <= 600 && mouseY >=0 && mouseY <= 600 )
{
greenC = true; //a boolean
}
}
public void mousePressed()
{
if ( greenC )
{
d.disableStyle();
d.setFill(0);
}
}
无论我做什么,setFill都不起作用,我对此感到非常困惑。
答案 0 :(得分:0)
首先,您的代码无法编译。您缺少变量声明,在()
函数名称后需要括号setup
,并且缺少分号。请尝试发布一个编译的MCVE,这样我们就可以看到发生了什么。
但是你的问题是由你的形状实际上并不包含形状造成的。您拨打rect()
的电话与您拨打createShape()
的电话完全无关。要创建形状,您需要调用d.vertex()
来为形状添加点。
请仔细阅读the reference:
PShape square; // The PShape object
void setup() {
size(100, 100);
// Creating the PShape as a square. The
// numeric arguments are similar to rect().
square = createShape(RECT, 0, 0, 50, 50);
square.setFill(color(0, 0, 255));
square.setStroke(false);
}
void draw() {
shape(square, 25, 25);
}