2016-11-20 7 views
0

У меня есть два метода, которые я использую, чтобы получить и сравнить два цвета. Во-первых, чтобы получить цветIfEqual всегда оценивает значение False (AutoHotKeys)

/* 
This function returns the color at the given coordinates in hexadecimal format 
*/ 
GetColor(x, y) { 
    MouseMove x, y 
    PixelGetColor, colorToReturn, x, y 
    Return %colorToReturn% 
} 

А вот мой чек метод цвет

/* 
This function checks the passed color with the color at 600, 475. 
*/ 
CheckColor(colorToCheck) { 
    colorToCompare := GetColor(600, 475) 
    MsgBox %colorToCheck% - %colorToCompare% 
    IfEqual %colorToCheck%, %colorToCompare%, Return, 1 
    Return 0 
} 

Я называю его с этой горячей клавиши, но я всегда получаю 0 обратно, даже если два цвета имеют тот же цвет.

^t:: ; CTRL + T test color compare 
colorToTest := GetColor(600, 475) 
result := CheckColor(colorToTest) 
MsgBox %result% 
RETURN 

Почему мой цвет проверки всегда возвращает false?

ответ

2

https://autohotkey.com/docs/commands/IfEqual.htm

IfEqual, var, value

var - имя переменной.

value - Литеральная строка, номер или ссылка на переменную (например, % var2%).

Так что, если вы настроены на использование IfEqual команду вместо if (expression) он должен выглядеть так:

IfEqual, colorToCheck, %colorToCompare%,Return 1 

if (expression) altrenative:

if (colorToCheck=colorToCompare) 
Return 1 
+0

Вы были быстрее и точнее (+1). – user3419297

+0

Согласен, принят –

1

«IfEqual% colorToCheck%,% colorToCompare% , Return, 1 "

должно быть

IfEqual colorToCheck, %colorToCompare%, Return, 1 

имена переменных в качестве expression не заключаются в знаки процента (псевдо-массивы и другие двойные ссылки, за исключением).

Если в variable заключен в знаки процента в выражении (например,% Var%), независимо, что переменная содержит предполагается имя или часть имени другой переменной (если нет такой переменной,% Var % разрешает пустую строку).

+0

Ничего себе, я мог бы поклясться, что попробовал, но я, должно быть, забыл перезагрузить сценарий. Благодаря! –

+0

К сожалению, ответ Боба более точный, поэтому я должен отдать его ему, но болеть им –