Java 如何根据处理过程中的鼠标位置更改RGB颜色3?
我正在Processing3中编写一个小程序,使我能够将背景更改为存储在阵列中的特定颜色RGB代码。R、G和B的每个值都存储在单独的数组中 更改鼠标水平位置会更改背景的颜色 然而,这个解决方案代码是相当重复的,并且有很多if/else语句。我想使用for()循环来简化代码并减少重复。但是,我很难在for()循环中包含鼠标位置变量。是否可以使用for()循环简化此代码,并以某种方式映射鼠标位置以访问数组项?这是我现在掌握的代码:Java 如何根据处理过程中的鼠标位置更改RGB颜色3?,java,processing,Java,Processing,我正在Processing3中编写一个小程序,使我能够将背景更改为存储在阵列中的特定颜色RGB代码。R、G和B的每个值都存储在单独的数组中 更改鼠标水平位置会更改背景的颜色 然而,这个解决方案代码是相当重复的,并且有很多if/else语句。我想使用for()循环来简化代码并减少重复。但是,我很难在for()循环中包含鼠标位置变量。是否可以使用for()循环简化此代码,并以某种方式映射鼠标位置以访问数组项?这是我现在掌握的代码: int[] r = {255,249,240,233,227}; i
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={255249240233227};
int[]g={115138157173187};
int[]b={0,18,63,94120};
无效设置(){
大小(500500);
}
作废提款(){
int x=鼠标;
如果(x>=0&&x=101&&x=201&&x=301&&x如果不同值之间的步长为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]);
}
int-mouseX=。。。;
int i=鼠标X/100;
if(i
谢谢您的回复。这是一个非常有用且干净的解决方案。我是编程新手,不知道整数除法会返回整数。我错误地认为整数除法会以某种方式返回浮点(在数学世界中,它会是浮点,但在这里它将返回值舍入为整数-整数)这是一个很好的未来技巧…再次感谢!不客气。很高兴我能提供帮助。仅供参考,整数除法并不总是适用于所有语言。它适用于Java,这就是为什么我在这里使用它,但不适用于Javascript,例如。在这些情况下,您通常需要floor()
function或Math.floor()
。每种语言都有自己的特点。
int mouseX = ...;
int i = mouseX / 100;
if(i < r.length && i < g.length && i < b.length)
{
background(r[i], g[i], b[i]);
}