Таким образом, похоже, что вы на самом деле после этого должны начать несколько проверок на 2 секунды с «сейчас» в течение 3 секунд. Вы можете запланировать регистрацию и регистрацию для событий enterFrame
. Используя это будет вызывать вашу функцию FuelManage каждый шаг по времени в период интереса:
function cancelCheckFuel(event)
Runtime:removeListener('enterFrame', FuelManager)
end
function FuelManage(event)
if lives > 0 and pressed==true then
lifeBar[lives].isVisible=false
lives = lives - 1
-- print(lifeBar[lives].x)
livesValue.text = string.format("%d", lives)
end
end
-- fuel management:
local startFuelCheckMS = 2000 -- start checking for fuel in 2 seconds
local fuelCheckDurationMS = 3000 -- check for 3 seconds
local stopFuelCheckMS = startFuelCheckMS + fuelCheckDurationMS
timer.performWithDelay(
startFuelCheckMS,
function() Runtime:addEventListener('enterFrame', FuelManager) end,
1)
timer.performWithDelay(
stopFuelCheckMS,
function() Runtime:removeEventListener('enterFrame', FuelManager) end,
1)
Если это слишком высокая частота, то вы хотите использовать таймер, и следить за временем:
local fuelCheckDurationMS = 3000 -- check for 3 seconds
local timeBetweenChecksMS = 200 -- check every 200 ms
local totalCheckTimeMS = 0
local startedChecking = false
function FuelManage(event)
if lives > 0 and pressed==true then
lifeBar[lives].isVisible=false
lives = lives - 1
-- print(lifeBar[lives].x)
livesValue.text = string.format("%d", lives)
end
if totalCheckTimeMS < 3000 then
timer.performWithDelay(timeBetweenChecksMS, FuelManage, 1)
if startedChecking then
totalCheckTimeMS = totalCheckTimeMS + timeBetweenChecksMS
end
startedChecking = true
end
end
-- fuel management:
local startFuelCheckMS = 2000 -- start checking for fuel in 2 seconds
timer.performWithDelay(startFuelCheckMS, FuelManage, 1)
каждые 2 секунды в течение 3 секунд? то есть один вызов задерживается на 2 секунды с момента правильного вызова? 'timer.performwithDelay (2000, callback, 1)' сделает это за вас. –
Я бы с удовольствием помог, но «каждые 2 секунды в течение 3 секунд» не имеет смысла. Первый вызов будет через две секунды после 'performWithDelay', и следующий вызов будет еще через 2 секунды после этого, так что в общей сложности 4 секунды с самого первого вызова выполнить функциюWithDelay, и это не попадает в« в течение 3 секунд ». Просьба уточнить. – Schollii