创建简单 p5.js canvas

Creating simple p5.js canvas

我正在尝试创建 p5.js 的最基本示例:

$(document).ready(function(){
  function setup() {
    createCanvas(500, 500);
    background(200);
  }
});

这行不通。 Canvas 根本没有创建,控制台也没有错误。

但这个解决方案有效:

$(document).ready(function(){
  var sketch = function(p) {
    p.setup = function () {
      p.createCanvas(640, 480);
      p.background(200);
    };
  };
  new p5(sketch);
});

我在这里看到了:

但是,第一个示例是推荐的方式。为什么它不起作用?我怎样才能在工作中得到它? (本人JS水平低)谢谢

您应该自己调用setup()函数。 P5.js 图书馆为您调用它。自己调用它会短路 P5.js 所做的所有很酷的事情,这就是为什么你会收到 "createCanvas is not defined" 错误。

基本上,默认情况下(又名全局模式),P5.js 查找顶级函数,如 setup()draw(),它会在库加载后自动为您调用.这就是为什么您的第一个示例不起作用:setup() 函数被隐藏在您传递给 JQuery 的 ready() 函数的匿名函数中。

换句话说,您不想使用onload()或JQuery的ready()函数和P5.js .您想让 P5.js 在加载库时自动调用这些函数。

这里有一个简单的示例,其中包含所需的 HTML,可以让您更好地了解正在发生的事情:

<!DOCTYPE html>
<html>
    <head>
        <title>P5.js Example</title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.14/p5.js"></script>
        <script>
            function setup(){
                createCanvas(500, 500);
                background(64);
            }

            function draw(){
                fill(255);
                ellipse(mouseX, mouseY, 20, 20);
            }
        </script>
    </head>
    <body>
    </body>
</html>

此代码定义顶级 setup()draw() 函数。当 P5.js 库加载时,它会自动调用这些函数。

如果您尝试自己调用 setup(),您将在加载 P5.js 之前调用,这就是未定义 createCanvas() 函数的原因。

您的第二个示例使用 实例模式 ,它将 setup()draw() 函数放在 P5.js 用于调用的对象中职能。有关详细信息,请参阅 here。但即使使用实例模式,您可能仍然不需要使用 onload() 或 JQuery 的 ready() 函数。

无耻的自我推销:我已经写了一篇关于 P5.js 如何工作的教程可用 here