画面にたくさんの敵が出てくるゲームを作っています。これまでのコードの一部を次に示します。
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
。奇妙なことに、この例外がスローされるとき、インデックスは常に3040 です。この問題を解決するにはどうすればよいですか?