处理类油漆程序中的颜色系统
Color System in Processing Paint-like Program
我正在构建一个类似绘画的程序在处理中。我希望能够调整笔颜色的 r、g 和 b 值。我所做的是使用 'r' 键来允许用户更改 r。点击 'r' 后,他们使用“+”和“-”键进行调整。然后你点击 'd',它就结束了。 '+' 和 '-' 已经用于笔号,所以我不得不这样做。但是当我 运行 代码并点击 r 它冻结并停止响应。有谁知道哪里出了问题。
这是代码中有问题的部分:
if(key == 'r'){ // Activates if 'r' is pressed
actr = true; // Sets actr = to true
while (actr = true) { // Goes until actr is false
if (key == '=') { // Activates is '=' is pressed
r = r ++; // Increases r by one
}
if (key == '-'){ // Activates if '-' is pressed
r = r --; // Decreases r by one
}
if (key == 'd') { // Activates if 'd' is pressed
actr = false; // Sets actr = to false
}
}
}
你遇到了一些问题。首先,看这一行:
while (actr = true) { // Goes until actr is false
您不是在此处检查相等性,而是将 true
的值分配给 actr
变量,该变量的计算结果也将是 true
。换句话说,那永远不会是假的。相反,您应该使用:
while (actr == true) {
甚至更好:
while (actr) {
但是,即使您修复了该问题,您的 while 循环仍将永远不会退出。这是因为您 正忙着等待 并阻止程序继续进行。 这将阻止 Processing 更改 key
变量。
与其忙着等待,只需跟踪您所处的模式,这决定了 + 和 - 键的作用。您可以使用一系列布尔值:
boolean size = true;
boolean red = false;
boolean green = false;
boolean blue = false;
void keyPressed(){
if(key == 'r'){ // Activates if 'r' is pressed
if (key == '=') {
if(size){
x++;
}
else if(red){
r++;
}
}
else if (key == '-'){
if(size){
x++;
}
else if(red){
r++;
}
}
if (key == 'd') { // Activates if 'd' is pressed
size = true;
red = false;
blue = false;
green = false;
}
else if(key == 'r'){
size = false;
red = true;
blue = false;
green = false;
}
}
}
这只是一种方法,我没有包含所有代码,但这应该比您的忙碌等待更好。
我正在构建一个类似绘画的程序在处理中。我希望能够调整笔颜色的 r、g 和 b 值。我所做的是使用 'r' 键来允许用户更改 r。点击 'r' 后,他们使用“+”和“-”键进行调整。然后你点击 'd',它就结束了。 '+' 和 '-' 已经用于笔号,所以我不得不这样做。但是当我 运行 代码并点击 r 它冻结并停止响应。有谁知道哪里出了问题。
这是代码中有问题的部分:
if(key == 'r'){ // Activates if 'r' is pressed
actr = true; // Sets actr = to true
while (actr = true) { // Goes until actr is false
if (key == '=') { // Activates is '=' is pressed
r = r ++; // Increases r by one
}
if (key == '-'){ // Activates if '-' is pressed
r = r --; // Decreases r by one
}
if (key == 'd') { // Activates if 'd' is pressed
actr = false; // Sets actr = to false
}
}
}
你遇到了一些问题。首先,看这一行:
while (actr = true) { // Goes until actr is false
您不是在此处检查相等性,而是将 true
的值分配给 actr
变量,该变量的计算结果也将是 true
。换句话说,那永远不会是假的。相反,您应该使用:
while (actr == true) {
甚至更好:
while (actr) {
但是,即使您修复了该问题,您的 while 循环仍将永远不会退出。这是因为您 正忙着等待 并阻止程序继续进行。 这将阻止 Processing 更改 key
变量。
与其忙着等待,只需跟踪您所处的模式,这决定了 + 和 - 键的作用。您可以使用一系列布尔值:
boolean size = true;
boolean red = false;
boolean green = false;
boolean blue = false;
void keyPressed(){
if(key == 'r'){ // Activates if 'r' is pressed
if (key == '=') {
if(size){
x++;
}
else if(red){
r++;
}
}
else if (key == '-'){
if(size){
x++;
}
else if(red){
r++;
}
}
if (key == 'd') { // Activates if 'd' is pressed
size = true;
red = false;
blue = false;
green = false;
}
else if(key == 'r'){
size = false;
red = true;
blue = false;
green = false;
}
}
}
这只是一种方法,我没有包含所有代码,但这应该比您的忙碌等待更好。