使用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()

+0

这正是我的想法,所以我试着移动'fill()'循环来吞噬'rect()'循环,反之亦然,但保持不变。我无法确定“填充”应该在循环中的哪个位置。 我知道'fill()'应该出现在'rect()'之前,但是过去我有点困惑。例如,这是我所吸引,但不工作:http://i.imgur.com/fveqCyM.png – noobiecderssss

+0

你只需要你的双嵌套'for'循环,而不是一个三重嵌套'为'循环。从简单的事情开始:你可以让每个细胞变成不同的颜色吗?然后在此基础上构建。方格纸是你最好的朋友。画出一堆例子。 'x'和'y'的值是什么,你希望'a'对每个组合有什么价值?尝试找到一种模式。 –

+0

我不知道发生了什么,但它为我点击。与你的建议。我没有用不同的颜色做任何事情,但我改变了alpha值的计算方式,而不创建“a”变量。事情是,它只用1'for'循环....不知道我是如何随机获得这个工作的。我本来就在挣扎,因为我忘记了我将它们分成4列,所以我试图创建1个嵌套的'for'循环来创建所有列,所以我的第一个'for'循环消失了。无论如何,谢谢。这是第1栏的结果http://i.imgur.com/90zsuqx.png – noobiecderssss