Hace poco que me he puesto con AS.
Estoy intentando crear el juego SIMON en flash (sin basarme en el ejemplo que corre por la web).
He defindo un array donde se almacenan las elecciones (boton1 al boton4) que despues se deberan repetir. Y lo "relleno" aleatoriamente.
El problema viene cuando lo intento reproducir la secuencia (mostrar/ocultar MC a modo de luces):
Código :
//declaración de funciones var boton=new Array(boton1, boton2, boton3, boton4); var btn; var level:Number; level=0; var n:Number; n=0; var gameover:Boolean; gameover=false; var histo=new Array(); var soSound1 = new Sound(this);soSound1.attachSound("simonSound1.mp3"); var soSound2 = new Sound(this);soSound2.attachSound("simonSound2.mp3"); var soSound3 = new Sound(this);soSound3.attachSound("simonSound3.mp3"); var soSound4 = new Sound(this);soSound4.attachSound("simonSound4.mp3"); for (var i=0;i<4;i++){ (boton[i])._alpha=0; } if (gameover==false){ level=5; for (var i=0;i<level;i++){ n=aleatorio(1,4); histo.push(this["boton"+n]); for (var ii=0;ii<histo.length;ii++){ btn=histo[ii]; btn._alpha=100; retardo = setTimeout(ocultar,200,btn); } } } stop(); boton1.onRelease=function(){ this._alpha=100; soSound1.start(0); btn = this; retardo = setInterval(ocultar,300,btn); } boton2.onRelease=function(){ this._alpha=100; soSound2.start(0); btn = this; retardo = setInterval(ocultar,300,btn); } boton3.onRelease=function(){ this._alpha=100; soSound3.start(0); btn = this retardo = setInterval(ocultar,300,btn); } boton4.onRelease=function(){ this._alpha=100; soSound4.start(0); btn = this retardo = setInterval(ocultar,300,btn); } //declaración de funciones function aleatorio(min,max){ randomNum = Math.floor(Math.random() * (max - min + 1)) + min; return randomNum; } function ocultar(){ clearTimeout(retardo); btn._alpha=0; }
Como el bucle for para ii no espera a que se finalice el set interval vuelve a llamar la función machacando la anterior antes que finalice.
Se os ocurre como podría esperar a que se finalice cada set interval antes de volver a ejecutar el for?
he provado con un while pero todos mis intentos han acabado creando un bucle infinito.
Creo que me voy a volver loco....