Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与另一个对象相交时调用操作的循环类的问题_Javascript_Loops_Class_Intersection - Fatal编程技术网

Javascript 与另一个对象相交时调用操作的循环类的问题

Javascript 与另一个对象相交时调用操作的循环类的问题,javascript,loops,class,intersection,Javascript,Loops,Class,Intersection,对不起,标题不好 我有一些圆圈,当与鼠标拖动的对象相交时,应该触发一个函数来改变背景颜色。 我想让这些圆(称为球)循环,因为我想有许多相同的圆。因此,我创建了一个类,稍后将其循环。这个对象(称为player)也来自同一个类,我已经设置了x和y位置来跟随鼠标 我的问题是,我不能让所有的球产卵或让它们在相交时都改变背景。我猜它与循环函数有关,但我不知道如何修复它 以下是我当前的代码: var balls = []; function setup() { createCanvas(400, 40

对不起,标题不好

我有一些圆圈,当与鼠标拖动的对象相交时,应该触发一个函数来改变背景颜色。 我想让这些圆(称为球)循环,因为我想有许多相同的圆。因此,我创建了一个类,稍后将其循环。这个对象(称为player)也来自同一个类,我已经设置了x和y位置来跟随鼠标

我的问题是,我不能让所有的球产卵或让它们在相交时都改变背景。我猜它与循环函数有关,但我不知道如何修复它

以下是我当前的代码:

var balls = [];

function setup() {
  createCanvas(400, 400);
  for (var i = 0; i < 5; i++) {
    balls[i] = new ball(random(30, 370), random(30, 370), random(30));
  }
  player = new ball(100, 200, 25);

}

function draw() {
  background(220);

  for (var i = 0; i < 5; i++) {
    if (balls[i].inter(player)) {
      background(200, 0, 0);
    } else {
      background(255, 255, 255);
    }
    balls[i].show();

  }

  player.show();
  player.x = mouseX;
  player.y = mouseY;
}

class ball {
  constructor(x, y, r) {
    this.x = x;
    this.y = y;
    this.r = r;
  }

  show() {
    noFill();
    circle(this.x, this.y, this.r * 2);
  }

  inter(other) {
    var d = dist(this.x, this.y, other.x, other.y);
    if (d < this.r + other.r) {
      return true;
    }
    return false;
  }
}
var-balls=[];
函数设置(){
createCanvas(400400);
对于(变量i=0;i<5;i++){
球[i]=新球(随机(30370)、随机(30370)、随机(30));
}
球员=新球(10020025);
}
函数绘图(){
背景(220);
对于(变量i=0;i<5;i++){
如果(球[i]。国际米兰(球员)){
背景(200,0,0);
}否则{
背景(255、255、255);
}
球[i].show();
}
player.show();
player.x=mouseX;
player.y=mouseY;
}
班级舞会{
构造函数(x,y,r){
这个.x=x;
这个。y=y;
这个。r=r;
}
show(){
noFill();
圆(这个.x,这个.y,这个.r*2);
}
内部(其他){
var d=距离(this.x,this.y,other.x,other.y);
如果(d
编辑: 解决了! 问题是if语句中的背景位于其他气泡的顶部,因此它们没有出现

新守则:

 for (var i = 0; i < balls.length; i++) {

     if (balls[i].inter(player)) {
      background(200, 0, 0);

    } 


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

for(变量i=0;i
什么时候调用draw()函数?(以及完整性的setup()函数)。。。那么基本上你的绘制循环在哪里?我不确定我是否理解你,但我有绘制和设置功能