我遇到了代码循环问题。它只是运行然后结束。我可以编译它,当我运行它然后立即结束永远不会循环。
我要做的是让此代码查找.bmp
,然后如果找到则点击其他.bmp
,因此需要始终扫描.bmp
以下是代码:
#include <ImageSearch.au3>
HotKeySet ("S" , "Start")
$x = 0
$y = 0
$heal = 0
$mp = 0
$poth = 0
$potm = 0
$allon = 1
Func Start()
While 1
$Search = _ImageSearch('healthlow.bmp' , 0)
If $Search = 1 Then
$SearchPoth = _ImageSearch('poth.bmp' , 0, $x, $y, 0)
If $SearchPoth = 1 Then
MouseMove( $x, $y, 10 )
MouseClick( "Left" , $x, $y, 10 )
EndIf
EndIf
Sleep 30000
WEnd
EndFunc
我试过了:
While 1 = 1
或者创建一个始终为真的变量。
答案 0 :(得分:0)
您永远不会调用您的函数Start()
。仅宣布它是不够的。您必须在主程序流程中至少一次显式调用它。关键是,程序中没有时间等待按下定义的HotKey。定义了该函数,之后程序刚刚结束,因为正常的程序流程(从第一行到最后一行)结束。您需要在函数定义之外放置另一个无限的Sleep-Loop,以便程序等待HotKey输入...... ;-)并且您可能并不是要将While-Loop放在函数内部 - 或者您是希望在按下S
?
While True
Sleep(1) ; this could be much longer, doesn't really matter...
WEnd
答案 1 :(得分:0)
我遇到了代码循环问题。它只是运行然后结束。我可以编译它,当我运行它然后立即结束永远不会循环。
While
-loop退出pressing Q(未经测试,无错误检查):
Global Const $g_sKeyQuit = 'q'
Global Const $g_iDelay = 500
Global $g_bStateQuit = False
Main()
Func YourCode()
Local Static $iCount = 0
$iCount += 1
ConsoleWrite($iCount & @LF)
EndFunc
Func Main()
Start()
While Not $g_bStateQuit
YourCode()
Sleep($g_iDelay)
WEnd
Exit
EndFunc
Func SetStateQuit()
$g_bStateQuit = True
EndFunc
Func Start()
HotKeySet($g_sKeyQuit, 'SetStateQuit')
EndFunc
视觉解释(在While
中说明Main()
-loop):
我要做的是让此代码查找
.bmp
,然后如果找到则点击其他.bmp
,因此需要始终扫描.bmp
根据需要替换YourCode()
的内容。 While
-loops也可以是paused。