我一直在处理一个处理游戏,我遇到了这个问题:我试图制作一个背景明星飞过的背景,我有这个课程:
public class Star {
PVector position;
float speed;
void draw() {
fill(255);
ellipse(position.x, position.y, speed, speed);
position.x -= speed;
}
public Star() {
speed = random(5);
position.set(width+speed,random(height));
}
}
我有一个名为stars的星形ArrayList:
ArrayList<Star> stars = new ArrayList<Star>();
我在函数drawBg()中调用构造函数:
if(random(12) < 1) {
stars.add(new Star());
}
但是当调用drawBg并创建一个新的Star()时,草图会崩溃并指向:
position.set(width+speed,random(height));
IDE说&#34;无法运行草图&#34;,控制台说:
无法运行草图(目标VM无法初始化)。更多 信息,阅读revisions.txt和帮助?故障排除。
请帮忙!谢谢!
答案 0 :(得分:0)
默认情况下,您的position
变量为null
,这意味着它尚未指向PVector
的实例。
您从不初始化该变量(使用new
关键字创建PVector
的新实例),因此当您致电{{{{}}时,它仍为null
1 {}在position.set()
构造函数中。这会导致错误,因为您无法在Star
变量上调用函数。
要解决此问题,只需使用null
关键字创建new
的新实例:
PVector