Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14

    Come avviare animazione movieclip da sequenza di tasti

    Salve a tutti, studio da qualche mese Flash e actionscript (sia 2 che 3, che casino!) sto costruendo dei giochi semplici e meno semplici e avevo bisogno di una cosa che proprio sui siti americani e italiani non trovo.

    Devo creare un normale gioco in cui un movie clip compie una determinata azione (animazione) al premere una sequenza di tasti.

    Io più o meno so come avviare funzioni alla pressione di più tasti ma contemporaneamente.

    Mi servirebbe invece una sequenza tipo il tasto A subito dopo tasto S subito dopo tasto D per fare un esempio... Ovviamente se questa sequenza non venisse eseguita velocemente allora la funzione non deve attivarsi.

    Chiedo aiuto perchè proprio non riesco a risolvere.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    proprio nessuno sa qualcosa?

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Genericamente potresti verificare eventi a catena a partire dal primo pulsante che, se premuto, disattiva la possibilità di essere ripremuto e attiva la pressione su un altro tasto e così via. Il problema di questa cosa è che dovrebbe essere verificato il tempo e lo si potrebbe fare avviando un intervallo (setInterval o classe Timer) concluso il quale viene ribloccato il pulsante attivo nella sequenza.
    Non riesco nell'immediato a farti un esempio, se riesco lo faccio dopo.

  4. #4
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    Originariamente inviato da and80
    Genericamente potresti verificare eventi a catena a partire dal primo pulsante che, se premuto, disattiva la possibilità di essere ripremuto e attiva la pressione su un altro tasto e così via. Il problema di questa cosa è che dovrebbe essere verificato il tempo e lo si potrebbe fare avviando un intervallo (setInterval o classe Timer) concluso il quale viene ribloccato il pulsante attivo nella sequenza.
    Non riesco nell'immediato a farti un esempio, se riesco lo faccio dopo.

    Si avevo pensato proprio a una cosa del genere... speravo ci fosse qualche metodo apposta... comunque visto che non sono espertissimo specie della classe timer se riesci a mettermi giù un esempio mi faresti un grosso favore... ah una cosa, tu per progetti di questo tipo mi suggerisci di stare sul as2 o as3? grazie ancora ciao

  5. #5
    La cosa migliore tra l'altro sarebbe quella di farsi una classe, così una volta che l'hai preparata, ti gestisci la sequenza di tasti, la funzione da richiamare, e magari anche il tempo tra una pressione e l'altra.

    Resta il fatto che prima devi scrivere le funzioni principali.

    IDKFA!

  6. #6
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    Originariamente inviato da Stan
    La cosa migliore tra l'altro sarebbe quella di farsi una classe, così una volta che l'hai preparata, ti gestisci la sequenza di tasti, la funzione da richiamare, e magari anche il tempo tra una pressione e l'altra.

    Resta il fatto che prima devi scrivere le funzioni principali.

    IDKFA!
    si ok una volta trovato il modo di impostare la funzione per la sequenza tasti la metterei in una classe... il problema è trovare il modo ahuahauah grazie ciao

  7. #7
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    Originariamente inviato da and80
    Genericamente potresti verificare eventi a catena a partire dal primo pulsante che, se premuto, disattiva la possibilità di essere ripremuto e attiva la pressione su un altro tasto e così via. Il problema di questa cosa è che dovrebbe essere verificato il tempo e lo si potrebbe fare avviando un intervallo (setInterval o classe Timer) concluso il quale viene ribloccato il pulsante attivo nella sequenza.
    Non riesco nell'immediato a farti un esempio, se riesco lo faccio dopo.

    scusa il disturbo ma riusciresti a buttarmi giù un esempio quando hai tempo? tnk ciao

  8. #8
    E' un po' rude ma pare funzionare

    Questa è la classe Comandi.as


    Ah, non provarlo da flash che non funziona il listener perchè i tasti controllano la barra. Lancia l'swf sul player esterno.
    codice:
    class Comandi {
    	
    	public static var arrComandi:Array = new Array()
    	public static var arrComandiNome:Array = new Array()	
    	public static var arrIndici:Array = new Array()
    	
    	public static var interval:Number=0
    	
    	public static function addComando(nome:String, tasti:Array){
    		arrComandi.push(tasti)
    		arrComandiNome.push(nome)
    		arrIndici.push(0)
    	}
    	
    	public static function checkComando(tasto){
    		var trovato=false
    		for (var i=0;i<arrComandi.length;i++){
    			if (tasto.toString().toUpperCase()==arrComandi[i][arrIndici[i]]) {
    				clearInterval(interval)
    				interval = setInterval(cancella, 1000)
    				
    				arrIndici[i]++
    				_root.lettera.text = tasto //l'ho usata per il debug
    				if (arrIndici[i]==arrComandi[i].length){
    					_root.testo.text = "comando lanciato "+arrComandiNome[i] //idem, qui ci va il comando da lanciare, magari cambi la funzione addComando, aggiungendo un terzo parametro per la funzione, e volendo anche il tempo potresti passarlo lì (adesso è 1000 per tutto, però per cambiarlo devi lavorare un po')
    				}
    				trovato=true
    			}
    		}
    		if (!trovato){
    			cancella()
    		}		
    	}
    	
    	private static function cancella(){
    		clearInterval(interval)
    		for (var i=0;i<arrComandi.length;i++){
    			arrIndici[i]=0
    		}
    	}	
    }

    Come si usa
    codice:
    Comandi.addComando("tutte le armi", ["I","D","K","F","A"])
    Comandi.addComando("god mode", ["I","D","D","Q","D"])
    Comandi.addComando("ASDASD", ["A","S","D"])
    
    var keyListener:Object = new Object();
    
    keyListener.onKeyUp = function() {
    	Comandi.checkComando(chr(Key.getAscii()));
    };
    
    Key.addListener(keyListener);
    Sicuramente avrà qualche bug ma per partire credo sia buona

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Bournt
    scusa il disturbo ma riusciresti a buttarmi giù un esempio quando hai tempo? tnk ciao
    Nessun disturbo ma, come immaginerai, sono un tantino occupato e non ho la possibilità di farlo nell'immediato. Comunque direi che la risposta di Stan è perfetta!

  10. #10
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    Originariamente inviato da Stan
    E' un po' rude ma pare funzionare

    ........Sicuramente avrà qualche bug ma per partire credo sia buona
    ehi ti ringrazio me lo devo studiare (e soprattutto tradurre) per bene... grazie dell'aiuto se non capisco qualcosa ti scrivo... tnk

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.