2016-09-15 176 views
1

我在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; 
    } 
    } 
} 

回答

2

這是您的Particle構造:

Particle(PVector l){ 

注意,它需要一個PVector說法。

這是你如何調用Particle構造:

plist.add(new Particle()); 

此行有一個錯誤:the constructor粒子()does not exist.這就是你的問題是什麼。構造函數Particle()不存在。只有Particle(PVector)存在。

換句話說,請注意您沒有給它一個PVector參數。這就是你的錯誤告訴你的。

要解決這個問題,您需要提供一個PVector參數,或者您需要更改構造函數以使其不再需要。

+0

啊,好的。構造函數和類對我來說都是新手,所以我就這樣做了。錯誤消失了。我會回讀構造函數。 –

+0

@mishap_n說到參數,構造函數很像函數。如果您嘗試在不帶任何參數的情況下調用'ellipse()'函數,則會出現類似的錯誤。 –

相關問題