选择从阵列#Processing中取消选择多个项目

时间:2017-10-27 23:17:00

标签: javascript arrays for-loop processing

现在发生了什么?

此时我可以点击一个块,接收它的号码,然后将号码存储到int[] vakkenSelected。存储在int[] vakkenSelected中的最大数量是3.这意味着我只能选择3个块(selCount < 3)。每次按下一个块时,selCount增加1. selCount用于将号码存储在int[] vakkenSelected的下一个键中。

我想要发生什么?

  • 同一个区块不能再被选中一次。
  • 如果再次按下已选择的块(存储在 int[] vakkenSelected)必须取消选中(从int[] vakkenSelected移除或更改为&#39; -1&#39;)。

感谢。

外部范围:

int selCount = 0;
int[] vakkenSelected = new int[3];

内部范围:

void mousePressed() {
  int x = mouseX;
  int y = mouseY;
  for(int i = 0; i < posities.length; i++) {
    int num = posities[i][0]; 
    int posX = posities[i][1]; 
    int posY = posities[i][2]; 
    if(x > posX && x < posX+vakBreedte && y > posY && y < posY+vakHoogte && selCount < 3) {  
      vakkenSelected[selCount] = num; 
      selCount++;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

Stack Overflow实际上并不是针对一般的“我该怎么做”这类问题而设计的。这是针对具体的“我试过X,期待Y,但得到Z而不是”类型的问题。但我会尽力帮助。

听起来你已经知道你需要做什么了:

  

同一个区块不能再被选择一次。

     

如果再次按下已经选中的块(存储在int [] vakkenSelected中),则必须取消选择它(从int [] vakkenSelected中删除或更改为'-1')。

我建议您通过this process将需求转换为代码。

听起来你可以使用2D布尔数组,只检查该块是否已经激活。如果是,请将其切换为非活动状态,然后在选定列表中添加或删除它。