Arrays 从它们的数组中选择颜色只会返回黑色?

Arrays 从它们的数组中选择颜色只会返回黑色?,arrays,random,colors,processing,Arrays,Random,Colors,Processing,这是我的情况。我使用的是Processing 2.0,我试图制作一个以45度角旋转的正方形网格。每一个正方形都将用从五个调色板中随机选择的颜色填充。我的问题是,;出于某种原因,当我使用COLORS[int(random(COLORS.length))]从调色板中获得颜色时,我只得到黑色!这是双重奇怪,因为黑色不是我调色板中的颜色之一!我已经测试了我的floodFill()函数,我可以确认它可以正常工作,因为使用单一颜色(而不是从阵列中提取)进行测试可以正常工作。有什么建议吗?我的代码如下: fi

这是我的情况。我使用的是Processing 2.0,我试图制作一个以45度角旋转的正方形网格。每一个正方形都将用从五个调色板中随机选择的颜色填充。我的问题是,;出于某种原因,当我使用
COLORS[int(random(COLORS.length))]
从调色板中获得颜色时,我只得到黑色!这是双重奇怪,因为黑色不是我调色板中的颜色之一!我已经测试了我的
floodFill()
函数,我可以确认它可以正常工作,因为使用单一颜色(而不是从阵列中提取)进行测试可以正常工作。有什么建议吗?我的代码如下:

final int DX = 16, DY = DX;
final color DEFAULT_BG = color(50, 50, 50);
final color[] COLORS = {
  color(#ff3333),
  color(#4fff55),
  color(#585eff),
  color(#ebff55),
  color(#FF55D5),
};

void setup() {
  size(800, 480);
  background(DEFAULT_BG);
  noSmooth();
  for (int x = 0; x < width; x += DX) {
    for (int y = 0; y < height; y += DY) {
      line(x, y, x + 16, y + 16);
      line(x + 16, y, x, y + 16);
    }
  }

  for (int x = 0; x < width; x += 4) {
    for (int y = 0; y < height; y += 4) {
      if (get(x, y) == DEFAULT_BG) {
        color f = COLORS[int(random(COLORS.length))];
        floodFill(x, y, DEFAULT_BG, color(f));
      }
    }
  }
}

void floodFill(final int x, final int y, final color from, final color to) {
  if (!(x < 0 || y < 0 || x >= width || y >= height || from == to || get(x, y) != from)) {
    set(x, y, to);
    floodFill(x, y + 1, from, to);
    floodFill(x, y - 1, from, to);
    floodFill(x + 1, y, from, to);
    floodFill(x - 1, y, from, to);
  }
}
final int DX=16,DY=DX;
最终颜色默认值=颜色(50,50,50);
最终颜色[]颜色={
颜色(#ff3333),
颜色(#4fff55),
颜色(#585eff),
颜色(#ebff55),
颜色(#FF55D5),
};
无效设置(){
尺寸(800480);
背景(默认背景);
noSmooth();
对于(int x=0;x=宽度| | y>=高度| |从==到| |获取(x,y)!=从)){
设置(x,y,至);
漫灌(x,y+1,从,到);
漫灌(x,y-1,从,到);
漫灌(x+1,y,从,到);
漫灌(x-1,y,从,到);
}
}
当我将
#rrggbb
符号替换为
0xrrggbb
时,我得到的是白色。当我用
0xrrggbbaa
替换它时,我得到的是黑白(不是灰度)

现在使用标准的
颜色(r,g,b)
表示法很好。但是,我仍然想知道是什么打破了十六进制版本,所以我将保留这个问题。

color()不接受十六进制值。它接受0-255之间的简单int值。尝试打印一个包含十六进制值的color()调用的值,你会得到一些疯狂的负值

输入color()方法的任何负值都将被解释为0,等于黑色。如果您希望看到它的影响,请在处理过程中尝试它

正如您所理解的,使用颜色(r,g,b),分别使用0-255之间的值表示r,g,b。

color()不接受十六进制值。它接受0-255之间的简单int值。尝试打印一个包含十六进制值的color()调用的值,你会得到一些疯狂的负值

输入color()方法的任何负值都将被解释为0,等于黑色。如果您希望看到它的影响,请在处理过程中尝试它


如您所知,使用颜色(r、g、b),分别使用0-255之间的值表示r、g、b。

由于第34行第86列后面缺少右括号:…from),示例代码无法工作。…哎哟。固定的。很抱歉。示例代码无法工作,因为第34行第86列之后缺少右括号:…from()…哎呀。固定的。很抱歉。