使用for循环创建一个矩形网格,可以使用for循环将alpha值增加到255
问题描述:
我创建了一个矩形网格,在向下和向右时增加不透明度。我将256个阿尔法值均分为4列(每列64个矩形)。使用for循环创建一个矩形网格,可以使用for循环将alpha值增加到255
我试图通过对每列使用for
循环来削减代码。
我已经设法创建了矩形的列,但我已经安装的fill()for
没有应用我需要的不透明度。
这里就是我竞选列1:
for (var a = 0; a < 256; a++) {
fill(155,0,0,a);
}
var y = 0;
for (var x = 0; y <= 1890; x += 210) {
for (var y = 0; y <= 1890; y += 30) {
rect(x,y,200,20)
}
}
我试着结合的填充()和矩形()循环,但我得到了同样的问题,即色标棍棒(155 ,0,0,255),而不是从0开始并上升到63(仅此列)。
我被限制在总共4 fill
行(例如每列1个填充 - 直通组合)。
有关完整代码和网格的视觉表示,https://codepen.io/anon/pen/KvdJWB
答
第一for
循环运行,和涂饰前嵌套for
循环甚至开始。你可以想想你的程序是等效的:
fill(155,0,0,0);
fill(155,0,0,1);
fill(155,0,0,2);
fill(155,0,0,3);
//...
fill(155,0,0,254);
fill(155,0,0,255);
var y = 0;
for (var x = 0; y <= 1890; x += 210) {
for (var y = 0; y <= 1890; y += 30) {
rect(x,y,200,20)
}
}
这使得很明显,你的第一个for
循环是不是真的这样做了,只有到fill()
最后一次通话真正重要的。
如果您希望每个单元格或每个行或列都是不同的颜色,那么您必须在嵌套的for
循环内的某处调用fill()
。
这正是我的想法,所以我试着移动'fill()'循环来吞噬'rect()'循环,反之亦然,但保持不变。我无法确定“填充”应该在循环中的哪个位置。 我知道'fill()'应该出现在'rect()'之前,但是过去我有点困惑。例如,这是我所吸引,但不工作:http://i.imgur.com/fveqCyM.png – noobiecderssss
你只需要你的双嵌套'for'循环,而不是一个三重嵌套'为'循环。从简单的事情开始:你可以让每个细胞变成不同的颜色吗?然后在此基础上构建。方格纸是你最好的朋友。画出一堆例子。 'x'和'y'的值是什么,你希望'a'对每个组合有什么价值?尝试找到一种模式。 –
我不知道发生了什么,但它为我点击。与你的建议。我没有用不同的颜色做任何事情,但我改变了alpha值的计算方式,而不创建“a”变量。事情是,它只用1'for'循环....不知道我是如何随机获得这个工作的。我本来就在挣扎,因为我忘记了我将它们分成4列,所以我试图创建1个嵌套的'for'循环来创建所有列,所以我的第一个'for'循环消失了。无论如何,谢谢。这是第1栏的结果http://i.imgur.com/90zsuqx.png – noobiecderssss