首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >P5.js和嵌套循环

P5.js和嵌套循环
EN

Stack Overflow用户
提问于 2020-07-25 05:42:10
回答 1查看 649关注 0票数 1

我对JavaScript和P5.js库非常陌生,目前我正试图在嵌套循环中找到我的头绪。我试图同时迭代x位置和填充透明性,并且我已经使用了while循环,但是当我试图创建一个嵌套的for循环时,我会取消它。

下面是while循环:

代码语言:javascript
复制
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;
  }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>

下面是我尝试的for嵌套循环:

代码语言:javascript
复制
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);
    }  
  }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>

我已经花了两个小时去尝试我所能想到的一切来让它起作用,是时候得到一些帮助了。

我是否正确地假设我这样做是错误的,alpha是一个P5函数,并且显然导致了上面的控制台输出?while循环可以工作,但是我非常努力地理解循环是如何工作的,这将对我有很大的帮助。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-25 06:22:51

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

代码语言:javascript
复制
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);
    }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>

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

代码语言:javascript
复制
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;
        }  
    }
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63084811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档