声明空对象数组时无法使用构造函数创建新对象
Can't create new objects using constructor when declaring empty array of objects
我正在使用对象数组编写此p5.js代码,它应该是在我按下鼠标时创建一个由 Particle() 构造函数生成的新对象,然后将其存储到数组 pts[ ].但是,在按下鼠标后,代码不知何故没有进入 for 循环。我试图初始化数组长度,但程序会卡住,我不得不强行退出它...任何人都可以帮助解决这种情况吗?非常感谢!
var pts = [];
var onPressed;
//pts.length=2;
function setup() {
createCanvas(720, 720);
smooth();
frameRate(30);
colorMode(HSB);
rectMode(CENTER);
background(255);
}
function draw() {
//draw new particle when pressed
if (onPressed) {
println("checked press");
for (var i=0;i<=pts.length;i++) {
println("entered for loop");
var newP = new Particle(mouseX, mouseY, i+pts.length, i+pts.length);
//println("newP");
pts.push(newP);
}
}
}
function mousePressed() {
onPressed = true;
println("presses");
}
function mouseReleased() {
onPressed = false;
}
function Particle(x, y, xOffset, yOffset){
println("called Particle");
this.x=x;
this.y=y;
this.xOffset=xOffset;
this.yOffset=yOffset;
}
你的 for
循环没有多大意义。您的 pts
变量一开始是空的,所以您什么时候输入这个?
for (var i=0;i<=pts.length;i++) {
事实上,你为什么要循环?您似乎只想添加一个新的 Particle
:
var newP = new Particle(mouseX, mouseY, i+pts.length, i+pts.length);
pts.push(newP);
此外,当您可以只使用现有的 mouseIsPressed
变量时,为什么要创建自己的 onPressed
变量?
我正在使用对象数组编写此p5.js代码,它应该是在我按下鼠标时创建一个由 Particle() 构造函数生成的新对象,然后将其存储到数组 pts[ ].但是,在按下鼠标后,代码不知何故没有进入 for 循环。我试图初始化数组长度,但程序会卡住,我不得不强行退出它...任何人都可以帮助解决这种情况吗?非常感谢!
var pts = [];
var onPressed;
//pts.length=2;
function setup() {
createCanvas(720, 720);
smooth();
frameRate(30);
colorMode(HSB);
rectMode(CENTER);
background(255);
}
function draw() {
//draw new particle when pressed
if (onPressed) {
println("checked press");
for (var i=0;i<=pts.length;i++) {
println("entered for loop");
var newP = new Particle(mouseX, mouseY, i+pts.length, i+pts.length);
//println("newP");
pts.push(newP);
}
}
}
function mousePressed() {
onPressed = true;
println("presses");
}
function mouseReleased() {
onPressed = false;
}
function Particle(x, y, xOffset, yOffset){
println("called Particle");
this.x=x;
this.y=y;
this.xOffset=xOffset;
this.yOffset=yOffset;
}
你的 for
循环没有多大意义。您的 pts
变量一开始是空的,所以您什么时候输入这个?
for (var i=0;i<=pts.length;i++) {
事实上,你为什么要循环?您似乎只想添加一个新的 Particle
:
var newP = new Particle(mouseX, mouseY, i+pts.length, i+pts.length);
pts.push(newP);
此外,当您可以只使用现有的 mouseIsPressed
变量时,为什么要创建自己的 onPressed
变量?