Добавлен Vlod,
опубликован
Исходники
Язык:
lua
Система, которая предоставляет удобную работу с таймерами. Предназначена для интеграции с внешним таймером, а также для тестирования и эмуляции кода, зависящего от событий времени. Преимущества по сравнению с другими реализациями - детерминированный порядок выполнения на большинстве устройств. Основано на двоичной куче с модификацией. Рассчитывалось на работу с ~ 300_000 таймерами.
Быстрый старт
local Time = TimeSystem()
local Timer = TimerSystem(Time)
Timer.after(2, function() print('2 seconds have passed') end)
Timer.every(1, 5, function() print('periodic') end)
Time.start() -- запустить время (для консоли)
[[ output
periodic
periodic
2 seconds have passed
periodic
periodic
periodic
]]
API
local Time = TimeSystem()
local Timer = TimerSystem(Time)
Timer.new() --> timer
-- @param delay - float
-- @param fucntion - fucntion
-- @param arguments - table, optional
Timer.after(delay, fucntion, arguments) --> timer -- запустить через время
-- ...
-- @param count - uint
Timer.every(delay, count, function, arguments) --> timer -- запустить несколько раз
local timer = Timer.new()
timer:after(delay, fucntion, arguments) -- запустить через время
timer:every(delay, count, function, arguments) -- запустить несколько раз
timer:pause()
timer:remained() --> float - time
Больше примеров
local unit = {x = 0, y = 0}
Timer.after(3, function(timer, arg)
arg.x, arg.y = 1, -1
print(unit.x, unit.y)
end, unit)
--> 1, -1
local tick = 0
Timer.every(1, 10, function(timer)
tick = tick + 1
print(tick)
if tick > 5 then
timer:pause()
end
end)
--> 1, 2, 3, 4, 5, 6
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
Отредактирован MpW
Отредактирован MpW