我正在制作一个屏幕上会有很多敌人的游戏。到目前为止,这是部分代码:
private boolean update() {
pIndex += cSpd;
if (pIndex > path.length) return true;
cX = path[pIndex].x;
cY = path[pIndex].y;
return false;
}
问题是如果屏幕上有太多敌人/物体,它会抛出异常。(我不知道“太多”的确切数量,但我肯定需要超过这个数量。)这里有一个例外:
Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 3040
at Game$GamePanel$Circle.update(Game.java:152)
at Game$GamePanel$Circle.access$1(Game.java:149)
at Game$GamePanel.paintComponent(Game.java:110)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
...
我明白这意味着什么。第 152 行是:
cX = path[pIndex].x;
但是,这令人困惑,因为它之前的行是:
if (pIndex > path.length) return true;
我不明白为什么会这样。pIndex
而另一个变量不是静态的,所以我不知道其他Circle
s 会如何影响它。奇怪的是,当它抛出这个异常时,索引总是3040。我该如何解决这个问题?