2016-09-15 10 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コンストラクタです:それはPVector引数を取ること

Particle(PVector l){ 

注意してください。

plist.add(new Particle()); 

この行はエラーがあります:the constructor粒子()does not exist.そしてそれはあなたの問題があり、正確に何

これは、あなたがParticleコンストラクタを呼び出している方法です。コンストラクタParticle()は存在しません。 Particle(PVector)のみが存在します。

つまり、PVector引数を与えていないことに注意してください。それはあなたのエラーがあなたに伝えていることです。

これを修正するには、PVector引数を指定するか、コンストラクタを不要にするようにコンストラクタを変更する必要があります。

+0

Ahh ok。コンストラクターとクラスは私にとって初めてのものなので、私はそれをやりました。エラーは消えました。私はコンストラクタについての読書をいくつか行います。 –

+0

@mishap_nパラメータに関しては、コンストラクタは非常によく似た関数です。パラメータなしで 'ellipse()'関数を呼び出そうとすると、同様のエラーが発生します。 –

関連する問題