Ik probeer een eenvoudig script voor een spel te maken door de tijd van de dag te veranderen, maar ik wil het in een snelle beweging doen. Dus dit is waar ik het over heb:
function disco ( hour, minute)
setTime ( 1, 0 )
SLEEP
setTime ( 2, 0 )
SLEEP
setTime ( 3, 0 )
end
en ga zo maar door. Hoe zou ik dit doen?
Antwoord 1, autoriteit 100%
Lua biedt geen standaard sleep
-functie, maar er zijn verschillende manieren om er een te implementeren, zie Slaapfunctievoor details.
Voor Linux is dit misschien wel de gemakkelijkste:
function sleep(n)
os.execute("sleep " .. tonumber(n))
end
In Windows kunt u ping
gebruiken:
function sleep(n)
if n > 0 then os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL") end
end
Degene die select
gebruikt, verdient enige aandacht omdat het de enige draagbare manier is om een resolutie van minder dan een seconde te krijgen:
require "socket"
function sleep(sec)
socket.select(nil, nil, sec)
end
sleep(0.2)
Antwoord 2, autoriteit 17%
Als je luasocket hebt geïnstalleerd:
local socket = require 'socket'
socket.sleep(0.2)
Antwoord 3, autoriteit 10%
wxLuaheeft drie slaapfuncties:
local wx = require 'wx'
wx.wxSleep(12) -- sleeps for 12 seconds
wx.wxMilliSleep(1200) -- sleeps for 1200 milliseconds
wx.wxMicroSleep(1200) -- sleeps for 1200 microseconds (if the system supports such resolution)
Antwoord 4, Autoriteit 10%
Deze homebrew-functie heeft nauwkeurigheid tot een 10e van een seconde of minder.
function sleep (a)
local sec = tonumber(os.clock() + a);
while (os.clock() < sec) do
end
end
Antwoord 5
Als u een MacBook- of Unix-systeem gebruikt, gebruikt u dit:
function wait(time)
if tonumber(time) ~= nil then
os.execute("Sleep "..tonumber(time))
else
os.execute("Sleep "..tonumber("0.1"))
end
wait()
Antwoord 6
Ik had iets eenvoudigs nodig voor een polling-script, dus ik probeerde de os.execute
optie van yu hao’s Antwoord . Maar op zijn minst op mijn machine, kon ik het script niet langer beëindigen met CTRL kbd>+ C kbd>. Dus ik probeerde een zeer vergelijkbare functie met io.popen
in plaats daarvan, en deze maakt vroegtijdige beëindiging toe.
function wait (s)
local timer = io.popen("sleep " .. s)
timer:close()
end
Antwoord 7
function wait(time)
local duration = os.time() + time
while os.time() < duration do end
end
Dit is waarschijnlijk een van de gemakkelijkste manieren om een wacht- / slaapfunctie toe te voegen aan uw script