Comunidad de diseño web y desarrollo en internet online

Problema con Array

Citar            
MensajeEscrito el 24 Mar 2010 07:24 pm
Buenas gente, tengo el siguiente problema:

Tengo 24 MC que tienen que tomar una posición al azar, a partir de posibles posiciones. Para esto, cree el siguiente código, tomando como partida una respuesta de Teseo de aquí [url=http://foros.cristalab.com/desordenando-un-array-t22799/][/url]

Código :

bt_mezclar.onPress = function() {
      Array.prototype.desordenar = function () {
   var m= this.length-1;
   for (var i=m;i>1;i--){ 
      var alea=Math.floor(i*Math.random()); 
      var temp=this[i]; this[i]=this[alea]; this[alea]=temp; 
    }
      }
var posiciones:Array= new Array([15,15],[69,15],[123,15],[177,15],[231,15],[15,69],[69,69],[123,69],[177,69],[231,69],[15,123],[69,123],[123,123],[177,123],[231,123],[15,177],[69,123],[123,123],[177,123],[231,123],[15,231],[69,123],[123,123],[177,123],[231,123]);
posiciones.desordenar();
for (i=1;i=24;i++){
   np="pieza"+i;
   pp= (posiciones [i-1]) ;
    _root[np]._x = (pp[0]);
   _root[np]._y = (pp[1]);
   _root[np]._visible=true;
   }
};


Si lo modifico, quitandole el for... y lo cambio por un trace, me muestra las posiciones de forma aleatorea, es decir que hasta ahi viene todo bien... el problema está en el for (supongo yo), que supestamente debería asignarle a cada MC (llamados pieza1, pieza2...) los valores del array... Cuando hago la prueba, al hacer click sobre el botón, se tilda la máquina, y me aparece un mensaje diciendo que un AS está haciéndolo... Primero pensé que podía ser por la cantidad de iteraciones que le estaba pidiendole, asi que cambié la sentencia for (i=1;i=24;i++){ por for (i=1;i=3;i++){ pero sigue haciendo lo mismo... :(

Aclaro que el código está en el fotograma, y que los MC están ocultos...

Alguien podrá ayudarme con esto?

Desde ya, Muchas gracias!

Por N.N.SinNombre

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Mar 2010 07:32 pm
Aclaro que si utilizo el siguiente código logro lo que quiero, pero dado la cantidad de MC me parece que es una forma poco práctica para utilizar

Código :

      Array.prototype.desordenar = function () {
   var m= this.length-1;
   for (var i=m;i>1;i--){ 
      var alea=Math.floor(i*Math.random()); 
      var temp=this[i]; this[i]=this[alea]; this[alea]=temp; 
    }
      }
var posiciones:Array= new Array([15,15],[69,15],[123,15],[177,15],[231,15],[15,69],[69,69],[123,69],[177,69],[231,69],[15,123],[69,123],[123,123],[177,123],[231,123],[15,177],[69,123],[123,123],[177,123],[231,123],[15,231],[69,123],[123,123],[177,123],[231,123]);
posiciones.desordenar();
pp1=(posiciones [0]);
pp2=(posiciones [1]);
pp3=(posiciones [2]);
_root.pieza1._x=(pp1[0]);
_root.pieza1._y=(pp1[1]);
_root.pieza1._visible=true;
_root.pieza2._x=(pp2[0]);
_root.pieza2._y=(pp2[1]);
_root.pieza2._visible=true;
_root.pieza3._x=(pp3[0]);
_root.pieza3._y=(pp3[1]);
_root.pieza3._visible=true;

Por N.N.SinNombre

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Mar 2010 12:25 am
Para el que le interese, encontré la forma de solucionar mi problema... el código "correcto" sería este:

Código :

bt_mezclar.onPress = function() {
      Array.prototype.desordenar = function () {
   var m= this.length-1;
   for (var i=m;i>1;i--){ 
      var alea=Math.floor(i*Math.random()); 
      var temp=this[i]; this[i]=this[alea]; this[alea]=temp; 
    }
      }
var posiciones:Array= new Array([15,15],[69,15],[123,15],[177,15],[231,15],[15,69],[69,69],[123,69],[177,69],[231,69],[15,123],[69,123],[123,123],[177,123],[231,123],[15,177],[69,177],[123,177],[177,177],[231,177],[15,231],[69,231],[123,231],[177,231],[231,231]);
posiciones.desordenar();
for (i=1;i<25;i++){
   pos="pp"+i;
   lugar=i-1;
   posicionfinal="pieza"+i;
   pos=(posiciones [lugar]);
_root[posicionfinal]._x=(pos[0]);
_root[posicionfinal]._y=(pos[1]);
_root[posicionfinal]._visible=true;
}
};


Saludos!

Por N.N.SinNombre

14 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.