问题描述
代码的目标:
Timer 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,Alt RGB
if !ErrorLevel {
checkstate = 1
SetTimer,Off
SetTimer,CheckEnd,3000
Gosub,CheckEnd
}
Return
CheckEnd:
PixelSearch,670,160,725,200,0xE60014,Alt RGB
if !ErrorLevel {
checkstate = 0
SetTimer,CheckStart
}
Return
^!z:: ; Control+Alt+Z
MouseGetPos,MouseX,MouseY
PixelGetColor,color,%MouseX%,%MouseY%,Alt RGB
MsgBox (checkstate%) colour: %color%.
return
我得到了什么:
- 在我将所需的颜色提供给第一个计时器之前,键绑定工作延迟,仅在迭代之间显示状态。我可以让它异步吗?
- 在我将所需的颜色输入到第一个计时器后,检查器变为“1”,但 CheckEnd 计时器未启动。 (因此键绑定立即开始工作)
我做错了什么?还是只是禁止通过计时器启动计时器?
解决方法
没有Alt
这样的像素搜索模式,仅适用于PixelGetColor
。
我将假设这里的问题只是像素搜索需要永远。
在 Fast
模式下添加。
因此,不要尝试Alt RGB
,而是尝试Fast RGB
。