setFill处理在Java中不起作用

时间:2018-04-27 03:15:05

标签: java processing

我的代码的基础是,如果我用鼠标点击屏幕,矩形将改变颜色。我把矩形做成了一个叫做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都不起作用,我对此感到非常困惑。

1 个答案:

答案 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);
}