我最近试图进入p5.js,在我正在开展的第一个项目中,我遇到了一个完全不正常的问题,无论出于何种原因,我无法在网上找到任何其他问题。
我在setup()之外定义的任何变量都是未定义的,但这是一个众所周知的事实。问题是我在setup()中定义的任何变量也将是未定义的,这意味着我根本不能使用任何变量。
以下是代码:
function setup() {
const canvasRatio = 0.975;
createCanvas(int(windowWidth*canvasRatio), int(windowHeight*canvasRatio));
fill(0);
strokeWeight(2);
var plyMov = createVector(0,0,0);
var plyPos = createVector(0,0,0);
const plySpd = 1;
const plyEnable = 0;
}
function draw() {
background(0);
drawPly();
}
function drawPly(){
plyPos=createVector(plyPos.x+plyMov.x,plyPos.y+plyMov.y,0)
plyMov=createVector(0,0,0);
stroke(255,0,0);
ellipse(int(width/2),int(height/2),80, 80);
}
以下是vscode中chrome的追溯:
ReferenceError: plyPos is not defined
at drawPly (https://magicgonads.github.io/p5test/sketch.js:18:23)
at draw (https://magicgonads.github.io/p5test/sketch.js:14:3)
at p5.redraw (https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.8/p5.js:16560:7)
at p5.<anonymous> (https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.8/p5.js:11593:12)
at p5.<anonymous> (https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.8/p5.js:11489:12)
at new p5 (https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.8/p5.js:11769:12)
at _globalInit (https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.8/p5.js:8048:7)
答案 0 :(得分:1)
嗯,什么?这不是一个众所周知的事实。您可能意味着在设置之前不能使用Processing的功能,但这并不能阻止您在草图顶部定义变量。我在setup()之外定义的任何变量都是未定义的,但这是一个众所周知的事实。
如果您在setup()
中定义变量,则仅在setup()
中可用。任何函数中定义的任何变量都是如此。
如果要在多个函数中使用变量,则应在草图级别定义它。你仍然可以在setup()
函数中初始化(给它一个值):
var plyPos;
var plyMov;
function setup() {
const canvasRatio = 0.975;
createCanvas(int(windowWidth*canvasRatio), int(windowHeight*canvasRatio));
fill(0);
strokeWeight(2);
plyMov = createVector(0,0,0);
plyPos = createVector(0,0,0);
}
function draw() {
background(0);
drawPly();
}
function drawPly(){
plyPos=createVector(plyPos.x+plyMov.x,plyPos.y+plyMov.y,0)
plyMov=createVector(0,0,0);
stroke(255,0,0);
ellipse(int(width/2),int(height/2),80, 80);
}