如何解决使用数组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次,这就是为什么颜色像疯狂一样闪烁的原因:您经常重新绘制它们。另外,您选择一种颜色,然后绘制所有正方形……如果您可以暂停闪烁的正方形,您会发现它们是相同的颜色。所以这里有两件事要解决:
-
在使用完颜色后停止
draw
循环(停止循环或确保循环的每次迭代都不会改变颜色)。 -
确保在
for
循环内更改颜色,以便每个新正方形都有其自己的颜色。
实际上,如果您仅绘制那些正方形(并在setup
方法中工作),或者在绘制正方形之后使用noLoop()
,我们实际上可以完全放弃draw()循环。或者,您可以确保每个正方形在绘制时都将始终获得相同的颜色-您已经在某种程度上这样做了,因为estado
将始终在{{1 }}循环播放,但是无论如何以后要更改正方形或颜色的数量,还是让我们手动对其进行重置。
有很多方法可以解决第二点。我喜欢在帮助器方法中隔离小的逻辑,所以我将“颜色选择”代码移到了一个函数中,可以在draw()
循环中的正确时刻调用该函数,在此您可以绘制正方形,右边更改颜色的时刻是“绘制正方形之前”。
这是修改后的代码:
for
如果您有任何疑问,我会继续帮助您。
玩得开心!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。