-
Notifications
You must be signed in to change notification settings - Fork 0
Infinite loops RU
Shararvev edited this page Sep 24, 2021
·
2 revisions
This page is available in English
Иногда вам может потребоваться сделать зацикленный поезд туда и обратно, или повторяющийся механизм, который запускает свое движение повторно в конце цикла. Следующий пример вызовет зависание игры из-за рекурсивного вызова, который проваливается в бесконечный цикл.
local button = controller:GetMetaTarget("start_button_no")
button.OnPressed = function(ent, activator)
print(activator, "just pressed", ent)
button:Fire("Press") -- FAIL! infinite loop
end
button:Fire("Press") -- for test only
Используйте третий аргумент delay в методе Entity:Fire
для того, чтобы добавить задержку и безопасно обработать такие случаи.
Уточню, что сам по себе пример не имеет смысла, это лишь для демонстрации рекурсии.
local button = controller:GetMetaTarget("start_button_no")
button.OnPressed = function(ent, activator)
print(activator, "just pressed", ent)
button:Fire("Press", nil, 0.01) -- recurse, but not fail (anyway, for what?)
end
button:Fire("Press") -- for test only