2013-05-02 51 views
0

我遇到了我的項目問題,無法弄清楚。 Processing正在告訴我我所擁有的不是一個數組,但我不明白它不是。另外,這個問題只發生在我試圖讓其他東西出現的時候點擊鼠標。追加不適用於mousepressed?

int numParticles = 200; 

GenParticle [] p = new GenParticle[numParticles]; 

float r=170; 
float g=150; 
float b=85; 
float velX; 
float velY; 

void setup(){ 
    size(500,500); 
    noStroke(); 
    smooth(); 
    frameRate(30); 
    for (int i=0; i<p.length; i++){ 
    velX = random(-1,1); 
    velY = -i; 
    p[i]=new GenParticle(width/2,height/2,velX,velY,5.0,width/2,height/2); 
    } 
} 

void draw(){ 
    fill(0,20); 
    rect(0,0,width,height); 

    fill(255,60); 
    for(int i=0; i<p.length; i++){ 
    p[i].update(); 
    p[i].regenerate(); 
    p[i].display(); 
    } 
} 

void mousePressed() { 
    GenParticle gp = new GenParticle(mouseX,mouseY, velX, velY,5.0,mouseX,mouseY); 
    p = (GenParticle[]) append(gp,p); 
} 


class GenParticle extends Particle{ 
    float originX,originY; 


    GenParticle(int xIn,int yIn,float vxIn,float vyIn,float r,float ox,float oy){ 
    super(xIn, yIn, vxIn, vyIn, r); 
    originX=ox; 
    originY=oy; 
    } 

    void regenerate(){ 
    if ((x>width+radius) || (x<-radius) || (y>height+radius) || (y<-radius)){ 
     x=originX; 
     y=originY; 
     vx=random(-1.0,1.0); 
     vy=random(-4.0,-2.0); 
    } 
    } 
} 


class Particle{ 
    float x, y; 
    float vx,vy; 
    float radius; 
    float gravity=0.1; 
    float r=0; 
    float g=0; 
    float b=0; 

    Particle(int xpos,int ypos,float velx,float vely,float r){ 
    x=xpos; 
    y=ypos; 
    vx=velx; 
    vy=vely; 
    radius=r; 
    } 

    void update(){ 
    vy=vy+gravity; 
    y += vy; 
    x += vx; 
    } 

    void display(){ 
    fill(r,g,b); 
    ellipse(x, y, radius*3,radius*3); 

    if(mouseX>width/2){ 
    r=r+9; 
    }else{ 
     g=g+6; 
    } 

    if(mouseY>height/2){ 
    b=b+7; 
    }else{ 
     b=b-3; 
    } 

    if(keyPressed) { 
    g=g+1; 
    }else{ 
     g=g-5; 
    } 

    r=constrain(r,0,255); 
    g=constrain(g,0,255); 
    b=constrain(b,0,255); 
    } 
} 
+1

請編輯問題並添加標籤以指示語言。 – Dukeling 2013-05-02 17:32:41

+1

「Processing是爲電子藝術,新媒體藝術和視覺設計社區開發的開源編程語言和集成開發環境(IDE),目的是在視覺環境中教授計算機編程的基礎知識,並作爲電子速寫本的基礎「。 – user2344118 2013-05-03 00:51:09

+0

在處理wiki中有這篇文章可能會引起你的興趣。這是關於append vs ArrayList.http://wiki.processing.org/w/Why_use_ArrayList_instead_of_array_with_append()%3F – 2013-05-03 17:33:58

回答

1

語法錯誤:數組是第一個參數,並要追加的對象是append()函數的第二個參數

你的mousePressed應該是這樣的:

void mousePressed() { 
    GenParticle gp = new GenParticle(mouseX,mouseY, velX, velY,5.0,mouseX,mouseY); 
    p = (GenParticle[]) append(p,pg); 
} 

公告數組p先走,然後是對象(追加到數組p對象pg)。