
La cosa es asi, tengo una x cantidad de registros metidos en un array "propiedades" e hice una clase que lo que tendria que hacerme es ordenarmelos de forma random el index de la misma cada ves. osea que si tengo 1,2,3,4,5,6 me devuelva 6,3,4,2,5,1..
la clase es asi.
bueno no les pongo la clase ya que tiene codigo de mas que no viene al caso. sin embargo les paso la parte que hace todo ese trabajo.
Código :
//declaro variables var numProps:int=propiedades.length; var numRandActual:int; var numsRand:Array=new Array(); //recorrer el array propiedades for (var r:int=0; r<numProps; r++) { trace("---------"); numRandActual=checkNumRand(getRandomInt(int(numProps-1))); numsRand.push(numRandActual); } //funcion que chekea si existe ya el numero en el array numsRand function checkNumRand(num:int):int { trace("num "+num); for (var c:int=0; c<numsRand.length; c++) { trace("nr "+numsRand[c]+" num:"+num); if (num==numsRand[c]) { trace("-bk "+numsRand); checkNumRand(getRandomInt(int(numProps-1))); break; } } trace("return: "+num); return num; } //funcion que me devuelve un numero ramdom function getRandomInt(num:int):int { return Math.floor(Math.random() * num); }
Como veran a continuacion hago un seguimiento del array y del trabajo de las funciones y me devuelve esto:
Código :
--------- Array: () num 1 return nuevo numero: 1 --------- Array: (1) num 3 nr 1 num:3 return nuevo numero: 3 --------- Array: (1,3) num 4 nr 1 num:4 nr 3 num:4 return nuevo numero: 4 --------- Array: (1,3,4) num 4 nr 1 num:4 nr 3 num:4 nr 4 num:4 -existe num 1 nr 1 num:1 -existe num 5 nr 1 num:5 nr 3 num:5 nr 4 num:5 return nuevo numero: 5 return nuevo numero: 1 return nuevo numero: 4 --------- Array: (1,3,4,4)
ahora el error esta que parece que el flash guarda en memoria las veses que la funcion se llama a si misma

QUE PUEDE ESTAR PASANDO. ANTES ESTO NO LO HACIA..

bueno desde ya saludos y gracias.