Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [as3] timer

  1. #1

    [as3] timer

    Ciao ragazzi
    Ho una domanda per voi... ho appena finito di creare un conto alla rovescia che da 1 minuto arriva a 0. Una volta arrivato a questa cifra io vorrei che avvenisse una determinata azione.. purtroppo però non riesco ad individuare su quale variabile lavorare e in che modo... potete aiutarmi?

    codice:
    package
    {
    	import flash.display.*;
    	import flash.events.*;
    	import flash.text.*;
    	import flash.utils.getTimer;
    	
    	public class provaTimer extends MovieClip {
    		
    		private var giocoTempoMassimo:int;
    		private var giocoBonus:int;
    		private var giocoTempoSbagliato:int = +5000;
    		private var giocoTempoInizio:uint;
    		private var giocoTempo:uint;
    		private var giocoTempoTesto:TextField;
    		
    			public function provaTimer():void {
    			
    				giocoTempoTesto=new TextField();
    				addChild(giocoTempoTesto);
    				giocoTempoInizio = getTimer();
    				giocoTempo = 0;
    				addEventListener(Event.ENTER_FRAME,mostraTempo);
    				inizioGioco(); 
    			}
    		
    			public function inizioGioco():void {
    				giocoTempoMassimo = 61000;
    			}
    			
    			public function mostraTempo(event:Event) {
    				giocoTempo = giocoTempoMassimo -(giocoBonus + (getTimer()-giocoTempoInizio));
    				giocoTempoTesto.text = cambioTempo(giocoTempo);
    			}
    			
    			public function cambioTempo(ms:int) {
    				var seconds:int = Math.floor(ms/1000);
    				var minutes:int = Math.floor(seconds/60);
    				seconds -= minutes*60;
    				var timeString:String = minutes+":"+String(seconds+100).substr(1,2);
    				return timeString;
    			}
    	}
    }
    avevo pensato a qualcosa del genere (anche se di prove ne ho fatte davvero tante)...

    codice:
    if(giocoTempoTesto.text == '0.00') {
    	trace('gameover');
    }
    ma ovviamente non funziona qualche idea?

  2. #2
    Uhm, non ho letto bene il tuo codice, io però avrei usato la classe Timer in questo modo (crea un nuovo documento e scrivi questo codice nel primo fotogramma della linea temporale):

    codice:
    var countdownSeconds:uint = 60;
    
    var tm:Timer = new Timer(1000,countdownSeconds);
    tm.addEventListener(TimerEvent.TIMER,f);
    tm.start();
    
    function f(e:TimerEvent):void  {
    	if((countdownSeconds - tm.currentCount) == 0)  trace('Contaggio finito');
    	else trace(countdownSeconds - tm.currentCount);
    }
    Così è molto semplice intercettare la fine del contaggio, potresti implementare una soluzione del genere nella tua classe.


  3. #3
    grazie mille ^_^ ho cambiato il codice facendo uso della classe Timer, così come mi hai mostrato tu. Ho dovuto sistemare qualcosina ma ora funziona splendidamente..... sei stato davvero gentile, grazie ancora

  4. #4
    mi permetto di proseguire questo post anche se è un po' datato... perchè avrei da chiedere:

    io ho un fla nel quale ho questo codice all'interno di un loader e funziona perfettamente...
    mi viene caricato un swf esterno, e dopo 5 secondi mi viene caricato un secondo swf.
    nel primo swf ho un testo dinameico a cui voglio fare lo scrolling di una riga per ogni secondo che passa... quasto invece non mi funziona... che devo fare?

    Codice PHP:

            
    function f(e:TimerEvent):void  {
        if((
    countdownSeconds tm.currentCount) == 0)  {
            
    trace('Conteggio finito');
            
    _oLoader.resume();
        }
        else {
            
    trace(countdownSeconds tm.currentCount);
            
    logo.loading_txt.scrollV =tm.currentCount;
        }

    logo è un mc vuoto del fla principale in cui viene caricato l'swf esterno in cui c'è il testo "loading_txt"

    Vi ringrazio in anticipo.
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da reybluk
    mi permetto di proseguire questo post anche se è un po' datato... perchè avrei da chiedere:
    Meglio che apri un nuovo thread, il problema è un tantino diverso e più articolato.

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.