在Processing中单击时更改单元格的填充颜色

时间:2015-08-26 03:45:30

标签: arrays colors click processing

我已经设法在单击时打印单元格的坐标。

现在我正在寻找帮助和建议来使用这些数据,以便将细胞颜色更改为红色 - 除非选择的细胞是基础细胞,我希望它们保持为常数。这是我正在使用的代码:

 $(" $('body').css('overflow', 'hidden');");

编辑: 我添加了我正在寻找的功能,但我认为我没有正确存储我的基本单元数据。您仍然可以单击基本单元格,并在下方绘制活动单元格。这是新代码:

Tile[][] tileArray = new Tile[10][10];


int rows = 10;
int cols = 10;
int[] base = { 4,4, 4,5, 4,6, 4,7 };

void setup() {
  size(500, 500);

  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
      tileArray[i][j] = new Tile(i*50, j*50);
    }
  }
}

void draw() {
  for (int i=0; i<base.length; i+=2) {
    fill(0, 0, 255);
    rect(base[i]*50, base[i+1]*50, 50, 50);
  }
}

void mousePressed() {
  for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
      println (mouseX/50 +"," + mouseY/50);
    }
  }
}

class Tile {
  Tile(int x, int y) {
    fill(255);
    stroke(0);
    rect(x, y, 50, 50);
  }
}

1 个答案:

答案 0 :(得分:0)

你的瓷砖课现在没有意义。从构造函数绘制到屏幕没有任何意义。相反,将该逻辑移动到draw()类中的Tile函数。

你的Tile课程还必须跟踪其状态:它是否是基本单元格,或者它可以是任何其他类型的单元格。您可以使用枚举,int或一组布尔值来执行此操作。那部分完全取决于你。

然后在Tile.draw()函数中,您应该检查该状态以决定要绘制的颜色。从草图的draw()函数中,只需循环遍历每个Tile并告诉它自己绘制。

最后,当您点击时,只需设置您点击的Tile的状态。