2013-05-02 107 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)。