Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    applicazioni di setTimeout

    due domande:
    1. come posso realizzare un semplice cronometro che misuri fino ai millesimi(meglio se si spinge anche oltre)?

    2. for(i=0;i<10;i++){
    if(i==5) {stop(); setTimeout(play(),1000)}
    }

    il codice è scritto in italiano e non in javascript.. stop() esiste, ma ho notato che probabilmente stop() e play() non si usano così

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se ogni millesimo di secondo costringi il processore ad eseguire una funzione javascript, nei computer meno dotati rimane poco ad altre applicazioni

    Ti consiglio di basare il tutto sull'orologio del pc e di tralasciare il setTimeout()

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da br1
    Se ogni millesimo di secondo costringi il processore ad eseguire una funzione javascript, nei computer meno dotati rimane poco ad altre applicazioni

    Ti consiglio di basare il tutto sull'orologio del pc e di tralasciare il setTimeout()

    ciao
    è solo un test per la misurazione del ritardo del monitor
    quindi..come si fa?

    mentre il secondo è una prova sul controllo degli stati di xmlhttprequest, se propro voi sapere i fatti miei

    nb mi sono accordo di non aver ben spiegato la seconda domanda:
    il ciclo è chiaro, quando i==5 il ciclo si deve fermare per un secondo e poi continuare

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non puoi fermare l'esecuzione di una funzione (o script) per un tempo prefissato... puoi solo fare in modo che riparta (o ne parta un'altro) con setTimeout.

    Non capisco come tu possa misurare il ritardo del monitor (sempreche' tu non intenda il ritardo introdotto dalla visualizzazione di qualcosa durante lo script) ma comunque non e' possibile scendere sotto il millesimo di secondo.

    Per te un semplice cronometro di tipo sportivo creato al volo....

    codice:
    <script>
    var inizio;
    var milli = 0;
    var stato = false;
    function parti() {
      if (!stato) {
        inizio = new Date();
      }
      stato = true;
    }
    function passaggio() {
      if (stato) {
        fine = new Date();
    	pippo = milli + (fine-inizio);
    	vedi(pippo);
      }
    }
    function ferma() {
      if (stato) {
        fine = new Date();
    	milli += (fine-inizio);
    	vedi(milli);
    	inizio = fine;
      }
      stato = false;
    }
    function azzera() {
      milli = 0;
      inizio = null;
      vedi(0);
      stato = false;
    }
    function vedi(m) {
    	document.getElementById("disp1").value = (m / 1000);
    }
    function scorre() {
      if (stato) {
        fine = new Date();
        document.getElementById("disp0").value = parseInt((milli + (fine-inizio)) / 1000);
      } else {
        document.getElementById("disp0").value = "";
      }
      setTimeout("scorre()",200);
    }
    </script>
    
    <body onload="scorre()">
    <input type="text" id="disp0">
    <input type="text" id="disp1">
    <input type="button" value="start" onclick="parti()">
    <input type="button" value="split" onclick="passaggio()">
    <input type="button" value="stop" onclick="ferma()">
    <input type="button" value="reset" onclick="azzera()">
    </body>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da br1
    ...
    grazie mille

    in effetti ho detto "ritardo" xke non mi sembrava il caso di dilungarmi su argomenti offtopic, così misuro l'input lag, affiancando lo stesso cronometro visualizzato su un CRT e scattando una foto (so che mi sono spiegato da cani)

    x questo mi serve un cronometro che visualizzi istantaneamente anche i millesimi, che praticamente è l'unica cosa che manca nel tuo codice..mi dici che modifica devo fare per visualizzare anche la progressione dei millesimi in disp0?

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    function scorre() {
      if (stato) {
        fine = new Date();
        document.getElementById("disp0").value = (milli + (fine-inizio));
      } else {
        document.getElementById("disp0").value = "";
      }
      setTimeout("scorre()",1);
    }
    Il perche' dubito che possa funzionare te l'ho gia' scritto

    ciao

    EDIT: e tra l'altro la frequenza di refresh del video non credo possa essere cosi' elevata... nel mio per esempio e' settata a 60 hz ... che al massimo possono darti una discriminante di poco inferiore ai 17 millisecondi
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.