Question Action Script Fonction veille [dupliquer]


Cette question a déjà une réponse ici:

  • actioncript 3 dormir?                     2 réponses                 

Actionscript 2.0 / 3.0 a-t-il un équivalent de c # sleep ()?


11
2018-06-09 21:04


origine


Réponses:


Pas vraiment. Vous pouvez bloquer (presque tous) l'exécution de code avec quelque chose comme:

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());

Mais je ne vois pas comment cela pourrait être utile en flash. Et, en même temps, tout ce qui ressemble au code ci-dessus est une très mauvaise idée, car le lecteur se fige et ne répond plus (et peut également donner un délai au script si vous dépassez la limite de temporisation, qui est de 15 par défaut).

Si vous voulez simplement retarder l'exécution d'un morceau de code, vous pouvez utiliser un objet Timer ou la fonction setTimeout. Ce sera non bloquant, donc vous devrez utiliser une sorte de drapeau comme suggéré par TandemAdam. Ce sera fragile, au mieux.

Peut-être y a-t-il une meilleure approche pour votre problème, mais vous ne savez pas exactement ce que vous essayez d'accomplir dans votre question.


19
2018-06-10 04:13



Vous pouvez implémenter un sleep fonctionne comme ceci:

function sleep(counter: int, subsequentFunction: Function, args: Array): void
{
    if (counter > 0)
        callLater(sleep, [counter - 1, subsequentFunction, args]);
    else
        callLater(subsequentFunction, args);
}

Appelez-le avec la fonction qui devrait être traitée après la pause.

// call trace('Hello') after 100 cycles
sleep(100, trace, ['Hello']);
// call myFunction() after 50 cycles
sleep(50, myFunction, []);

L'avantage de cette approche est que l'interface utilisateur est toujours sensible pendant le sommeil.


3
2018-06-10 16:04



Aucun ActionScript / Flash Player n'a pas d'équivalent à la fonction de veille c #. Pour une chose, Flash n'utilise pas plusieurs threads.

Vous devrez implémenter la fonctionnalité manuellement.

Vous pouvez utiliser un indicateur booléen, que votre code ne s'exécutera que si true. Ensuite, utilisez le Classe de minuterie, pour le délais.


1
2018-06-09 21:30