P5.js 和嵌套循环

P5.js and nested loops

我是 JavaScript 和 P5.js 库的新手,目前我正在尝试了解嵌套循环。我正在尝试迭代 x 位置和填充透明度,并且我已经使用 while 循环使其工作,但是当我尝试创建嵌套的 for循环,我来了。

这是 while 循环:

function setup() {
  createCanvas(500, 200);
}

function draw() {
  //background colour
  background(0,0,0);
  
  let x = 20;
  let alpha = 50;
  
  while (x <= width){
    fill(255,255,255,alpha);
    rect(x,70,60,60);
    alpha = alpha + 50;
    x = x + 100;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>

这是我对 for 嵌套循环的尝试:

function setup() {
  createCanvas(500, 200);
}

function draw() {
  //background colour
  background(0,0,0);  
   
  for (x = 20; x <= width; x = x + 100){
    for (alpha = 50; alpha < 255; alpha = alpha + 50){
      fill(255,255,255,alpha);
      rect(x,70,60,60);
    }  
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>

我已经花了 2 个小时尝试所有我能想到的方法来让它工作,是时候寻求帮助了。

假设我以错误的方式处理这个问题是否正确,alpha 是一个 P5 函数,显然导致上面的控制台输出? while 循环有效,但我非常想了解循环的工作原理,这对我有很大帮助。感谢您的帮助。

嵌套循环是执行此任务的错误方法。当您想要遍历二维数组(例如网格)时,您必须使用嵌套循环,但对于一维情况(例如直线或行),它是完全无用且多余的。在这种情况下,您可以在一个循环中迭代控制变量:

function setup() {
    createCanvas(500, 200);
}

function draw() {
    //background colour
    background(0,0,0);  
   
    for (let x = 20, alpha = 50; x <= width; x += 100, alpha += 50){
        fill(255, 255, 255, alpha);
        rect(x, 70, 60, 60);
    }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>

您可以使用嵌套循环迭代排列成网格的矩形的 x 和 y 坐标:

function setup() {
    createCanvas(500, 200);
}

function draw() {
    //background colour
    background(0,0,0);  
   
    let alpha = 50;
    for (let y = 20; y <= height; y += 100) {
        for (let x = 20; x <= width; x += 100) {
            fill(255, 255, 255, alpha);
            rect(x, y, 60, 60);
            alpha += 10;
        }  
    }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>