control de retardo LUA

C ++ para interactuar con la realización

función Sleep proporcionada por C ++ se puede invocar a LUA, lo que podría ser realizado. Tal como más de 5 segundos y a continuación, solicita función de cuenta atrás correspondientes.

if(funName == L"Sleep") {
	if(lua->CheckParamCount(params, 1)) {
		int sleepMs = lua->ParseInt(THelper::GetLuaParamAt(params, 0));
		DWORD startMoment = GetTickCount();
		int second = 0, total = sleepMs / 1000, lastSecond = 0;
		while(GetTickCount() < startMoment + sleepMs) {
			second = (GetTickCount() - startMoment) / 1000;
			if(sleepMs > 5000 && (second != lastSecond)) {
				lua->LogInfo(THelper::FormatString(L"倒计时: %d 秒", total - second));
				lastSecond = second;
			}
			THelper::Util::Delay(100);
		}
	}
}

Si desea lograr el control de milisegundos, C ++, también dijo que no hay presión

Otras formas de Referencia

Más recursos en línea. como

Para retrasar el paquete de funciones de ejecución de Lua

https://blog.csdn.net/zhenyu5211314/article/details/50437901
ejecución de retardo de la función de

function delayTimeGuideEvent( target, func, times )
    -- 延迟时间执行函数
    local delaytime = 1
    if times then delaytime = times end
    getRoot(target):runAction(CCSequence:createWithTwoActions(CCDelayTime:create(delaytime), CCCallFunc:create(func)))
end

LUA llamada a la función de retardo

https://blog.csdn.net/yejian2011/article/details/41173031

-- 延时 0.2 关闭 

    local schedulerEntry = nil

    local    scheduler = cc.Director:getInstance():getScheduler()

    local function removeLayer(time)

        scheduler:unscheduleScriptEntry(schedulerEntry)

        schedulerEntry = nil

        layer:removeFromParentAndCleanup(true)   

    end

    schedulerEntry = scheduler:scheduleScriptFunc(removeLayer, 0.2, false)

Función del sueño

http://lua-users.org/wiki/SleepFunction

Una necesidad común es para hacer una pausa (sueño) un programa para un número determinado de segundos, preferiblemente sin espera ocupada.
Esta función de hacer esto sin la espera activa no existe en ANSI C, por lo que no existe en la acción Lua. Sin embargo, hay bibliotecas de extensión y las llamadas a programas externos que pueden hacer esto.

Solución: Espere Ocupado
diferencia horaria con GMT = os.clock
función del sueño (n) - segundos
t0 = local de reloj ()
, mientras que el reloj () - t0 <= n hacer extremo
final
- la advertencia: Reloj con el tiempo puede envolver alrededor de n suficientemente grande
- (cuyos valor es dependiente de la plataforma). Incluso para n == 1, reloj () - t0
- podría llegar a ser negativo en el segundo que envuelve despertador.
Solución: extensión C
Hay una función de apagado automático en ExtensionProposal. Esto puede llamar Win32 sueño o usleep POSIX. He aquí una [usleep / C envoltorio del sueño] ejemplo.
La unión LuaApr tiene una [apr.sleep) (] función que funciona en Windows y UNIX y soporta una resolución de menos de un segundo.
La biblioteca LAlarm [1] puede establecer una alarma en POSIX.
winapi (sólo Windows) tiene una función [sueño]. [GitHub]
Si una interfaz FFI (extranjero o de c / Invoke - BindingCodeToLua) está disponible, puede llamar a cualquier función del sistema operativo que tenga.
Solución: el sueño de comandos
función de apagado automático (n)
os.execute ( "sueño" ... ToNumber (n))
termina
Windows no tienen tal un comando integrado. Sin embargo, hay un sueño en el Kit de recursos de Windows Server. También existe el sueño en Cygwin y MinGW. Además, no es de utilidad “tiempo de espera” disponible en Windows 7
os.execute ( "tiempo de espera" ... ToNumber (n)) - específico para win7 (y probablemente más)
Solución: mesa de ping u otros programas de
la función del sueño (n)
si n> 0, entonces os.execute ( “ping -n "... ToNumber (n + 1) ..." localhost> NUL”) extremo
final
- Versión 20100715 - fijado off-by-one segundos
Esto es principalmente para Windows, en ausencia de una orden de sueño. Existen otras variaciones, por ejemplo, “perl -e 'sueño (” ... ToNumber (n) ... “)'” o ‘php -r sueño (’ ... ToNumber (n) ... ‘);’.
Solución: La espera I / O
io.stdin: lectura '* l'
Esto no es un sueño, pero puede ser útil en casos similares. Se espera a que el usuario pulse la tecla Intro.
Solución: Usando WScriptl (Windows)
la función del sueño (n)
vb locales = “test.vbs”
local f = assert (io.open (vb, “w”))
f: escribir ( “Wscript.Sleep (” ... (ToNumber ( n) * 1000) ... “) \ n”)
f: close ()
os.execute (VB)
finales
Ver [2].
Solución: el sueño ()
El sueño POSIX () llamada proporciona segundo entero duerme.
requerir “POSIX”
posix.sleep (3)
Solución: socket.sleep ()
El LuaSocket? módulo proporciona una función de apagado automático.
= socket requieren ( “socket”)
la función del sueño (sec)
socket.sleep (sec)
final
del sueño (0,2)
Solución: ngx.sleep ()
módulo Nginx Lua proporciona una función dormir. Uno puede especificar el tiempo de resolución de hasta 0,001 segundos (es decir, uno milisegundos). Detrás de la escena, este método hace uso de los temporizadores Nginx.
ngx.sleep (s)
Solución: lsocket.select ()
El () de tiempo de espera de selección proporciona un sueño transportable y menos de un segundo, si se puede tolerar la dependencia librería de sockets.
lsocket local = require ( “lsocket”)
la función del sueño (sec)
lsocket.select (sec)
final
del sueño (2)
Solución: LuaJIT FFI / LuaFFI
FFI local = requiere “FFI”
ffi.cdef “unsigned int sueño (unsigned int segundos);”
ffi.C.sleep (2)
Solución: os.time ()
la función del sueño (s)
nTime local = os.time () + s
repetir hasta os.time ()> nTime
terminar
Solución: os.clock ()
. .
Usando el método en lugar de os.time (os.clock ()), se puede obtener una precisión hasta una centésima de segundo, mientras que os.time () sólo permite intervalos basados en la marca de tiempo, que en la ejecución puede estar en cualquier cosa, desde 0,1 a 1 segundo. El método os.time () es ideal para períodos más largos de más de 2 segundos, donde la precisión no es que gran parte de un acuerdo.
...
la función del sueño (s)
nTime local = os.clock () + s / 10
repetir hasta os.clock)> (nTime
final

No hay productos de química fina, y luego estudio de seguimiento

Liberadas nueve artículos originales · ganado elogios 2 · Vistas 549

Supongo que te gusta

Origin blog.csdn.net/drgraph/article/details/104231779
Recomendado
Clasificación