2017-07-28 84 views
2

我創建了一個矩形網格,在向下和向右時增加不透明度。我將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

回答

2

第一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