处理草图在PVector集上崩溃

时间:2016-08-22 18:49:34

标签: java crash processing

我一直在处理一个处理游戏,我遇到了这个问题:我试图制作一个背景明星飞过的背景,我有这个课程:

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和帮助?故障排除。

请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,您的position变量为null,这意味着它尚未指向PVector的实例。

您从不初始化该变量(使用new关键字创建PVector的新实例),因此当您致电{{{{}}时,它仍为null 1 {}在position.set()构造函数中。这会导致错误,因为您无法在Star变量上调用函数。

要解决此问题,只需使用null关键字创建new的新实例:

PVector