Тема: AHK: Не разрывается цикл
В общем, написал функцию, которая сканирует фрагмент экрана на наличие пикселов определенного цвета, а результат записывает в массив: если пиксел есть, в ячейку записывается 1, если нет - 0. Только вот цикл сканирования строки пикселов завершаться не хочет, хотя условия, кажется, правильно прописал. Народ, гляньте, что с циклом не так, пожалуйста.
#NoEnv
Process Priority,,High
SetBatchLines -1
;-----------------------------------------------------------------
RcrdInMssv(x1,y1,x2,y2,FndClr) ;x1,y1,x2,y2 - границы считываемого изображения, FndClr - искомый цвет
{
local i, thspxx, thspxy, clr
%FndClr% := Object() ;обьявляем массив в который будем считывать изображение по имени искомого цвета
loop
{
i := %A_index% ;задаем переменную в которой будет храниться номер строки пикселов (будет использоваться для нумерования ячеек массива)
ThsPxY := i + y1 - 1 ;определяем y-координату пиксела, который будем "читать"
msgbox % thspxy " - " y2
if (thspxy > y2) ;если номер текущей строки больше, чем номер последней строки подлежащей анализу
break ;разорвать цикл
else ;иначе
{
loop
{
ThsPxX := a_index + x1 - 1 ;определяем x-координату пиксела, который будем "читать"
if (thspxx > x2) ;если номер текущего столбца больше, чем номер последнего столбца подлежащего анализу
break ;разорвать цикл
else ;иначе
{
PixelGetColor, clr, %ThsPxX%, %ThsPxY% ;получаем цвет текущего пиксела
if (FndClr = clr) ;если он соответствует искомому
%FndClr%[i, a_index] := 1 ;записываем в массив 1
else ;иначе
%FndClr%[i, a_index] := 0 ;записываем 0
}
}
}
}
}
;-----------------------------------------------------------------
RdStrng(StrngNmbr, MssvNm)
{
local rtrnvr
Loop
{
if (%MssvNm%[%StrngNmbr%, %a_index%] = "")
break
rtrnvr := %rtrnvr% "." %MssvNm%[%StrngNmbr%, %a_index%]
}
return := rtrnvr
}
;------------------------------------------------------------------
RcrdInMssv(36,44,70,46,0xff0000)
mstxt := RdStrng(1, 0xff0000)
msgbox, %mstxt%