Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Slick中getColor()方法的ArrayIndexOutOfBoundsException_Java_Slick2d - Fatal编程技术网

Java Slick中getColor()方法的ArrayIndexOutOfBoundsException

Java Slick中getColor()方法的ArrayIndexOutOfBoundsException,java,slick2d,Java,Slick2d,我有这段代码来创建一个ArrayList,其中包含实际存在像素(alpha!=0)的所有像素位置 代码如下: public ArrayList<Point> getPixels() { ArrayList<Point> output = new ArrayList<Point>(); Image frameImage = img.getCurrentFrame(); for (int FIx = 0; FIx <= img.get

我有这段代码来创建一个ArrayList,其中包含实际存在像素(alpha!=0)的所有像素位置

代码如下:

public ArrayList<Point> getPixels() {
    ArrayList<Point> output = new ArrayList<Point>();
    Image frameImage = img.getCurrentFrame();
    for (int FIx = 0; FIx <= img.getWidth(); FIx++) {
        for (int FIy = 0; FIy <= img.getHeight(); FIy++) {
            if (frameImage.getColor(FIx, FIy).getAlpha() != 0.00f) {//<-- Error
                output.add(new Point(FIx, FIy));
            }
        }
    }

    return output;
}
我已经用注释标记了上面提到的行(Kitten.java:197)


如果需要任何其他帮助解决此问题,请在评论中询问。谢谢。

这对我来说似乎是个问题:

for (int FIx = 0; FIx <= img.getWidth(); FIx++) {
    for (int FIy = 0; FIy <= img.getHeight(); FIy++) {
例如,宽度为3的图像的有效X值应为0、1和2,而不是3


诚然,这完全取决于
org.newdawn.slick.Image
的功能,这是一个我不熟悉的类,但这是一个合理的起点。(很遗憾,该方法显然没有验证其输入-它应该抛出不同的异常,但这仍然是您的编程错误。)

@njallam:我不明白这个问题。。。以前,循环边界不正确,因此当
FIy
的值太高时出现异常。。。您现在已经修复了它,所以它不会抛出。@njallam:听起来像是这样-或者可能是所讨论的
Image
类有时分配了一个太大的数组,而它没有验证参数这一事实意味着您已经摆脱了它-而是获取了垃圾。
for (int FIx = 0; FIx <= img.getWidth(); FIx++) {
    for (int FIy = 0; FIy <= img.getHeight(); FIy++) {
for (int FIx = 0; FIx < img.getWidth(); FIx++) {
    for (int FIy = 0; FIy < img.getHeight(); FIy++) {