AHK 如何让一个 SetTimer 启动另一个,而不是反转

AHK How to make one SetTimer launch other, and than reversal

代码目标:

计时器 CheckStart 每 3 秒迭代一次,直到找到选定的颜色。

如果找到像素 - 它会自行停止并启动 CheckStop 计时器,每 3 秒寻找另一个像素。

重复一遍

还有一个键绑定来检查最后启动了哪个计时器。

#NoEnv
SendMode Input

checkstate = 0 ;just for checking state
SetTimer, CheckStart, 3000
Return

CheckStart:
    PixelSearch, xx, zz, 710, 460, 730, 480, 0x385982, 0, Alt RGB
    if !ErrorLevel {
        checkstate = 1
        SetTimer, CheckStart, Off
        SetTimer, CheckEnd, 3000
        Gosub, CheckEnd
    }
Return

CheckEnd:
    PixelSearch, xx, zz, 670, 160, 725, 200, 0xE60014, 0, Alt RGB
    if !ErrorLevel {
        checkstate = 0
        SetTimer, CheckEnd, Off
        SetTimer, CheckStart, 3000
        Gosub, CheckStart
    }
Return

^!z:: ; Control+Alt+Z 
    MouseGetPos, MouseX, MouseY
    PixelGetColor, color, %MouseX%, %MouseY%, Alt RGB
    MsgBox (checkstate%) colour: %color%. 
return

我得到的:

  1. 在我向第一个计时器提供所需的颜色之前,键绑定延迟工作,仅在迭代之间显示状态。我可以让它异步吗?
  2. 在我向第一个计时器提供所需的颜色后,检查器变为“1”,但 CheckEnd 计时器未启动。 (因此键绑定立即开始工作)

我做错了什么?或者它只是禁止通过定时器启动定时器?

没有像Alt这样的像素搜索模式,那只适用于PixelGetColor
我假设这里的问题只是像素搜索永远占用了时间。
Fast模式下添加
所以不要 Alt RGB 试试 Fast RGB.