构造函数未定义[处理]

时间:2016-09-15 15:22:28

标签: java constructor processing

我在ArrayList / Particle系统上做了一个非常基础的教程。我一直得到一个"构造函数是未定义的错误"我无法弄清楚原因。谷歌搜索提出了许多更复杂的问题/答案。我错过了什么?这是去年的变化了吗?

ArrayList<Particle> plist;

void setup(){
    size(640, 360);
    plist = new ArrayList<Particle>();
    println(plist);
    plist.add(new Particle());
}

void draw(){
    background(255);


}


class Particle {
  PVector location;
  PVector velocity;
  PVector acceleration;
  float lifespan;

  Particle(PVector l){
    // For demonstration purposes we assign the Particle an initial velocity and constant acceleration.
    acceleration = new PVector(0,0.05);
    velocity = new PVector(random(-1,1),random(-2,0));
    location = l.get();
    lifespan = 255;
  }

  void run(){
    update();
    display();
  }

  void update(){
    velocity.add(acceleration);
    location.add(velocity);
    lifespan -= 2.0;
  }

  void display(){
    stroke(0, lifespan);
    fill(175, lifespan);
    ellipse(location.x, location.y,8,8);
  }

  boolean isDead(){
    if(lifespan < 0.0){
      return true;
    }else{
      return false;
    }
  }
}

1 个答案:

答案 0 :(得分:2)

这是您的Particle构造函数:

Particle(PVector l){

请注意,它需要一个PVector参数。

这就是您调用Particle构造函数的方式:

plist.add(new Particle());

此行有错误:the constructor粒子()does not exist.这正是您的问题所在。构造函数Particle()不存在。仅存在Particle(PVector)

换句话说,请注意您没有给它PVector个参数。那是你的错误告诉你的。

要解决此问题,您需要提供PVector参数,或者需要更改构造函数以使其不再需要。