java - 如何根据 Processing3 中的鼠标位置更改 RGB 颜色?
问题描述
我正在 Processing3 中编写一个小程序,使我能够将背景更改为存储在数组中的特定颜色 RGB 代码。R、G 和 B 的每个值都存储在一个单独的数组中。
改变鼠标的水平位置会改变背景的颜色。
然而,这个解决方案代码非常重复,并且有很多 if/else 语句。我想使用 for() 循环来简化代码并减少重复性。但是,我正在努力将鼠标位置变量包含在 for() 循环中。是否有使用 for() 循环简化此代码并以某种方式映射鼠标位置以访问数组项?这是我现在拥有的代码:
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]);
}
}
但是,我不知道如何以某种方式更改此代码,即背景颜色会根据鼠标水平位置而改变,如第一个示例所示。
感谢您的回复和帮助!
解决方案
如果您的不同值之间的步长为 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]);
}
推荐阅读
- mysql - 使用参数对全文查询进行续集
- python - 将文本文件从字符串转换为列表
- python-3.x - 在 python 中使用带有 Apache Beam 或 Apache Flink 的草图
- node.js - 如何在命令中获取第二次提及的用户 ID
- android - Android API v28,KeyEvent 82 没有响应?
- php - PHP 会话未传递到具有域屏蔽的页面
- css - CSS中的Fortawesome reactjs图标颜色
- laravel - 如何使用 laravel-medialibrary 将媒体添加到另一个数据库
- r - 忽略 Plotly R 条形图中颜色变量的缺失级别
- javascript - select and compare x or y from a svg rect in jquery