Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Cowntdown che sfasa (in ritardo di 3sec/min)

    Ciao ragazzi tempo fa ho implementato questo codice per il mio sito, un conto alla rovescia con variabili provenienti dal database...Ora mi sono accorto dopo alcuni test che il contatore perde 3 secondi ogni minuto, il che è inaccettabile perchè significa che ogni 5 minuti è in ritardo di 15 secondi e così via... Però a me lo script sembra perfetto, non saprei cosa cambiare....Potreste darci un'occhiata?

    Codice PHP:
    var testoesterno:LoadVars = new LoadVars();
    var 
    mynow;


    testoesterno.setmynow = function(){
        
    mynow++;
    }


    testoesterno.showtime = function():Void{
        var 
    diff timefinal mynow;
        var 
    diffsec diff%60;
        var 
    diffmin diff/60;
        var 
    diffmin2 Math.floor(diffmin%60);
        var 
    diffhour diff/3600;
        var 
    diffhour2 Math.floor(diffhour%24);
        var 
    diffday Math.floor(diff/86400);
        var 
    zerog;
        var 
    zeroh;
        var 
    zerom;
        var 
    zeros;
        
        if (
    diffday 10) {
            
    zerog="0";
        }else{
            
    zerog="";
        }
        
        if (
    diffhour2 10) {
            
    zeroh="0";
        }else{
            
    zeroh="";
        }
        
        if (
    diffmin2 10) {
            
    zerom="0";
        }else{
            
    zerom="";
        }
        
        if (
    diffsec 10) {
            
    zeros="0";
        }else{
            
    zeros="";
        }
        
        
    clock.text zerog diffday "g " zeroh diffhour2"h "zerom diffmin2"m "zeros diffsec "s";
        
        if(
    diff<=0){
            
    clock.text "  Countdown Terminato";
        }
        
        
    }



    testoesterno.onLoad = function(){
        
    mynow testoesterno.mytime;
        
    setInterval(this,"setmynow"1000); 
        
    intervallo setInterval(this,"showtime"1000); 
    }


    testoesterno.load("time.php"); 
    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il problema è che flash non ha una gestione dei timer precisa, come si può leggere anche in questo articolo: http://flash.html.it/articoli/leggi/...empo-in-flash/

  3. #3
    Visto che il ritardo è di 3sec ogni 20sec avevo pensato di risolvere così ma non ho visto risultati...la sintassi è giusta? sbaglio qualcosa?

    Codice PHP:
    var testoesterno:LoadVars = new LoadVars();
    var 
    mynow;


    testoesterno.setmynow = function(){
        
    mynow++;
    }
    testoesterno.setmynow2 = function(){
        
    mynow--;
    }


    testoesterno.showtime = function():Void{
        var 
    diff timefinal mynow;
        var 
    diffsec diff%60;
        var 
    diffmin diff/60;
        var 
    diffmin2 Math.floor(diffmin%60);
        var 
    diffhour diff/3600;
        var 
    diffhour2 Math.floor(diffhour%24);
        var 
    diffday Math.floor(diff/86400);
        var 
    zerog;
        var 
    zeroh;
        var 
    zerom;
        var 
    zeros;
        
        if (
    diffday 10) {
            
    zerog="0";
        }else{
            
    zerog="";
        }
        
        if (
    diffhour2 10) {
            
    zeroh="0";
        }else{
            
    zeroh="";
        }
        
        if (
    diffmin2 10) {
            
    zerom="0";
        }else{
            
    zerom="";
        }
        
        if (
    diffsec 10) {
            
    zeros="0";
        }else{
            
    zeros="";
        }
        
        
    clock.text zerog diffday "g " zeroh diffhour2"h "zerom diffmin2"m "zeros diffsec "s";
        
        if(
    diff<=0){
            
    clock.text "  Asta  Terminata";
        }
        
        
    }

    testoesterno.onLoad = function(){
        
    mynow testoesterno.mytime;
        
    setInterval(this,"setmynow"1000); 
        
    setInterval(this,"setmynow2"20000);
        
    intervallo setInterval(this,"showtime"1000); 
    }


    testoesterno.load("time.php"); 

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,701
    Ciao

    Se leggi per intero l'articolo indicato da and80 puoi capire quale è la fonte del problema e trovare una soluzione più adatta.

    Infatti sull'articolo sono indicati tre diversi modi per calcolare il tempo.
    Col setInterval, da te utilizzato, ottieni risultati poco precisi, come indicato sull'articolo.
    Anche la guida stessa di flash, riguardo il setInterval, indica che si possono avere dei rallentamenti.

    Comunque ho dato uno sguardo veloce all'articolo che indicato l'utilizzo del getTimer, più preciso, da combinare con un evento onEnterFrame..

    A mio parere, per risparmiare risorse e memoria, al posto dell'onEnterFrame si può utilizzare un setInterval, impostato in modo che si ripeta ad es. ogni decimo di secondo (quindi meno ripetizioni dell'evento onEnterFrame), ed ovviamente adoperando poi il getTimer per calcolare con precisione il tempo trascorso ad ogni intervallo.

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Non ho letto l'articolo per cui magari dico una cosa già trattata lì, ma mettendo il filmato ad un frame al secondo che succederebbe?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.