2014-03-13 41 views
0

说,如果红色= 200,绿= 190,蓝= 210 又在哪里鼠标的Java如果有一个范围

我的问题是,红色,绿色和蓝色每次都可以改变,但他们将永远声明接近彼此前。红= 230,蓝色= 250,绿色= 240

我想创建一个,如果有一个范围

if (color.getRed()== 131 && color.getGreen() == 115 && color.getBlue() == 91) 
{ 
robot.mousePress(MouseEvent.BUTTON1_MASK); 
robot.mouseRelease(MouseEvent.BUTTON1_MASK); 
System.out.println("click"); 
} 

所以,如果红,绿,蓝的语句用同样的20分中分离它的作用是在括号。

回答

1

您可以创建一些这方面的helper方法。

private boolean inColorRange(int color1, int color2) { 
    return Math.abs(color2-color1) <= 10; 
} 

这将返回true,如果颜色相距10或更小。

你可以重写你是否是这样的。

if (inColorRange(color.getRed(), color.getBlue()) && 
    inColorRange(color.getBlue(), color.getGreen()) { 
    // Do something here if red and blue are within 10, and blue and 
    // green are within 10 
} 
0

你可以用减法运算得到的差异,并且可以使用Math.abs()获得差异总是正值

+0

我在哪里可以使用ABS价值?在if语句中? – user1965081

+0

请重新阅读答案和a​​bs的javadoc –

0
int delta = 20; 

if(withinRange(color.getRed(), color.getGreen(), delta) && 
    withinRange(color.getRed(), color.getBlue(), delta) && 
    withinRange(color.getGreen(), color.getBlue(), delta)){ 
    robot.mousePress(MouseEvent.BUTTON1_MASK); 
    robot.mouseRelease(MouseEvent.BUTTON1_MASK); 
    System.out.println("click"); 
} 


private boolean withinRange(int color1, int color2, int delta){ 
    return ((Math.abs((color1 - color2)) <= delta); 
}