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

AHK如何使一个SetTimer启动另一个,而不是反转,timer,autohotkey,Timer,Autohotkey,代码的目标: 计时器CheckStart每隔3秒刷新一次,直到找到所选颜色 如果它找到像素-它会停止自身并启动CheckStop计时器,每3秒查找一个像素 重复 还有一个键绑定来检查最后启动的计时器 #NoEnv SendMode Input checkstate = 0 ;just for checking state SetTimer, CheckStart, 3000 Return CheckStart: PixelSearch, xx, zz, 710, 460, 730,

代码的目标:

计时器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
我得到的是:

  • 在我将所需的颜色输入到第一个计时器之前,keybind工作延迟,仅在迭代之间显示状态。我可以使它异步吗
  • 在我将所需颜色输入到第一个计时器后,检查器变为“1”,但CheckEnd计时器未启动。(因此keybind立即开始工作)

  • 我做错了什么?或者只是禁止按计时器启动计时器?

    没有像
    Alt
    这样的像素搜索模式,这只适用于
    PixelGetColor

    我假设这里的问题只是像素搜索需要花费很长时间。
    Fast
    模式下添加。
    因此,不要使用
    Alt RGB
    尝试
    Fast RGB