Java 在Robot类中使用.getPixelColor

Java 在Robot类中使用.getPixelColor,java,awtrobot,Java,Awtrobot,嗨,你好 我目前正在用Java创建一种测试迷宫游戏,我在Photoshop中只用黑白色制作了一张简单的地图。我希望我的角色不能相交或通过这些黑色区域,所以我决定使用AWTRobot的“.getPixelColor()”方法。然而,它似乎不起作用。这是我的密码: switch( keyCode1 ) { case KeyEvent.VK_UP: thomasY -= 7; thomasLabel.setLocation(thomas

嗨,你好

我目前正在用Java创建一种测试迷宫游戏,我在Photoshop中只用黑白色制作了一张简单的地图。我希望我的角色不能相交或通过这些黑色区域,所以我决定使用AWTRobot的“.getPixelColor()”方法。然而,它似乎不起作用。这是我的密码:

switch( keyCode1 ) { 
        case KeyEvent.VK_UP:
            thomasY -= 7;
            thomasLabel.setLocation(thomasX, thomasY);
                break;
        case KeyEvent.VK_DOWN:
            System.out.println("Color:  " + robot.getPixelColor(thomasX + frame.getX(),  thomasY+ frame.getY() + thomasLabel.getHeight() + 1));
            if (robot.getPixelColor(thomasX + frame.getX(), thomasY + frame.getY() + thomasLabel.getHeight() + 1) == Color.BLACK)
            {
                System.out.println("At Wall!");
            }
            thomasY += 7;
            thomasLabel.setLocation(thomasX, thomasY);
                break;
        case KeyEvent.VK_LEFT:
           thomasX -= 7;
           thomasLabel.setLocation(thomasX, thomasY);
          thomasLabel.setIcon(imageThomas);
                break;
        case KeyEvent.VK_RIGHT :
            thomasX += 7;
            thomasLabel.setLocation(thomasX, thomasY);
            thomasLabel.setIcon(imageThomasRight);
                break;
    }
这是我的角色移动代码,正如您所见,每当用户按下向下箭头时,它都会尝试显示其所在像素的颜色。但是,它似乎没有正确注册,在其特定位置显示不同的颜色或错误的颜色。有人能帮我正确地做到这一点吗?

有两个问题:

1) Color.BLACK使用等于255的alpha分量定义<代码>AWTRobot正在读取屏幕,可能返回也可能不返回alpha组件。你得检查一下

2)
AWTRobot
返回的颜色不一定存在于表示AWT库内部颜色“黑色”实例的
对象中。你在检查身份;您需要检查对象内容是否相等

Color c1 = new Color(0,0,0);
Color c2 = new Color(0,0,0);

if (c1 == c2) {
   System.out.println("Will never get here");
}

if (c1.equals(c2)) {
   System.out.println("The colours (including alpha) are the same.");
}
两个问题:

1) Color.BLACK使用等于255的alpha分量定义<代码>AWTRobot
正在读取屏幕,可能返回也可能不返回alpha组件。你得检查一下

2)
AWTRobot
返回的颜色不一定存在于表示AWT库内部颜色“黑色”实例的
对象中。你在检查身份;您需要检查对象内容是否相等

Color c1 = new Color(0,0,0);
Color c2 = new Color(0,0,0);

if (c1 == c2) {
   System.out.println("Will never get here");
}

if (c1.equals(c2)) {
   System.out.println("The colours (including alpha) are the same.");
}