无法引用在 setup() 中声明的变量
Can't reference variables declared in setup()
我最近尝试进入 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)
Any variable I define outside of setup() will be undefined, but that's a well known fact.
嗯,什么?这不是众所周知的事实。您可能是说您不能在设置之前使用 Processing 的函数,但这并不能阻止您在草图顶部定义变量。
如果您在 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);
}
我最近尝试进入 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)
Any variable I define outside of setup() will be undefined, but that's a well known fact.
嗯,什么?这不是众所周知的事实。您可能是说您不能在设置之前使用 Processing 的函数,但这并不能阻止您在草图顶部定义变量。
如果您在 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);
}