java中的函数没有完成

时间:2010-08-22 10:14:17

标签: java

问候,

这是我的第一个问题,我只是将编程作为一种爱好,所以在试图帮助我时请记住这一点。

我有一个试图读取十字准线中心点的函数。像游戏中的位置查找器。代码如下所示:

public static Point location(BufferedImage image) {
        int pixelLeft;
        int pixelTop;
        Point point = new Point();

        for (int i = Main.RADAR_TOP+1; i < Main.RADAR_BOTTOM; i++) {
            pixelLeft = image.getRGB(Main.RADAR_LEFT+7, i);
            if ((((pixelLeft>>16) & 0xff) > 35 &&
                  ((pixelLeft>>8) & 0xff) > 35 &&
                  ((pixelLeft) & 0xff) > 35)){
                point.y = i;
                break;
            }
        }

        for (int j = Main.RADAR_LEFT+1; j < Main.RADAR_RIGHT; j++) {
            pixelTop = image.getRGB(j, Main.RADAR_TOP+5);
            if ((((pixelTop>>16) & 0xff) > 35 && 
                  ((pixelTop>>8) & 0xff) > 35 && 
                  ((pixelTop) & 0xff) > 35)){
                point.x = j;
                break;
            }
        }

        System.out.println("location: "+point.x+","+point.y);
/**        lastX = point.x;
        lastY = point.y;*/
        return point;
    }

有时候,这个函数根本不会将控制权返回给主应用程序。基本上它会卡住运行。因此在函数中的最后一条注释要做检查。我首先想到的可能是它与读取函数所在类的静态成员有关,所以我在最后看到了这些。但问题仍然存在。

我无法真正看到或想到这种行为的任何原因。我会非常感谢任何可能让我误以为是的想法或意见。

2 个答案:

答案 0 :(得分:1)

问题是位置函数是由第二个函数调用的,而第二个函数是在case语句中我错过了中断。这就是应用程序“卡住”的原因。

答案 1 :(得分:0)

您确定Main.RADAR_TOP小于Main.RADAR_BOTTOM吗? 否则forloop应该旋转一段时间(很长一段时间......)