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