在声明空对象数组

时间:2016-10-05 21:23:24

标签: javascript arrays object constructor p5.js

我正在使用对象数组编写这个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;
}

1 个答案:

答案 0 :(得分:1)

你的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);

另外,为什么在可以使用现有的onPressed变量时创建自己的mouseIsPressed变量?