首页 > 解决方案 > setFill 处理在 Java 中不起作用

问题描述

我的代码的基础是,如果我用鼠标单击屏幕,矩形会改变颜色。我将矩形制作为一个名为 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 无论我做什么都不起作用,我很困惑为什么。

标签: javaprocessing

解决方案


首先,您的代码无法编译。您缺少变量声明,函数名称()后需要括号setup,并且缺少分号。请尝试发布一个可以编译的MCVE,这样我们就可以实际看到发生了什么。

但是您的问题是由于您的形状实际上并不包含形状而引起的。您的呼叫rect()与您的呼叫完全无关createShape()。要创建形状,您需要调用d.vertex()向形状添加点。

请通读参考

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

推荐阅读