【发布时间】:2014-11-03 13:45:26
【问题描述】:
我正在尝试在 Processing 中制作一个小型射击游戏,当我单击鼠标按钮时,我创建了一些在屏幕上移动的子弹,当它们离开屏幕时它们应该消失,我使用 IntList我保留这样的值:(X1, Y1, X2, Y2, ...),我的问题是,当我在下面的代码中尝试删除项目符号的索引时,我随机得到一个ArrayIndexOutOfBounds: 10 异常,即使我在删除之前检查了 IntList 的大小。有什么帮助吗?
for(i = 1; i < shots.size(); i += 2){
shots.sub(i, bullet_speed);
if(shots.get(i) + bullet_height <= border_size){
shots.remove(i); //Problematic point
println("Removed Y-pos, array's size: "+shots.size());
shots.remove(i - 1);
println("Removed X-pos, array's size: "+shots.size());
i -= 2;
continue;
}
rect(shots.get(i - 1), shots.get(i), bullet_width, bullet_height);
}
编辑:
我想我找到了一个线索:当我在屏幕上达到 5 个子弹时,总是会发生异常(此时,镜头的大小变为 10)。
【问题讨论】:
-
shots.sub() 有什么作用?它会改变列表吗?
-
@eran shot.sub() 减少子弹的 Y 位置
-
什么是 IntList?它是您创建的类还是某个库类?如果您创建了它,请包含它的代码。
-
@eran 据我了解,这是一个处理类。 processing.org/reference/IntList.html
-
我建议您将调试打印移到引发异常的行之前,看看此时
i和shots.size()的值是多少。
标签: java processing