Что нового

Временный выход из цикла while, как выйти насовсем

PomaH

Новичок
Код:
HotKeySet("{ESC}","Quit") ;
HotKeySet("{!}","f1") ;
Global $cliking=True;
Func Quit()
    $cliking=False;
	Sleep(999);
	$cliking=True;
EndFunc
Func f1()
   While $cliking
   MouseClick("left",2325,842,1,1);
   MouseClick("left",2630,1375,1,1);
   WEnd
EndFunc

While True
   Sleep(999);
   WEnd

Почему цикл while после того как переменная стала фолс, не завершается, а только паузиться на 1 сек, и продолжается после тру. Как сделать так чтобы нажал на кнопку и функция прекратила работу? В тоже время нужна возможность заного возобновить работу функции.
 

axsmak

Знающий
Ваша функция Quit() ничего не делала. В начале вызова и по выходу из функции переменная $cliking равна тру. Поэтому функция выхода должна только менять $cliking на фолс, а вот тру переменная становится при вызове цикличной функции, до запуска цикла
Спойлер:
Тут нужно понимать, что пока выполняется функция по горячей клавише (в вашем случае это Quit()), цикл выполняемый на момент вызова этой функции заморожен и пойдёт дальше (а значит и анализировать состояние переменной $cliking) только после завершения функции Quit(). Но к этому моменту переменная $cliking уже снова равна тру. Вот ничего и не происходит.

Код:
HotKeySet("{ESC}","Quit") ;
HotKeySet("{!}","f1") ;
Global $cliking=True;
Func Quit()
    $cliking=False;
EndFunc
Func f1()
    $cliking=True;
   While $cliking
   MouseClick("left",2325,842,1,1);
   MouseClick("left",2630,1375,1,1);
   WEnd
EndFunc

While True
   Sleep(999);
   WEnd
 
Верх