使用数组java更改下一次迭代的颜色

问题描述

我正在尝试使用数组来进行重复的下一次迭代以更改颜色(并且还应注意,我正在使用处理库),但似乎没有奏效,所以我尝试了移动将“如果是”插入设置,在“ for”内部,在“ draw”内部,在“ for”内部,但是颜色似乎只是闪烁,这是我想要实现的目标: 有必要使用for函数enter image description here

public void settings() {
    size(500,500);
}

int estado;
int[] cuadrados;

@Override
public void setup() {
    
    cuadrados = new int[8];

    /*
     * cuadrados[0]=(estado=0); cuadrados[1]=(estado=1); cuadrados[2]=(estado=2);
     * cuadrados[3]=(estado=3); cuadrados[4]=(estado=4); cuadrados[5]=(estado=5);
     */

    println(estado);
    println(cuadrados);
}

@Override
public void draw() {
    
    
    background(255);
    if (estado == 0) {
        fill(255,255,0);
    }
    if (estado == 1) {
        fill(0,255);
    }
    if (estado == 2) {
        fill(255,0);
    }
    if (estado == 3) {
        fill(255);
    }
    if (estado == 4) {
        fill(255);
    }
    for (int i = 0; i < 8; i++) {

        cuadrados[i] = estado;

        rect(4 + (i * 62),200,55,55);
        estado += 1;
        if (estado > 4) {
            estado = 0;
        }

    }

}

}

感谢您的帮助。

解决方法

我不确定我的回答,但是您可以尝试一下,我认为它是可行的。

while(i<8)
{   switch(estado)
   {
    case 1:
    fill(255,0);
    break;
    case 2:
    fill(0,255,0)
    break;
    default:
    draw(); or i = 1;// try using both,Either u set the value to 1 again. or you call 
                     //that function again and again 
    }
}
,

draw()循环每秒重复大约60次,这就是为什么颜色像疯狂一样闪烁的原因:您经常重新绘制它们。另外,您选择一种颜色,然后绘制所有正方形……如果您可以暂停闪烁的正方形,您会发现它们是相同的颜色。所以这里有两件事要解决:

  1. 在使用完颜色后停止draw循环(停止循环或确保循环的每次迭代都不会改变颜色)。

  2. 确保在for循环内更改颜色,以便每个新正方形都有其自己的颜色。

实际上,如果您仅绘制那些正方形(并在setup方法中工作),或者在绘制正方形之后使用noLoop(),我们实际上可以完全放弃draw()循环。或者,您可以确保每个正方形在绘制时都将始终获得相同的颜色-您已经在某种程度上这样做了,因为estado将始终在{{1 }}循环播放,但是无论如何以后要更改正方形或颜色的数量,还是让我们手动对其进行重置。

有很多方法可以解决第二点。我喜欢在帮助器方法中隔离小的逻辑,所以我将“颜色选择”代码移到了一个函数中,可以在draw()循环中的正确时刻调用该函数,在此您可以绘制正方形,右边更改颜色的时刻是“绘制正方形之前”。

这是修改后的代码:

for

如果您有任何疑问,我会继续帮助您。

玩得开心!