问题描述
我正在 Flask 服务器上运行 p5.js 草图。 我想画几个画布,所以我实例化了我的代码,就像 Daniel Schiffman 在他的 "9.11: Instance Mode (aka "namespacing") - p5.js Tutorial"-Video 中展示的那样,但是当我运行代码时,它给了我 “Uncaught ReferenceError: p5 is not defined”我实例化我的画布的那一行
var drawCanvas = new p5(firstcanvas);
当我在 p5 网络编辑器中运行代码时,它可以工作。
我的 html 中的 script 标签是这样的
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.3.1/p5.js"
integrity="sha512-a5hlZKgpC1LVAuKgVeXdP0D9Yfacj0hLtNdzx9zFMkIWRrQyO37KtIPiqArGmVuaBYu3ON6Vt0N3+G/JaLXQYQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
所以这是最新版本。任何的想法?谢谢
最小再现示例:
var firstCanvas = function(a) {
let abc;
a.setup = function() {
abc = 100;
a.createCanvas(800,600);
a.background(260);
n = a.createButton("NEW");
n.position(20,a.height + 225);
n.mousepressed(clearCanvas);
}
a.draw = function() {
a.fill(10);
a.rect(a.mouseX,a.mouseY,abc,50);
}
function clearCanvas() {
a.background(260);
}
}
var drawCanvas = new p5(firstCanvas);
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.3.1/p5.js"
integrity="sha512-a5hlZKgpC1LVAuKgVeXdP0D9Yfacj0hLtNdzx9zFMkIWRrQyO37KtIPiqArGmVuaBYu3ON6Vt0N3+G/JaLXQYQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
解决方法
当我复制该脚本标记并定义一个简单的 firstcanvas
函数时,它似乎工作正常。
function firstcanvas(p5) {
var x;
p5.setup = function() {
p5.createCanvas(400,400);
p5.background(51);
x = p5.width/2;
}
p5.draw = function() {
p5.background(51);
p5.circle(x,p5.height/2,100);
x++;
if (x - 50 >= p5.width) x = -50;
}
}
var drawCanvas = new p5(firstcanvas);
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.3.1/p5.js"
integrity="sha512-a5hlZKgpC1LVAuKgVeXdP0D9Yfacj0hLtNdzx9zFMkIWRrQyO37KtIPiqArGmVuaBYu3ON6Vt0N3+G/JaLXQYQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
我明白了。 我确实在没有在 PyCharm 中调试的情况下直接运行了 html 文件并得到了这个错误。 当我给它一条路线并通过 run.py 启动它时,它(几乎)正常工作。