为啥这段代码没有在 p5.js 的画布上输出任何东西?

Posted

技术标签:

【中文标题】为啥这段代码没有在 p5.js 的画布上输出任何东西?【英文标题】:Why does this code not output anything onto the canvas in p5.js?为什么这段代码没有在 p5.js 的画布上输出任何东西? 【发布时间】:2020-07-02 14:23:12 【问题描述】:

在 p5.js 中,我试图可视化线性搜索算法。我有一个数字数组,想通过将它们绘制为向上的线来可视化它们。

当我将 forEach 循环放入 setup 函数时,什么也没有出现。如果我把它放在绘图功能中,我会看到我正在寻找的确切结果弹出半秒钟然后消失...... (程序运行时调用setup函数,每帧连续调用draw循环)(line函数从第一个x,y画一条线到第二个x,y line(x,y x,y)

代码如下:

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let buffer = 0

function setup() 
  createCanvas(400, 400);

  
  numbers.forEach((number) => 
    stroke(0);
    strokeWeight(4);
    line(buffer, height, buffer, number * 50)
    buffer += 15
  );


function draw() 
  background(255);

【问题讨论】:

setup 是 p5 执行的第一个函数,然后每帧执行绘制,并且您基本上通过将背景设置为白色来清除画布。在迭代数字之前在设置中执行后台 【参考方案1】:

想想事情发生的顺序。

你自己说的:

程序运行时调用setup函数,每帧不断调用draw loop

因此,使用您的代码,setup 函数在程序的最开始运行一次,然后draw 函数每秒被调用 60 次。您在draw 函数中所做的唯一一件事就是绘制背景,这会删除您在setup 函数中绘制的内容。尝试删除对background(255) 的调用以了解我的意思。

然后,当您将代码移入draw 函数时,我将提供以下提示:每帧buffer 变量的值是多少?您可能会使用一些console.log() 语句来回答这个问题。

【讨论】:

以上是关于为啥这段代码没有在 p5.js 的画布上输出任何东西?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这段代码运行时没有任何输出(关于 pthread)?

如何根据屏幕大小正确调整画布大小? Javascript (p5.js)

如何将 p5.js 画布保存为非常大的 PNG?

将画布复制到 p5.js 中的图形对象

为啥这段代码没有输出预期的结果?

尝试在 p5.js 中使用 createGraphics() 和眼动仪,但它不起作用