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

    iniziare timer da fotogramma

    Ciao a tutti, ho un gioco in flash che prevede l'uso di un timer.
    Al primo frame c'è un pulsante che da inizio al gioco.
    al frame 20 ho questo action
    codice:
    if (currentQuestionNumber>quizItems.length)
       gotoAndStop("SummaryScreen");
     
    var currentQuizItem=quizItems[currentQuestionNumber-1];
    var hasAnswered=false;
    question=currentQuizItem.getQuestion();
    for (var i=1; i<=4; i++)
    {
    	_root["answer"+i]=currentQuizItem.getAnswer(i-1);
    }
    
    
    
    go = true;
    
    
    
    
    
    
    function time_to_string(time_to_convert) {
    	elapsed_hours = Math.floor(time_to_convert/3600000);
    	remaining = time_to_convert-(elapsed_hours*3600000);
    	elapsed_minutes = Math.floor(remaining/60000);
    	remaining = remaining-(elapsed_minutes*60000);
    	elapsed_seconds = Math.floor(remaining/1000);
    	remaining = remaining-(elapsed_seconds*1000);
    	elapsed_fs = Math.floor(remaining/10);
    	if (elapsed_hours<10) {
    		hours = "0"+elapsed_hours.toString();
    	} else {
    		hours = elapsed_hours.toString();
    	}
    	if (elapsed_minutes<10) {
    		minutes = "0"+elapsed_minutes.toString();
    	} else {
    		minutes = elapsed_minutes.toString();
    	}
    	if (elapsed_seconds<10) {
    		seconds = "0"+elapsed_seconds.toString();
    	} else {
    		seconds = elapsed_seconds.toString();
    	}
    	if (elapsed_fs<10) {
    		hundredths = "0"+elapsed_fs.toString();
    	} else {
    		hundredths = elapsed_fs.toString();
    	}
    	return hours+":"+minutes+":"+seconds+":"+hundredths;
    }
    
    
    
    
    
    storedTime=0;
    tempo2 = t;
    function myTimer() {
    	_root.onEnterFrame = function() {
    		if (go) {
    			t = storedTime+Math.round(getTimer()/1/10);
    			trace(t);
    			tempo = t;
    		} else {
    			storedTime=t
    			delete this.onEnterFrame;
    			trace("function paused");
    			trace("stored time ="+storedTime);
    		}
    	}
    }
    myTimer();
    
    
    
    stop();
    il problema è che il conteggio inizia dal momento in cui si carica il mio swf e non quando gli do io il via tramite pulsante.
    Quindi se qualcuno si legge il regolamento cominciano ad accumularsi secondi in più ed è uno svantaggio ....
    Come posso risolvere?

    Grazie!

  2. #2
    Penso che il problema sia qui
    codice:
    function myTimer() {
    	onEnterFrame = function() {
    		if (gogo) {
    			t = storedTime+Math.round(getTimer()/1/10);
    			trace(t);
    			tempo = t;
    		} else {
    			storedTime=t
    			delete this.onEnterFrame;
    			trace("function paused");
    			trace("stored time ="+storedTime);
    		}
    	}
    }
    Io vorrei che quando entra in un fotogramma (frame) e nel mio caso il numero 2 parta il timer e non prima.... come posso fare ?

  3. #3
    Non ho letto bene, ma credo che la chiamato

    myTimer() invece di lasciarla sul frame, basta che la metti sul pulsante che ti interessa (ovviamente devi rispettare gli scope, nel senso che se il bottone sta su un altro clip e fai all'onRelease myTimer() viene fuori una chiamato undefined)

  4. #4
    Ciao,
    ho provato ma alla fine del filmato quando la variabile mi diventa false il tempo si dovrebbe fermare...
    purtroppo ho letto che getTimer() conta inevitabilmente dal caricamento del filmato o sbaglio ?

  5. #5
    Quello mi pare già un altro problema, o no?

  6. #6
    Certo!
    Pero' se nel mio pulsante la funzione la richiamo in questa maniera
    codice:
    
    on (release)
    {
    	if (_root.testo != "ok")
    {	
    gotoAndPlay(52);
    }
    else {
    	myTimer();
    gotoAndPlay(2);
    }
    }
    Non funziona nulla.

  7. #7
    se dal pulsante fai trace(myTimer) che succede?

  8. #8
    [type Function] .... mi da questo risultato se uso questo codice
    codice:
    on (release)
    {
    	if (_root.testo != "ok")
    {
    	
    gotoAndPlay(52);
    }
    else {
    	myTimer();
    	trace(myTimer);
    gotoAndPlay(2);
    }
    }

  9. #9
    Vuol dire che la funzione la vede correttamente.

    Sì è vero, anche se la funzione la lanci dopo getTimer parte dall'inizio, ho fatto la prova.

    Dovresti utilizzare un altro modo per contare immagino, forse l'oggetto Date e il suo getTime. Poi però devi fare un po' di calcoli.

  10. #10
    Ok!
    Quindi provo a trovare un'altra soluzione!
    Grazie lo stesso!

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