Does actionscript 2.0/3.0 ha un equivalente di C# sleep()?Action Script Funzione sleep
risposta
Non proprio. È possibile bloccare (quasi tutto) l'esecuzione di codice con qualcosa del tipo:
function sleep(ms:int):void {
var init:int = getTimer();
while(true) {
if(getTimer() - init >= ms) {
break;
}
}
}
trace("hello");
trace(getTimer());
sleep(5000);
trace("bye");
trace(getTimer());
Ma non vedo come potrebbe essere utile in flash. E, allo stesso tempo, qualsiasi cosa come il codice di cui sopra è una pessima idea in quanto il giocatore si bloccherà e non risponderà (e potrebbe anche fornire un timeout di script se superi il limite di timeout, che è 15 per impostazione predefinita).
Se si desidera semplicemente ritardare l'esecuzione di una parte di codice, è possibile utilizzare un oggetto Timer o la funzione setTimeout. Questo sarà non-blocking, però, quindi dovrai usare una sorta di flag come suggerito da TandemAdam. Sarà fragile, nel migliore dei casi.
Forse c'è un approccio migliore per il tuo problema, ma non è chiaro cosa stai cercando di realizzare nella tua domanda.
Nessun ActionScript/Flash Player non ha un equivalente alla funzione sleep C#. Per una cosa Flash non usa più thread.
È necessario implementare manualmente la funzionalità.
È possibile utilizzare un flag booleano, che il codice verrà eseguito solo quando è true. Quindi utilizzare Timer class per il ritardo.
è possibile implementare una funzione sleep
come questo:
function sleep(counter: int, subsequentFunction: Function, args: Array): void
{
if (counter > 0)
callLater(sleep, [counter - 1, subsequentFunction, args]);
else
callLater(subsequentFunction, args);
}
chiamata con la funzione che deve essere elaborato dopo la pausa.
// call trace('Hello') after 100 cycles
sleep(100, trace, ['Hello']);
// call myFunction() after 50 cycles
sleep(50, myFunction, []);
Il vantaggio di questo approccio è che l'interfaccia utente è ancora reattiva durante il sonno.
Per quale scopo? –
Chi ha contrassegnato questa domanda come duplicata poiché la ** reale ** e la risposta corretta sono qui solo in questo thread qui sotto? È una buona domanda e una buona [risposta] (http://stackoverflow.com/a/3011589/1442225). – Bitterblue