我正在制作动画处理它是一个上升和下降的球的模拟,我有一个错误说'NullPointerException'它一直出现我会给出代码并显示错误的地方:
Obj[] objs = new Obj[100];
void setup(){
size(1000, 1000);
}
void draw(){
background(250);
for(int i = 0; i < objs.length; i++){
objs[i].render();
objs[i].up();
objs[i].run();
}
}
the error is at objs[i].render();
这是Obj的代码:
class Obj{
float x;
float y;
float speed;
float pspeed;
float velocity;
void render(){
fill(0);
ellipse(x, y, 5, 5);
}
void up(){
x = random(-1000, 1000);
y = y-1010;
}
void run(){
speed = random(4, 6);
pspeed = speed;
velocity = 0.05;
while(y<random(700, 1100)){
y=y-speed;
speed=speed-velocity;
}
while(y>0){
y=y+pspeed;
pspeed = pspeed - velocity;
}
}
}
答案 0 :(得分:0)
此行创建一个可容纳100个Obj
实例的数组:
Obj[] objs = new Obj[100];
但它实际上并没有创建任何实例。换句话说,您的数组包含100个null
值。
然后你循环遍历那些null
值并尝试调用它们上的函数,这就是造成错误的原因。
要解决此问题,您可能只想用实例填充数组:
void setup(){
size(1000, 1000);
for(int i = 0; i < objs.length; i++){
objs[i] = new Obj();
}
}
无耻的自我推销:我在Processing available here中编写了一个关于数组的教程。