所以我有一个文件,里面有一个描述球的类。一个主文件调用它们和它们到数组。我想做的就是前后反弹球,我可以设法用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);
}
}
答案 0 :(得分:0)
您已在speed
课程之外宣布Ball
,这意味着它在所有Ball
个实例之间共享。
将其移至Ball
课程内,与x
,y
,r
和col
完全相同。< / p>
另请注意,构造函数后应该有()
个括号。所以new Ball()
代替new Ball
。
哦,还有一件事,setup()
中的循环没有做任何事情,因为此时你的balls
数组有length
0
。