#lua #logitech-gaming-software
Вопрос:
Простая проблема, но мне нелегко ее решить :
У меня есть цикл и переменные, которые изменяются с помощью функции onEvent(событие, arg)
Но, находясь в цикле, он не обнаруживает изменений, например
local cancel_action = false
function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 2) then
cancel_action = not cancel_action
OutputLogMessage("DETECT cancel_action :")
OutputLogMessage(tostring(cancel_action))
end
if (event == "MOUSE_BUTTON_PRESSED" and arg == 3) then
test()
end
end
function test()
count_ = 0
repeat
count_ = count_ 1
OutputLogMessage("cancel_action ?")
OutputLogMessage(tostring(cancel_action))
if ( cancel_action ) then
OutputLogMessage("do something and stop")
cancel_action = not cancel_action
break
else
OutputLogMessage("do something else and loop again")
end
until count_ > 10
end
Здесь изменение cancel_action обнаружено и хорошо работает в функции onEvent, но никогда не обнаруживается во время цикла в тестовой функции.
Итак, подводя итог, я хочу использовать переменные, которые содержат состояния, но эти состояния неправильно обновляются в моей тестовой функции.
Что я сделал не так ? Можно ли обнаружить изменение переменной во время цикла ? Событие, по-видимому, запускается только после завершения цикла
Ответ №1:
Вы не обновляетесь cancel_action
в своем цикле, и пока ваш код занят выполнением цикла, никакие дальнейшие события не обрабатываются. Так как же cancel_action
предполагается изменить его значение?
Используйте IsMouseButtonPressed(2)
для завершения цикла.