如何改变rgb颜色取决于鼠标位置在处理3?

drkbr07n  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(367)

我在processing3中编写了一个小程序,可以将背景更改为存储在数组中的特定颜色rgb代码。r、g和b的每个值都存储在一个单独的数组中。
改变鼠标水平位置会改变背景的颜色。
然而,这个解决方案代码是相当重复的,并且有很多if/else语句。我想使用for()循环来简化代码并减少重复性。但是,我很难在for()循环中包含mouse position变量。是否可以使用for()循环简化此代码,并以某种方式Map鼠标位置以访问数组项?这是我现在的代码:

int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187}; 
int[] b = {0,18,63,94,120};

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

void draw() {
    int x = mouseX;

    if(x >= 0 && x <=100) {
        background(r[0], g[0], b[0]);
    }

    else if (x >= 101 && x <= 200){ 
        background(r[1], g[1], b[1]);
    }

    else if (x >= 201 && x <= 300){ 
        background(r[2], g[2], b[2]);
    } 
    else if (x >= 301 && x <= 400){ 
        background(r[3], g[3], b[3]);
    }  
    else {
        background(r[4], g[4], b[4]);
    }
}

我希望将代码简化为以下内容:

int[] r = {255,249,240,233,227};
 int[] g = {115,138,157,173,187}; 
 int[] b = {0,18,63,94,120};

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

 void draw() {

    for(int i=0; i<r.length; i++) {
        background(r[i],g[i],b[i]);
    } 
 }

但是,我不知道如何改变这个代码,背景颜色会随着鼠标水平位置的变化而变化,如第一个示例所示。
感谢您的回复和帮助!

0dxa2lsx

0dxa2lsx1#

如果不同值之间的步长为100,则可以将输入x值除以100。整数除法将处理其余部分。
if语句只是为了确保它保持在数组的范围内。

int mouseX = ...;
int i = mouseX / 100;

if(i < r.length && i < g.length && i < b.length)
{
  background(r[i], g[i], b[i]);
}

相关问题