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);
}
}
請編輯問題並添加標籤以指示語言。 – Dukeling 2013-05-02 17:32:41
「Processing是爲電子藝術,新媒體藝術和視覺設計社區開發的開源編程語言和集成開發環境(IDE),目的是在視覺環境中教授計算機編程的基礎知識,並作爲電子速寫本的基礎「。 – user2344118 2013-05-03 00:51:09
在處理wiki中有這篇文章可能會引起你的興趣。這是關於append vs ArrayList.http://wiki.processing.org/w/Why_use_ArrayList_instead_of_array_with_append()%3F – 2013-05-03 17:33:58