p5.j​​s多个弹跳球

时间:2018-01-06 17:48:24

标签: p5.js

所以我有一个文件,里面有一个描述球的类。一个主文件调用它们和它们到数组。我想做的就是前后反弹球,我可以设法用1个球做到这一点,但随后我再加上它们弹跳在一起(最接近边缘反弹所有这些)我想要的只是制作他们单独弹跳。 (球类和主要代码在不同的文件中)。

// ball class ***********
let speed = 5;
class Ball {
  constructor() {
    this.x = mouseX;
    this.y = mouseY;
    this.r = 30;
    this.col = color(123, 125, 255, 50);
  }
  show() {
    stroke(255);
    fill(this.col);
    ellipse(this.x, this.y, this.r * 2);
  }
  move() {
    if (this.y > height - this.r || this.y < 0 + this.r) {
      speed = speed * -1;
    }
    this.y = this.y + speed;
  }
}

//main code***********************
var balls = [];

function setup() {
  createCanvas(600, 400);
  for (var i = 0; i < balls.length; i++) {
    balls[i] = new Ball;
  }
}

function draw() {
  background(0);
  for (var i = 0; i < balls.length; i++) {
    balls[i].show();
    balls[i].move();
  }
}

function mousePressed() {
  for (var i = 0; i < 1; i++) {
    balls.push(new Ball);
  }
}

1 个答案:

答案 0 :(得分:0)

您已在speed课程之外宣布Ball,这意味着它在所有Ball个实例之间共享。

将其移至Ball课程内,与xyrcol完全相同。< / p>

另请注意,构造函数后应该有()个括号。所以new Ball()代替new Ball

哦,还有一件事,setup()中的循环没有做任何事情,因为此时你的balls数组有length 0